Регистрация | Последние сообщения | Персональный список | Поиск | Настройка конференции | Личные данные | Правила конференции | Список участников | Top 64 | Статистика раздела | faq | Что нового v.2.3 | Чат
Skunk Forum - Техника, Наука, Общество » АСУТП »
ПЛК как конечный автомат

Версия для печати (настроить)

Новая тема | Написать ответ

Подписаться

Автор Тема:   ПЛК как конечный автомат
kohausen
Junior Member

Сообщений: 11
Регистрация: Декабрь 2006

написано 05 Февраля 2007 09:31ИнфоПравкаОтветитьIP

Заинтересовался данным сабжем. Начал искать и изучать литературу по switch-технологии, дискретной математике и т.д. Вопрос: А нужно ли это? Кто-нибудь действительно применяет подобное вещи на практике? Стоит ли игра свеч?

Builder
Junior Member

Сообщений: 12
Откуда: Минск
Регистрация: Июль 2006

написано 05 Февраля 2007 15:10ИнфоПравкаОтветитьIP

Я как-то примерялся для себя (switch-техногия).
В принципе очень понравилось. Есть только 1 большая проблема:
нет инструментария, то что есть - не очень удобно, хотя и работает.
Кодировать самому по рисунку - вариант, но как-то напряжно.
Для себя опредилился так: если алгоритм сложный и запутанный настолько, что
кодирование ручками не самое узкое месть - есть смысл, и даже очень.
А так - отслеживаю ситуацию...
Да, я в основном примерял к программам, пишущимся на "C" и "C++".

ЗЫ: у автора методики, на родном сайте есть статьи, где он сравнивает switch-техногию
с разными подходами - много разумно, почитайте, под рукой ссылк нету, если нужно -
скажите, завтра брошу.

M101
Junior Member

Сообщений: 6
Регистрация: Декабрь 2002

написано 05 Февраля 2007 18:47ИнфоПравкаОтветитьIP

Этот подход -значительно- облегчает программирование и дальнейшее сопровождение алгоритмов,да и чужая программа читается легче. Только привычка нужна, построение программы сильно отличается от общепринятого. Поиши статьи Шалыто, он много чего про switch технологию написал.

Builder
Junior Member

Сообщений: 13
Откуда: Минск
Регистрация: Июль 2006

написано 05 Февраля 2007 19:32ИнфоПравкаОтветитьIP

Добрался до ссылок, основные 2 сайта, где много статей Шалыто:
ссылка раздел "Автоматы" для подробного ознакомления со SWITCH.
ссылка - есть статьи

Для начального осзакомления рекоммендую эти статьи:
ссылка
ссылка
ссылка

Обсуждение технологии, кой чего можно почерпнуть:
ссылка
ссылка
ссылка - упоминание технологии

IP
Member

Сообщений: 49
Откуда: Russia
Регистрация: Июнь 2006

написано 06 Февраля 2007 12:35ИнфоПравкаОтветитьIP

Применение аппарата конечных автоматов в программировании известно он с незапамятных времен. Автоматы традиционно используются при программировании компиляторов, текстовых редакторов и др. SWITCH технология – это один из методов. ИМХО единственная проблема этой технологии в том, что авторы очень уж научно излагают абсолютно элементарные вещи. В результате перестаешь понимать то, что всегда было очевидным.
Классический ПЛК работает циклически по тактам, как и автомат, остается выбрать способ кодирования состояний, почесав репу можно придумать несколько способов. В ближайшие годы в МЭК системах появится поддержка ООП, это неминуемо приведет появлению дискуссий по оправданности применения этой парадигмы для ПЛК. Мне думается нужно просто держать глаза открытыми, изучать разные методики программирования и не боятся думать и экспериментировать самостоятельно.
Некоторые опыты изложены в цикле статье "Отладка прикладных ПЛК программ в CoDeSys"
См. ссылка
В части 3 есть пример автоматного программирования на ST.


Павел Мощицкий
Member

Сообщений: 1815
Откуда: Израиль. Бат-Ям
Регистрация: Январь 2004

написано 06 Февраля 2007 20:06ИнфоПравкаОтветитьIP

