-
проблема с функцией blinker
Скажите, почему функция blinker (util.lib) начинает выдавать постоянно FALSE после, примерно, 3 часов непрерывной работы?
-
Ауууу... Не у кого не было такой проблемы?
-
Пользователь
Проблемы не было.
Вопрос - указатели используете? На вход enable что подается? ФБ точно вызывается?
-
Нет, указатели вроде не использую. Вот привожу код
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... Вот такие дела
-
Наверное, дело в том, что imp_off=0;
Для случаев imp_off=0 и imp_on=0 надо делать отдельную ветку с прямым управление выходом.
-
А это что значит в эти моменты ПИД-регулирование не будет работать? А есть другой способ реализовать ПИД-регулятор?
-
Пид то работает, блинк не работает, поэтому эти 2 случая надо реализовать как отдельные ветки управления выходами.
Кстати, для ШИМ надо задавать не только период, но и мин. длительность импульса, иначе можно повредить исполнительное устройство.
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума