Элементы языка SFC (перевод главы 2.6 стандарта МЭК 61131-3)

Автоматизация технологических процессов, системы управления, АСУ ТП, АСКУЭ, программирование ПЛК, человеко-машинный интерфейс, сетевое оборудование, протоколы
Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Элементы языка SFC (перевод главы 2.6 стандарта МЭК 61131-3)

Сообщение Михайло »

Представляю перевод главы 2.6 стандарта МЭК 61131-3.
2.6.doc
Вы можете свободно скачать мой перевод, читать его, исправлять ошибки, но при размещении данного материала у себя на сайте обязательно оставляйте ссылку на эту тему. Это не так уж и сложно.
ВЫДЕРЖКА ИЗ ПЕРЕВОДА писал(а):2.6 Элементы языка SFC
2.6.1 Общие сведения
Элементы SFC представляют собой средство разделения организационного блока программы программируемого контроллера в последовательность шагов и переходов, соединенных направленными связями. С каждым шагом связан набор действий, а с каждым переходом связано условие перехода.
2.6.2 Шаги
Как показано в таблице 40, шаг может быть представлен графически в виде прямоугольника, содержащим имя шага в форме идентификатора как определено в 2.1.2 или в текстовом виде конструкцией STEP...END_STEP.
Направленная связь к шагу может быть представлена графически вертикальной линией, присоединенной к верхней стороне шага. Направленная связь, исходящая из шага, может быть представлена вертикальной линией, присоединенной к нижней стороне шага. Направленные связи могут также быть представлены в текстовом виде конструкцией TRANSITION...END_TRANSITION, определенной в 2.6.3.
Флаг шага (активное или неактивное состояние шага) может быть представлен логическим значением булева структурного элемента ***.X, где *** - имя шага, как показано в таблице 40. Эта логическая переменная равна значению 1, когда соответствующий шаг является активным, и 0, когда - неактивным. Состояние этой переменной доступно для графического соединения в правой стороне шага как показано в таблице 40.
Точно так же прошедшее время ***.T, начиная с инициирования шага, может быть представлено структурным элементом типа TIME, как показано в таблице 40. Когда шаг будет деактивирован, значение прошедшего времени шага должно остаться в том же значении, когда шаг был деактивирован. Когда шаг активируется, значение прошедшего времени шага должно быть сброшено в нуль (t#0s).
Область определения имен шагов, флагов шага и времени шага должна быть локальной для организационного блока программы, в котором они определены.
Исходное состояние организационного блока программы представлено исходными значениями его внутренних переменных и выходных переменных, и его набором исходных шагов, то есть шагов, которые являются первоначально активными. У каждой сети SFC или ее текстового эквивалента должен быть один исходный шаг.
Исходный шаг может быть выделен графически двойной линией границы. При использовании набора символов, определенного в 2.1.1, исходный шаг должен быть выделен так, как показано в таблице 40.
При инициализации системы согласно 2.4.2, начальное прошедшее время по умолчанию для шагов - t#0s, и начальное состояние по умолчанию BOOL#0 для обычных шагов и BOOL#1 для исходных шагов. Однако, когда экземпляр функционального блока или программы объявляется сохраняющим (например, как в функции 3 из таблицы 33), состояния и (если поддерживается), прошедшие времена всех шагов, содержащихся в программе или функциональном блоке, должны быть обработаны также сохраняющими при инициализации системы как определено в 2.4.2.
2.6.3 Переходы
Переход представляет собой условие, посредством которого управление передается от одного или более шагов, предшествующих переходу к одному или более шагам-последователям вдоль соответствующей направленной связи. Переход должен быть представлен в виде горизонтальной линии.
Направление эволюции по направленным связям должно осуществляться от нижней стороны предшествующего шага (шагов) к верхней стороне последующего шага (шагов).
Каждый переход должен иметь связанное условие перехода, которое является результатом вычисления одного логического выражения. Условие перехода, которое всегда является истиной, должно быть представлено символом 1 или ключевым словом True.
Условие перехода может быть связано с переходом одним из следующих способов, как показано в таблице 41:
1) Записью соответствующего логического выражения на языке ST (см. главу 3.3), физически или логически совмещенной с вертикально направленной связью.
2) Цепочкой лестничной диаграммы на языке LD (см. главу 4.2), физически или логически совмещенной с вертикально направленной связью.
3) Цепочкой на языке FBD (см. глава в 4.3), физически или логически совмещенной с вертикально направленной связью.
4) Цепочкой LD или FBD, выход которой взаимодействует с вертикально направленной связью через коннектор как определено в 4.1.1.
5) Конструкцией TRANSITION...END_TRANSITION, используя язык ST. Конструкция должна состоять из:
- ключевых слов TRANSITION FROM и имени шага-предшественника (или, если есть больше чем один предшественник, заключенным в скобки списком шагов-предшественников);
- ключевого слова TO и имени шага-последователя (или, если есть больше чем один последователь, заключенным в скобки списком шагов-последователей);
- оператора присваивания (:=) и логического выражения на языке ST, определяющим условие перехода;
- завершающегося ключевого слова END_TRANSITION.
6) Конструкцией TRANSITION...END_TRANSITION, используя язык IL (см. главу 3.2). Конструкция должна состоять из:
- ключевых слов TRANSITION FROM, имени шага-предшественника (или, если есть больше чем один предшественник, заключенным в скобки списком шагов-предшественников) и двоеточия (:);
- ключевого слова TO и имени шага-последователя (или, если есть больше чем один последователь, заключенным в скобки списком шагов-последователей);
- начинающегося с новой строки списка инструкций на языке IL, результат вычисления которого определяет условие перехода;
- завершающееся ключевое слово END_TRANSITION с новой строки.
7) Использованием имени перехода в форме идентификатора справа от направленной связи. Этот идентификатор должен обратиться к конструкции TRANSITION...END_TRANSITION, определяющей один из следующих объектов, вычисление которых должно привести к присвоению логического значения к переменной, обозначенной именем перехода:
- цепочка на языках LD или FBD;
- список инструкций на языке IL;
- присвоение логического выражения на языке ST.
Область определения имени перехода должен быть локальным для организационного блока программы, в котором расположен переход.
2.6.4 Действия
Нуль или больше действий должны быть связаны с каждым шагом. Шаг, у которого нет связанных действий, нужно рассматривать как имеющий функцию WAIT, то есть ожидающий, когда условие исходящего перехода станет истиной.
Действие может иметь форму:
- булевой переменной,
- набора инструкций на языке IL, определенном в главе 3.2,
- набора операторов на языке ST, определенном в главе 3.3,
- набора цепочек на языке LD, определенном в главе 4.2,
- набора цепочек на языке FBD, определенном в главе 4.3,
- диаграммы SFC, организованной как определено в главе 2.6.
Действия должны быть объявлены через один или более механизмов, определенных в подпункте 2.6.4.1, и должны быть связаны с шагами с помощью текстовых тел шагов или графических блоков действий, как определено в подпункте 2.6.4.2.
Подробности схематического представления действия определены в подпункте 2.6.4.3. Управление действиями должно быть выражено квалификаторами действия так, как определено в подпункте 2.6.4.4.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
san
Специалист
Сообщения: 117
Зарегистрирован: 13 окт 2012, 17:17
Откуда: Киев
Контактная информация:

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение san »

