Андрей Сергеевич
Junior Member / Новичок
Участник № / Member № 2103
отправлено / posted
Решили часть логики проекта - а именно последовательные технологические операции - открыть 1й клапан, дождаться его открытия, открыть 2й клапан, дождаться его открытия и т.д. сделать на SFC. Оказалось, что это принципиально невозможно потому, что на каждом тике SFC-последовательность должна пройтись от начала до конца. Иными словами ее невозможно использовать как машину состояний, в которой на каждом тике осуществляется действие состояния и проверяется условие перехода (например, как у Siemens в PCS7). Вопрос в следующем - для каких задач предполагается использовать SFC в существующем виде?
Сообщения / Posts 29 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
При каждом вызове программы на языке SFC ее исполнение начинается с шага, который является "Начальным". Но далее исполняются только те шаги, которые определены заданными условиями переходов. При соответствующем задании условий переходов Вы всегда можете обойти те шаги (фрагменты алгоритма), которые на данный момент являются исполненными.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Kramarenko Stanislav
Forum Professor / Завсегдатай форума
Участник № / Member № 119
отправлено / posted
"Обходить" нагляднее и проще на ST с использованием операторов ветвления. Я тоже не понимаю, для чего нужен SFC в такой реализации!
Исполнение SFC видится мне скорее наподобие метапрограммы TM5.
Условиям и шагам не нужны свои переменные - пусть оперируют основными аргументами программы, а то только и занимаешься созданием аргументов.
Условие должно формировать свое состояние явно - типа: <"ИМЯ_УСЛОВИЯ"=TRUE> или <RETURN TRUE>, чтобы можно было внутри условия использовать множественные сравнения или заводить таймер.
И программа не должна переходить к следующему условию, пока не выполнилось текущее - в этом смысл.
Сообщения / Posts 340 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Язык SFC реализован в соответствии со стандартом МЭК. В языке FBD есть функциональный блок SSTP (Конечный автомат - в разделе "Функции выбора"), который вполне адекватен описанной в начале темы задаче. Это наше расширение стандарта МЭК.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Андрей Сергеевич
Junior Member / Новичок
Участник № / Member № 2103
отправлено / posted
В итоге решили проблему следующим образом. На SFC в отдельном проекте в бесплатной версии пишем программу и документируем его в HTML. Затем специально написанной программой выделяем из HTML код шагов и переходов этой SFC. На базе этих кусочков кода автоматически в той же программе формируем ST-код (классическую машину состояний), которую затем вставляем в профессиональную версию.
Сообщения / Posts 29 | Из / From: Россия
| IP / IP: IP адрес / IP address |