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

  1. Nick

    Ну и да, в теории обнулять каждый цикл можно, но не для всех контроллеров вроде, нормалевайзе таблица считывается входов, потом замораживается, все операции внутри, потом запись в таблицу выходов. При этом внутри в меркеры часть операций запрещены, работают, но могут вызвать неоднозначные результаты. Так лично мне более приемлемо, хоть и код на VBasic похож, там свои косяки.

  2. Vyacheslav

    Жесть. Это АСУ?

    • Artem

      Да, в сомашине накидал только что

      • Nick

        Для очень много условий - не оптимально.

      • Vyacheslav

        Как совет старайтесь не использовать циклы в циклах А если используете то используйте их для определения массивов и работы с ними. Длядля работы с датчиками и прочим оборудованием используется экземпляры

        • Nick

          Это уже левелап Для 5 датчиков и 3 в сработке - эребор, подпрограммы не нужны, это если будешь потом в проектах использовать.

        • Artem

          Так здесь и нет вложенных циклов, или имеются ввиду цикл сканирования контроллера?Не совсем понятна претензия.

          • Vyacheslav

            Просто наблюдаю в проектах это явление. Используют FOR, WHILE везде. Каналы, датчики, насосы юзают. Это не оптимально, не для АСУ Массивы, структуры, архивы - вот для чего это

  3. Anonim

    Ерунда такое городить

Не нашли ответ?

Вам также может быть интересно