Некорректная работа с таймерами в вызовах блоков ПЛК различных производителей?

Порядка года или двух назад столкнулся с проблемой.

ПЛК использовал таймер в блоке, вызываемом при конкретном условии (каком именно не помню, ну да это и не важно).

Язык LD, но насколько я понял в остальных МЭК языках та же картина.

Примерно так:
main.php?g2_view=core.DownloadItem&g2_it


В случае, если таймер начинал работать, и после этого отключался по If_CALL (вызов блока) — начинались странности.

Таймер продолжал считать в отключенном блоке.

Причем на него не влиял даже вход разрешения таймера If_TMR, вызывая этим резонный WTF.

Тогда проверили на Proficy (General Electric), Step7 (Siemens) и ISaGRAF — везде картина была одинаковой.

После чего наложили у себя в фирме вето на использование подобных конструкций.


Но вообще ситуация отнюдь не самая приятная.

И другие варианты решения (отключается блок и таймер останавливается, отключается блок и таймер сбрасывается) тоже не особо хороши.

Пример ошибки из-за данного решения

Вызывается блок какого-либо устройства, например основного, при выборе из двух — основного и резервного.

На устройство подается сигнал с какого-то таймера, допустим отсекающего дребезг с кнопки команды.

Если после подачи команды переключишься на резерв, отключив блок основного устройства, то снять с него команду будет невозможно.

У нас было что-то в этом духе, хорошо еще, что на стенде.

В связи с чем вопрос / просьба:

Можно ли проверить эту же конструкцию сейчас на этих и прочих ПЛК?

Хотя бы примерно представлять как обстоят дела — вдруг стало лучше?

А то порой приходится работать с разными производителями и другое решение могло-бы порой неплохо облегчить жизнь.

Post Scriptum

Ни в коем случае не реклама и не антиреклама.

И для того и для другого это слишком мелкий нюанс :)

Но достаточно важный для программистов.

Если с вопросом что-то не так — прошу извинить, я тут недавно и пока не всё понимаю…

Post Post Scriptum

Или куда мне с этим…

Может просто в пост перенести?
  • Вопрос задан
  • 3115 просмотров
Решения вопроса 1
DIHALT
@DIHALT
Таймер в ПЛК это аналог тупого механического/пневматического реле времени. Т.е. ты его пнул и оно поехало. А там хоть питание отключи и выдери его со стойки (реле в смысле) — досчитает до конца. Так что это не баг, это фича. Потому то оно у всех так.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы