Перейти к основному содержимому

IEC 61499-2 Издание 2.0 (2012-11)

Функциональные блоки -- Часть 2: Требования к программным инструментам (Software tool requirements)

О стандарте

Международный стандарт IEC 61499-2 подготовлен подкомитетом 65B «Оборудование для измерения и управления» технического комитета IEC 65 «Измерение, управление и автоматизация промышленных процессов».

Второе издание отменяет и заменяет первое издание, опубликованное в 2005 году, и представляет собой техническую ревизию.

Основные технические изменения по сравнению с предыдущим изданием:

  • Содержимое Приложения A обновлено для соответствия техническим изменениям второго издания IEC 61499-1.
  • Секции CDATA теперь допускаются для текстового содержимого алгоритмов в Таблицах A.4 и A.5.

Введение

IEC 61499 состоит из следующих частей под общим заголовком Функциональные блоки (Function blocks):

  • Часть 1: Архитектура (Architecture)
  • Часть 2: Требования к программным инструментам (Software tool requirements)
  • Часть 3: Учебная информация (Tutorial information) -- отозвана
  • Часть 4: Правила для профилей соответствия (Rules for compliance profiles)

1 Область применения (Scope)

Данная часть IEC 61499 определяет требования к программным инструментам (software tools) для поддержки следующих задач системной инженерии, перечисленных в IEC 61499-1:

  • спецификация типов функциональных блоков (function block types);
  • функциональная спецификация типов ресурсов (resource types) и типов устройств (device types);
  • спецификация, анализ и валидация распределённых ИПСИУ (IPMCS -- Industrial Process Measurement and Control Systems);
  • конфигурирование (configuration), реализация (implementation), эксплуатация и обслуживание распределённых ИПСИУ;
  • обмен информацией (information) между программными инструментами (software tools).

Предполагается, что такие программные инструменты могут использоваться в контексте Инженерной среды поддержки (Engineering Support System, ESS), описанной в IEC 61499-1.

Определение полного жизненного цикла промышленных систем измерения и управления (ИПСИУ) или полного набора задач и операций, необходимых для поддержки ИПСИУ на протяжении всего жизненного цикла, выходит за рамки данного стандарта. Однако другие стандарты, определяющие такие задачи и операции, могут расширять или изменять требования, установленные в данной части IEC 61499.


2 Нормативные ссылки (Normative references)

Следующие документы, полностью или частично, нормативно упоминаются в данном документе и необходимы для его применения. Для датированных ссылок применяется только указанное издание. Для недатированных ссылок применяется последнее издание упоминаемого документа (включая все поправки).

  • IEC 61131-3:2003, Programmable controllers -- Part 3: Programming languages (Программируемые контроллеры -- Часть 3: Языки программирования)
  • IEC 61499-1:2012, Function blocks -- Part 1: Architecture (Функциональные блоки -- Часть 1: Архитектура)
  • ISO/IEC 8824 (все части), Information technology -- Abstract Syntax Notation One (ASN.1) (Информационная технология -- Абстрактная синтаксическая нотация версии один)

3 Термины и определения (Terms and definitions)

Для целей данного документа применяются термины и определения, приведённые в IEC 61499-1, а также следующее.

3.1 Элемент библиотеки (library element)

Совокупность объявлений (declarations), относящихся к типу данных (data type), типу функционального блока (function block type), типу адаптера (adapter type), типу подприложения (subapplication type), типу ресурса (resource type), типу устройства (device type), типу сегмента (segment type) или конфигурации системы (system configuration).


4 Требования к программным инструментам (Software tool requirements)

4.1 Информация, предоставляемая поставщиком программного инструмента

Данный раздел определяет функциональные требования к программным инструментам (software tools), поддерживающим выполнение задач системной инженерии, перечисленных в Разделе 1.

Поставщик программного инструмента должен указать следующую информацию в дополнение к другой информации, требуемой в данном разделе:

  • тип или типы элементов библиотеки (library element), к которым применим программный инструмент;
  • задачу или задачи инженерии, поддерживаемые программным инструментом. Описания задач могут быть взяты из перечисления задач инженерии, приведённого в Разделе 1, или определены поставщиком.

4.2 Обмен элементами библиотеки (Exchange of library elements)

Программный инструмент должен быть способен обмениваться своими элементами библиотеки с другими программными инструментами. Такой обмен должен осуществляться в форме данных (data) в формате, определённом в Приложении A, записанных на физические носители или передаваемых по каналам связи или сетям.

4.3 Информация, предоставляемая поставщиком элементов библиотеки

Примечание

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

Поставщик элемента библиотеки может предоставить реализацию (implementation) элемента библиотеки.

ПРИМЕР 1. Поставщик элемента библиотеки типа функционального блока (function block type) может предоставить реализацию типа ФБ в виде:

  • одного или нескольких экземпляров (instances) типа ФБ в ресурсе (resource), содержащемся в устройстве (device) Класса 0 или выше, как описано в IEC 61499-4;
  • инстанцируемой реализации типа ФБ в ресурсе, содержащемся в устройстве Класса 1 или выше, как описано в IEC 61499-4;
  • файла в зависящем от реализации (implementation-dependent) формате, пригодного для установки в ресурсе, содержащемся в устройстве Класса 2, как описано в IEC 61499-4, например, с использованием XML-синтаксиса, определённого в Приложении D.

Когда предоставляется реализация элемента библиотеки, поставщик не обязан раскрывать полные детали реализации. Однако поставщик должен предоставить достаточную информацию, чтобы пользователь мог полностью определить функциональность предоставленного элемента библиотеки.

ПРИМЕР 2. Требование предыдущего параграфа может быть выполнено поставщиком экземпляра (instance) типа ФБ в ресурсе (resource) путём предоставления, как минимум, следующей информации:

  • элемент библиотеки типа функционального блока, определяющий его интерфейсы событий (event interfaces), интерфейсы данных (data interfaces) и сервисы (services), как определено в IEC 61499-1;
  • элементы библиотек типа ресурса (resource type) и типа устройства (device type), показывающие наличие и соединения экземпляров функциональных блоков.

4.4 Отображение объявлений (Display of declarations)

Программный инструмент должен быть способен отображать объявления (declarations) своих ассоциированных элементов библиотеки в форме, соответствующей задаче инженерии. Отображение может использовать графические или текстовые форматы, определённые в IEC 61499-1, или формат, определённый поставщиком программного инструмента.

Примечание

Объявления элемента библиотеки могут определять его интерфейсы (interfaces) (событийные и информационные входы и выходы), внутренние переменные (internal variables), а также его алгоритмы (algorithms) и управление их выполнением, например, через диаграмму управления выполнением (Execution Control Chart, ECC) и т.д.

Программные инструменты могут предоставлять дополнительные возможности, помимо описанных в IEC 61499-1, для графического отображения объявлений.

ПРИМЕР 1. При отображении Диаграммы управления выполнением (ECC) инструмент может предоставлять, наряду с отображением каждого перехода, порядковый номер, указывающий порядок, в котором переход вычисляется (как определено в IEC 61499-1).

ПРИМЕР 2. Программный инструмент может обеспечивать навигацию по отображению (mapping) от представления экземпляра функционального блока в приложении (application) к его соответствующему представлению в ресурсе, и наоборот.

4.5 Модификация объявлений (Modification of declarations)

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

ПРИМЕР. Программный инструмент может предоставлять удобные средства для изменения порядка, в котором объявления перечислены в текстовом представлении, например, в списке переходов в Диаграмме управления выполнением (ECC), без необходимости редактировать текстовое представление вручную такими средствами, как «вырезать и вставить».

4.6 Валидация объявлений (Validation of declarations)

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

  • Проверку корректности синтаксиса объявлений.
  • Проверку семантической корректности объявлений, например, проверку того, что все экземпляры функциональных блоков (function block instances) в приложении (application) и его ассоциированные подприложения (subapplications) правильно распределены по ресурсам (resources), соединены внутри ресурсов и взаимодействуют между ресурсами в конфигурации системы (system configuration).
  • Симуляцию и тестирование работы экземпляра (instance) типа (type) элемента библиотеки, как самостоятельно, так и в ассоциации с другими экземплярами того же или различных типов.

4.7 Реализация объявлений (Implementation of declarations)

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

  • создание исполняемого кода («прошивки») для встраивания в экземпляры типов ресурсов и типов устройств;
  • создание и соединение («загрузку») экземпляров функциональных блоков в ресурсах и устройствах, например, с использованием средств управления, определённых в подразделе 6.3 и Приложениях F и G стандарта IEC 61499-1.

