Цитата Сообщение от Игорь Петров Посмотреть сообщение
Хм. В стандарте МЭК такого требования нет. Кроме состояний в SFC еще есть и действия. Они способны работать параллельно, независимо от состояний . Исполнитель SFC имеет полное право вешать их на разные процессы. В многоядерных системах будет физически параллельно.
Вот поэтому я и не хотел заводить разговор о параллельности
Фон Неймана никто не отменял, несмотря на прерывания

Цитата Сообщение от Игорь Петров Посмотреть сообщение
Значит параллелизм в автоматном подходе есть. Он выражается гиперавтоматом. В нем реализуется простейший механизм синхронизации задач (автоматов). Его приходится самостоятельно кодировать в прикладной программе, вместо того чтобы использовать готовые механизмы ОС.
Не очень понял конечно, какой такой готовый механизм синхронизации... Это, если в 1 ветви 1 шаг, а в параллельной 10, то 1-я ветвь будет ждать завершения соседних 10-ти...

Цитата Сообщение от Игорь Петров Посмотреть сообщение
Допустим, иногда внутри этого цикла делаются некоторые громоздкие вычисления или блокирующая запись на флеш диск и др. В итоге, наш цикл подзастревает допустим на 1-2 секунды. Еще есть аварийный вход. По его изменению реакция обязана происходить, например, за 1 мс. Решение: на быстрый вход ПЛК вешаем событийную задачу с высшим приоритетом. Она мгновенно останавливает цикл и делает то, что должна. Нигде никакого лишнего кода писать не приходится. Для программирования напрягли 0.5 извилины.
Если в SFC сделать 2 параллельных шага, в одном шаге будет выполнятся быстрый код, в другом долгий код.
Вопрос: Не используя событийных задач с высшим приоритетом, чему будет равен цикл ПЛК (быстрому или долгому коду)?

+ Ничто не мешает нам использовать событийные задачи с высшим приоритетом в "switch-технологии"

Цитата Сообщение от Игорь Петров Посмотреть сообщение
Автоматный подход очень полезная штука. Раздражают только попытки подать его как универсальную ‘суперкувалду’.
Не совсем "суперкувалду", а один из работающих вариантов реализации автоматного подхода

Цитата Сообщение от Игорь Петров Посмотреть сообщение
Есть много других замечательных подходов. Например, событийные, процесс ориентированные...
Язык Рефлекс - замечательная вещь
Если бы с него можно было в ST код генерить - было бы замечательно, однако я не нашел.
И, кстати, подход генерации кода С,ST,Pascal - подобного по графам аналогичен предложенному в "switch-технологии"

Цитата Сообщение от Игорь Петров Посмотреть сообщение
Помните, мы обсуждали инструмент PLC Link? Он интегрирует CoDeSys в MATLAB Simulink с непосредственным выполнением в ПЛК и визуальной отладкой. Это было нужно для математически сложных задач, типа динамического управления лопастями генераторов. Тема получила развитие. Теперь в MATLAB появился PLC Coder. Жалко, нет случая попробовать.
Касаемо автоматной части (генерация из Stateflow) PLC Coder генерит код, аналогичный MetaAuto-конвертеру, только предварительно нужно его очищать от служебного кода. + Matlab стоит дороже Visio