Бесконечный цикл будет только в одном случае: когда Remaining > 0 и ни в одной итерации не выполняется условие (Number_Flowers_Gate[i] > 0 AND Gate_ON[i] = TRUE). Намбе флаверсы ваши приходят извне, за сим наши полномочия всё, ищите дальше сами
Вид для печати
Бесконечный цикл будет только в одном случае: когда Remaining > 0 и ни в одной итерации не выполняется условие (Number_Flowers_Gate[i] > 0 AND Gate_ON[i] = TRUE). Намбе флаверсы ваши приходят извне, за сим наши полномочия всё, ищите дальше сами
У вас при запуске срабатывает триггер R_TRIG_Switch_To_r6(I := Switch_Flowers_Set = FALSE); // Момент переключения стрелки на робот 6
Соответственно, выполняется это
и далееКод:// В момент переключения стрелки на робот 6
IF R_TRIG_Switch_To_r6.Q = TRUE
THEN
// Подсчёт корретировки (общее количество)
Corr_To_r6_Total := udint_to_real(11) - udint_to_real(Counter_Output_r6);
// Сброс подсчитанных цветов
Counter_Output_r6 := 0;
END_IF;
Т.е., Corr_Total ваш равен не нулю, а 11Код:IF Switch_Flowers_Set = FALSE
THEN
Corr_Total := Corr_To_r6_Total;
ELSE
Corr_Total := Corr_To_r7_Total;
END_IF;
Господа, доброго времени! Подтолкните в правильном направлении, есть сетевой бит который записывает мастер панель ип320, его нужно сбрасывать в ПР200 по условию
На скрине сброс 3 бита (можно любой из 16) в регистре по условию Вложение 86537 бит должен быть один в регистре.
Только ИП320 сама биты не может ставить, можно только руками.
Вложение 86538
Целочисленные логические в ST пока не завезли, но можно так (сброс бита номер 0):
Код:function ResetBit: udint;
var_input
I : udint;
R : bool;
end_var
if R then I.0 := FALSE; end_if
ResetBit := I;
end_function
Мне кажется, можно сделать более универсальное решение, в смысле, чтобы было возможно писать любое значения выбранного бита(не только сбрасывать в "0"), короче, я это вижу примерно как-то так:
Вложение 86554
Вложение 86555
Вложение 86556
Т.к. одной командой, обычно, не ограничивается, то обрабатываю сразу всё слово управления от вышестоящей системы или панели.
Сразу принял, что от вышестоящей системы поступают только импульсные команды - действующие только один машинный цикл. Поэтому пришлось разработать макросы, обрабатывающие одиночные (записать моточасы) и парные переключающие (включить и выключить режим) команды.
На рисунке - выделение команд из принятого слова управления и фрагмент макроса (ФБ), выделяющего отдельные биты. Видно, что сразу после выделения бит всё принятое слово управления обнуляется целиком. Там ещё присутствует ограничение в получении команд на время инициализации при включении питания.
Вложение 86558
Вложение 86559
На рисунке обработка одиночной команды - записать значения моточасов - применение на холсте и содержимое макроса обработчика от двух источников (т.к. для ПР205 команда может быть получена и от панели и от встроенной панели)
это незаконченный проект и содержит небольшую недоработку - к выходу макроса Cmd_HMI_SCR_ нужно подключить переменную от встроенной панели для её автоматического сброса после обработки
Вложение 86560
Вложение 86561
Всем человеческое спасибо за ответы! Задача решена, но возникла другая)
Необходимо откалибровать аналоговые входа ПР200 по сопротивлению. Мастер юстировки предлагает свои значения сопротивлений, я не имея таких диапазонов сопротивления задал те, которыми располагал. В итоге юстирования получил сообщение "коэффициенты не рассчитаны" (что то подобное), подскажите, что мог упустить/сделать не так?