IP
ближайшие годы в МЭК системах появится поддержка ООП
Интересно, какой язык программирования возьмут за основу?

kohausen
Junior Member

Сообщений: 12
Регистрация: Декабрь 2006

написано 07 Февраля 2007 08:57ИнфоПравкаОтветитьIP

IP
по поводу научности изложения книг Шалыто - полностью согласен. Начал читать -оч тяжело дается...и конечно же отпугивает :-( Хотя тема очень меня заинтересовала. за вашими публикациями слежу...Что можете порекомендовать про конечные автоматы из рязряда для "чайников"? потому как, предпочитаю изучать ,что либо сначала поверхностно (книги из рязряда для "чайников" или многопроходное чтение серьезных толмутов), а в случае интереса к данной тематике, уже последующего глубого изучения и анализа.

ColdFire
Member

Сообщений: 200
Откуда: Россия
Регистрация: Ноябрь 2004

написано 07 Февраля 2007 10:38ИнфоПравкаОтветитьIP

Я сам ЛИТМО закончил, когда г-н Шалыто там начинал преподавать - мы были первым потоком, кому читался курс про эту технологию. Книжки я читал не все, но если слушать - все понятно и логично.

Кое-где автоматную логику и сам использую - по крайней мере в паре проектов систем управления на базе PC как раз так и делали, иначе после пары доделок программа становится неперевариваемой. Но это C/C++/Pascal. А вот как это дело прилепить к РКС - попробовали один раз и забросили, настолько громоздко становится - еще менее читабельно, чем исходный РКС.

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

kohausen
Junior Member

Сообщений: 13
Регистрация: Декабрь 2006

написано 07 Февраля 2007 15:28ИнфоПравкаОтветитьIP

ColdFire
хммм....а если применять автоматное программирование к другим МЭК языкам? Допустим SFC или ST?
по поводу указанных вами минусов - у нас так сложилось, что задание формируют технологи...потом , когда я отлаживаю программу, неожиданно всплывает еще какая-то просьба...затем следующая....т.е. налицо эффект "лоскутного одеяла". Значит, "автоматы" для меня недостижимы? Обязательным условием для применения автоматного программирования является точное ТЗ ?

ColdFire
Member

Сообщений: 204
Откуда: Россия
Регистрация: Ноябрь 2004

написано 08 Февраля 2007 11:19ИнфоПравкаОтветитьIP

Точное ТЗ и точное знание технологии вообще очень хорошая штука.

Посколько точные ТЗ - это из области научной фантастики, а точное знание технологии часто приходит к моменту завершение пусконаладки - итогда приходится переделывать программу по два-три раза.

SFC уже близок к автоматам. Про ST не скажу - не владею. В этом смысле у фануков есть не особо популярная система под названием State Logic - это софт для программирования плюс специализированные контроллеры. Это ОНО в чистом виде. Тока нахрен никому не надо, т.к. как я уже сказал это сильный эксклюзив...

pw
Member

Сообщений: 45
Регистрация: Январь 2007

написано 09 Февраля 2007 21:44ИнфоПравкаОтветитьIP

А что такое SFC? Не лестничная логика ли? Фу, какая бяка.. предлагаю научные исследования закрыть, тему запечатать, её сподвижников сослать в сибирь на золотые рудники! А добытое ими золото отдать мне! Лестничная логика хороша только тогда, когда ты точно хочешь знать, что твой контроллер должен делать, а это необязательно вовсе в 90% случаев. А когда хочешь точно, то писать надо в структурированном тексте (извините, что таким вещам примитивным учу). Привычка к лестничной логике идет еще с прошлого века, когда она вроде бы котировалась, но сейчас ей увлекаются только негодяи!
А насчет автоматического проектирования.. Хех.. Ну, например, у Фоксборо это мало того сделано, но еще и работает даже. И даже широко применяется. Составляете таблицу позиций в Эксель, указываете тип контура, а в самой проге создаете шаблон для контура и генерится легко база (программа контроллера) для многих тысяч позиций с кучей связей. Просто надо придерживаться какой-то органичной системы тэгов для входов. В большинстве задач технологического программирования больше десятка-двух разнотипных контуров управления редко встретишь. Да и библиотека по мере использования данной системы копится и копится.. А уж какие-то особые как-нить запрограмируете ручками, совсем уж обленились, елки-палки.
Не обижайтесь, я не совсем понял о чем речь. Наверно я не прав, как всегда.

bessonov2
Member

Сообщений: 80
Регистрация: Май 2006

написано 11 Февраля 2007 01:06ИнфоПравкаОтветитьIP

Павел Мощицкий
Интересно, какой язык программирования возьмут за основу?
Я думаю ld или il

IP
Member

Сообщений: 50
Откуда: Russia
Регистрация: Июнь 2006

написано 12 Февраля 2007 17:26ИнфоПравкаОтветитьIP

цитата:
Интересно, какой язык программирования возьмут за основу?

Все сразу.

Представьте себе, мы хотим описать некую сущность (например блок управления задвижкой) в виде функционального блока (ФБ). Сейчас в МЭК нужно все пихать в этот блок. Чтобы добиться от него выполнения разных операций приходится делать кучу входов и подавать на них разрешения выполнения нужной операции. Получается жуткая щетина входов , внутри жуткая мешанина ветвлений. Можно конечно наделать много функций для разных операций, но это уже не объект, поскольку инкапсуляции нет никакой. В CoDeSys 2.3 начали с того, что добавили в ФБ действия. Т.е. ФБ объединяет теперь не только данные, но и действия. Данные можно спрятать и работать с ФБ действиями = методами. До нормально объекта не хватает наследования и полиморфизма.

Вводим в МЭК несколько доп. ключевых слов (METHOD, EXTENTS, IMPLEMETS, INTERFACE) и дополняем этим ФБ до полноценного класса. Примерно так из C сделали С++. Со стороны МЗК программиста нововведения не столь уж и радикальны. Все 'старые' программы (не использующие ООП ) будут отлично работать без переделки.
Методы можно писать на любом языке, хоть в машинных кодах, это неважно абсолютно.

цитата:
А что такое SFC? Не лестничная логика ли? Фу, какая бяка..

Лестничные диаграммы – это LD. SFC – это Графсет или сети Петри. В отличие от автоматов здесь нет состояний, а есть этапы. Они активируются при получении маркера, которых может быть много. На каждом этапе выполняется определенная работа, то есть действия. Они описываются на любом другом языке, но в принципе могут содержать и несколько уровней вложений SFC. Великолепный высокоуровневый язык, жалко, что мало в каких системах программирования полноценно сделан.

Есть системы программирования, в которых применяется автоматный подход, причем даже с приличным визуальным представлением. Например, SIEMENS S7-HiGraph. Здесь не приходится думать о кодировании состояний вообще, все как на бумаге так и на экране. Используют ли этот инструмент программисты контроллеров SIEMENS я не знаю, но было бы интересно узнать их мнение.

SWITCH технология зуб в зуб переносится с C на ST. Конструкция CASE в ST даже несколько мощнее, чем Switch в C. Но насколько я понимаю язык в этой технологии не главное.

Dmitry M. Gaidash
Member

Сообщений: 134
Регистрация: Сентябрь 2005

написано 12 Февраля 2007 20:12ИнфоПравкаОтветитьIP

Используют ли этот инструмент программисты контроллеров SIEMENS я не знаю, но было бы интересно узнать их мнение
Нет, у нас не пошло - слишком уж чудовищно все реализовано

CHANt
Junior Member

Сообщений: 12
Откуда: Orenburg
Регистрация: Май 2004

написано 14 Февраля 2007 07:41ИнфоПравкаОтветитьIP

Нет, у нас не пошло - слишком уж чудовищно все реализовано
Есть неудобства:
Переменные контрольного времени состояния или перехода, в графе состояния нельзя изменять извне.
Т.е. если есть один и тот же тип оборудования, но разные временные характеристики контроля его работы, придется либо создавать новый граф состояния с измененными параметрами времени контроля, либо вызывать дополнительно функцию какого-нибудь системного таймера. Это не удобно.
В POU вызывается только групповой граф - графы состояния необходимо включить в групповой граф, как следствие необходимость использования огромного количества дополнительных внутренних переменных.
Используются не все инструкции STL (IL).
Большой размер кода полученных функциональных блоков.

А, режим отладки позволяет видеть работу графов в графическом виде - очень наглядно!

Anatol_K
unregistered
написано 14 Февраля 2007 16:19  ПравкаОтветитьIP

Слишком уж заумно все звучит. Если говорить о технологическом программированнии, то там встечается куча задач, которые удобно реализовывать, используя конечные автоматы. Если взять какую нибудь хреновину типа исполнительного механизма( задвижка, агрегат, кран и .т.д.), то он может быть описан статическими и динамическими состояниями, ну например самое простое: отключен, пуск, включен, останов, включен. Пять штук.
Рисуем граф, получаем 20 связей. Удобства - главное правильно расписать граф на бумажке, потом идет формальное программирование. Лично я написал библиотечные блоки полнопереходных графов до шести состояний на ST, оформил в виде FBD блоков. Пишутся такие графы либо через булевские выражения( очень наглядно и компактно) либо через elseif. Делать "полноприводные" с большим количеством состояний - это монстры, хотя задумываться как там чего работает - не надо, главное граф на бумажке ! Недостатки полных графов в технологическом программировании - высокая избыточность, поэтому не всегда удобно пользоваться этимим монстрами, вообще это надо иметь хорошую смекалку, чтобы придумать минимальный граф для того или иного технологического объекта. Комбинация логики и автоматов - мне кажется истина где то посередине.

CHANt
Junior Member

Сообщений: 13
Откуда: Orenburg
Регистрация: Май 2004

написано 15 Февраля 2007 06:04ИнфоПравкаОтветитьIP

А. есть ли еще инструменты подобные S7-HiGraph, для PLC?

IP
Member

Сообщений: 51
Откуда: Russia
Регистрация: Июнь 2006

написано 15 Февраля 2007 15:34ИнфоПравкаОтветитьIP

К стати, есть книжка Мозговой М.В. Алгоритмы, языки, автоматы, компиляторы. Практический подход. – СПб.: Наука и Техника, 2006. 320 с.
В ней автоматный подход описан достаточно понятно.

bessonov2
Member

Сообщений: 93
Регистрация: Май 2006

написано 15 Февраля 2007 23:41ИнфоПравкаОтветитьIP

CHANt
А. есть ли еще инструменты подобные S7-HiGraph, для PLC?
Вроде как есть под Линукс. Сам не знаю, даже не видел.

pw
Member

Сообщений: 78
Регистрация: Январь 2007

написано 05 Марта 2007 21:10ИнфоПравкаОтветитьIP

Мне тоже кажется, что заумно. Хотя и привлекательно. Но в АВ например полно ограничений на такую логику. Я сейчас пытаюсь понять, как адекватно её можно применить, но пока что без успеха. Ясно, что здорово, но все равно жжется. То тут не так, то тут не эдак. Наверно из-за нехватки опыта. Не совсем понятно как в качестве процедуры её мона применять, так как на обычной установке этих конечных автоматоф очень много вообще-тои все они должны работать одновременно. Таки текстовка и проще и надежнее (все однотипные задвижки мона просто в цикле обработать маненькой процедурой при наличии фантазии, там кроме тайм-аута нет ничего. Привяжись к астрономическому времени и без проблем). Но сама АВ её прям рекламит здорово. Применяй дескать и все тут. наверно я опять не про то.
Хотя интересно, как теория конечных автоматоф и процедурный подход между собой контактируют.

[Это сообщение изменил pw (изменение 06 Марта 2007 20:03).]

Ваш ответ:

Коды форума
Смайлики


Ник:    Пароль       
Отключить смайлики

Все время MSK

Склеить | Разбить | Закрыть | Переместить | Удалить

Новая тема | Написать ответ
Последние сообщения         
Перейти к:

Свяжитесь с нами | skunksworks.net

Copyright © skunksworks.net, 2000-2018

Разработка и техническая поддержка: skunksworks.net


Рейтинг@Mail.ru Яндекс.Метрика