VAR_INPUT _sensor_status:ARRAY[1..5] OF BOOL;//массив состояния датчиков END_VAR VAR_OUTPUT alarm:BOOL;//авария по датчикам END_VAR VAR i:WORD;//счетчик цикла count:WORD;//счетчик сработки датчиков END_VAR //////////////////////////////// count:=0; i:=1; FOR i:=1 TO 5 DO IF _sensor_status[i]=TRUE THEN count:=count+1; END_IF END_FOR alarm:=count>=3;
Комментарии: 9
Nick
Ну и да, в теории обнулять каждый цикл можно, но не для всех контроллеров вроде, нормалевайзе таблица считывается входов, потом замораживается, все операции внутри, потом запись в таблицу выходов. При этом внутри в меркеры часть операций запрещены, работают, но могут вызвать неоднозначные результаты. Так лично мне более приемлемо, хоть и код на VBasic похож, там свои косяки.
Vyacheslav
Жесть. Это АСУ?
Artem
Да, в сомашине накидал только что
Nick
Для очень много условий - не оптимально.
Vyacheslav
Как совет старайтесь не использовать циклы в циклах А если используете то используйте их для определения массивов и работы с ними. Длядля работы с датчиками и прочим оборудованием используется экземпляры
Nick
Это уже левелап Для 5 датчиков и 3 в сработке - эребор, подпрограммы не нужны, это если будешь потом в проектах использовать.
Artem
Так здесь и нет вложенных циклов, или имеются ввиду цикл сканирования контроллера?Не совсем понятна претензия.
Vyacheslav
Просто наблюдаю в проектах это явление. Используют FOR, WHILE везде. Каналы, датчики, насосы юзают. Это не оптимально, не для АСУ Массивы, структуры, архивы - вот для чего это
Anonim
Ерунда такое городить