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

Тема: Проблема с выполнением цикла в Codesys

  1. #1

    По умолчанию Проблема с выполнением цикла в Codesys

    Добрый день. Бьюсь с программой уже который день, решил спросить совета здесь.

    Задача в следующем. С энкодера на дискретные входы плк приходят импульсы, в программном счетчике они аккуратно подсчитываются и при достижении верхнего или нижнего порога (счетчик инкрементный/декрементный) значение аналогового выхода соответственно увеличивается или уменьшается на определенное значение (пока, для примера, изменяю на единицу). Всю основную программу выполнил на ФБД блоках, все считает замечательно, изменение выхода реализовал как действие к основной программе на языке st, и здесь появились проблема:

    В действии код следующий:

    IF QU=TRUE
    THEN
    CV:=50; (*счетчик устанавливаю на серединное положение*)
    out1:=out1+1; (*увеличиваю аналоговый выход*)
    QU:=FALSE;
    END_IF;
    IF QD=TRUE (*для обратного варианта развития событий*)
    THEN
    CV:=50;
    out1:=out1-1;
    QD:=FALSE;
    END_IF;

    Написав все это я наивно полагал что один из двух циклов прокрутится один раз и сам же сбросив QU или QD успокоится, однако как только один из циклов запускается в работу он останавливается на строке с прибавлением единицы и делает это до бесконечности. Проблема в коде или в принципе построения программы? Буду благодарен за любую помощь. Контроллер ПЛК 154 У-М. Проект и тагет прилагаю. Спасибо.
    Вложения Вложения
    • Тип файла: rar Forum.rar (256.8 Кб, Просмотров: 24)

  2. #2

    По умолчанию

    надо сбрасывать счетчик, а не пытаться сбросить входы действия.

Ваши права

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