PDA

Просмотр полной версии : проблема с функцией blinker



mp3moto
22.12.2008, 08:28
Скажите, почему функция blinker (util.lib) начинает выдавать постоянно FALSE после, примерно, 3 часов непрерывной работы?

mp3moto
22.12.2008, 10:30
Ауууу... Не у кого не было такой проблемы? :(

Малышев Олег
22.12.2008, 10:56
Проблемы не было.
Вопрос - указатели используете? На вход enable что подается? ФБ точно вызывается?

mp3moto
22.12.2008, 11:42
Нет, указатели вроде не использую. Вот привожу код

PID(PV:=TMTEK, PV_TIME:=PV_TIME1, SP:=SP1, START_ANR:=START_ANR1, YDOP:=YDOP1, _IMIN:=_IMIN1, _IMAX:=_IMAX1);
TEN:=REAL_TO_BOOL(PID.OUT_VAL/100);
IF PID.OUT_VAL>0 THEN
on:=PID.OUT_VAL*(TIME_TO_REAL(period)/100);
imp_on:=REAL_TO_TIME(on);
ELSE
imp_on:=t#0s;
END_IF;
imp_off:=period-imp_on;
blinker(ENABLE:=TRUE, TIMELOW:=imp_off, TIMEHIGH:=imp_on);
TEN:=blinker.OUT;

Сначала все идет нормально, но через некоторое время blinker.OUT=FALSE, хотя imp_on=5 секунд, imp_off=0 секунд, PID.OUT_VAL=100... Вот такие дела :(

Филоненко Владислав
22.12.2008, 13:51
Наверное, дело в том, что imp_off=0;
Для случаев imp_off=0 и imp_on=0 надо делать отдельную ветку с прямым управление выходом.

mp3moto
22.12.2008, 18:05
А это что значит в эти моменты ПИД-регулирование не будет работать? А есть другой способ реализовать ПИД-регулятор?

Филоненко Владислав
22.12.2008, 19:19
Пид то работает, блинк не работает, поэтому эти 2 случая надо реализовать как отдельные ветки управления выходами.

Кстати, для ШИМ надо задавать не только период, но и мин. длительность импульса, иначе можно повредить исполнительное устройство.