4.8 Эксплуатация, тестирование и обслуживание системы (System operation, testing and maintenance)

Если это требуется связанной задачей инженерии, программный инструмент должен предоставлять средства для эксплуатации, тестирования и обслуживания Промышленной системы измерения и управления (ИПСИУ / IPMCS), определённой его ассоциированными элементами библиотеки. Такие средства могут включать, но не ограничиваться:

  • средства, описанные в предыдущих подразделах данного Раздела;
  • средства обмена информацией, определённые в IEC 61499-1.

Приложение A (нормативное) -- Определения типов документов (DTD)

A.1 Общие принципы (General principles)

Данное Приложение представляет Определения типов документов (Document Type Definitions, DTD) для обмена элементами библиотеки IEC 61499 между программными инструментами (software tools). Эти DTD определены в синтаксисе, установленном спецификацией расширяемого языка разметки XML (eXtensible Markup Language) по адресу www.w3.org/TR/2000/REC-xml-20001006.

Соответствия между элементами DTD, приведёнными в данном приложении, элементами библиотеки, определёнными в IEC 61499-1 (C.2.1), и текстовым синтаксисом, приведённым в IEC 61499-1 (Приложение B), даны в Таблице A.1.

Таблица A.1 -- Элементы определения типов документов (DTD)

Элемент DTDLibraryElementТекстовый синтаксис
DataTypeDataTypeDeclarationdata_type_declaration (IEC 61131-3, B.1.3)
FBTypeFBTypeDeclarationfb_type_declaration
SubapplicationTypeSubapplicationTypeDeclarationsubapplication_type_declaration
AdapterTypeAdapterTypeDeclarationadapter_type_declaration
ResourceTypeResourceTypeDeclarationresource_type_specification
DeviceTypeDeviceTypeDeclarationdevice_type_specification
SystemSystemConfigurationsystem_configuration

Первая таблица каждого подраздела данного Приложения содержит DTD для соответствующего элемента библиотеки. Вторая таблица каждого подраздела предоставляет ссылку на текстовый синтаксис (если применимо) и пояснение основных элементов и атрибутов DTD. Далее приведены примеры результирующих XML-файлов для типичных элементов библиотеки.

Примечания
  1. В случае конфликта между положениями данного Приложения и положениями Приложения B стандарта IEC 61499-1, преимущественную силу имеют положения последнего.
  2. Примеры, приведённые в данном Приложении, представляют собой репрезентативную, но не исчерпывающую выборку возможностей ассоциированных DTD. В частности, эти примеры не предназначены для использования в качестве набора тестов для проверки соответствия положениям данного стандарта.

A.2 DTD типа данных (DataType DTD)

XML-документ, соответствующий DTD в Таблице A.2, представляет объект DataTypeDeclaration, описанный в C.2.2 стандарта IEC 61499-1.

Таблица A.2 -- DataType DTD

<?xml version="1.0" encoding="UTF-8"?>

<!ELEMENT DataType (Identification?, VersionInfo+, CompilerInfo?,
ASN1Tag?, (DirectlyDerivedType | EnumeratedType | SubrangeType |
ArrayType | StructuredType))>
<!ATTLIST DataType
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT Identification EMPTY>
<!ATTLIST Identification
Standard CDATA #IMPLIED
Classification CDATA #IMPLIED
ApplicationDomain CDATA #IMPLIED
Function CDATA #IMPLIED
Type CDATA #IMPLIED
Description CDATA #IMPLIED>

<!ELEMENT VersionInfo EMPTY>
<!ATTLIST VersionInfo
Organization CDATA #REQUIRED
Version CDATA #REQUIRED
Author CDATA #REQUIRED
Date CDATA #REQUIRED
Remarks CDATA #IMPLIED>

<!ELEMENT ASN1Tag EMPTY>
<!ATTLIST ASN1Tag
Class (UNIVERSAL | APPLICATION | CONTEXT | PRIVATE) #IMPLIED
Number CDATA #REQUIRED>

<!ELEMENT CompilerInfo (Compiler*)>
<!ATTLIST CompilerInfo
header CDATA #IMPLIED
classdef CDATA #IMPLIED>

<!ELEMENT Compiler EMPTY>
<!ATTLIST Compiler
Language (Java | Cpp | C | Other) #REQUIRED
Vendor CDATA #REQUIRED
Product CDATA #REQUIRED
Version CDATA #REQUIRED>

<!ELEMENT DirectlyDerivedType EMPTY>
<!ATTLIST DirectlyDerivedType
BaseType (BOOL | SINT | INT | DINT | LINT | USINT | UINT | UDINT
| ULINT | REAL | LREAL | TIME | DATE | TIME_OF_DAY | TOD
| DATE_AND_TIME | DT | STRING | BYTE | WORD | DWORD | LWORD |
WSTRING) #REQUIRED
InitialValue CDATA #IMPLIED
Comment CDATA #IMPLIED>

<!ELEMENT EnumeratedType (EnumeratedValue+)>
<!ATTLIST EnumeratedType
InitialValue CDATA #IMPLIED
Comment CDATA #IMPLIED>

<!ELEMENT EnumeratedValue EMPTY>
<!ATTLIST EnumeratedValue
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT SubrangeType (Subrange)>
<!ATTLIST SubrangeType
BaseType (SINT|INT|DINT|LINT|USINT|UINT|UDINT|ULINT) #REQUIRED
InitialValue CDATA #IMPLIED
Comment CDATA #IMPLIED>

<!ELEMENT Subrange EMPTY>
<!ATTLIST Subrange
LowerLimit CDATA #REQUIRED
UpperLimit CDATA #REQUIRED>

<!ELEMENT ArrayType (Subrange+)>
<!ATTLIST ArrayType
BaseType CDATA #REQUIRED
InitialValues CDATA #IMPLIED
Comment CDATA #IMPLIED>

<!ELEMENT StructuredType (VarDeclaration|SubrangeVarDeclaration)+>
<!ATTLIST StructuredType
Comment CDATA #IMPLIED>

<!ELEMENT VarDeclaration EMPTY>
<!ATTLIST VarDeclaration
Name CDATA #REQUIRED
Type CDATA #REQUIRED
ArraySize CDATA #IMPLIED
InitialValue CDATA #IMPLIED
Comment CDATA #IMPLIED>

<!ELEMENT SubrangeVarDeclaration (Subrange+)>
<!ATTLIST SubrangeVarDeclaration
Name CDATA #REQUIRED
Type (SINT|INT|DINT|LINT|USINT|UINT|UDINT|ULINT) #REQUIRED
InitialValue CDATA #IMPLIED
Comment CDATA #IMPLIED>

Пояснения элементов DataType DTD (Таблица A.3)

Элемент / АтрибутТекстовый синтаксисПояснение
DataTypeСм. IEC 61131-3
Namedata_type_nameИмя типа данных
Comment--Комментарий по IEC 61131-3 без разделителей (* и *)
IdentificationИнформация для поиска в базе данных
StandardСсылка на основной стандарт в формате номер-часть-подраздел
ClassificationКод классификации по справочному стандарту
ApplicationDomainОбласть применения по справочному стандарту
FunctionФункция данного элемента по справочному стандарту
TypeТип элемента (напр., тип устройства) по справочному стандарту
DescriptionОписательная фраза по справочному стандарту
VersionInfo--Возможно несколько записей: первая -- самая новая версия, последняя -- первая выпущенная версия
Organization--Организация, предоставляющая данный элемент библиотеки
Versiondigit[digit]'.'digit[digit][letter]Идентификатор версии
Author--Автор данного элемента библиотеки
Datedate_literal['-'daytime]Дата выпуска данной версии
Remarks--Комментарии к данной версии
ASN1TagТег ASN.1 по ISO/IEC 8824
CompilerInfo--Информация о компиляторах, используемых с данным классом
header--Информация заголовка: пакет, импорты и т.д.
classdef--Информация об определении класса: суперкласс и реализуемые интерфейсы
Compiler--Возможно несколько компиляторов, использованных с данной версией
Language--Исходный язык компилятора
Vendor--Производитель компилятора
Product--Название продукта компилятора
DirectlyDerivedTypeСм. IEC 61131-3, Таблицы 12 и 14, пункт 1
BaseTypeelementary_type_nameБазовый элементарный тип
InitialValueconstantНачальное значение
EnumeratedTypeСм. IEC 61131-3, Таблицы 12 и 14, пункт 2
SubrangeTypeСм. IEC 61131-3, Таблицы 12 и 14, пункт 3
SubrangeДиапазон: LowerLimit .. UpperLimit
ArrayTypeСм. IEC 61131-3, Таблицы 12 и 14, пункт 4
StructuredTypeСм. IEC 61131-3, Таблицы 12, пункт 5 и 14, пункты 5 и 6