Перевод это хорошо, но зачем? Дидактически материал не очень полезен, ИМХО, а в практических целях лучше пользоваться конкретной реализацией оного. Взять какой-то открытый ISaGraf или CodeSys и на примерах, на примерах...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение Михайло »

Я этот материал рассматриваю как руководство по документированию своих проектов. Кстати, зря не качаете, ведь текстовый документ "2.6.doc" содержит в себе больше информации, чем выложено здесь на форуме.

Аватара пользователя
san
Специалист
Сообщения: 117
Зарегистрирован: 13 окт 2012, 17:17
Откуда: Киев
Контактная информация:

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение san »

Уже скачал, спасибо. А как это руководство по документированию?

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение CHANt »

Ага, мне тоже интересно! Так как доку по мат. обеспечению делать приходится.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение Михайло »

san писал(а):А как это руководство по документированию?
Я имею в виду, что элементы языка SFC можно использовать при документировании своих программ. По уму перевести бы весь стандарт, потому что в графике языка SFC используются элементы остальных языков LD, FBD и даже ST.

А вот пример оформления документации многопоточного графа и соответствующая программа для S7-200.
Многопоточный граф.zip
Двойная горизонтальная линия на рисунке означает распараллеливание процессов. Все оформлено по стандарту.
Файл .frw пригодится для тех, кто работает в Компас-Графике.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение CHANt »

