Непонятки с блоком FB"PID_ES"

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
Usver
Posts: 193
Joined: Fri Feb 24, 2012 8:28 am

Непонятки с блоком FB"PID_ES"

Post by Usver »

Доброго времени суток, Уважаемые форумчане! Имеется вызов FB"PID_ES" для регулятора. В LMNR от МЭО заведен сигнал, но в LMNR_ON (в экземпляре DBX105.6) ничего не устанавливается явно (по крайней мере в программе этого не нашел). Однако в онлайне наблюдаю такую картину, что этот бит переходит то в 1, то в 0, причем самостоятельно и с различной периодичностью (так показывает онлайн). Вопрос: Это вообще нормально? Т.е., может ли он сам по себе изменяться?
В документации про эту ФБ ничего подобного вроде не сказано.
Dfcz
Posts: 878
Joined: Tue Dec 26, 2006 5:21 am
Location: Russia

Re: Непонятки с блоком FB"PID_ES"

Post by Dfcz »

Само по себе ничего не может меняться. Если меняется, значит так и должно быть, и надо искать почему (если это вообще надо).
Usver
Posts: 193
Joined: Fri Feb 24, 2012 8:28 am

Re: Непонятки с блоком FB"PID_ES"

Post by Usver »

Dfcz wrote:Само по себе ничего не может меняться. Если меняется, значит так и должно быть, и надо искать почему (если это вообще надо).
Ничего подобного. В этой ФБ такого быть не должно. Не должно быть просто по определению. "LMNR_ON" нужна для включения позиционной обратной связи в логику работы регулятора.
В общем я нашел в чем был фокус. Ошибся программер (программная ошибка из разряда "как делать не надо"): из OB35 (100ms) вызов FC, которая
Interface

Code: Select all

IN0: UDT 0 //Struct #1;
IN1: UDT 1 //Struct #2
...

Code: Select all

//Code
CALL "PID_ES", "DB_OF_PID_ES"
//Интерфейс вызова
...
...
//NEW NETWORK
OPN "DB_OF_PID_ES"
L DBD 128
T DBD 132
L DBD 136
T DBD 140
//NEW NETWORK
A DBX 0.3          //MAN_ON
...
...
//NEW NETWORK
AN DBX 0.3       //MAN_ON
A(
O #IN0.Status.IsFault    //ошибка датчика PV_IN
O
A DBX 105.6      //Вот так делать не надо! Программер думал что это относится к экземпляру ("LMNR_ON")
//И меня ввел в заблуждение комментариями к нетворку (да там и по логике д.б. из экземпляра)
A #IN1.Status.IsFault      //ошибка датчика положения МЭО 
...
...
= "FreezedOn"            // Потом используется для отключения сигналов управления
В итоге DBX 105.6 отсылалась к другой DB. Ну и я не сразу вкурил.
PS Преимущественно все это было сделано на ЛАДе. На СТЛ я написал просто для понимания смысла.