Пример XML для типа данных

Структурированный тип данных ANALOG_CHANNEL_CONFIGURATION1 из IEC 61131-3, Таблица 14:

Текстовый синтаксис:

TYPE ANALOG_CHANNEL_CONFIGURATION1:
STRUCT
RANGE: ANALOG_SIGNAL_RANGE;
MIN_SCALE: ANALOG_DATA:= -4095;
MAX_SCALE: ANALOG_DATA:= 4095;
END_STRUCT;
END_TYPE

Соответствующий XML-документ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DataType SYSTEM "DataType.dtd">
<DataType
Name="ANALOG_CHANNEL_CONFIGURATION1"
Comment="IEC 61131-3, Table 14#5">
<Identification
Function="Configuration Data"
Standard="61131-3-2.3.3.2"
ApplicationDomain="Any"
Classification="Data type"
Type="Analog"
Description="Table 14, #5"/>
<VersionInfo
Organization="IEC SC65B/WG7/TF3"
Version="2.0"
Author="JHC"
Date="2000-01-31"/>
<StructuredType>
<VarDeclaration Name="SIGNAL_RANGE"
Type="ANALOG_SIGNAL_RANGE"/>
<VarDeclaration Name="MIN_SCALE"
Type="ANALOG_DATA"
InitialValue="-4095"/>
<VarDeclaration Name="MAX_SCALE"
Type="ANALOG_DATA"
InitialValue="4095"/>
</StructuredType>
</DataType>

A.3 DTD элемента библиотеки (LibraryElement DTD)

XML-документ, соответствующий DTD в Таблице A.4, представляет объект LibraryElement, описанный в Приложении C стандарта IEC 61499-1. Возможные корневые элементы такого документа: FBType, AdapterType, ResourceType, DeviceType, System и SubappType, представляющие конкретные подклассы FBTypeDeclaration, AdapterTypeDeclaration, ResourceTypeDeclaration, DeviceTypeDeclaration, SystemConfiguration и SubapplicationTypeDeclaration абстрактного суперкласса LibraryElement соответственно. Подкласс DataTypeDeclaration представлен отдельно DTD, приведённым в Разделе A.2.

Таблица A.4 -- LibraryElement DTD (часть 1 из 5: общие элементы)

<?xml version="1.0" encoding="UTF-8"?>
<!-- Общие элементы (Common elements) -->
<!ELEMENT Identification EMPTY>
<!ATTLIST Identification
Standard CDATA #IMPLIED
Classification CDATA #IMPLIED
ApplicationDomain CDATA #IMPLIED
Function CDATA #IMPLIED
Type CDATA #IMPLIED
Description CDATA #IMPLIED>

<!ELEMENT VersionInfo EMPTY>
<!ATTLIST VersionInfo
Organization CDATA #REQUIRED
Version CDATA #REQUIRED
Author CDATA #REQUIRED
Date CDATA #REQUIRED
Remarks CDATA #IMPLIED>

<!ELEMENT CompilerInfo (Compiler*)>
<!ATTLIST CompilerInfo
header CDATA #IMPLIED
classdef CDATA #IMPLIED>

<!ELEMENT Compiler EMPTY>
<!ATTLIST Compiler
Language (Java | Cpp | C | Other) #REQUIRED
Vendor CDATA #REQUIRED
Product CDATA #REQUIRED
Version CDATA #REQUIRED>

<!ELEMENT FBNetwork
(FB*,EventConnections?,DataConnections?,AdapterConnections?)>

<!ELEMENT FB (Parameter*)>
<!ATTLIST FB
Name CDATA #REQUIRED
Type CDATA #REQUIRED
Comment CDATA #IMPLIED
x CDATA #IMPLIED
y CDATA #IMPLIED>

<!ELEMENT EventConnections (Connection+)>
<!ELEMENT DataConnections (Connection+)>
<!ELEMENT AdapterConnections (Connection+)>
<!ELEMENT Connection EMPTY>
<!ATTLIST Connection
Source CDATA #REQUIRED
Destination CDATA #REQUIRED
Comment CDATA #IMPLIED
dx1 CDATA #IMPLIED
dx2 CDATA #IMPLIED
dy CDATA #IMPLIED>

Таблица A.4 (часть 2 из 5: элементы FBType)

<!-- Элементы FBType -->
<!ELEMENT FBType
(Identification?,VersionInfo+,CompilerInfo?,InterfaceList,
(BasicFB | FBNetwork)?, Service?) >
<!ATTLIST FBType
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT InterfaceList
(EventInputs?,EventOutputs?,InputVars?,OutputVars?,
Sockets?, Plugs?)>
<!ELEMENT EventInputs (Event+)>
<!ELEMENT EventOutputs (Event+)>
<!ELEMENT InputVars (VarDeclaration+)>
<!ELEMENT OutputVars (VarDeclaration+)>
<!ELEMENT Sockets (AdapterDeclaration+)>
<!ELEMENT Plugs (AdapterDeclaration+)>

<!ELEMENT Event (With*)>
<!ATTLIST Event
Name CDATA #REQUIRED
Type CDATA #IMPLIED
Comment CDATA #IMPLIED>

<!ELEMENT With EMPTY>
<!ATTLIST With
Var CDATA #REQUIRED>

<!ELEMENT VarDeclaration EMPTY>
<!ATTLIST VarDeclaration
Name CDATA #REQUIRED
Type CDATA #REQUIRED
ArraySize CDATA #IMPLIED
InitialValue CDATA #IMPLIED
Comment CDATA #IMPLIED>

<!ELEMENT AdapterDeclaration (Parameter*)>
<!ATTLIST AdapterDeclaration
Name CDATA #REQUIRED
Type CDATA #REQUIRED
Comment CDATA #IMPLIED
x CDATA #IMPLIED
y CDATA #IMPLIED>

<!ELEMENT BasicFB (InternalVars?,ECC?,Algorithm*)>
<!ELEMENT InternalVars (VarDeclaration+)>
<!ELEMENT ECC (ECState+,ECTransition+)>

<!ELEMENT ECState (ECAction*)>
<!ATTLIST ECState
Name CDATA #REQUIRED
Comment CDATA #IMPLIED
x CDATA #IMPLIED
y CDATA #IMPLIED>

<!ELEMENT ECTransition EMPTY>
<!ATTLIST ECTransition
Source CDATA #REQUIRED
Destination CDATA #REQUIRED
Condition CDATA #REQUIRED
Comment CDATA #IMPLIED
x CDATA #IMPLIED
y CDATA #IMPLIED>

<!ELEMENT ECAction EMPTY>
<!ATTLIST ECAction
Algorithm CDATA #IMPLIED
Output CDATA #IMPLIED>

Таблица A.4 (часть 3 из 5: элементы Algorithm, Service, AdapterType)

<!ELEMENT Algorithm (VarDeclaration*, (FBD | ST | LD | Other))>
<!ATTLIST Algorithm
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT FBD (FB+,DataConnections)>