Как такового стандарта на изображения алгоритмов нет. По крайней мере советские ГОСТ устарели безнадежно. Так что нотация SFC вполне подходит для отображения, сам же SFC, в вариации сименса, слишком прожорливый, биться приходится за каждый килобайт программы. Так что я его редко применяю. Ну а тему с параллельными ветвями исполнения я помню. Только по моему типу тех.процесса, не всегда применим такой подход. У меня часть ветвей любят выводить из работы и переводить, скажем, на управление от оператора, вне зависимости от состояния основного монографа. Так что, часто предпочитаю раздельно выполнять графы и связывать их между собой в нотации CFC. Тем не менее принципы построения программы по типу монографа применяю.
Описание своей графики выполняешь?

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение Михайло »

CHANt писал(а):Описание своей графики выполняешь?
Что? :)

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение CHANt »

:D а ты как думал :lol: У меня проекты куча придурков читает, которым графические схемы алгоритмов, как бумажка в сортире)) Тем не менее они подписи ставят. Алгоритмы ПАЗ я вообще отображаю в нотации FBD, в теплоэнергетике они изначально так оформлялись, поэтому Ростехнадзор и промэкспертиза, хотя я сомневаюсь что они там хоть что-то понимают, согласовывают без придирок. Хотя я комментирую вскользь, типа данный алгоритм выполняет то-то, то-то, предусмотрено то-то. В общем 2-3 предложения.
Кстати, мне вот тут как-то, проверяющие органы вопрос задали - а почему в алгоритмах ПАЗ отсечки времени не делаю. Но, на встречный вопрос - а где в технологии говорится что надо вырубать все с паузой, ничего не смогли показать. Где нибудь попадались такие требования?

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение Автоматизатор »

Михайло писал(а):А вот пример оформления документации многопоточного графа и соответствующая программа для S7-200
Многопоточные графы не использую: если есть параллельные процессы (как правило простые, например: включить 3 механизма, дождаться срабатывания 3-х датчиков), то реализую это в одной вершине, пряча параллельные процессы в реализации графа.

Если процесс сложный, то делаю отдельные графы.
CHANt писал(а):предпочитаю раздельно выполнять графы и связывать их между собой в нотации CFC
Так еще не пробовал, но идея очень нравится.

Что касается реализации графа в программе, то в последнее время отказался от подхода, показанного в примере. Когда вначале обрабатываются переходы, а потом действия в состояниях. Получается, что в процессе отладки приходится скакать по листингу. Делаю все в одном месте: с помощью команды "переход на метку" перехожу к куску кода N-ого состояния: 1 выполняется действия с необходимыми блокировками, 2 анализируются переходы, 3 выход из подпрограммы. Таким образом, анализ провожу в одном месте (как правило кусок кода влазит на экран целиком).

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение Михайло »

CHANt писал(а):Где нибудь попадались такие требования?
Смотря что отрубать. Для двигателей есть такое требование, но оно применяется по усмотрению разработчика.
Автоматизатор писал(а):Так еще не пробовал, но идея очень нравится.
За CFC нужно отдать дополнительные деньги. Оно тебе надо?

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение Автоматизатор »

Михайло писал(а):За CFC нужно отдать дополнительные деньги. Оно тебе надо?
Я же не из своего кармана плачу! :) Тем более, если это позволит повысить скорость программирования, наглядность, сократит ошибки и т.п.

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение CHANt »

