IF (HW_PIR_hall=FALSE ) THEN Timer1(IN:=NOT Timer1Q , PT:=T#60s , Q=>Timer1Q , ET=> ); HW_LIGHT_hall:=TRUE; END_IF Timer1(); IF Timer1.q THEN HW_LIGHT_hall:=FALSE; END_IF По датчику движения свет должен гореть 1 мин.

Комментарии: 15

  1. Aleksey

    В условии не обязательно вызывать фб, т.к. вызов выполняется ещё раз в после условия. Timer1.IN :=NOT Timer1q; Timer1.pt :=t#60s; Timer1q.in :=timer1.q; Либо с параметрами вызывать после условия, а оставить только Timer1.IN :=NOT Timer1q; В условии, но мне не совсем понятен смысл от hw сигналов из названия переменных.

  2. Vasily

    т.е. тебе надо вызывать таймер без IF с входным параметром IN:= (NOT HW_PIR_hall) ну на первый взгляд не верно вызывать два раза экземпляр одного и того же таймера. К тому же есть типовые таймеры TOFF - с задержкой на выключение. используй его. во инет-то глючит =) к тому же под ифом вызывать таймер вообще нельзя, он глючить будет. экземпляр таймера надо вызывать каждый раз с циклом ПЛК. он таким образом узнает, сколько времени прошло =)

    • Andrey

      код в реале работает. HW - я так помечаю "HardWare" переменые, привязаные к физ. портам IX, QX. "IF" срабатывает при падении фронта, внтури "IF" запускается таймер (и именно там задаются параметры), но так как логический "0" держится только секунду таймер не работает более 1 сек, поэтому за пределами IF вызывается Timer1() уже без параметров.

      • Konstantin

        Не понял как фронт у вас держится целую секунду? Он обычно активен только в течении одного машинного цикла...

        • Andrey

          не правильно выразился, логический "0" держится 1 сек.

        • Nick

          Всегда, иначе это уже будет не фронт.

  3. Konstantin

    А зачем такие вещи писать на ST? Ладдер тут в самый раз: просто и любому понятно, а ST имхо на таких задачах как из пушки по воробьям...

    • Maxim

      Ладдер рулит

    • Andrey

      Ну в УД ресурсы плк задействованы на 1%, не жалко. а ST прост и понятен - не надо ничего изучать, и код в сообществе DIY поймут, когда опытом делиться буду.

      • Konstantin

        Если бы был прост и понятен, то вы бы тут не спрашивали. Стандартным языком для таких задач долгое время был Ладдер, сейчас его вытесняет FBD

        • Andrey

          так вопрос в оптимизации был больше, код рабочий. С ладдером и FBD возможно было бы гораздо больше вопросов. Кстати есть 100% точные механизмы конвертации между этими языками?

          • Nick

            Нет. В ST можно конвертировать всё, обратно не всегда.

          • Konstantin

            В симатике для S7-300/400 существует автоматическая конвертация между IL, LAD, FBD но не в 100% случаев, как у других я не знаю Сегодня код рабочий, а завтра, особенно при дальнейшей разработке, может и перестать рабочим быть, такое бывало неоднократно Не знаю как это у вас принято, у нас без знания LAD & FBD как ОтчеНаш в программировании ПЛК делать нечего, без них ты просто чужой

            • Andrey

              Я сам себе ТЗ, ТТ, Проект, Внедрение, Эксплуатация. ПЛК в квартире и на даче.

              • Konstantin

                Ну удачи вам! Как говорится - хозяин барин

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

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