<!ELEMENT ST (#PCDATA)>
<!ATTLIST ST
Text CDATA #IMPLIED >

<!ELEMENT LD (Rung+)>
<!ELEMENT Rung (#PCDATA)>
<!ATTLIST Rung
Output CDATA #REQUIRED
Expression CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT Other (#PCDATA)>
<!ATTLIST Other
Language CDATA #REQUIRED >

<!ELEMENT Service (ServiceSequence+)>
<!ATTLIST Service
RightInterface CDATA #REQUIRED
LeftInterface CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT ServiceSequence (ServiceTransaction*)>
<!ATTLIST ServiceSequence
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT ServiceTransaction (InputPrimitive?, OutputPrimitive*)>

<!ELEMENT InputPrimitive EMPTY>
<!ATTLIST InputPrimitive
Interface CDATA #REQUIRED
Event CDATA #REQUIRED
Parameters CDATA #IMPLIED>

<!ELEMENT OutputPrimitive EMPTY>
<!ATTLIST OutputPrimitive
Interface CDATA #REQUIRED
Event CDATA #REQUIRED
Parameters CDATA #IMPLIED>

<!-- Элементы AdapterType -->
<!ELEMENT AdapterType
(Identification?,VersionInfo+,CompilerInfo?,InterfaceList,Service?)>
<!ATTLIST AdapterType
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

Таблица A.4 (часть 4 из 5: элементы ResourceType, DeviceType, System)

<!-- Элементы ResourceType -->
<!ELEMENT ResourceType (Identification?,VersionInfo+, CompilerInfo?,
FBTypeName*, VarDeclaration*, FBNetwork?)>
<!ATTLIST ResourceType
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT FBTypeName EMPTY>
<!ATTLIST FBTypeName
Name CDATA #REQUIRED>

<!-- Элементы DeviceType -->
<!ELEMENT DeviceType (Identification?, VersionInfo+, CompilerInfo?,
VarDeclaration*, ResourceTypeName*, Resource*, FBNetwork?)>
<!ATTLIST DeviceType
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT ResourceTypeName EMPTY>
<!ATTLIST ResourceTypeName
Name CDATA #REQUIRED >

<!ELEMENT Resource (Parameter*,FBNetwork?)>
<!ATTLIST Resource
Name CDATA #REQUIRED
Type CDATA #REQUIRED
Comment CDATA #IMPLIED
x CDATA #IMPLIED
y CDATA #IMPLIED>

<!-- Элементы System (конфигурация системы) -->
<!ELEMENT System (Identification?, VersionInfo+, CompilerInfo?,
Application*, Device+, Mapping*, Segment*, Link*)>
<!ATTLIST System
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT Application (SubAppNetwork)>
<!ATTLIST Application
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT Mapping EMPTY>
<!ATTLIST Mapping
From CDATA #REQUIRED
To CDATA #REQUIRED>

<!ELEMENT Device (Parameter*,Resource*,FBNetwork?)>
<!ATTLIST Device
Name CDATA #REQUIRED
Type CDATA #REQUIRED
Comment CDATA #IMPLIED
x CDATA #IMPLIED
y CDATA #IMPLIED>

Таблица A.4 (часть 5 из 5: элементы SubAppType, сети, сегменты)

<!-- Элементы SubAppType -->
<!ELEMENT SubAppType
(Identification?,VersionInfo+,CompilerInfo?,SubAppInterfaceList,
SubAppNetwork?)>
<!ATTLIST SubAppType
Name CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT SubAppInterfaceList
(SubAppEventInputs?,SubAppEventOutputs?,InputVars?,OutputVars?)>
<!ELEMENT SubAppEventInputs (SubAppEvent+)>
<!ELEMENT SubAppEventOutputs (SubAppEvent+)>

<!ELEMENT SubAppEvent EMPTY>
<!ATTLIST SubAppEvent
Name CDATA #REQUIRED
Type CDATA #IMPLIED
Comment CDATA #IMPLIED>

<!ELEMENT SubAppNetwork
(SubApp*,FB*,EventConnections?,DataConnections?, AdapterConnections?)>

<!ELEMENT SubApp EMPTY>
<!ATTLIST SubApp
Name CDATA #REQUIRED
Type CDATA #REQUIRED
Comment CDATA #IMPLIED
x CDATA #IMPLIED
y CDATA #IMPLIED>

<!-- Элементы сети (Network elements) -->
<!ELEMENT SegmentType (Identification?,VersionInfo+, CompilerInfo?,
VarDeclaration*)>
<!ATTLIST SegmentType
Name CDATA #REQUIRED
Comment CDATA #IMPLIED >

<!ELEMENT Segment (Parameter*)>
<!ATTLIST Segment
Name CDATA #REQUIRED
Type CDATA #REQUIRED
Comment CDATA #IMPLIED
x CDATA #IMPLIED
y CDATA #IMPLIED
dx1 CDATA #IMPLIED>

<!ELEMENT Parameter EMPTY>
<!ATTLIST Parameter
Name CDATA #REQUIRED
Value CDATA #REQUIRED
Comment CDATA #IMPLIED>

<!ELEMENT Link (Parameter*)>
<!ATTLIST Link
SegmentName CDATA #REQUIRED
CommResource CDATA #REQUIRED
Comment CDATA #IMPLIED >

Пояснения элементов LibraryElement DTD (Таблица A.5)

Основные элементы и атрибуты:

Элемент / АтрибутСинтаксис (IEC 61499-1, Приложение B)Пояснение
FBNetworkСеть функциональных блоков по IEC 61499-1
FBЭкземпляр функционального блока по IEC 61499-1
FB.Namefb_instance_nameИмя экземпляра ФБ
FB.Typefb_type_nameИмя типа ФБ
x, yСм. Приложение B (графическая модель)
ConnectionСоединение событий, соединение данных или соединение адаптеров по IEC 61499-1
Connection.SourceИсточник соединения
Connection.DestinationНазначение соединения
dx1, dx2, dyСм. Приложение B (маршрутизация соединений)
FBTypeТип функционального блока по IEC 61499-1
EventОбъявление интерфейса событий
WithОбъявление ассоциации между событием и переменной
VarDeclarationОбъявление переменной
AdapterDeclarationОбъявление интерфейса разъёма (plug) или гнезда (socket) типа ФБ
ECStateСостояние EC по IEC 61499-1
ECTransitionПереход EC по IEC 61499-1
ECActionДействие EC по IEC 61499-1
AlgorithmАлгоритм на указанном языке
STАлгоритм на языке ST (IEC 61131-3)
LD / RungСтупень алгоритма на языке LD
OtherАлгоритм на языке, отличном от FBD, ST или LD
ServiceОбъявление сервиса по IEC 61499-1
ServiceSequenceОбъявление последовательности сервиса
InputPrimitiveВходной примитив сервиса
OutputPrimitiveВыходной примитив сервиса
AdapterTypeОбъявление типа адаптерного интерфейса по IEC 61499-1
ResourceTypeОбъявление типа ресурса по IEC 61499-1
FBTypeNameИмя типа ФБ, поддерживаемого всеми экземплярами типа ресурса
DeviceTypeОбъявление типа устройства по IEC 61499-1
ResourceTypeNameИмя типа ресурса, поддерживаемого всеми экземплярами типа устройства
ResourceЭкземпляр ресурса, присутствующий во всех экземплярах типа устройства
SystemОбъявление конфигурации системы по IEC 61499-1
ApplicationОбъявление приложения по IEC 61499-1
MappingОтображение экземпляра ФБ из приложения на экземпляр ФБ в ресурсе
Mapping.Fromfb_instance_referenceИерархическое имя экземпляра ФБ в приложении, напр. APP1.SUBAPP2.FB2
Mapping.Tofb_resource_referenceИерархическое имя экземпляра ФБ в физической системе
DeviceОбъявление конфигурации устройства по IEC 61499-1
SubAppTypeОбъявление типа подприложения по IEC 61499-1
SubAppEventОбъявление интерфейса событий типа подприложения
SubAppЭкземпляр подприложения по IEC 61499-1
SegmentTypeОбъявление типа сегмента по IEC 61499-1
SegmentСегмент коммуникационной сети
LinkСвязь между элементом Segment и элементом Device
Link.CommResourceresource_hierarchyКоммуникационный ресурс, связанный с сегментом сети
ParameterПараметр элемента, напр. Segment или Link
Parameter.ValueСтрока символов в формате, подходящем для выражения значения ассоциированного параметра
Примечания к таблице
  • a) Спецификация алгоритмов на языках, отличных от FBD, ST и LD, выходит за рамки данного стандарта.
  • b) Рекомендуется ограничивать использование языка LD ступенями, выполняющими присваивание <output>:= <expression>. Для переносимости рекомендуется постфиксный синтаксис для элемента Expression с разделением пробелами.
  • c) В зависимости от контекста синтаксис Source или Destination должен соответствовать одной из продукций event_conn, data_conn, adapter_conn, subapp_event_conn, subapp_data_conn, config_event_conn, config_data_conn, config_adapter_conn, devtype_event_conn, devtype_data_conn или devtype_adapter_conn из Приложения B стандарта IEC 61499-1.
  • l) Для повышения читаемости и снижения вероятности ошибок при кодировании и разборе данных рекомендуется использовать секции CDATA вместо текстовых атрибутов для элементов алгоритмов.

Приложение B (информативное) -- Графическая модель (Graphics model)

B.1 Система координат (Coordinate system)

Данное Приложение представляет простую графическую модель, позволяющую приблизительно воспроизвести графическое представление коммуникационных сетей (communication networks), сетей функциональных блоков (function block networks) и диаграмм управления выполнением (Execution Control Charts, ECC) при обмене между программными инструментами, используя данные, определённые для элементов FBNetwork, ECC, ResourceType, DeviceType, SubAppType и System в DTD LibraryElement (Приложение A).

