Повторил вашу ситуацию. Чтобы избежать ее - перед загрузкой проекта нужно выполнять команду Компиляция - Очистить все.
Похоже на мелкий баг CODESYS.
Вид для печати
Соглашусь, что степень серьезности бага каждый пользователь оценивает по собственным критериям.
Наблюдаю у себя и коллег привычку на автоматизме выполнять "очистить все" перед каждой загрузкой проекта.
Справедливо, что у других пользователей ее может не быть.
В любом случае - в более поздних версиях CODESYS этот баг исправлен.
Здравствуйте! Регулирование температурой самого простого кондиционера. Хотим попробовать реализовать с выбором уставки, например от 2 градусов до 45. Задание все с панели СПК107 с кнопок (выбор уставок). Укажите или подскажите готовый интерфейс из примеров или видео самый простой пример (например в описании Визуализации - самый простой вариант: просто выбор значений с привязанных графических примитивов) для выбора уставки. Не большой пример, но рабочий. Регулировать будем как у ТРМ (диапазон вкл/выкл – когда выше верхней границы или ниже). Гистерезис – если есть опробованный готовый вариант примера (гистерезис от 2-х до 3-град, рассмотрим любой готовый пример). Более менее рабочий вариант, если можно, а то бывают учебные варианты в инете и почему-то часто в методичках пишут, что нельзя использовать как рабочий.
Не пойму, как грамотно возводить и сбрасывать переменную для записи/чтения по Модбас
Вроде бы раньше получалось и так. Но не выходит сейчас
Вот один цикл ПЛК. Переменные внутри условий не возводятся. Или они успевают перезаписаться быстро в том же цикле? И получается что не возвелись.
Но команды модбаса по крайней мере не активируются таким образом, только если убрать две строчки, которые за пределами IF
Если коротко, при изменении переменной в поле на hmi панели, там же выставляется бит в регистре, за которым циклически следит ПЛК.
При появлении сигнала об изменении этого бита в 1, ПЛК забирает значение с панели.
И ПЛК сам сбрасывет этот бит в панели.
В другой более крупной программе это у меня работало. Простой сброс в FALSE в том же цикле ПЛК.
Очень простой наверное вопрос для тех кто в теме ПЛК.Код:IF pumpType = 0 THEN
IF pumpTypeValueChangedByOperatorRead THEN
readPumpTypeValueTrigger := TRUE;
pumpType:= pumpTypeFromHMI;
pumpTypeValueChangedByOperatorWrite := FALSE;
resetPumpTypeValueTrigger := TRUE;
IF pumpType = PUMP_TYPE.nitrogen THEN
minStartPumpTemperature:= s_minStartPumpTemperatures.nitrogen;
END_IF
END_IF
END_IF
readPumpTypeValueTrigger := FALSE;
resetPumpTypeValueTrigger := FALSE;
Циклически конечно проще, но а если считать нужно вообще всего один раз? Вообще только при первом старте ПЛК (даже не цикле).
Есть смысл постоянно читать?
Суть понял про сброс, спасибо
Но одна переменная у меня не сбрасывается и я не пойму почему, вот она в начале цикла должна уходить в False. Но постоянно True.
Вложение 76372
Потому что отображается всегда последний её статус а ниже он как раз в истине...
Fds:= true
Fds:= false
Fds:= true
В статусе у всех будет последнее присвоение, true