Автоматизатор писал(а):Делаю все в одном месте: с помощью команды "переход на метку" перехожу к куску кода N-ого состояния: 1 выполняется действия с необходимыми блокировками, 2 анализируются переходы, 3 выход из подпрограммы. Таким образом, анализ провожу в одном месте (как правило кусок кода влазит на экран целиком).
У меня переход на метку выполняется с сохранением номера состояния. Т.е. не выводя код, я точно знаю в каком месте у меня заткнулась программа, потому как вижу число на выходе блока. Поэтому анализирую сам граф нарисованный в MS Visio,в коде уже правлю конкретно. Правда, иногда так накосячишь с переходами, что начинает прыгать с одного в другое состояние, и сложно увидеть с какого началось. Надо протоколирование налаживать, но лень млин :D

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение Автоматизатор »

CHANt писал(а):Правда, иногда так накосячишь с переходами, что начинает прыгать с одного в другое состояние, и сложно увидеть с какого началось.
Для таких случаев делаю пошаговую отладку - переход от состояния к состоянию только по нажатию кнопки.

На панели управления стараюсь выводить строку с номером текущего состояния и комментарием "4 Включение поджима". При выполнении перехода сохраняю номер предыдущего состояния - это тоже позволяет лучше отслеживать переходы.

Аватара пользователя
san
Специалист
Сообщения: 117
Зарегистрирован: 13 окт 2012, 17:17
Откуда: Киев
Контактная информация:

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение san »

Михайло писал(а):Я имею в виду, что элементы языка SFC можно использовать при документировании своих программ. По уму перевести бы весь стандарт, потому что в графике языка SFC используются элементы остальных языков LD, FBD и даже ST.
Я пока только с Шнейдеровским SFC работал, но там в графике как раз нет остальных языков, а вот на шагах используются.
Скоро с КодеСисовским ещё познокомлюсь, так как SoMachnie Шнейдерсовкий базируется на версии 3.3 КодеСиса, а нам скоро его преподавать надо.
Как в Юнити реализован SFC (лайт вариант) выложил в быстром старте

Аватара пользователя
san
Специалист
Сообщения: 117
Зарегистрирован: 13 окт 2012, 17:17
Откуда: Киев
Контактная информация:

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение san »

Кстати для документирования UML есть. Он сейчас используется во многих доках по тех. обеспечению.

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение CHANt »

san писал(а):Кстати для документирования UML есть. Он сейчас используется во многих доках по тех. обеспечению.
В курсе, только вот, какую нить скромную программулину под UML, с возможностью вывода в офисный пакет, так и не встретил. Обычно какие нить модули к монстроузному ПО, с которым знакомится нет никакого желания.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение Михайло »

Я смотрел UML. Там могут применяться разные представления одних и тех же данных, там есть нечто подобное SFC. Разработчик сам выбирает подходящее ему представление программы. Также как мы выбираем один из языков МЭК.

P.S. Что там известно насчет DOCPRO?

Аватара пользователя
san
Специалист
Сообщения: 117
Зарегистрирован: 13 окт 2012, 17:17
Откуда: Киев
Контактная информация:

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение san »

Как по мне UMLочень разносторонний и от этого сложный. По этому лучше уж сети-Петри, он же SFC для ПЛК. Давича у нас была конференция, и один парень начал рассказывать о решении задачи на Петри. Как он удивился что есть язык программирования такой!
Да, кстати, я тогда первый раз подумал о нужности многомаркерного подхода, до этого никак не мог понять зачем он.
А вобще SFC очень понятный для технолога, по этому его поддерживают на стороне человеко-машинного интерфейса, чтоб шаги вручную передвигать, инициализировать и т.п. В Юнити для этого ещё и куча функций есть и типов переменных тоже куча. Не знаю как дела с этим в Степ7, он же там нависной.

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Элементы языка SFC (перевод главы 2.6 стандарта МЭК 6113

Сообщение CHANt »

Михайло писал(а):P.S. Что там известно насчет DOCPRO?
Шняга! Масштабом и компоновкой не поиграешь, поэтому программа на выходе имеет многие сотни страниц. Да и шаблоны штампов поменять, так коряво. Так что бестолково. Самому копаться в таком кол-ве страниц стремно.

Ответить