Примечание

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

Поскольку основным направлением потока событий и данных в сетях функциональных блоков является слева направо, а вторичным -- сверху вниз, система координат графической модели имеет начало координат (x=y=0) в левом верхнем углу, с увеличением значений x-координаты слева направо и значений y-координаты сверху вниз, как показано на Рисунке B.1.

Для обеспечения независимости от размеров шрифта и разрешения экрана, координаты x и y выражаются в долях от 1% высоты строки (обозначенной как h на Рисунке B.1), используемой для компоновки входов и выходов функциональных блоков.

Графическая модель

Рисунок B.1 -- Графическая модель

ПРИМЕР. Верхний левый угол экземпляра DSCYL_CTL с именем CTL на Рисунке B.1 расположен примерно в 10h единицах от левого края диаграммы и 5h единицах от верхнего края диаграммы; следовательно, значения атрибутов x и y соответствующего подэлемента FB в элементе FBNetwork XML-документа будут равны 1000 и 500 соответственно.

B.2 Расположение графических элементов (Location of graphical elements)

Расположение экземпляра функционального блока (function block instance) определяется расположением верхнего левого угла его графического контура.

Расположение состояния EC (EC state) определяется центральной точкой ограничивающего прямоугольника, содержащего имя состояния.

Расположение условия перехода EC (EC transition condition) определяется центральной точкой невидимого ограничивающего прямоугольника, содержащего условие перехода.

Примечание

Координаты (x, y) могут использоваться в синтаксисе передачи для экземпляров устройств и экземпляров ресурсов. Однако программные инструменты, использующие стандартные графические или древовидные нотации для этих элементов, не обязаны использовать или генерировать эти атрибуты.

B.3 Маршрутизация соединений (Routing of connections)

Как показано на Рисунке B.1, соединения данных (data connections), соединения событий (event connections) и соединения адаптеров (adapter connections) могут быть нарисованы в виде нечётного числа отрезков линий в соответствии со следующими правилами:

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

b) Когда источник соединения находится слева от его назначения, соединение может быть нарисовано как три последовательных отрезка: от правого края ФБ-источника вправо на расстояние dx1; затем вертикально на соответствующее расстояние; затем горизонтально до левого края ФБ-назначения.

c) Когда источник соединения находится слева или справа от его назначения, соединение может быть нарисовано как пять последовательных отрезков: от правого края ФБ-источника вправо на расстояние dx1; затем вертикально на расстояние dy; затем горизонтально до x-координаты, находящейся на расстоянии dx2 левее левого края ФБ-назначения; затем вертикально на соответствующее расстояние; затем горизонтально до левого края ФБ-назначения.

d) Переходы EC (EC transitions) рисуются как два прямых отрезка от расположения исходного действия EC до расположения условия перехода EC и далее до расположения целевого действия EC, где эти расположения определены в Разделе B.2. Части этих линий, попадающие внутрь ограничивающих прямоугольников имён состояний EC и условий переходов, скрываются, как показано на Рисунке B.2. Для указания направления переходов могут использоваться стрелки или другие графические средства.

Пример отрисовки ECC

Рисунок B.2 -- Пример отрисовки ECC

B.4 Компоновка по умолчанию (Default layouts)

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

B.5 Графическое представление конфигураций систем (Graphical representation of system configurations)

Конфигурация системы (system configuration), как определено в IEC 61499-1, чьё XML-представление задано элементом System (Таблицы A.4 и A.5), может быть размещена в системе координат, определённой в Разделе B.1, в соответствии со следующими правилами:

a) Устройство (device) представляется как прямоугольный блок, содержащий имя типа устройства, с именем экземпляра вверху блока. Координаты (x, y) центра блока задаются атрибутами x и y XML-элемента Device.

b) Сегмент сети (network segment) представляется как горизонтальный отрезок линии, который может быть достаточно толстым для размещения текстовой информации (имя экземпляра сегмента, имя типа и т.д.) и может иметь другие зависящие от реализации элементы (стрелки и т.п.). Начало координат и длина отрезка, а также вертикальное расположение центра линии задаются параметрами x, dx1 и y XML-элемента Segment.

c) Сетевая связь (network link) представляется как вертикальный отрезок линии от центра устройства (или другой зависящей от реализации позиции) до горизонтальной центральной линии соответствующей сетевой связи. Части связи могут перекрываться графическими представлениями сегментов и устройств.


Приложение C (информативное) -- Примеры (Examples)

C.1 Базовые типы функциональных блоков (Basic function block types)

ПРИМЕР 1. Базовый тип функционального блока, содержащий алгоритм на языке релейных диаграмм (Ladder Diagram, LD) согласно ПРИМЕЧАНИЮ 2 Таблицы A.5, может быть выражен текстуально следующим образом:

FUNCTION_BLOCK LD_TEST (* LD Algorithm Example *)
EVENT_INPUT
REQ WITH A, B, C, D, E, F, G, H;
END_EVENT
EVENT_OUTPUT
CNF WITH Q1, Q2; (* Execution Confirmation *)
END_EVENT
VAR_INPUT
A: BOOL;
B: BOOL;
C: BOOL;
D: BOOL;
E: BOOL;
F: BOOL;
G: BOOL;
H: BOOL;
END_VAR
VAR_OUTPUT
Q1: BOOL;
Q2: BOOL;
END_VAR
EC_STATES
START; (* Initial State *)
REQ: REQ -> CNF; (* Normal execution *)
END_STATES
EC_TRANSITIONS
START TO REQ:= REQ;
REQ TO START:= 1;
END_TRANSITIONS
ALGORITHM REQ IN LD:
Q1:= ((!A|B)&(C|D))|((E|F)&(G|!H));
Q2:= ((A&B)|(C&D))&((E&F)|(G&H));
END_ALGORITHM
END_FUNCTION_BLOCK

Соответствующий XML-документ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE FBType SYSTEM "../LibraryElement.dtd" >
<FBType Name="LD_TEST" Comment="LD Algorithm Example" >
<Identification Standard="61499-2-C.1" Description="LD Algorithm Example" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.2" Author="JHC"
Date="2000-11-16" Remarks="Corrected Identification" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.1" Author="JHC"
Date="2000-06-20" Remarks="Tested Sun compiler" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.0" Author="JHC"
Date="2000-02-01" />
<CompilerInfo header="package fb.rt.part2;" >
<Compiler Language="Java" Vendor="IBM" Product="VisualAge" Version="3.0" />
<Compiler Language="Java" Vendor="Sun" Product="JDK" Version="1.1.8" />
</CompilerInfo>
<InterfaceList>
<EventInputs>
<Event Name="REQ" >
<With Var="A" />
<With Var="B" />
<With Var="C" />
<With Var="D" />
<With Var="E" />
<With Var="F" />
<With Var="G" />
<With Var="H" />
</Event>
</EventInputs>
<EventOutputs>
<Event Name="CNF" Comment="Execution Confirmation" >
<With Var="Q1" />
<With Var="Q2" />
</Event>
</EventOutputs>
<InputVars>
<VarDeclaration Name="A" Type="BOOL" />
<VarDeclaration Name="B" Type="BOOL" />
<VarDeclaration Name="C" Type="BOOL" />
<VarDeclaration Name="D" Type="BOOL" />
<VarDeclaration Name="E" Type="BOOL" />
<VarDeclaration Name="F" Type="BOOL" />
<VarDeclaration Name="G" Type="BOOL" />
<VarDeclaration Name="H" Type="BOOL" />
</InputVars>
<OutputVars>
<VarDeclaration Name="Q1" Type="BOOL" />
<VarDeclaration Name="Q2" Type="BOOL" />
</OutputVars>
</InterfaceList>
<BasicFB>
<ECC >
<ECState Name="START" Comment="Initial State"
x="341.1765" y="105.8824" />
<ECState Name="REQ" Comment="Normal execution"
x="358.8235" y="858.8235" >
<ECAction Algorithm="REQ" Output="CNF" />
</ECState>
<ECTransition Source="START" Destination="REQ" Condition="REQ"
x="170.5882" y="494.1176" />
<ECTransition Source="REQ" Destination="START" Condition="1"
x="564.7059" y="500" />
</ECC>
<Algorithm Name="REQ" Comment="Normally executed algorithm" >
<LD >
<Rung Output="Q1" Expression="A ! B | C D | &amp; E F | G H ! | &amp; | " />
<Rung Output="Q2" Expression="A B &amp; C D &amp; | E F &amp; G H &amp; |
&amp; " />
</LD>
</Algorithm>
</BasicFB>
</FBType>

