Страница 1 из 3

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

Добавлено: 13 окт 2012, 15:03
Михайло
Представляю перевод главы 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.

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

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

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

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

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

Добавлено: 13 окт 2012, 18:11
san
Уже скачал, спасибо. А как это руководство по документированию?

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

Добавлено: 13 окт 2012, 20:16
CHANt
Ага, мне тоже интересно! Так как доку по мат. обеспечению делать приходится.

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

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

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

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

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

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

Добавлено: 14 окт 2012, 07:59
Михайло
CHANt писал(а):Описание своей графики выполняешь?
Что? :)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 14 окт 2012, 09:05
san
Кстати для документирования UML есть. Он сейчас используется во многих доках по тех. обеспечению.

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

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

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

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

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

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

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

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

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