Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Спасибо большое, тестирую пока в режиме эмуляции, то что вы сделали, очень поможет мне в реализации, т.к. это мой первый опыт в работе с контроллерами. Как допилю алгоритм со всеми отладками, так обязательно скину результат. После, планируется трансляция данных с датчиков системы через Ethernet и Wifi, сложностей у меня будем много.
Я пока не особо понимаю работу с конфигурацией задач и конфигурацией тревог, обязательно ли их использовать и зачем, какие плюсы, и принципы....
Функциональный блок реализован в формате конечного автомата с 4 состояниями.
CASE State OF
0: (*Начальное состояние*)
//Условия перехода в другие состояния в формате. Количество переходов из состояния 0 в число состояний автомата N
IF условие 1 THEN State:= 1; END_IF;
IF условие 2 THEN State:= 2; END_IF;
...
IF условие N THEN State:= Номер состояния N; END_IF;
// Воздействия в шаге: задание значений переменных (выходных воздействий ФБ), запуск таймеров минимального времени шага, максимального времени шага и т.д.
1:
//Условия перехода в другие состояния в формате. Количество переходов из состояния 1 в число состояний автомата N
IF условие 0 THEN State:= 0; END_IF;
IF условие 2 THEN State:= 2; END_IF;
...
IF условие N THEN State:= Номер состояния N; END_IF;
// Воздействия в шаге: задание значений переменных (выходных воздействий ФБ), запуск таймеров минимального времени шага, максимального времени шага и т.д.
ELSE
STATE:=0; (*так на всякий случай*)
END_CASE;
// здесь вызов таймеров, и других функциональных блоков. Конечно можно и внутри Case делать, если не нужно чтобы он вызывался отдельно от шага (состояния).
На рисунке диаграмма состояний как пример системы
Automat.png
Можно как-то так еще программировать)
Безымянный.png
Подскажите, что не так написал.