ПРИМЕР 2. Базовый тип функционального блока, содержащий алгоритм на языке структурированного текста (ST):

FUNCTION_BLOCK FB_AND (* Boolean AND *)
EVENT_INPUT
REQ WITH IN1, IN2;
END_EVENT
EVENT_OUTPUT
CNF WITH OUT;
END_EVENT
VAR_INPUT
IN1: BOOL;
IN2: BOOL;
END_VAR
VAR_OUTPUT
OUT: BOOL; (* IN1&IN2 *)
END_VAR
EC_STATES
START; (* Initial State *)
REQ: REQ -> CNF; (* Normal execution *)
END_STATES
EC_TRANSITIONS
START TO REQ:= REQ;
REQ TO START:= 1;
END_TRANSITIONS
ALGORITHM REQ IN ST:
OUT:= (IN1 & IN2);
END_ALGORITHM
END_FUNCTION_BLOCK

Соответствующий XML-документ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE FBType SYSTEM "../LibraryElement.dtd" >
<FBType Name="FB_AND" Comment="Boolean AND" >
<Identification Standard="61499-1-D.1" Classification="Math"
ApplicationDomain="Any" Function="AND" Type="Boolean" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.1" Author="JHC"
Date="2000-06-10" Remarks="Tested Sun compiler." />
<VersionInfo Organization="IEC TC65/WG6" Version="0.0" Author="JHC"
Date="2000-01-29" Remarks="Simple Boolean AND" />
<CompilerInfo header="package fb.rt.part2;" >
<Compiler Language="Java" Vendor="Sun" Product="JDK" Version="1.1.8" />
<Compiler Language="Java" Vendor="IBM" Product="VisualAge" Version="3.0" />
</CompilerInfo>
<InterfaceList>
<EventInputs>
<Event Name="REQ" >
<With Var="IN1" />
<With Var="IN2" />
</Event>
</EventInputs>
<EventOutputs>
<Event Name="CNF" >
<With Var="OUT" />
</Event>
</EventOutputs>
<InputVars>
<VarDeclaration Name="IN1" Type="BOOL" />
<VarDeclaration Name="IN2" Type="BOOL" />
</InputVars>
<OutputVars>
<VarDeclaration Name="OUT" Type="BOOL" Comment="IN1&amp;IN2" />
</OutputVars>
</InterfaceList>
<BasicFB>
<ECC >
<ECState Name="START" Comment="Initial State" x="200" y="105.8824" />
<ECState Name="REQ" Comment="Normal execution" x="205.8824"
y="676.4706" >
<ECAction Algorithm="REQ" Output="CNF" />
</ECState>
<ECTransition Source="START" Destination="REQ" Condition="REQ"
x="370.5882" y="405.8824" />
<ECTransition Source="REQ" Destination="START" Condition="1"
x="52.9412" y="429.4117" />
</ECC>
<Algorithm Name="REQ" >
<ST Text=" OUT:= (IN1 &amp; IN2);&#10;" />
</Algorithm>
</BasicFB>
</FBType>

C.2 Типы функциональных блоков сервисного интерфейса (Service interface function block types)

ПРИМЕР 1. Тип ФБ сервисного интерфейса для определения наличия и цвета апельсина на конвейере:

FUNCTION_BLOCK ORANGE_SENSOR (* Sense Presence & Color of Orange *)
EVENT_INPUT
INIT WITH THRESH; (* Set Threshold *)
END_EVENT
EVENT_OUTPUT
INITO; (* Threshold Set *)
IND WITH PRESENT, GREEN; (* Change in Presence or Color *)
END_EVENT
VAR_INPUT
THRESH: REAL; (* Adjustable Color Threshold *)
END_VAR
VAR_OUTPUT
PRESENT: BOOL; (* Orange is Present *)
GREEN: BOOL; (* Green is Above Threshold *)
END_VAR
SERVICE ORANGE_SENSOR/resource
SEQUENCE setup
ORANGE_SENSOR.INIT(THRESH) -> resource.init() ->
ORANGE_SENSOR.INITO();
END_SEQUENCE
SEQUENCE sensing
resource.change() -> ORANGE_SENSOR.IND(PRESENT,GREEN);
END_SEQUENCE
END_SERVICE
END_FUNCTION_BLOCK

Соответствующий XML-документ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE FBType SYSTEM "../LibraryElement.dtd" >
<FBType Name="ORANGE_SENSOR" Comment="Sense Presence &amp; Color of Orange" >
<Identification Classification="C0202" ApplicationDomain="Food Processing"
Function="Detection" Type="Photoelectric Sensors"
Description="Orange Presence and Quality" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.1" Author="JHC"
Date="2000-05-14" Remarks="Modified to use LibraryElement.dtd" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.0" Author="JHC"
Date="2000-01-26" />
<CompilerInfo header="package fb.rt.part2;" >
</CompilerInfo>
<InterfaceList>
<EventInputs>
<Event Name="INIT" Comment="Set Threshold" >
<With Var="THRESH" />
</Event>
</EventInputs>
<EventOutputs>
<Event Name="INITO" Comment="Threshold Set" />
<Event Name="IND" Comment="Change in Presence or Color" >
<With Var="PRESENT" />
<With Var="GREEN" />
</Event>
</EventOutputs>
<InputVars>
<VarDeclaration Name="THRESH" Type="REAL"
Comment="Adjustable Color Threshold" />
</InputVars>
<OutputVars>
<VarDeclaration Name="PRESENT" Type="BOOL"
Comment="Orange is Present" />
<VarDeclaration Name="GREEN" Type="BOOL"
Comment="Green is Above Threshold" />
</OutputVars>
</InterfaceList>
<Service RightInterface="resource" LeftInterface="ORANGE_SENSOR" >
<ServiceSequence Name="setup" >
<ServiceTransaction >
<InputPrimitive Interface="ORANGE_SENSOR" Event="INIT"
Parameters="THRESH" />
<OutputPrimitive Interface="resource" Event="init" />
<OutputPrimitive Interface="ORANGE_SENSOR" Event="INITO" />
</ServiceTransaction>
</ServiceSequence>
<ServiceSequence Name="sensing" >
<ServiceTransaction >
<InputPrimitive Interface="resource" Event="change" />
<OutputPrimitive Interface="ORANGE_SENSOR" Event="IND"
Parameters="PRESENT,GREEN" />
</ServiceTransaction>
</ServiceSequence>
</Service>
</FBType>

ПРИМЕР 2. Тип ФБ сервисного интерфейса для привода соленоидного клапана:

FUNCTION_BLOCK SOLENOID (* Solenoid Valve *)
EVENT_INPUT
REQ WITH IN; (* Set Actuator Status *)
END_EVENT
EVENT_OUTPUT
CNF; (* Actuator Status Change Confirmed *)
END_EVENT
VAR_INPUT
IN: BOOL; (* Actuator Value,1=OPEN,0=CLOSED *)
END_VAR
SERVICE SOLENOID/resource
SEQUENCE actuation
SOLENOID.REQ(IN) -> resource.actuate(IN) -> SOLENOID.CNF();
END_SEQUENCE
END_SERVICE
END_FUNCTION_BLOCK

Соответствующий XML-документ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE FBType SYSTEM "../LibraryElement.dtd" >
<FBType Name="SOLENOID" Comment="Solenoid Valve" >
<Identification Classification="C0403" ApplicationDomain="Any"
Function="Logic / I/O Modules &amp; Controllers" Type="Actuators"
Description="Solenoid Valve" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.1" Author="JHC"
Date="2000-02-03" Remarks="Corrected service sequence" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.0" Author="JHC"
Date="2000-01-26" />
<CompilerInfo header="package fb.rt.part2;" >
</CompilerInfo>
<InterfaceList>
<EventInputs>
<Event Name="REQ" Comment="Set Actuator Status" >
<With Var="IN" />
</Event>
</EventInputs>
<EventOutputs>
<Event Name="CNF" Comment="Actuator Status Change Confirmed" />
</EventOutputs>
<InputVars>
<VarDeclaration Name="IN" Type="BOOL"
Comment="Actuator Value,1=OPEN,0=CLOSED" />
</InputVars>
</InterfaceList>
<Service RightInterface="resource" LeftInterface="SOLENOID" >
<ServiceSequence Name="actuation" >
<ServiceTransaction >
<InputPrimitive Interface="SOLENOID" Event="REQ" Parameters="IN" />
<OutputPrimitive Interface="resource" Event="actuate" Parameters="IN" />
<OutputPrimitive Interface="SOLENOID" Event="CNF" />
</ServiceTransaction>
</ServiceSequence>
</Service>
</FBType>

C.3 Тип адаптерного интерфейса (An adapter interface type)

ПРИМЕР. Адаптерный интерфейс для моделирования операций перемещения деталей, его типичная последовательность работы и соответствующий XML-документ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE AdapterType SYSTEM "../LibraryElement.dtd" >
<AdapterType Name="LD_UNLD" Comment="LOAD/UNLOAD Adapter Interface" >
<Identification Standard="IEC 61499-2" />
<VersionInfo Organization="Rockwell Automation" Version="0.0" Author="JHC"
Date="1999-11-17" Remarks="Generated by FBEditor application" />
<CompilerInfo header="package fb.rt.omac;" >
<Compiler Language="Java" Vendor="IBM" Product="VisualAge" Version="2.0" />
</CompilerInfo>
<InterfaceList>
<EventInputs>
<Event Name="UNLD" Comment="UNLOAD Request" />
</EventInputs>
<EventOutputs>
<Event Name="LD" Comment="LOAD Request" >
<With Var="WO" />
<With Var="WPC" />
</Event>
<Event Name="CNF" Comment="UNLD Confirm" >
<With Var="WO" />
<With Var="WPC" />
</Event>
</EventOutputs>
<OutputVars>
<VarDeclaration Name="WO" Type="BOOL" Comment="Workpiece" />
<VarDeclaration Name="WKPC" Type="COLOR" Comment="Workpiece Color" />
</OutputVars>
</InterfaceList>
<Service RightInterface="SOCKET" LeftInterface="PLUG" >
<ServiceSequence Name="normal_operation" >
<ServiceTransaction >
<InputPrimitive Interface="PLUG" Event="LD" Parameters="WO,WKPC" />
<OutputPrimitive Interface="SOCKET" Event="LD" Parameters="WO,WKPC" />
</ServiceTransaction>
<ServiceTransaction >
<InputPrimitive Interface="SOCKET" Event="UNLD" />
<OutputPrimitive Interface="PLUG" Event="UNLD" />
</ServiceTransaction>
<ServiceTransaction >
<InputPrimitive Interface="PLUG" Event="CNF" />
<OutputPrimitive Interface="SOCKET" Event="CNF" />
</ServiceTransaction>
</ServiceSequence>
</Service>
</AdapterType>

C.4 Типы ресурсов (Resource types)

ПРИМЕР 1. Тип ресурса, содержащий экземпляр ORANGE_SENSOR (из Раздела C.2) и экземпляр PUBLISH_1 для передачи изменения условия:

RESOURCE_TYPE ORANGE_RES (* A Configurable Orange Presence&Quality Sensor *)
VAR_INPUT
THRESHOLD: REAL; (* Adjustable Color Threshold *)
ID: WSTRING; (* UDP Channel ID *)
END_VAR
FB_TYPES
E_RESTART;
ORANGE_SENSOR;
PUBLISH_1;
END_FB_TYPES
FBS
START: E_RESTART;
SENSOR: ORANGE_SENSOR;
PUB: PUBLISH_1(
QI:= 1);
END_FBS
EVENT_CONNECTIONS
START.COLD TO SENSOR.INIT;
START.WARM TO SENSOR.INIT;
SENSOR.INITO TO PUB.INIT;
END_CONNECTIONS
DATA_CONNECTIONS
THRESHOLD TO SENSOR.THRESH;
ID TO PUB.ID;
END_CONNECTIONS
END_RESOURCE_TYPE

Эквивалентный XML-документ (с дополнительной информацией для программных инструментов):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ResourceType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd" >
<ResourceType Name="ORANGE_RES" Comment="A Configurable Orange Presence&amp;Quality
Sensor" >
<Identification Standard="IEC 61499-1" Classification="C0202"
ApplicationDomain="Food Processing" Function="Detection"
Type="Photoelectric Sensors" Description="Orange Presence and Quality" />
<VersionInfo Organization="IEC SC65B/WG15" Version="0.2" Author="JHC"
Date="2011-02-23" Remarks="Added THRESHOLD, ID parameters." />
<VersionInfo Organization="IEC TC65/WG6" Version="0.1" Author="JHC"
Date="2000-06-20" Remarks="Corrected &quot;FBType&quot; to &quot;FBTypeName&quot;." />
<VersionInfo Organization="IEC TC65/WG6" Version="0.0" Author="JHC"
Date="2000-02-02" />
<CompilerInfo header="package fb.rt.part2;" >
</CompilerInfo>
<FBTypeName Name="E_RESTART" />
<FBTypeName Name="ORANGE_SENSOR" />
<FBTypeName Name="PUBLISH_1" />
<VarDeclaration Name="THRESHOLD" Type="REAL"
Comment="Adjustable Color Threshold" />
<VarDeclaration Name="ID" Type="WSTRING" Comment="UDP Channel ID" />
<FBNetwork >
<FB Name="START" Type="E_RESTART" x="94.44444" y="11.111111" />
<FB Name="SENSOR" Type="ORANGE_SENSOR" x="672.22217" y="122.22221" />
<FB Name="PUB" Type="PUBLISH_1" x="2172.2222" y="11.111111" >
<Parameter Name="QI" Value="1" />
</FB>
<EventConnections>
<Connection Source="START.COLD" Destination="SENSOR.INIT"
dx1="33.333332" dx2="47.0588" dy="-70.5882" />
<Connection Source="START.WARM" Destination="SENSOR.INIT"
dx1="61.111107" dx2="76.4706" dy="-188.2353" />
<Connection Source="SENSOR.INITO" Destination="PUB.INIT"
dx1="172.22221" />
</EventConnections>
<DataConnections>
<Connection Source="THRESHOLD" Destination="SENSOR.THRESH" />
<Connection Source="ID" Destination="PUB.ID" />
</DataConnections>
</FBNetwork>
</ResourceType>

ПРИМЕР 2. Тип ресурса, содержащий экземпляр SOLENOID (из Раздела C.2) и экземпляр SUBSCRIBE_1 для приёма команд изменения состояния соленоида:

RESOURCE_TYPE SV_RESOURCE (* A Remotely Activated Solenoid Valve Resource *)
VAR_INPUT
ID: WSTRING; (* UDP Channel ID *)
END_VAR
FBS
START: E_RESTART;
SUB: SUBSCRIBE_1(
QI:= 1);
VALVE: SOLENOID;
END_FBS
EVENT_CONNECTIONS
START.COLD TO SUB.INIT;
START.WARM TO SUB.INIT;
SUB.IND TO VALVE.REQ;
END_CONNECTIONS
DATA_CONNECTIONS
SUB.RD_1 TO VALVE.IN;
ID TO SUB.ID;
END_CONNECTIONS
END_RESOURCE_TYPE

C.5 Типы устройств (Device types)

ПРИМЕР 1. Тип устройства, содержащий экземпляр типа ресурса ORANGE_RES (из Раздела C.4):

DEVICE_TYPE ORANGE_EYE
(* Programmable Orange Presence+Quality Sensor *)
RESOURCE_TYPES
ORANGE_RES;
END_RESOURCE_TYPES
RESOURCE R1: ORANGE_RES
END_RESOURCE
END_DEVICE_TYPE

Эквивалентный XML-документ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DeviceType SYSTEM "../LibraryElement.dtd" >
<DeviceType Name="ORANGE_EYE" Comment="Programmable Orange Presence+Quality Sensor" >
<Identification Classification="C0202" ApplicationDomain="Food Processing"
Function="Detection" Type="Photoelectric Sensors"
Description="Orange Presence and Quality" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.1" Author="JHC"
Date="2000-06-20" Remarks="Corrected &quot;ResourceTypeName&quot;." />
<VersionInfo Organization="IEC TC65/WG6" Version="0.0" Author="JHC"
Date="2000-02-02" />
<CompilerInfo header="package fb.rt.part2;" >
</CompilerInfo>
<ResourceTypeName Name="ORANGE_RES" />
<Resource Name="R1" Type="ORANGE_RES" >
</Resource>
</DeviceType>

ПРИМЕР 2. Тип устройства, содержащий экземпляр типа ресурса SV_RESOURCE (из Раздела C.4):

