Цитата Сообщение от VaBo Посмотреть сообщение
Как узнать, что только что произошло событие обмена по модбас и в переменных состояния появились обновленные данные?
Ну так есть же "Ласт еррор", если ошибок нет значит данные актуальны.
Цитата Сообщение от VaBo Посмотреть сообщение
И еще дилетанский вопрос - каким образом в CDS принято разделять задачи (по внешним событиям, по периодам выполнения)?
Можно реализовать как захочете, вот как нравиться так и делайте. Как-то стандартных подходов нет - каждый делает в соответствии со своим опытом и навыками.

В ПЛК_ПРГ всю программу делю на глобальный задачи (создаю отдельные подпрограммы) например:
1. Контур отопления.
2. Контур горячего водоснабжения.
3. Контур теплоносителя для системы вентиляции.

Дальше в данные программы реализую на SFC например:

1. Инициализация/проверка на достоверность переменных. и Ждем команды "пуск".
2. Пуск гидравлики.
3. Пуск регуляторов температуры.

После прихода команды "Стоп":
4. выключить насосы.
5. Закрыть регулирующий клапан.
6. Перейти в начало программы и ждать команды "пуск".

а вот внутри шагов прописываю саму логику работы.
Если куски текста программы повторяются выношу в виде функций и функциональных блоков.
Если логика шага сложная, опять разбиваю на подпрограммы и так далее.

Например: позиционирование в начальное положение исполнительных механизмов для станка ЧПУ необходимо и при включении станка и при сбросе аварии и при завершении цикла. Таким образом 100% это должна быть отдельная подпрограмма с входом "старт позиционирования" и выходом "все отпозиционированно", количество входных входных переменных может быть и больше, но не меньше.
После команды "старт позиционирования" ждем подтверждения, что все отпозиционированно и идем дальше работать)