Спасибо!
Я уже перебрался с этим вопросом, в тему - посмотрю что подскажут.
Спасибо!
Я уже перебрался с этим вопросом, в тему - посмотрю что подскажут.
Здравствуйте. Пишу здесь первый раз. Просто хочется разобраться. У нас на производстве наливают, бочки, кубы, цистерны. И по запросу операторов им нужны переносные пульты для включение и отключение насосов, да еще и реверс. Так как за разумные деньги только ПКТ, но у него два нормально открытых. Сделал систему на ПР. Решил сделать так, чтобы при нажатии любой кнопки "Вперед" или "Назад" при работающем насосе, насос отключался. Пробовал написать несколько программ. Так вот получился у меня интересный случай. Одна функция нормально работает, как я и хотел. Другая не в какую. Кто-нибудь может помочь разобраться? Файл и код прилагаю
Эта функция не работает.
А эта работает.Код:function motorvper: bool; //имя функции и тип данных выхода var_input //объявление входных переменных //входная переменная с типом данных bool vper : bool; nazad : bool; puskv : bool; puskn : bool; end_var var //объявление локальных переменных end_var if vper=true or puskv=true and nazad=false and puskn=false then motorvper := true; end_if if vper=true or nazad=true and puskv=true then motorvper := false ; end_if end_function
Код:function motornazad: bool; //имя функции и тип данных выхода var_input //объявление входных переменных vpered : bool;//входная переменная с типом данных bool nazad : bool; puskv : bool; puskn : bool; end_var var //объявление локальных переменных end_var if nazad=true or puskn=true and vpered=false and puskv=false then motornazad := true; end_if if vpered=true or nazad=true and puskn=true then motornazad := false; end_if end_function
АлексанычТак а если без функции делать? Взять R_TRIG по нажатию на кнопки и AND с выходом насоса? А насосом управлять по RS-триггеру (с приоритетом R)?при нажатии любой кнопки "Вперед" или "Назад" при работающем насосе, насос отключался
То есть, описать условие "Если прошёл импульс наражтия кнопки И насос работает - выключить".
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
Вторые строчки в топку
Сравнение с труе/фальсе в топку
Явные скобки в логических выражениях
И разберетесь
У вас в обеих функциях, последние IF одинаковые, а должны быть разные.
И линии задержки сделайте, вместо жёлтых линийКод:// if vper=true or nazad=true and puskv=true then motorvper := false ; //Это ваш код // end_if if nazad or vper and puskv then motorvper := false ; // рабочий код end_if end_function
А можно вторые IF вообще выбросить в обеих, тоже работать будет.
Последний раз редактировалось kondor3000; 30.05.2023 в 09:11.
Да если бы он вот так объяснил, было бы намного лучше.
Но походу или я тупой или плохо обрисовал задачу. Если вот так прописать, как в первом варианте(даже с линиями задержки, и без вторых IF) или вариант Валенка. То на симуляции это работает так. На примере команды "Вперед". Подается сигнал на первый выход(пуск двигателя вперед). Если нажать повторно кнопку "Вперед" двигатель остановится. Но вот если вместо кнопки "Вперед", нажать "Назад" двигатель не остановится, а мгновенно включиться сигнал на второй выход(пуск двигателя в реверс). А мне надо, чтобы он остановился и уже при следующем нажатии кнопки оператор может запустить двигатель в нужный момент. Просто у нас растительное масло, а оно способно сделать залипании кнопки.