DEVICE_TYPE SOLENOID_VALVE
(* A Remotely Activated Solenoid Valve *)
RESOURCE R1: SV_RESOURCE
END_RESOURCE
END_DEVICE_TYPE

Эквивалентный XML-документ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DeviceType SYSTEM "../LibraryElement.dtd" >
<DeviceType Name="SOLENOID_VALVE" Comment="A Remotely Activated Solenoid Valve" >
<Identification Classification="C0403" ApplicationDomain="Any"
Function="Logic / I/O Modules &amp; Controllers" Type="Actuators"
Description="Solenoid Valve" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.1" Author="JHC"
Date="2000-06-20" Remarks="Now uses LibraryElement.dtd" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.0" Author="JHC"
Date="2000-02-02" />
<CompilerInfo header="package fb.rt.part2;" >
</CompilerInfo>
<Resource Name="R1" Type="SV_RESOURCE" >
</Resource>
</DeviceType>

C.6 Конфигурация системы (A system configuration)

ПРИМЕР. Апельсины сортируются по их позиции и цвету; слишком зелёные отклоняются.

Приложение (application), выполняющее эту задачу, с использованием типов ФБ ORANGE_SENSOR и SOLENOID (Раздел C.2):

Система (system) для реализации этого приложения, использующая ранее определённые типы устройств ORANGE_EYE и SOLENOID_VALVE, в сочетании с типом сегмента Ethernet (Раздел C.7):

Текстовое представление конфигурации системы:

SYSTEM ORANGE_SORTER (* Orange Sorter System Configuration *)
APPLICATION SORT
FBS
SENSOR: ORANGE_SENSOR;
GATE: FB_AND;
ACTUATOR: SOLENOID;
END_FBS
EVENT_CONNECTIONS
SENSOR.IND TO GATE.REQ;
GATE.CNF TO ACTUATOR.REQ;
END_CONNECTIONS
DATA_CONNECTIONS
SENSOR.PRESENT TO GATE.IN1;
SENSOR.GREEN TO GATE.IN2;
GATE.OUT TO ACTUATOR.IN;
END_CONNECTIONS
END_APPLICATION
DEVICE SENSOR: ORANGE_EYE
RESOURCE R1: ORANGE_RES(
THRESHOLD:= 0.15,
ID:= 225.0.0.1:1025)
FBS
LOGIC: FB_AND;
END_FBS
EVENT_CONNECTIONS
SENSOR.IND TO LOGIC.REQ;
LOGIC.CNF TO PUB.REQ;
END_CONNECTIONS
DATA_CONNECTIONS
SENSOR.PRESENT TO LOGIC.IN1;
SENSOR.GREEN TO LOGIC.IN2;
LOGIC.OUT TO PUB.SD_1;
END_CONNECTIONS
END_RESOURCE
END_DEVICE
DEVICE ACTUATOR: SOLENOID_VALVE
RESOURCE R1: SV_RESOURCE(
ID:= 225.0.0.1:1025)
END_RESOURCE
END_DEVICE
MAPPING
SORT.SENSOR ON SENSOR.R1.SENSOR;
SORT.GATE ON SENSOR.R1.LOGIC;
SORT.ACTUATOR ON ACTUATOR.R1.VALVE;
END_MAPPING
SEGMENTS
NET1: Ethernet;
END_SEGMENTS
LINKS
SENSOR => NET1;
ACTUATOR => NET1;
END_LINKS
END_SYSTEM

Соответствующий XML-документ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE System SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd" >
<System Name="ORANGE_SORTER" Comment="Orange Sorter System Configuration" >
<Identification Standard="61499-2" />
<VersionInfo Organization="IEC SC65B/WG15" Version="0.2" Author="JHC"
Date="2011-02-23" Remarks="Moved parameters to Resource level." />
<VersionInfo Organization="IEC TC65/WG6" Version="0.1" Author="JHC"
Date="2000-06-20" Remarks="Now uses LibraryElement.dtd" />
<VersionInfo Organization="IEC TC65/WG6" Version="0.0" Author="JHC"
Date="2000-02-03" />
<Application Name="SORT" >
<SubAppNetwork >
<FB Name="SENSOR" Type="ORANGE_SENSOR" x="94.1176" y="11.7647" />
<FB Name="GATE" Type="FB_AND" x="941.1765" y="11.7647" />
<FB Name="ACTUATOR" Type="SOLENOID" x="1441.1764" y="11.7647" />
<EventConnections>
<Connection Source="SENSOR.IND" Destination="GATE.REQ"
dx1="88.2353" dx2="47.0588" dy="-188.2353" />
<Connection Source="GATE.CNF" Destination="ACTUATOR.REQ"
dx1="41.1765" />
</EventConnections>
<DataConnections>
<Connection Source="SENSOR.PRESENT" Destination="GATE.IN1"
dx1="64.7059" dx2="176.4706" dy="982.3529" />
<Connection Source="SENSOR.GREEN" Destination="GATE.IN2"
dx1="123.5294" dx2="158.8235" dy="870.5882" />
<Connection Source="GATE.OUT" Destination="ACTUATOR.IN"
dx1="152.9412" />
</DataConnections>
</SubAppNetwork>
</Application>
<Device Name="SENSOR" Type="ORANGE_EYE" x="122.22221" y="11.111111" >
<Resource Name="R1" Type="ORANGE_RES" x="577.7778" y="11.111111" >
<Parameter Name="THRESHOLD" Value="0.15" />
<Parameter Name="ID" Value="225.0.0.1:1025" />
<FBNetwork >
<FB Name="LOGIC" Type="FB_AND" x="1538.8888" y="344.44443" />
<EventConnections>
<Connection Source="SENSOR.IND" Destination="LOGIC.REQ"
dx1="44.444443" dx2="58.8235" dy="-588.2353" />
<Connection Source="LOGIC.CNF" Destination="PUB.REQ"
dx1="61.111107" />
</EventConnections>
<DataConnections>
<Connection Source="SENSOR.PRESENT" Destination="LOGIC.IN1"
dx1="83.33333" dx2="64.7059" dy="576.4706" />
<Connection Source="SENSOR.GREEN" Destination="LOGIC.IN2"
dx1="38.888885" dx2="58.8235" dy="458.8235" />
<Connection Source="LOGIC.OUT" Destination="PUB.SD_1"
dx1="100.0" />
</DataConnections>
</FBNetwork>
</Resource>
</Device>
<Device Name="ACTUATOR" Type="SOLENOID_VALVE" x="627.7778" y="11.111111" >
<Resource Name="R1" Type="SV_RESOURCE" x="705.55554" y="22.222221" >
<Parameter Name="ID" Value="225.0.0.1:1025" />
</Resource>
</Device>
<Mapping From="SORT.SENSOR" To="SENSOR.R1.SENSOR" />
<Mapping From="SORT.GATE" To="SENSOR.R1.LOGIC" />
<Mapping From="SORT.ACTUATOR" To="ACTUATOR.R1.VALVE" />
<Segment Name="NET1" Type="Ethernet" x="616.6666" y="411.11108"
dx1="999.99994" >
</Segment>
<Link CommResource="SENSOR" SegmentName="NET1" />
<Link CommResource="ACTUATOR" SegmentName="NET1" />
</System>

C.7 Определение типа сегмента (A SegmentType definition)

ПРИМЕР. Тип сегмента Ethernet, используемый в Разделе C.6:

Текстовое определение:

SEGMENT_TYPE Ethernet
VAR
PHY: WSTRING:= "10BASE-T"; (* Physical medium *)
Speed: REAL:= 10.0; (* Mbits/sec *)
Length: REAL:= 25.0; (* Length in metres *)
END_VAR
END_SEGMENT_TYPE

XML-определение:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SegmentType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd" >
<SegmentType Name="Ethernet" >
<Identification Standard="IEEE 802.3" ApplicationDomain="Networking" />
<VersionInfo Organization="Holobloc Inc" Version="0.0" Author="JHC"
Date="2011-02-09" />
<CompilerInfo header="package fb.rt.net;" >
</CompilerInfo>
<VarDeclaration Name="PHY" Type="WSTRING" InitialValue="10BASE-T"
Comment="Physical medium" />
<VarDeclaration Name="Speed" Type="REAL" InitialValue="10.0"
Comment="Mbits/sec" />
<VarDeclaration Name="Length" Type="REAL" InitialValue="25.0"
Comment="Length in metres" />
</SegmentType>

Библиография

IEC 61499-4, Function blocks -- Part 4: Rules for compliance profiles (Функциональные блоки -- Часть 4: Правила для профилей соответствия)