Показано с 1 по 7 из 7

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

  1. #1

    Question проблема с функцией blinker

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

  2. #2

    По умолчанию

    Ауууу... Не у кого не было такой проблемы?

  3. #3

    По умолчанию

    Проблемы не было.
    Вопрос - указатели используете? На вход enable что подается? ФБ точно вызывается?

  4. #4

    По умолчанию

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

    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... Вот такие дела

  5. #5

    По умолчанию

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

  6. #6

    Question

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

  7. #7

    По умолчанию

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •