Вход

Просмотр полной версии : PID_FUNCTION



genchik
15.01.2012, 11:19
После длительного отключения питания не запускается пид функция, (пишит -1#QNAN) как можно запустить без компа. Кто нибудь сталкивался с подобной промблемой? B как удалось решить?

Николаев Андрей
15.01.2012, 14:01
Скорее всего какая-то внутренняя переменная ПИД переполнилась.

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

genchik
15.01.2012, 14:40
Вопрос какая, установка decode_float на входе PV после перезаписи проги помогла, но и прога была перезагружена заново. Проверить не успел корпус загазировали. Туды щас не войдёшь. Придётся подождать до завтра чтобы проверить.:confused:

genchik
17.01.2012, 17:23
Проверка закончилась с теми же результатами с какими и началась. Прошу помощи.
Проблема осталась открытой.:mad:

Пьер
18.01.2012, 09:21
Проверка закончилась с теми же результатами с какими и началась. Прошу помощи.
Проблема осталась открытой.:mad:
Сталкивались с такой проблемой, только через CoDeSys получилось решить. Есть переменная в PID_Function - .INTEGRAL1 и .INTEGRAL2, при их обнулении в процессе работы #QNAN пропал, все заработало.

genchik
19.01.2012, 08:52
Это понятно, как запускать без КДС. Как обнулять интегралы без применения КДС. Может обнулять сис. время или при отсутствии подачи данных из МВА? Что бы не было накопления интегральной составляющей?:confused:

Малышев Олег
19.01.2012, 09:04
1) Запустить без КДС и контроллера не получится.
2) Обнулить интеграл pReal:=pointer to real; pReal:=Adr(myreg^.INTEGRAL1); pReal^:=0;
3) Что бы не было накопления интегр. сост ставьте к-т TI=0

genchik
19.01.2012, 11:40
[QUOTE=Малышев Олег;75849]1) Запустить без КДС и контроллера не получится.
2) Обнулить интеграл pReal:=pointer to real; pReal:=Adr(myreg^.INTEGRAL1); pReal^:=0;

Это куда вписать?