ГОСТ Р ИСО 15745-2-2010. Национальный стандарт Российской Федерации. Системы промышленной автоматизации и интеграция. Прикладная интеграционная среда открытых систем. Часть 2. Эталонное описание систем управления на основе стандарта ИСО 11898
Актуально на 02.11.2026.
Как цитировать: "ГОСТ Р ИСО 15745-2-2010. Национальный стандарт Российской Федерации. Системы промышленной автоматизации и интеграция. Прикладная интеграционная среда открытых систем. Часть 2. Эталонное описание систем управления на основе стандарта ИСО 11898". ГОСТ Р ИСО 15745-2-2010. https://bukva.ai/docs/standart-gost-r-iso-15745-2-2010
(утв. и введен в действие Приказом Росстандарта от 21.12.2010 № 865-ст)
Примечание
Документ введен в действие с 01.09.2011.
и метрологии
от 21 декабря 2010 г. № 865-ст
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
СИСТЕМЫ ПРОМЫШЛЕННОЙ АВТОМАТИЗАЦИИ И ИНТЕГРАЦИЯ
ПРИКЛАДНАЯ ИНТЕГРАЦИОННАЯ СРЕДА ОТКРЫТЫХ СИСТЕМ
ЭТАЛОННОЕ ОПИСАНИЕ СИСТЕМ УПРАВЛЕНИЯ
НА ОСНОВЕ СТАНДАРТА ИСО 11898
Industrial automation systems and integration. Open systems
application integration framework. Part 2. Reference
description for ISO 11898-based control system
ISO 15745-2:2003
Industrial automation systems and integration — Open systems
application integration framework — Part 2: Reference
Дата введения 1 сентября 2011 года
Предисловие
Цели и принципы стандартизации в Российской Федерации установлены Федеральным законом от 27 декабря 2002 г. № 184-ФЗ «О техническом регулировании», а правила применения национальных стандартов Российской Федерации — ГОСТ Р 1.0-2004 «Стандартизация в Российской Федерации. Основные положения»
Сведения о стандарте
1 ПОДГОТОВЛЕН Научно-техническим центром ИНТЕК на основе собственного аутентичного перевода на русский язык международного стандарта, указанного в пункте 4
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 100 «Стратегический и инновационный менеджмент»
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 21 декабря 2010 г. № 865-ст
4 Настоящий стандарт идентичен международному стандарту ИСО 15745-2:2003 «Системы промышленной автоматизации и интеграция. Прикладная интеграционная среда открытых систем. Часть 2. Эталонное описание систем управления на основе стандарта ИСО 11898» (ISO 15745-2:2003 «Industrial automation systems and integration — Open systems application integration framework — Part 2: Reference description for ISO 11898-based control system»).
При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных и европейского регионального стандартов соответствующие им национальные стандарты Российской Федерации, сведения о которых приведены в дополнительном приложении ДА
Информация об изменениях к настоящему стандарту публикуется в ежегодно издаваемом информационном указателе «Национальные стандарты», а текст изменений и поправок — в ежемесячно издаваемых информационных указателях «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячно издаваемом информационном указателе «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет
Введение
Прикладная интеграционная среда (AIF) определяет элементы и правила, облегчающие:
- систематическую организацию и представление требований к интеграции прикладных систем с помощью моделей интеграции;
- разработку спецификаций интерфейсов в форме профилей интероперабельности прикладных систем (AIP), что позволяет выбрать как соответствующие ресурсы, так и документацию «встроенных» прикладных систем.
ИСО 15745-1 устанавливает общие элементы и правила описания интеграционных моделей и AIP вместе с их профилями компонент — профили процессов, профили обмена информацией и профили ресурсов. Содержание комплекса стандартов ИСО 15745 и структурный вид составных частей AIP показан на рисунке 1 ИСО 15745-1:2003.
Настоящий стандарт расширяет общую AIF, описанную в ИСО 15745-1, путем определения технологических специальных элементов и правил описания как профилей коммуникационных сетей, так и коммуникационных аспектов профилей устройств (приборов), относящихся к системам управления на основе ИСО 11898 (DeviceNet <1>, CANopen <2>).
<1> DeviceNetTM — торговая марка Open DeviceNet Vendor Association Inc. Эта информация приведена для удобства пользователей ИСО 15745 и не означает одобрения со стороны ИСО владельца торговой марки или любых его продуктов. Соответствие настоящему стандарту не требует использования торговой марки DeviceNetTM. Использование торговой марки DeviceNetTM требует разрешения Open DeviceNet Vendor Association Inc.
<2> CANopen — торговая марка, используемая для описания ЕН 50325-4. Эта информация приведена для удобства пользователей ИСО 15745 и не означает одобрения со стороны ИСО владельца торговой марки или любых его продуктов. Соответствие настоящему стандарту не требует использования торговой марки CANopen.
В частности, в настоящем стандарте описаны шаблоны технологического специального профиля для профиля устройств (приборов) и профиля коммуникационной сети. В рамках AIP экземпляр профиля устройств (приборов) или экземпляр профиля коммуникационной сети является частью профиля ресурсов, определенного в ИСО 15745-1. Файлы экземпляров XML профиля устройств (приборов) и профиля коммуникационной сети включаются в экземпляр XML профиля ресурсов с использованием файла Profile-Handle_DataType, как установлено в ИСО 15745-1:2003, пункт 7.2.5.
AIF, использующие элементы и правила ИСО 15745-1, могут быть легко интегрированы с профилями компонент, определенными с использованием элементов и правил, установленных в настоящем стандарте.
Настоящий стандарт разработан техническим комитетом ИСО/ТК 184 «Системы промышленной автоматизации и интеграция», подкомитетом ПК 5 «Архитектура, системы связи и интегрированные среды».
Комплекс стандартов ИСО 15745 имеет общее название «Системы промышленной автоматизации и интеграция. Прикладная интеграционная среда открытых систем» и включает в себя следующие части:
- часть 1. Общее эталонное описание;
- часть 2. Эталонное описание систем управления на основе стандарта ИСО 11898;
- часть 3. Эталонное описание систем управления на основе стандарта МЭК 61158;
- часть 4. Эталонное описание систем управления на основе стандарта Ethernet.
1 Область применения
Настоящий стандарт устанавливает специальные технологические элементы и правила описания как профилей коммуникационных сетей, так и коммуникационных аспектов профилей устройств (приборов), относящихся к системам управления на основе ИСО 11898.
Примечание — Общие элементы и правила описания интеграционных моделей и профилей интероперабельности прикладных систем с профилями их компонент (профили процессов, профили обмена информации и профили ресурсов) установлены в ИСО 15745-1.
Настоящий стандарт следует использовать вместе с ИСО 15745-1.
2 Нормативные ссылки
В настоящем стандарте использованы нормативные ссылки на следующие стандарты, которые необходимо учитывать при использовании настоящего стандарта. В случае ссылок на документы, у которых указана дата утверждения, необходимо пользоваться только указанной редакцией. В случае, когда дата утверждения не приведена, следует пользоваться редакцией ссылочных документов, включая любые поправки и изменения к ним:
ИСО 639-1:2002 Коды для представления названий языков. Часть 1. Двухбуквенный код (ISO 639-1:2002, Codes for the representation of names of languages — Part 1: Alpha-2 code)
ИСО 639-2:1998 Коды для представления названий языков. Часть 2. Трехбуквенный код (ISO 639-2:1998, Codes for the representation of names of languages — Part 2: Alpha-3 code)
ИСО 3166-1:1997 Коды для представления названий стран и единиц их административно-территориального деления. Часть 1. Коды стран (ISO 3166-1:1997, Codes for the representation of names of countries and their subdivisions — Part 1: Country code)
ИСО/МЭК 10646-1:2000 Информационные технологии. Универсальный многооктетный кодированный набор символов (UCS). Часть 1. Архитектура и базовая многоязычная плоскость (ISO/IEC 10646-1:2000, Information technology — Universal Multiple-Octet Coded Character Set (UCS) — Part 1: Architecture and Basic Multilingual Plane)
ИСО 11898:1993 Дорожные транспортные средства. Обмен цифровой информацией. Сеть контроллеров (CAN) для высокоскоростной связи (ISO 11898:1993, Road Vehicles — Interchange of digital information — Controller area network (CAN) for high-speed communication)
ИСО 15745-1:2003 Системы промышленной автоматизации и интеграция. Прикладная интеграционная среда открытых систем. Часть 1. Общее эталонное описание (ISO 15745-1:2003, Industrial automation and systems integration — Open systems application integration framework — Part 1: Generic reference description)
МЭК 61158 (все части) Передача цифровых данных для измерения и управления. Полевая шина для систем автоматического регулирования и управления технологическими процессами (IEC 61158 (all parts), Digital data communications for measurement and control — Fieldbus for use in industrial control systems)
МЭК 61784-1:2003 Цифровые передачи данных для измерения и управления. Часть 1. Профильные наборы для непрерывного и раздельного производства полевых шин для систем автоматического регулирования и управления технологическими процессами (IEC 61784-1:2003, Digital data communications for measurement and control — Part 1: Profile sets for continuous and discrete manufacturing relative to fieldbus use in industrial control systems)
МЭК 62026-3:2000 Устройства распределительные комплектные низковольтные. Интерфейсы между контроллером и прибором (CDIs). Часть 3. DeviceNETTM (IEC 62026-3:2000, Low-voltage switchgear and controlgear — Controller-device interfaces (CDIs) — Part 3: DeviceNetTM)
ЕН 50325-4:2002 Подсистема промышленной коммуникации на основе ИСО 11898 (CAN) для интерфейсов контроллер-прибор. Часть 4. CANopen (EN 50325-4:2002, Industrial communications subsystem based on ISO 11898 (CAN) for controller-device interfaces — Part 4: CANopen)
IEEE Std 754-1985 (R1990) Стандарт IEEE для двоичной арифметики с плавающей запятой (IEEE Std 754-1985 (R1990), IEEE Standard for Binary Floating-Point Arithmetic)
REC-xml-20001006 Расширяемый язык разметки (XML) 1.0 Второе издание — Рекомендация W3C от 6 октября 2000 г. (REC-xml-20001006, Extensible Markup Language (XML) 1.0 Second Edition — W3C Recommendation 6 October 2000)
REC-xmlschema-1-20010502 Схема XML, Часть 1. Структуры — Рекомендация W3C от 2 мая 2001 (REC-xmlschema-1-20010502, XML Schema. Part 1: Structures — W3C Recommendation 02 May 2001)
REC-xmlschema-2-20010502 Схема XML, Часть 2. Типы данных — Рекомендация W3C от 2 мая 2001 (REC-xmlschema-2-20010502, XML Schema. Part 2: Datatypes — W3C Recommendation 02 May 2001)
RFC 1738:1994 Единый указатель ресурсов (URL) — Целевая группа инженерной поддержки Интернета (IETF), Запрос на комментарий (RFC) (RFC 1738:1994, Uniform Resource Locators (URL) — Internet Engineering Task Force (IETF), Request for Comments (RFC))
RFC 1759:1995 Принтер MIB — Целевая группа инженерной поддержки Интернета (IETF), Запрос на комментарий (RFC) (RFC 1759:1995, Printer MIB — Internet Engineering Task Force (IETF), Request for Comments (RFC))
UML V1.4 OMG — Спецификация для Унифицированного Языка Моделирования (Версия 1.4, сентябрь 2001) (UML V1.4, OMG — Unified Modeling Language Specification (Version 1.4, September 2001))
3 Термины и определения
В настоящем стандарте использованы термины и определения по ИСО 15745-1 (приложение A).
4 Обозначения и сокращения
AIF — прикладная интеграционная среда (Application Integration Framework);
AIP — профиль интероперабельности приложений (Application Interoperability Profile);
CAN — сеть контроллеров (Controller Area Network);
CIPTM <3> — общий промышленный протокол (Common Industrial Protocol);
<3> CIPTM — торговая марка ControlNet International, Ltd., и Open DeviceNet Vendor Association, Inc. Эта информация приведена для удобства использования комплекса стандартов ИСО 15745 и не означает одобрения со стороны ИСО владельца торговой марки или любых его продуктов. Соответствие настоящему стандарту не требует использования торговой марки DeviceNetTM. Использование торговой марки CIPTM требует разрешения либо ControlNet International, Ltd., либо Open DeviceNet Vendor Association, Inc.
EDS — электронная информационная таблица; электронная таблица данных (Electronic Data Sheet);
IAS — системы промышленной автоматизации (Industrial Automation Systems);
OSI — взаимодействие открытых систем (Open System Interconnection);
UML — унифицированный язык моделирования (см. UML V1.4) (Unified Modelling Language);
XML — расширяемый язык разметки (см. REC-xml-20001006) (eXtensible Markup Language).
5 Технологические специальные элементы и правила
5.1 Интеграционные модели и интерфейсы IAS
Разработчик AIP должен создать интеграционную модель с использованием правил, описанных в ИСО 15745-1, а также должен обеспечить, чтобы профили устройства (приборов) и коммуникационных сетей на основе ИСО 11898 (независимо от того, представляют ли они требования к интерфейсам или требования, выводимые из существующих приборов/коммуникационных сетей) включали в себя необходимые интерфейсы IAS. Интерфейсы IAS, включенные в профиль, должны быть идентифицированы в разделе заголовка (см. ИСО 15745-1:2003, пункт 7.2.2).
Примечание — Интерфейсы IAS описаны в ИСО 15745-1:2003 (приложение B).
5.2 Шаблоны профилей
5.2.1 Общие положения
Шаблоны технологических специальных профилей на основе ИСО 11898 выводятся из общих шаблонов профилей, установленных в ИСО 15745-1 (раздел 7).
5.2.2 Содержимое и синтаксис
Комплекс стандартов ИСО 15745 устанавливает шаблоны профилей, которые являются XML схемами (REC-xmlschema-1-20010502 и REC-xmlschema-2-20010502) и используют общую основную структуру. Профили устройств (приборов) и коммуникационных сетей, основанные на этих шаблонах, как правило, содержат:
- информацию, необходимую для идентификации подсоединенного прибора;
- описание данных об устройстве (приборе), которые могут быть оценены через сеть;
- описание коммуникационных возможностей, поддерживаемых устройством (прибором);
- дополнительную информацию от продавца.
Однако некоторые технологии, основанные на ИСО 11898, используют специальный унаследованный синтаксис ASCII. Поэтому обратная совместимость, определения шаблонов любой технологии (приложения A, B) включают в себя все или соответствующие поднаборы, а именно:
- шаблоны профилей коммуникационных сетей и устройств (приборов), установленные в ИСО 15745-1;
- шаблон ИСО 15745, инкапсулирующий файлы с унаследованным синтаксисом ASCII («упаковщик»);
- унаследованный синтаксис ASCII.
5.2.3 Заголовок
Заголовок шаблона профилей, установленный в ИСО 15745-1:2003 (пункт 7.2.2), используют для шаблонов технологических специальных профилей ИСО 11898. Каждая технология использует одно или несколько имен для идентификации технологии или ее отдельную компоненту (отдельные компоненты) (см. таблицу 1). Выбранное имя должно храниться в атрибуте ProfileTechnology в разделе заголовка.
Имена атрибута ProfileTechnology
| Имя атрибута ProfileTechnology | Технология |
|---|---|
| DeviceNet | DeviceNet |
| CIP | DeviceNet |
| EDS | DeviceNet |
| CANopen | CANopen |
| COFDCML | CANopen |
5.3 Технологические специальные профили
Структура технологических специальных профилей коммуникационных сетей и коммуникационные аспекты структуры профилей устройств (приборов), основанные на ИСО 11898, описаны в разделе 6, включающем в себя следующие технологии:
Определения связанных шаблонов профилей даны в приложениях A и B.
6 Профили устройств и коммуникационных сетей для систем управления на основе ИСО 11898
6.1 Протокол DeviceNet
6.1.1 Профиль устройств
6.1.1.1 Общие положения
На рисунке 1 показана диаграмма классов профилей устройств DeviceNet.
Рисунок 1 — Диаграмма классов профилей устройств DeviceNet
Доступные форматы для профилей устройств DeviceNet описаны в A.2 (приложение A).
XML схема, представляющая шаблон профилей устройств DeviceNet, определена в A.2.1.3.3 (приложение A). Имя XML файла этой схемы должно быть «CIP_Device_Profile.xsd».
Примечание — Диаграмма классов профилей устройств DeviceNet, представленная на рисунке 1, определяет основные классы. Эти классы разбиваются на составные части; подробное описание дано в приложении A.
XML схема, представляющая инкапсуляцию унаследованного DeviceNet EDS в шаблон профилей приборов на основе ИСО 15745, определена в A.2.2.2 (приложение A). Имя XML файла этой схемы должно быть «EDS_Device_Profile_wrapper.xsd». Сам унаследованный синтаксис EDS ASCII описан в A.4 (приложение A).
6.1.1.2 Идентичность устройств
Класс Идентичность устройств (Deviceidentity) содержит атрибуты, которые однозначно идентифицируют прибор и поддерживают сервисы, позволяющие извлечь эту информацию из устройства.
Эти атрибуты обеспечивают, в частности:
- идентификацию изготовителя (название и идентификационный код);
- идентификацию устройств (тип устройства, название изделия, модификация, серийный номер);
- классификацию устройств;
- место хранения дополнительной информации (например, иконки).
6.1.1.3 Управление устройствами
Класс Управление устройствами (DeviceManager) содержит атрибуты и поддерживает сервисы, используемые для мониторинга и конфигурирования приборов.
Эти атрибуты обеспечивают, в частности:
- модификацию объекта Идентичность DeviceNet;
- информацию по структуре устройства (для устройств, интегрированных в модульную систему).
6.1.1.4 Функция устройств
Класс Функция устройств (DeviceFunction) содержит атрибуты и поддерживает сервисы, позволяющие осуществлять функциональное управление (например, конфигурирование) устройствами.
Пример — Примерами объектов DeviceFunction являются объекты перегрузки, распознавания присутствия объекта, аналоговых входных данных и дискретных выходных данных.
Примечание — Определение специального класса DeviceFunction в ИСО 15745-2 не установлено.
6.1.1.5 Прикладной процесс
На рисунке 2 показана структура класса Прикладной процесс (ApplicationProcess).
Рисунок 2 — Диаграмма класса ApplicationProcess DeviceNet
Класс Компоновка (Assembly) собирает несколько элементов данных прикладного процесса в один блок для оптимизации коммуникаций. Класс Параметр (Parameter) обеспечивает стандартизованный интерфейс для оценивания отдельных элементов данных прикладного процесса. Класс Группа Параметров (ParameterGroup) устанавливает группы связанных параметров для определенной цели (например, конфигурирование, мониторинг). Класс Компоновка и класс Параметр поддерживают атрибуты и сервисы как на уровне класса, так и на уровне экземпляра.
Классы Assem (Компоновка), Param (Параметр) и Group (Группа) определяют отдельные экземпляры основных классов.
Примечание — Класс Компоновка и класс Параметр соответствуют объектам Компоновка DeviceNet и Параметр. Объект Компоновка полностью определен в МЭК 61158-5:2003 и МЭК 61158-6:2003 (тип 2).
6.1.2 Профиль коммуникационных сетей
6.1.2.1 Общие положения
На рисунке 3 показана структура классов профилей коммуникационных сетей DeviceNet.
Рисунок 3 — Диаграмма классов профилей коммуникационных сетей DeviceNet
Доступные форматы для профилей коммуникационных сетей DeviceNet описаны в A.3 (приложение A).
XML схема, представляющая шаблон профилей коммуникационных сетей DeviceNet, определена в A.3.1.3 (приложение A). Имя XML файла этой схемы должно быть «DNet_CommNet_Profile.xsd».
XML схема, представляющая инкапсуляцию унаследованного DeviceNet EDS в шаблон профилей коммуникационных сетей на основе ИСО 15745, определена в A.3.2.2 (приложение A). Имя XML файла этой схемы должно быть «EDS_CommNet_Profile_wrapper.xsd». Сам унаследованный синтаксис EDS ASCII описан в A.4 (приложение A).
6.1.2.2 Прикладные уровни
Класс Прикладные уровни (ApplicationLayers) DeviceNet представляет составные профили для трех верхних уровней интегрированной OSI модели коммуникационных сетей DeviceNet.
Далее он разбивается на несколько классов, как показано на рисунке 3:
- объект Соединение (ConnectionObject) определяет характеристики, связанные с соединениями, и управление соединениями;
- объект Маршрутизатор сообщений (MessageRouter) определяет характеристики, связанные с внутренней маршрутизацией сообщений в устройстве.
Примечание — Соответствующие объект Соединение и объект Маршрутизатор Сообщений полностью определены в МЭК 62026-3.
6.1.2.3 Транспортные уровни
Класс Транспортные уровни (TransportLayer) DeviceNet представляет составные профили для четырех нижних уровней интегрированной OSI модели коммуникационных сетей DeviceNet.
Далее он разбивается на несколько классов, как показано на рисунке 3:
- физический Уровень DN (DNPhysicalLayer) идентифицирует характеристики физического уровня (например, соединитель, скорость передачи данных в бодах, электрические характеристики);
- канальный Уровень DN (DNLinkLayer) и объект DeviceNet (DeviceNetObject) определяют характеристики, связанные с конфигурированием канального уровня передачи данных и мониторингом;
- порты идентифицируют порты устройства, которые могут маршрутизировать сообщения от одного канала к другому каналу.
Примечание — Соответствующий объект DeviceNet полностью определен в МЭК 62026-3:2000.
6.1.2.4 Управление сетями
Класс Управление сетями (NetworkManagement) DeviceNet представляет конфигурирование сети и возможности настройки характеристик интеграционной модели коммуникационной сети DeviceNet.
Далее он разбивается на несколько классов, как показано на рисунке 3:
- объект NM-DeviceNet (NM-DeviceNetObject), объект NM-Соединение (NM-ConnectionObject) и Маршрутизатор NM-сообщений (NM-MessageRouter) определяют характеристики, связанные с управлением классов соответствующих объектов.
6.2 Протокол CANopen
6.2.1 Профиль устройств
6.2.1.1 Общие положения
На рисунке 4 показана структура классов профилей устройств CANopen.
Рисунок 4 — Диаграмма классов профилей устройств CANopen
Требуемый формат профилей устройств CANopen описан в B.1 (приложение B). XML схема, представляющая шаблон профилей устройств CANopen, определена в B.1.5.1 (приложение B). Имя XML файла схемы должно быть 'COFDCML.xsd'.
Примечание 1 — Для лучшей читаемости диаграмма классов профилей устройств (DeviceProfile) CANopen разбита на пять диаграмм классов.
Примечание 2 — Все эти классы отображаются в той же XML схеме, определенной в B.1.5.1 (приложение B).
Примечание 3 — Диаграммы классов профилей устройств CANopen, показанные на рисунках 4 - 10, определяют основные классы. Далее некоторые классы разбиваются на составные части; подробное описание дано в приложении B.
6.2.1.2 Идентичность устройств
Класс Идентичность устройств (DeviceIdentity) определен на рисунке 5.
Рисунок 5 — Диаграмма класса Идентичность устройств (DeviceIdentity)
Класс DeviceIdentity должен состоять из дочерних классов, показанных на рисунке 5 и установленных в таблице 2.
Разбиение класса объекта Идентичность устройств
| Класс | Описание | Профиль | Тип | Экземпляр |
| vendorName | Название изготовителя или продавца устройства | X | X | X |
| vendorID | IEEE OUI (Организационно Уникальный Идентификатор) (см. [[6]](#p109665)) | X | X | |
| vendorText | Может быть использован для предоставления дополнительной информации по продавцу | X | X | X |
| deviceFamily | Определение этого класса в настоящем стандарте не установлено | X | X | X |
| capabilities | Определение этого класса в настоящем стандарте не установлено | X | X | |
| productFamily | Специальное семейство продуктов (бренд) продавца устройства | X | X | |
| productName | Специальное название продуктов продавца | X | X | X |
| productID | Уникальный идентификатор, определяющий тип устройства; формат выбирается по усмотрению продавца | X | X | |
| productText | Может быть использован для предоставления дополнительной информации по устройству | X | X | X |
| orderNumber | Специальный порядковый номер продукта продавца | X | X | |
| version | Специальная версия продукта продавца, атрибут versionType (Тип версии) позволяет различать множество версий (а именно: аппаратные средства, встроенные программы) | X | X | |
| buildDate | Встроенная дата встроенных программ программного обеспечения, устанавливающего основные функциональные возможности устройства | X | X | |
| specificationRevision | Внесение изменений в спецификацию, которой данное устройство соответствует | X | X | X |
| instanceName | Имя экземпляра устройства | X | ||
| serialNumber | Серийный номер экземпляра устройства | X | ||
| Примечание — В графах «Профиль», «Тип» и «Экземпляр» указывают, подходит ли отдельный дочерний класс для использования в профиле устройств, а также для описания типа устройства или описания экземпляра устройства. | ||||
6.2.1.3 Управление устройством
6.2.1.3.1 Общие положения
На рисунке 6 показано представление CANopen класса Управление устройством (DeviceManager).
Рисунок 6 — Диаграмма класса Управление устройством (DeviceManager)
6.2.1.3.2 Объекты localDataDescriptionList (Список описаний локальных данных), localDataDescription (Описание локальных данных)
Объект localDataDescriptionList должен быть набором объектов localDataDescription. Объект localDataDescription должен описывать объекты данных, используемых только в контексте устройства.
6.2.1.3.3 Объект deviceStructure
6.2.1.3.3.1 Общее представление
Объект deviceStructure должен быть контейнером всех физических объектов устройства. Такой объект может быть каналом (физической или логической точкой ввода/вывода), MAU (Устройством подключения к среде), слотом для подключения дополнительных модулей (как часть устройства) или LED (светоизлучающим диодом).
6.2.1.3.3.2 Объекты channelList (Список каналов), channel (канал)
Объект channelList должен быть набором объектов channel. Эти объекты должны описывать физические или логические точки ввода/вывода устройства.
6.2.1.3.3.3 Объекты MAUList (Список устройств подключения к среде), MAU (Устройство подключения к среде)
Объект MAUList должен быть набором объектов MAU. Эти объекты должны описывать точки доступа к сетевым средам.
6.2.1.3.3.4 Объекты slotList (Список слотов), slot (слот)
Объект slotList должен быть набором объектов slot. Объект slot должен содержать ссылку на описание внешнего обмена профилями устройства CANopen.
Примечание — Слоты используют для описания модульных устройств или отдельных комбинаций устройств.
6.2.1.3.3.5 Объекты indicatorList (Список индикаторов), LEDList (Список светоизлучающих диодов), LED (светоизлучающий диод)
Объект LEDList должен быть набором объектов LED. Этот объект должен описывать LED устройства.
Примечание — Класс indicatorList может быть расширен в последующих изданиях ИСО 15745-2.
6.2.1.3.4 Класс communicationEntity (Коммуникационная сущность)
6.2.1.3.4.1 Общие положения
На рисунке 7 дано определение класса communicationEntity.
Рисунок 7 — Диаграмма класса communicationEntity
Класс communicationEntity должен описывать объект устройства, способный установить связь с объектами других устройств, и должен содержать полный набор заранее определенных элементов конфигурации и описания коммуникационных объектов. В устройстве могут использоваться несколько communicationEntity.
6.2.1.3.4.2 cfgItemList (Список элементов конфигурации)
cfgItemList должен состоять из объектов CANopenDedicatedCfgItem.
6.2.1.3.4.3 CANopenDedicatedCfgItem (специализированный элемент конфигурации CANopen)
CANopenDedicatedCfgItem должен быть набором элементов конфигурации.
Примечание — Определение дополнительных классов элементов конфигурации в ИСО 15745-2 не рассмотрено.
6.2.1.3.4.4 Класс CANopenIdentity (идентичность CANopen)
Класс CANopenIdentity состоит из нескольких объектов, необходимых для идентификации устройства в сети CANopen. Он включает в себя объекты для CANopenVendorID (идентификатор продавца CANopen), CANopenProductCode (код продуктов CANopen), CANopenRevisionNumber (номер модификации CANopen) и CANopenSerialNumber (серийный номер CANopen), а также CANopenManufacturerDeviceName (название прибора изготовителя CANopen), CANopenManufacturerHardwareVersion (версия аппаратных средств изготовителя CANopen) и CANopenManufacturerSoftwareVersion (версия программных средств изготовителя CANopen).
Примечание — Соответствующий объект идентичности определен в ЕН 50325-4.
6.2.1.3.4.5 CANopenCommunicationFunctionList (Список коммуникационных функций CANopen), function (функция)
CANopenCommunicationFunctionList должен быть набором объектов function (функция). Каждый такой объект описывает функциональные возможности CANopen, связанные с коммуникационной областью CANopen, путем использования CANopenCommunicationParameterList (Список коммуникационных параметров CANopen).
6.2.1.3.4.6 CANopenCommunicationParameterList (Список коммуникационных параметров CANopen), parameters (параметры)
CANopenCommunicationParameterList должен быть набором объектов Параметр. Каждый такой объект описывает параметр, связанный с коммуникационной областью CANopen.
6.2.1.3.4.7 CANopenObjectAccessList (Список доступа к объектам CANopen), CANopenObject (объект CANopen)
CANopenObjectAccessList должен быть набором объектов CANopenObject. Что касается словаря объектов CANopen, каждый такой объект описывает параметр из вида DeviceFunction или из CANopenCommunicationParameterList.
Примечание — CANopenObjectAccessList соответствует словарю объектов CANopen в ЕН 50325-4.
6.2.1.3.5 Класс processingEntity (обрабатываемая Сущность)
6.2.1.3.5.1 Общие положения
На рисунке 8 показано определение класса processingEntity.
Рисунок 8 — Диаграмма класса processingEntity
Класс processingEntity должен описывать любое устройство, не являющееся коммуникационным объектом.
Пример — Ресурс, способный выполнять программы.
6.2.1.3.5.2 Классы additionalItemList (Список дополнительных элементов), additionalItem (дополнительный Элемент)
Класс additionalItemList должен быть набором объектов дополнительных элементов, определяемых пользователем. Объект additionalItem может быть использован для описания характеристик приборов, кроме характеристик конфигурации или коммуникационных объектов.
Примечание — Определение additionalItemType дополнительных элементов в настоящем стандарте не рассмотрено.
Пример — Документация по прибору.
6.2.1.3.5.3 Классы logicalConnectionPointList (Список логических точек соединений), logicalConnectionPoint (логическая точка соединения)
Класс logicalConnectionPointList должен быть набором объектов логических точек соединений. Этот объект описывает соединение.
Примечание — Предполагается, что используются только соединения между конечными точками соединений одинакового типа.
6.2.1.3.5.4 Классы logicalConnectionPointAssemblyList (Список наборов логических точек соединений), logicalConnectionPointAssembly (набор логических точек соединений)
Класс logicalConnectionPointAssemblyList должен быть набором объектов logicalConnectionPointAssembly. Этот набор должен быть описанием группы объектов logicalConnectionPoint.
6.2.1.3.5.5 Классы internalConnectionPointList (Список внутренних точек соединений), internalConnectionPoint (внутренняя точка соединения)
Класс internalConnectionPointList должен быть набором объектов internalConnectionPoint, определяющим внутренние соединения между различными объектами communicationEntity и/или объектами resourceEntity в одном и том же устройстве.
6.2.1.3.5.6 Класс cfgItemList (Список элементов конфигурации)
Класс cfgItemList может состоять из объектов dedicatedCfgItem и объектов uncomittedCfgItem.
6.2.1.3.5.7 Элемент dedicatedCfgItem (Специализированный элемент конфигурации)
dedicatedCfgItem должен быть элементом конфигурации с атрибутом dedicatedCfgItemType. Такой элемент следует использовать для определения соответствующих характеристик конфигурации.
6.2.1.3.5.8 Элемент uncommittedCfgItem (нескоммутированный элемент конфигурации)
uncommittedCfgItem должен быть элементом конфигурации с атрибутом dedicatedCfgItemType. Такой элемент следует использовать для определения характеристик конфигурации, которые не могут быть описаны dedicatedCfgItem.
Примечание — Определение некоммутированных элементов конфигурации в настоящем стандарте не рассмотрено.
Пример — Описание DIP — переключателей, изменяющих код идентификатора прибора.
6.2.1.4 Функция прибора
6.2.1.4.1 Общие положения
На рисунке 9 приведена диаграмма классов DeviceFunction.
Рисунок 9 — Диаграмма классов DeviceFunction (Функция устройства)
В случае различных представлений функции устройства для описания DeviceFunction используют дополнительную XML схему. Имя XML файла схемы должно быть «FDCMLISO15745DeviceFunction.xsd». XML схема DeviceFunction определена в приложении B.
Примечание — Определение дополнительных XML схем, описывающих классы DeviceFunction, в настоящем стандарте не рассмотрено.
6.2.1.4.2 parameterList (Список параметров), parameter (параметр)
parameterList должен быть набором объектов Параметр. Такой объект описывает параметры устройства на основе функциональной перспективы. Он соединяется с коммуникационным объектом в communicationEntity.
6.2.1.4.3 functionList (Список функций), function (функция), inputsList (Список вводов), outputsList (Список выводов)
functionList должен быть набором объектов function (функция). Такой объект должен состоять из inputsList и outputsList. Эти списки должны содержать список ссылок на объекты Параметр.
6.2.1.5 Прикладной процесс
6.2.1.5.1 Общие положения
Объект ApplicationProcess (Прикладной процесс) может быть представлен одной или несколькими соответствующими XML схемами.
Примечание — Определение этих XML схем в настоящем стандарте не установлено.
6.2.1.5.2 textualDescription (Текстовое описание)
Объект textualDescription объясняет функцию устройства в читаемом текстовом виде.
6.2.2 Профиль коммуникационных сетей
6.2.2.1 Общие положения
На рисунке 10 показана диаграмма классов профиля коммуникационной сети CANopen.
Рисунок 10 — Диаграмма классов профиля коммуникационной сети CANopen
XML схема, представляющая профиль коммуникационной сети CANopen, определена в приложении B. Имя файла XML схемы должно быть «COCommNetworkProfile.xsd».
6.2.2.2 communicationProfile (Коммуникационный профиль)
communicationProfile должен устанавливать подходящие идентификаторы коммуникационных профилей. Эти профили и их идентификаторы определены в МЭК 61784-1 (раздел 10.1). Разработчик AIP может установить дополнительные коммуникационные профили; идентификаторы для таких новых коммуникационных профилей должны быть трехразрядным числом, лежащим между 680 и 699.
6.2.2.3 Транспортные уровни
6.2.2.3.1 Общие положения
Объект TransportLayers (Транспортные уровни) должен представлять комбинированные профили для четырех нижних уровней интегрированной OSI модели коммуникационных сетей. Этот объект должен включать в себя объект cfgItemList (Список элементов конфигурации).
6.2.2.3.2 Объекты cfgItemList (Список элементов конфигурации), CANopenDedicatedCfgCategory (Специализированная категория конфигураций CANopen)
cfgItemList должен быть набором элементов конфигурации, относящимся к четырем нижним уровням интегрированной OSI модели коммуникационных сетей. Набор включает в себя специализированную категорию, предназначенную для связанных элементов конфигурации CANopen, например для скоростей передачи данных в бодах, общих возможностей, а также для ввода прибора в эксплуатацию.
Примечание — CANopenDedicatedCfgCategory описывает поддерживаемые услуги по передаче данных (например, объектов данных технологического процесса или объектов сервисных данных), а также поддерживаемые скорости передачи информации в бодах, как определено в ЕН 60325-4.
6.2.2.4 Прикладные уровни
6.2.2.4.1 Общие положения
Объект ApplicationLayers (Прикладные уровни) должен представлять комбинированные профили для трех уровней интегрированной OSI модели коммуникационных сетей. Объект ApplicationLayers должен содержать объект cfgItemList.
6.2.2.4.2 Объекты cfgItemList (Список элементов конфигурации), CANopenDedicatedCfgCategory (Специализированная категория конфигурации CANopen)
Объект cfgItemList должен быть набором элементов конфигурации, относящихся к трем уровням интегрированной OSI модели коммуникационных сетей. Набор включает в себя специализированную категорию, предназначенную для связанных элементов конфигурации CANopen, например для поддерживаемых типов данных для формального отображения, общих возможностей, а также для ввода прибора в эксплуатацию.
6.2.2.5 Управление сетями
6.2.2.5.1 Общие положения
Объект NetworkManagement (Управление сетями) должен представлять функциональные возможности управления сетями. Этот объект должен содержать объект cfgItemList.
6.2.2.5.2 Объекты cfgItemList (Список элементов конфигурации), CANopenDedicatedCfgCategory (Специализированная категория конфигураций CANopen)
Объект cfgItemList должен быть набором элементов конфигурации, предназначенных для связанных элементов конфигурации CANopen, например для возможностей администратора CANopen, общих возможностей, а также для ввода прибора в эксплуатацию.
Примечание — Объект CANopenDedicatedCfgCategory определяет поддерживаемые сервисы управления сетями, как установлено в ЕН 50325-4.
Верхние уровни сети DeviceNet основаны на Общем Промышленном Протоколе (CIP). Этот протокол моделирует все коммуникационные и прикладные сущности как объекты. Передача специальных сообщений CIP требует выполнения сервисов на соответствующих экземплярах объекта (или на их атрибутах). Эта схема обеспечивает заданный доступ ко всем данным по конфигурации, состоянию и переменным рабочего цикла в узле. В то же самое время соединения ввода/вывода позволяют осуществлять прямой обмен с базой данных ввода/вывода без промежуточной обработки данных. В обоих случаях все адреса данных в устройстве устанавливаются с использованием маршрута CIP, т.е. октетного строкового потока, определяющего экземпляр прикладного объекта, атрибут и/или конечную точку соединения.
Для дистанционного конфигурирования устройств с коммуникационным интерфейсом CIP существуют разные опции, включающие в себя:
- информацию по приборам, сохраняемую в печатном или электронном формате;
- специализированные объекты Parameter Object, которые предоставляют заданный открытый интерфейс для отдельных значений данных по конфигурации/параметрам и также могут вводить дополнительную информацию по конфигурации, например описательный текст, тип данных, границы данных и данные по умолчанию;
- специализированную компоновку конфигурации, которая позволяет загружать и скачивать массивы данных по конфигурации путем группирования отдельных значений данных;
- комбинации методов, перечисленных выше.
Средства конфигурирования, доступные в настоящее время для устройств на основе CIP, используют специально отформатированный файл ASCII, называемый Электронная Информационная Таблица (EDS), который предоставляет:
- информацию, необходимую для идентификации подключенного устройства;
- описание данных по устройству, которые могут быть оценены через сеть (например, конфигурируемые параметры);
- описание коммуникационных возможностей, поддерживаемых устройством (например, соединения);
- дополнительную информацию от продавца.
EDS позволяет средствам конфигурирования автоматизировать процесс конфигурирования устройств. Требования EDS определяют открытый, согласованный и совместимый метод, позволяющий выполнить конфигурирование устройств в среде CIP.
Информация EDS во многом аналогична информации, необходимой как для профиля коммуникационной сети, так и для профиля устройств, поэтому следующие подклассы устанавливают формат для:
- шаблонов профилей коммуникационной сети и приборов, как определено в ИСО 15745-1;
- инкапсуляции унаследованных файлов EDS в шаблоны ИСО 15745 («упаковщики»);
- унаследованной Электронной Информационной Таблицы (EDS), включая общую семантическую информацию.
Примечание — EDS сети DeviceNET заданного прибора может быть получена из содержимого соответствующих XML файлов профилей приборов и коммуникационных сетей с использованием соответствующих таблиц стилей.
A.2 Описание шаблонов профилей устройств
A.2.1 Описание шаблонов профилей устройств на основе XML
Файлы XML профилей приборов должны соответствовать XML схеме профилей устройств, как установлено в A.2.1.3.3.
Содержимое XML схемы выводится из диаграмм классов профилей устройств, показанной в 6.1.1 и расширенной путем введения дополнительных элементов, обеспечивающих полное описание требований к приборам или возможностей устройств.
A.2.1.2 Семантика элементов XML схемы
A.2.1.2.1 ProfileBody (Тело профиля)
Данный основной элемент связан с набором атрибутов, предоставляющих дополнительную информацию о файле профилей.
Семантика этих атрибутов установлена в A.4.1.4.2.
A.2.1.2.2 DeviceIdentity (Идентичность устройств)
Данный элемент определяет поддерживаемые атрибуты экземпляра и операции объекта Идентичность (см. МЭК 62026-3), а также дополнительную информацию для полной идентификации устройств. В случае необходимости этот элемент также указывает истинные значения атрибутов экземпляра.
Семантика подэлементов DeviceIdentity_InstanceAttributes элемента DeviceIdentity установлена в таблице A.1.
Элементы DeviceIdentity_InstanceAttributes
| Элементы XML схемы | Атрибуты объекта | Семантика |
|---|---|---|
| SpecificationConformance | Нет | Строка, устанавливающая эталонную версию спецификаций DeviceNet |
| VendCode, ProdType, ProdCode, ProdRevision | Есть | A.4.1.4.3 |
| VendName, ProdTypeStr, ProdName, Catalog, Icon, Exclude FromAdapterRackConnection | Нет | A.4.1.4.3 |
| Status, SerialNumber, State, ConfigurationConsistencyValue, HeartbeatInterval | Есть | Не применяется |
| DeviceClassification | Нет | A.4.1.4.4 и A.4.2.2.1 |
A.2.1.2.3 DeviceManager (Управление устройствами)
Данный элемент определяет поддерживаемые атрибуты классов и операции объекта Identity (Идентичность) (см. МЭК 62026-3), а также дополнительную информацию для управления устройствами. В случае необходимости этот элемент также указывает истинные значения атрибутов экземпляра.
Семантика модульных подэлементов элемента DeviceManager установлена в A.4.1.5.2.
A.2.1.2.4 DeviceFunction (Функция устройств)
В настоящем стандарте содержимое этого элемента не детализировано.
A.2.1.2.5 ApplicationProcess (Прикладной процесс)
A.2.1.2.5.1 Assembly (Компоновка)
Данный элемент устанавливает поддерживаемые атрибуты классов и экземпляров объекта Assembly [см. МЭК 61158-5 и МЭК 61158-6 (тип 2)], а также описание отдельных экземпляров.
Семантика подэлементов Assem, ProxyAssem and ProxiedAssem элемента DeviceManager установлена в A.4.1.4.8 и A.4.1.5.3.2.
A.2.1.2.5.2 Parameter (Параметр)
Данный элемент устанавливает поддерживаемые атрибуты классов и экземпляров и операции объекта Parameter Object, а также описание отдельных экземпляров.
Семантика подэлемента Parameter_ClassAttributes элемента Parameter установлена в A.4.1.4.5.
Семантика подэлементов Param, ProxyParam and ProxiedParam элемента Parameter установлена в A.4.1.4.6 и A.4.1.5.3.1.
A.2.1.2.5.3 ParameterGroup (Группа Параметров)
Данный элемент устанавливает группы связанных параметров для конкретной цели.
Семантика подэлемента Group элемента ParameterGroup установлена в A.4.1.4.7.
A.2.1.3.1 Файл MasterTemplateTypes.xsd
Примечание — XML схема содержит все стили, определенные как часть основного шаблона в ИСО 15745-1.
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»>
<!- — Target namespaces are not specified in this master template — ->
xsd:documentation* HEADER DATA TYPES *</xsd:documentation>
<xsd:simpleType name=«ProfileClassID_DataType»>
<xsd:restriction base=«xsd:string»>
<xsd:enumeration value=«AIP» />
<xsd:enumeration value=«Process» />
<xsd:enumeration value=«InformationExchange» />
<xsd:enumeration value=«Resource» />
<xsd:enumeration value=«Device» />
<xsd:enumeration value=«CommunicationNetwork» />
<xsd:enumeration value=«Equipment» />
<xsd:enumeration value=«Human» />
<xsd:enumeration value=«Material» />
<xsd:complexType name=«ISO15745Reference_DataType»>
<xsd:element name=«ISO15745Part» type=«xsd:positiveInteger» />
<xsd:element name=«ISO15745Edition» type=«xsd:positiveInteger» />
<xsd:element name=«ProfileTechnology» type=«xsd:string» />
<xsd:simpleType name=«IASInterface_DataType»>
<xsd:restriction base=«xsd:string»>
<xsd:enumeration value=«CSI» />
<xsd:enumeration value=«HCI» />
<xsd:enumeration value=«ISI» />
<xsd:enumeration value=«API» />
<xsd:enumeration value=«CMI» />
<xsd:enumeration value=«ESI» />
<xsd:enumeration value=«FSI» />
<xsd:enumeration value=«MTI» />
<xsd:enumeration value=«SEI» />
<xsd:enumeration value=«USI» />
<xsd:restriction base=«xsd:string»>
xsd:documentation* ISO 15745 DEFINED DATA TYPES *</xsd:documentation>
<xsd:complexType name=«ProfileHandle_DataType»>
<xsd:element name=«ProfileIdentification» type=«xsd:string» />
<xsd:element name=«ProfileRevision» type=«xsd:string» />
<xsd:element name=«ProfileLocation» type=«xsd:anyURI» minOccurs=«0» maxOccurs=«1» />
A.2.1.3.2 Файл CIPDataTypes.xsd
Примечание — XML схема определяет элементы, составляющие ее (например, типы данных, типы элементов, группы атрибутов), используемые в других XML схемах.
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»>
<!- — Target namespaces are not specified in this master template — ->
xsd:documentation* CIP DATA TYPES *</xsd:documentation>
<xsd:simpleType name=«dt_USINT»>
<xsd:restriction base=«xsd:unsignedByte»/>
<xsd:simpleType name=«dt_UINT»>
<xsd:restriction base=«xsd:unsignedShort»/>
<xsd:simpleType name=«dt_UDINT»>
<xsd:restriction base=«xsd:unsignedInt»/>
<xsd:simpleType name=«dt_ULINT»>
<xsd:restriction base=«xsd:unsignedLong»/>
<xsd:simpleType name=«dt_SINT»>
<xsd:restriction base=«xsd:byte»/>
<xsd:simpleType name=«dt_DINT»>
<xsd:restriction base=«xsd:int»/>
<xsd:simpleType name=«dt_LINT»>
<xsd:restriction base=«xsd:long»/>
<xsd:simpleType name=«dt_BYTE»>
<xsd:restriction base=«xsd:hexBinary»>
<xsd:simpleType name=«dt_WORD»>
<xsd:restriction base=«xsd:hexBinary»>
<xsd:simpleType name=«dt_DWORD»>
<xsd:restriction base=«xsd:hexBinary»>
<xsd:restriction base=«xsd:hexBinary»>
<xsd:simpleType name=«dt_REAL»>
<xsd:restriction base=«xsd:float»/>
<xsd:simpleType name=«dt_LREAL»>
<xsd:restriction base=«xsd:double»/>
<xsd:simpleType name=«dt_EDS_Char_Array»>
<xsd:restriction base=«xsd:string»/>
<xsd:simpleType name=«dt_EPATH»>
<xsd:list itemType=«et_EPATH_item»/>
<xsd:simpleType name=«dt_STRINGI»>
<xsd:restriction base=«xsd:string»/>
<xsd:simpleType name=«dt_EDS_Date»>
<xsd:restriction base=«xsd:date»/>
<xsd:simpleType name=«dt_EDS_Time_Of_Day»>
<xsd:restriction base=«xsd:time»/>
<xsd:simpleType name=«dt_EDS_Revision»>
<xsd:simpleType name=«dt_EDS_URL»>
<xsd:restriction base=«xsd:anyURI»>
<xsd:pattern value=«http://.*»/>
<xsd:pattern value=«ftp://.*»/>
<xsd:simpleType name=«at_AccessType_OptionalGet»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«None»/>
<xsd:enumeration value=«Get»/>
<xsd:simpleType name=«at_AccessType_OptionalSet»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«None»/>
<xsd:enumeration value=«Get»/>
<xsd:enumeration value=«Set»/>
<xsd:simpleType name=«at_AccessType_Mandatory»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«Get»/>
<xsd:enumeration value=«Set»/>
<xsd:simpleType name=«et_VendorSpecificKeyword»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«[1-9][0-9]{0,4}([A-Z]|[a-z]|[0-9])([A-Z]|[a-z]|[0-9]|[])*»/>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«([0-9]|[a-f]|[A-F]){2}»/>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«Param[1-9][0-9]{0,4}»/>
<xsd:pattern value=«[Param[1-9][0-9]{0,4}]»/>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:pattern value=«Param[1-9][0-9]{0,4}([:][0-9]{1,2})*»/>
<xsd:simpleType name=«et_AssemReference»>
<xsd:attributeGroup name=«ag_FileDescription»>
<xsd:attribute name=«DescText» type=«dt_EDS_Char_Array» use=«required»/>
<xsd:attribute name=«CreateDate» type=«dt_EDS_Date» use=«required»/>
<xsd:attribute name=«CreateTime» type=«dt_EDS_Time_Of_Day» use=«required»/>
<xsd:attribute name=«ModDate» type=«dt_EDS_Date» use=«optional»/>
<xsd:attribute name=«ModTime» type=«dt_EDS_Time_Of_Day» use=«optional»/>
<xsd:attribute name=«Revision» type=«dt_EDS_Revision» use=«required»/>
<xsd:attribute name=«HomeURL» type=«dt_EDS_URL» use=«optional»/>
<xsd:attribute name=«SpecificationConformance» type=«dt_EDS_Char_Array» use=«required»/>
A.2.1.3.3 Файл CIP_Device_Profile.xsd
Примечание — XML схема включает в себя файлы «Master Template Types.xsd» (см. A.2.1.3.1) и «CIPDataTypes.xsd» (см. A.2.1.3.2).
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema» elementFormDefault=«qualified»>
<!- — Target namespaces are not specified in this master template — ->
<xsd:restriction base=«ISO15745Reference_DataType»>
<xsd:element name=«ISO15745Part» type=«xsd:positiveInteger»/>
<xsd:element name=«ISO15745Edition» type=«xsd:positiveInteger»/>
<xsd:element name=«ProfileTechnology» type=«xsd:string» fixed=«CIP»/>
<xsd:element name=«ProfileHeader»>
<xsd:element name=«ProfileIdentification» type=«xsd:string»/>
<xsd:element name=«ProfileRevision» type=«xsd:string»/>
<xsd:element name=«ProfileName» type=«xsd:string»/>
<xsd:element name=«ProfileSource» type=«xsd:string»/>
<xsd:element name=«ProfileClassID» type=«ProfileClassID_DataType» fixed=«Device»/>
<xsd:element name=«AdditionalInformation» type=«xsd:anyURI» minOccurs=«0»/>
<xsd:element name=«ISO15745Reference» type=«ISO15745Reference_DataType»/>
<xsd:element name=«IASInterfaceType» type=«IASInterface_DataType» minOccurs=«0»
xsd:documentation* BODY SECTION *</xsd:documentation>
<xsd:element name=«ProfileBody»>
<xsd:element ref=«DeviceIdentity»/>
<xsd:element ref=«DeviceManager» minOccurs=«0»/>
<xsd:element ref=«DeviceFunction» maxOccurs=«unbounded»/>
<xsd:element ref=«ApplicationProcess» minOccurs=«0»/>
<xsd:element name=«ExternalProfileHandle» type=«ProfileHandle_DataType» minOccurs=«0»/>
<xsd:element name=«DeviceIdentity»>
<xsd:element name=«DeviceIdentity_InstanceAttributes»>
<xsd:extension base=«dt_UINT»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:extension base=«dt_EDS_Char_Array»/>
<xsd:element name=«SpecificationConformance» type=«dt_EDS_Char_Array»
<xsd:extension base=«dt_UINT»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ProdTypeStr»>
<xsd:extension base=«dt_EDS_Char_Array»/>
<xsd:element name=«ProdRevision»>
<xsd:element name=«MajRev» type=«dt_USINT»/>
<xsd:element name=«MinRev» type=«dt_USINT»/
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«SerialNumber» minOccurs=«0»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:element name=«ConfigurationConsistencyValue» minOccurs=«0»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:element name=«HeartbeatInterval» minOccurs=«0»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalSet»
<xsd:element name=«Catalog» type=«xsd:string» minOccurs=«0»/>
<xsd:element name=«Icon» type=«xsd:string» minOccurs=«0»/>
<xsd:element name=«ExcludeFromAdapterRackConnection» type=«xsd:string»
<xsd:element name=«DeviceClassification» minOccurs=«0»>
<xsd:element name=«Class» maxOccurs=«unbounded»>
<xsd:element name=«MainClass»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«ControlNet»/>
<xsd:enumeration value=«DeviceNet»/>
<xsd:element name=«SubClass» type=«xsd:NMTOKEN» minOccurs=«0»
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«Class[1-9][0-9]{0,4}»/>
<xsd:element name=«DeviceIdentity_InstanceOperations» minOccurs=«0»>
<xsd:element name=«Get_Attribute_All»>
<xsd:attribute ref=«SupportedService» fixed=«true»/>
<xsd:attribute ref=«SupportedService» fixed=«true»/>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«DeviceManager»>
<xsd:element name=«DeviceIdentity_ClassAttributes» minOccurs=«0»>
<xsd:element name=«ObjectRevision»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:element name=«MaxInstance»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:element name=«MaxIDClassAttributes»>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:element name=«MaxIDInstanceAttributes»>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«DeviceIdentity_ClassOperations» minOccurs=«0»>
<xsd:element name=«Get_Attribute_All»>
<xsd:attribute ref=«SupportedService»/>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Find_Next_Object_Instance»>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Modular» minOccurs=«0»>
<xsd:element name=«DefineSlotsInRack» type=«dt_UINT»/>
<xsd:element name=«SlotDisplayRule» type=«et_ParamReference»
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Width» type=«dt_UINT»/>
<xsd:element name=«Rack» maxOccurs=«unbounded»>
<xsd:element name=«VendCode» type=«dt_UINT»/>
<xsd:element name=«ProdType» type=«dt_UINT»/>
<xsd:element name=«ProdCode» type=«dt_UINT»/>
<xsd:element name=«MajRev» type=«dt_USINT»/>
<xsd:element name=«MinRev» type=«dt_USINT»/>
<xsd:element name=«LegalSlot» type=«dt_UINT»
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«Rack[1-9][0-9]{0,4}»/>
<xsd:element name=«ExternalID» type=«dt_EPATH» minOccurs=«0»/>
<xsd:element name=«GenericID» type=«dt_EPATH» minOccurs=«0»/>
<xsd:element name=«ExternIDExactMatch» minOccurs=«0»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«Yes»/>
<xsd:element name=«Query» minOccurs=«0»>
<xsd:element name=«Path» type=«dt_EPATH»/>
<xsd:element name=«Service» type=«dt_USINT»/>
<xsd:restriction base=«dt_USINT»>
<xsd:maxInclusive value=«16»/>
<xsd:element name=«ExternalID» type=«dt_EPATH»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«DeviceFunction»>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«ApplicationProcess»>
<xsd:element name=«Parameter» minOccurs=«0»>
<xsd:element name=«Parameter_Class» minOccurs=«0»>
<xsd:element name=«Parameter_ClassAttributes»>
<xsd:element name=«ObjectRevision» minOccurs=«0»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«MaxInstance»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Get»/>
<xsd:element name=«ParameterClassDescriptor»>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Get»/>
<xsd:element name=«ConfigurationAssemblyInstance»>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Get»/>
<xsd:element name=«NativeLanguage» minOccurs=«0»>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalSet» use=«required»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Parameter_ClassOperations» minOccurs=«0»>
<xsd:element name=«Get_Attribute_All»>
<xsd:attribute ref=«SupportedService»/>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService» fixed=«true»/>
<xsd:element name=«Set_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:attribute ref=«SupportedService»/>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Parameter_Instance» minOccurs=«0»>
<xsd:element name=«Parameter_InstanceAttributes» minOccurs=«0»>
<xsd:element name=«ParameterValue»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Set»/>
<xsd:element name=«LinkPathSize»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Set»/>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Set»/>
<xsd:element name=«ParamDescriptor»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Get»/>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Get»/>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Get»/>
<xsd:element name=«ParameterName»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«UnitsString»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«HelpString»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«MinimumValue»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«MaximumValue»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«DefaultValue»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«ScalingMultiplier»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«ScalingDivider»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«ScalingBase»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«ScalingOffset»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«MultiplierLink»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«DivisorLink»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«OffsetLink»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«DecimalPrecision»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Parameter_InstanceOperations» minOccurs=«0»>
<xsd:element name=«Get_Attribute_All»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService» fixed=«true»/>
<xsd:element name=«Set_Attribute_Single»>
<xsd:attribute ref=«SupportedService» fixed=«true»/>
<xsd:element name=«Get_Enum_String»>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Param» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:extension base=«et_ParamType»>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«Param[1-9][0-9]{0,4}»/>
<xsd:element name=«ProxyParam» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:extension base=«et_ProxyParamType»>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«ProxyParam[1-9][0-9]{0,4}»/>
<xsd:element name=«ProxiedParam» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:extension base=«et_ParamType»>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«ProxiedParam[1-9][0-9]{0,4}»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Assembly» minOccurs=«0»>
<xsd:element name=«Assembly_Class» minOccurs=«0»>
<xsd:element name=«Assembly_ClassAttributes» minOccurs=«0»>
<xsd:element name=«ObjectRevision»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Get»/>
<xsd:element name=«MaxInstance»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Assembly_ClassOperations» minOccurs=«0»>
<xsd:attribute ref=«SupportedService»/>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService» fixed=«true»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Assembly_Instance» minOccurs=«0»>
<xsd:element name=«Assembly_InstanceAttributes» minOccurs=«0»>
<xsd:element name=«NumberOfMembers»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalGet» use=«required»/>
<xsd:element name=«AssemblyMemberList»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_OptionalSet» use=«required»/>
<xsd:element name=«AssemblyData»>
<xsd:attribute name=«Access_Rule»
type=«at_AccessType_Mandatory» use=«required» fixed=«Set»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Assembly_InstanceOperations» minOccurs=«0»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService» fixed=«true»/>
<xsd:element name=«Set_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Get_Member»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Set_Member»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Insert_Member»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Remove_Member»>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Assem» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:extension base=«et_AssemType»>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«Assem[1-9][0-9]{0,4}»/>
<xsd:element name=«ProxyAssem» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:extension base=«et_AssemType»>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«ProxyAssem[1-9][0-9]{0,4}»/>
<xsd:element name=«ProxiedAssem» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:extension base=«et_AssemType»>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«ProxiedAssem[1-9][0-9]{0,4}»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«ParameterGroup» minOccurs=«0»>
<xsd:element name=«Group» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:element name=«NameString» type=«dt_EDS_Char_Array»/>
<xsd:element name=«NumberOfMembers» type=«dt_UINT»/>
<xsd:choice maxOccurs=«unbounded»>
<xsd:element name=«ParameterRef» type=«dt_UINT»/>
<xsd:element name=«VariantRef» type=«xsd:NMTOKEN»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«Group[1-9][0-9]{0,4}»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«SupportedService» use=«required»>
<xsd:restriction base=«xsd:boolean»>
<xsd:pattern value=«true|false»/>
<xsd:complexType name=«et_ParamType»>
<xsd:element name=«LinkPathSize» type=«dt_USINT» minOccurs=«0»/>
<xsd:element name=«LinkPath» type=«dt_EPATH» minOccurs=«0»/>
<xsd:element name=«ParamDescriptor» type=«dt_WORD»/>
<xsd:union memberTypes=«dt_USINT dt_EPATH»/>
<xsd:element name=«DataSize» type=«dt_USINT»/>
<xsd:element name=«ParameterName» type=«dt_EDS_Char_Array»/>
<xsd:element name=«UnitsString» type=«dt_EDS_Char_Array»/>
<xsd:element name=«HelpString» type=«dt_EDS_Char_Array»/>
<xsd:element name=«MinimumValue» minOccurs=«0»/>
<xsd:element name=«MaximumValue» minOccurs=«0»/>
<xsd:element name=«DefaultValue» minOccurs=«0»/>
<xsd:element name=«ScalingMultiplier» type=«dt_UINT» minOccurs=«0»/>
<xsd:element name=«ScalingDivider» type=«dt_UINT» minOccurs=«0»/>
<xsd:element name=«ScalingBase» type=«dt_UINT» minOccurs=«0»/>
<xsd:element name=«ScalingOffset» type=«dt_INT» minOccurs=«0»/>
<xsd:element name=«MultiplierLink» type=«dt_UINT» minOccurs=«0»/>
<xsd:element name=«DivisorLink» type=«dt_UINT» minOccurs=«0»/>
<xsd:element name=«BaseLink» type=«dt_UINT» minOccurs=«0»/>
<xsd:element name=«OffsetLink» type=«dt_INT» minOccurs=«0»/>
<xsd:element name=«DecimalPrecision» type=«dt_USINT» minOccurs=«0»/>
<xsd:element name=«InternationalParameterName» type=«dt_EDS_Char_Array» minOccurs=«0»/>
<xsd:element name=«InternationalEngineeringUnits» type=«dt_EDS_Char_Array» minOccurs=«0»/>
<xsd:element name=«InternationalHelpString» type=«dt_EDS_Char_Array» minOccurs=«0»/>
<xsd:element name=«Enum» minOccurs=«0»/>
<xsd:sequence maxOccurs=«unbounded»>
<xsd:element name=«EnumValue» type=«dt_LINT»/>
<xsd:element name=«EnumName» type=«dt_EDS_Char_Array»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:complexType name=«et_ProxyParamType»>
<xsd:extension base=«et_ParamType»>
<xsd:element name=«ProxyParamSizeAdder» minOccurs=«0»>
<xsd:element name=«MinimumValue»/>
<xsd:element name=«MaximumValue»/>
<xsd:element name=«DefaultValue»/>
<xsd:complexType name=«et_AssemType»>
<xsd:element name=«AssemblyName» type=«dt_EDS_Char_Array» minOccurs=«0»/>
<xsd:element name=«AssemblyPath» type=«dt_EPATH» minOccurs=«0»/>
<xsd:element name=«AssemblyDataSize» type=«dt_UINT» minOccurs=«0»/>
<xsd:element name=«AssemblyDescriptor» type=«dt_WORD» minOccurs=«0»/>
<xsd:element name=«AssemblyMember» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:element name=«MemberSize» type=«dt_UINT»/>
<xsd:element name=«MemberReference» type=«et_MemberReferenceType»/>
<xsd:element name=«VariantReference»>
<xsd:element name=«MemberSize» type=«dt_UINT»/>
<xsd:element name=«MemberReference» type=«et_MemberReferenceType»/>
<xsd:element name=«MemberSize» type=«dt_UINT»/>
<xsd:element name=«VariantReference»>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:simpleType name=«et_MemberReferenceType»>
<xsd:union memberTypes=«et_AssemReference et_ParamReference dt_UDINT dt_EPATH»
A.2.2 Описание шаблонов профилей устройств — инкапсуляция XML файлов EDS
Файлы XML профилей устройств, используемые для инкапсуляции файлов EDS, должны соответствовать XML схеме профилей устройств, как установлено в A.2.2.2.
Семантика подэлементов элемента ExternalProfileHandle, используемого для обращения к имеющемуся файлу EDS, установлена в таблице A.2. В зависимости от значения атрибута WrapperReference к файлу EDS можно обратиться, используя элементы идентификации либо из самого файла EDS, либо из продукта, описанного этой EDS.
Примечание 1 — Выбор соответствующих элементов идентификации зависит от предполагаемого использования упаковочного (wrapper) файла.
Элементы ExternalProfileHandle (Внешний Идентификатор Профиля)
| Элементы XML схемы | WrapperReference = FILEINFO | WrapperReference = DEVICEINFO |
| ProfileIdentification | Текстовое описание файла EDS a | VendorID (идентификация вендора), Device Type (тип устройства), Product Code (код продукта) b |
| ProfileRevision | Модификация EDS a | Модификация продукта b |
| ProfileLocation | Собственный адрес (URL) EDS a | Имя файла, содержащего изображение иконки b |
| a Для получения более полной информации см. A.4.1.4.2. b Для получения более полной информации см. A.4.1.4.3. | ||
Элементы DeviceIdentity (Идентичность устройств), DeviceManager (Управление устройствами), DeviceFunction (Функция устройств) и Application Process (Прикладной процесс) должны быть совместимы с форматами, установленными в A.2.1.3.3.
Примечание 2 — Они могут быть использованы в течение перехода от унаследованного формата EDS к полному формату XML.
A.2.2.2 XML схема: файл EDS_Device_Profile_wrapper.xsd
Примечание — XML схема включает в себя файл «MasterTemplateTypes.xsd» (см. A.2.1.3.1).
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»>
<!- — Target namespaces are not specified in this master template — ->
<xsd:redefine schemaLocation=«MasterTemplateTypes.xsd»>
<xsd:complexType name=«ISO15745Reference_DataType»>
<xsd:restriction base=«ISO15745Reference_DataType»>
<xsd:element name=«ISO15745Part» type=«xsd:positiveInteger»/>
<xsd:element name=«ISO15745Edition» type=«xsd:positiveInteger»/>
<xsd:element name=«ProfileTechnology» type=«xsd:string» fixed=«EDS»/>
<xsd:element name=«ISO15745Profile»>
<xsd:element ref=«ProfileHeader»/>
<xsd:element ref=«ProfileBody»/>
xsd:documentation* HEADER SECTION *</xsd:documentation>
<xsd:element name=«ProfileHeader»>
<xsd:element name=«ProfileIdentification» type=«xsd:string»/>
<xsd:element name=«ProfileRevision» type=«xsd:string»/>
<xsd:element name=«ProfileName» type=«xsd:string»/>
<xsd:element name=«ProfileSource» type=«xsd:string»/>
<xsd:element name=«ProfileClassID» type=«ProfileClassID_DataType» fixed=«Device»/>
<xsd:element name=«ProfileDate» type=«xsd:date» minOccurs=«0»/>
<xsd:element name=«AdditionalInformation» type=«xsd:anyURI» minOccurs=«0»/>
<xsd:element name=«ISO15745Reference» type=«ISO15745Reference_DataType»/>
<xsd:element name=«IASInterfaceType» type=«IASInterface_DataType» minOccurs=«0»
xsd:documentation* BODY SECTION *</xsd:documentation>
<xsd:element name=«ProfileBody»>
<xsd:element name=«DeviceIdentity» minOccurs=«0»>
<xsd:element name=«DeviceManager» minOccurs=«0»>
<xsd:element name=«DeviceFunction» maxOccurs=«unbounded»>
<xsd:element name=«ApplicationProcess» minOccurs=«0»>
<xsd:element name=«ExternalProfileHandle»>
<xsd:extension base=«ProfileHandle_DataType»>
<xsd:attribute name=«WrapperReference» use=«optional» default=«FILEINFO»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«FILEINFO»/>
<xsd:enumeration value=«DEVICEINFO»/>
A.3 Описание шаблонов профилей коммуникационных сетей
A.3.1 Описание шаблонов профилей коммуникационных сетей на основе XML
Файлы XML профилей коммуникационных сетей должны соответствовать XML схеме профилей коммуникационных сетей, как установлено в A.3.1.3.
Содержимое этой XML схемы выводится из диаграмм классов коммуникационных сетей, показанных в 6.1.2, и расширяется путем использования дополнительных элементов, что позволяет полностью описать требования к коммуникационным сетям или их возможности.
A.3.1.2 Семантика элементов XML схемы
A.3.1.2.1 ProfileBody (Тело профиля)
Данный основной элемент связан с набором атрибутов, которые предоставляют дополнительную информацию о файле профиля.
Семантика этих атрибутов установлена в A.4.1.4.2.
A.3.1.2.2 ApplicationLayers (Прикладные уровни)
A.3.1.2.2.1 ConnectionObject (Объект соединения)
Данный элемент устанавливает поддерживаемые атрибуты экземпляров и операции Объекта соединения (см. МЭК 62026-3), а также описание отдельных экземпляров соединений и характеристики ввода/вывода.
Элемент ConnectionDescriptions (Описание соединений) идентифицирует экземпляры Объекта Соединения, которые осуществляются в устройстве. Семантика подэлемента Connection (Соединение) установлена в таблице A.3.
Семантика элемента IO_Characteristics установлена в A.4.2.4.2.
A.3.1.2.2.2 MessageRouter (Маршрутизатор сообщений)
Данный элемент устанавливает поддерживаемые атрибуты экземпляров и операции Объекта Message Router (Маршрутизатор сообщений) (см. МЭК 62026-3).
A.3.1.2.3 TransportLayers (Транспортные уровни)
A.3.1.2.3.1 DNPhysicalLayer (Физический уровень DN)
Данный элемент идентифицирует характеристики физических уровней (например, коннекторы, скорости передачи данных в бодах, электрические характеристики).
Семантика его подэлементов установлена в таблице A.4.
A.3.1.2.3.2 DNLinkLayer (Канальный уровень DN)
Данный элемент определяет некоторые характеристики, связанные с конфигурацией уровней каналов передачи данных.
Семантика его подэлементов установлена в таблице A.5.
A.3.1.2.3.3 Элемент DeviceNetObject
Данный элемент устанавливает поддерживаемые атрибуты экземпляров и операции Объекта DeviceNet (см. МЭК 62026-3).
Данный элемент идентифицирует порты устройств, которые способны маршрутизировать сообщения из одного канала связи в другой канал связи.
Семантика подэлемента Port элемента Ports установлена в A.4.1.4.10 и A.4.2.2.2.
A.3.1.2.4.1 NetworkManagement (Управление сетями)
Данный элемент устанавливает поддерживаемые атрибуты классов и операции Объекта DeviceNet (см. МЭК 62026-3).
A.3.1.2.4.2 Элемент NM-ConnectionObject (Объект NM-соединения)
Данный элемент устанавливает поддерживаемые атрибуты классов и операции объекта Connection (Соединение) (см. МЭК 62026-3).
A.3.1.2.4.3 Элемент NM-MessageRouter (Маршрутизатор NM-сообщений)
Данный элемент устанавливает поддерживаемые атрибуты классов и операции Объекта Message Router (Маршрутизатор сообщений) (см. МЭК 62026-3).
A.3.1.3 XML схема: файл DNet_CommNet_Profile.xsd
Примечание — XML схема включает в себя файлы «MasterTemplateTypes.xsd» (см. A.2.1.3.1) и «CIPDataTypes.xsd» (см. A.2.1.3.2).
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema» elementFormDefault=«qualified»>
<!- — Target namespaces are not specified in this master template — ->
<xsd:redefine schemaLocation=«MasterTemplateTypes.xsd»>
<xsd:complexType name=«ISO15745Reference_DataType»>
<xsd:restriction base=«ISO15745Reference_DataType»>
<xsd:element name=«ISO15745Part» type=«xsd:positiveInteger» fixed=«2»/>
<xsd:element name=«ISO15745Edition» type=«xsd:positiveInteger» fixed=«1»/>
<xsd:element name=«ProfileTechnology» type=«xsd:string» fixed=«DeviceNet»/>
<xsd:include schemaLocation=«CIPDataTypes.xsd»/>
<xsd:element name=«ISO15745Profile»>
<xsd:element ref=«ProfileHeader»/>
<xsd:element ref=«ProfileBody»/>
xsd:documentation* HEADER SECTION *</xsd:documentation>
<xsd:element name=«ProfileHeader»>
<xsd:element name=«ProfileIdentification» type=«xsd:string»/>
<xsd:element name=«ProfileRevision» type=«xsd:string»/>
<xsd:element name=«ProfileName» type=«xsd:string»/>
<xsd:element name=«ProfileSource» type=«xsd:string»/>
<xsd:element name=«ProfileClassID» type=«ProfileClassID_DataType»
fixed=«CommunicationNetwork»/>
<xsd:element name=«ProfileDate» type=«xsd:date» minOccurs=«0»/>
<xsd:element name=«AdditionalInformation» type=«xsd:anyURI» minOccurs=«0»/>
<xsd:element name=«ISO15745Reference» type=«ISO15745Reference_DataType»/>
<xsd:element name=«IASInterfaceType» type=«IASInterface_DataType» fixed=«CSI»/>
xsd:documentation* BODY SECTION *</xsd:documentation>
<xsd:element name=«ProfileBody»>
<xsd:element ref=«ApplicationLayers»/>
<xsd:element ref=«TransportLayers»/>
<xsd:element ref=«NetworkManagement» minOccurs=«0»/>
<xsd:attributeGroup ref=«ag_FileDescription»/>
<xsd:element name=«ApplicationLayers»>
<xsd:element ref=«ConnectionObject»/>
<xsd:element ref=«MessageRouter»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«TransportLayers»>
<xsd:element ref=«DNPhysicalLayer»/>
<xsd:element ref=«DNLinkLayer»/>
<xsd:element ref=«DeviceNetObject»/>
<xsd:element ref=«Ports» minOccurs=«0»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«NetworkManagement»>
<xsd:element ref=«NM-DeviceNetObject»/>
<xsd:element ref=«NM-ConnectionObject» minOccurs=«0»/>
<xsd:element ref=«NM-MessageRouter» minOccurs=«0»/>
<xsd:element name=«ConnectionObject»>
<xsd:element name=«ConnectionObject_InstanceAttributes» minOccurs=«0»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«InstanceType»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«TransportClassTrigger»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ProducedConnectionID»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ConsumedConnectionID»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«InitialCommCharacteristics»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ProducedConnectionSize»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ConsumedConnectionSize»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ExpectedPacketRate»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«WatchdogTimeoutAction»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ProducedConnectionPathLength»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ProducedConnectionPath»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ConsumedConnectionPathLength»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ConsumedConnectionPath»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory»
<xsd:element name=«ProductionInhibitTime»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalSet»
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«ConnectionObject_InstanceOperations» minOccurs=«0»>
<xsd:attribute ref=«SupportedService»/>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService» fixed=«true»/>
<xsd:element name=«Set_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ConnectionDescriptions» minOccurs=«0»/>
<xsd:element name=«IO_Characteristics» minOccurs=«0»>
<xsd:element name=«IO_Info» type=«et_IOInfoType»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Connection Descriptions»>
<xsd:element name=«Connection» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:element name=«InstanceType»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«ExplicitMessage»/>
<xsd:enumeration value=«PolledIO»/>
<xsd:enumeration value=«BitStrobedIO»/>
<xsd:enumeration value=«DynamicIO»/>
<xsd:element name=«ProductionTrigger»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«Cyclic»/>
<xsd:enumeration value=«ChangeOfState»/>
<xsd:enumeration value=«ApplicationTriggered»/>
<xsd:element name=«TransportType»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«Server»/>
<xsd:enumeration value=«Client»/>
<xsd:element name=«TransportClass»>
<xsd:restriction base=«dt_SINT»>
<xsd:element name=«ProducedConnectionSize» type=«dt_UINT»/>
<xsd:element name=«ConsumedConnectionSize» type=«dt_UINT»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«MessageRouter»>
<xsd:element name=«MessageRouter_InstanceAttributes» minOccurs=«0»>
<xsd:element name=«Object_List»>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»/>
<xsd:element name=«MaximumConnectionSupported»>
<xsd:extension base=«dt_UINT»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»/>
<xsd:element name=«NumberActiveConnections»>
<xsd:extension base=«dt_UINT»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»/>
<xsd:element name=«ActiveConnectionList»>
<xsd:extension base=«dt_UINT»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Get_Attribute_All»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«DNPhysicalLayer»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«OpenHardWired»/>
<xsd:enumeration value=«OpenPluggable»/>
<xsd:enumeration value=«SealedMini»/>
<xsd:enumeration value=«SealedMicro»/>
<xsd:element name=«LEDs» minOccurs=«0»>
<xsd:attribute name=«Module» type=«xsd:NMTOKEN»/>
<xsd:attribute name=«Network» type=«xsd:NMTOKEN»/>
<xsd:attribute name=«Combo_ModNet» type=«xsd:NMTOKEN»/>
<xsd:attribute name=«IO» type=«xsd:NMTOKEN»/>
<xsd:element name=«Baud_Rate_Setting» minOccurs=«0»>
<xsd:element name=«BR_125Kbits» minOccurs=«0»>
<xsd:attribute ref=«Supported»/>
<xsd:element name=«BR_500Kbits» minOccurs=«0»>
<xsd:attribute ref=«Supported»/>
<xsd:attribute name=«SwitchType» use=«required»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«DipSwitch»/>
<xsd:enumeration value=«Other»/>
<xsd:enumeration value=«SoftwareOnly»/>
<xsd:attribute name=«SoftwareSettable» use=«required»>
<xsd:restriction base=«xsd:boolean»>
<xsd:element name=«ElectricalCharacteristics» minOccurs=«0»>
<xsd:element name=«MaxNetworkPowerConsumption» type=«dt_REAL»/>
<xsd:attribute name=«IsolatedPhysicalLayer»>
<xsd:restriction base=«xsd:boolean»>
<xsd:element name=«Other» type=«xsd:string» minOccurs=«0»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«DNLinkLayer»>
<xsd:element name=«MAC-IDSetting» minOccurs=«0»>
<xsd:element name=«DefaultMAC-ID» type=«et_MAC-IDRange» minOccurs=«0»/>
<xsd:attribute name=«SwitchType» use=«required»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«DipSwitch»/>
<xsd:enumeration value=«Other»/>
<xsd:enumeration value=«SoftwareOnly»/>
<xsd:attribute name=«SoftwareSettable» use=«required»>
<xsd:restriction base=«xsd:boolean»>
<xsd:element name=«PredefinedMasterSlaveConnectionSet» minOccurs=«0»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«NotSupported»/>
<xsd:enumeration value=«Group2Client»/>
<xsd:enumeration value=«Group2Server»/>
<xsd:enumeration value=«Group2ClientServer»/>
<xsd:enumeration value=«GroupOnly2Client»/>
<xsd:enumeration value=«GroupOnly2Server»/>
<xsd:element name=«DynamicConnectionSupport» minOccurs=«0»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«NotSupported»/>
<xsd:enumeration value=«Group1»/>
<xsd:enumeration value=«Group2»/>
<xsd:enumeration value=«Group3»/>
<xsd:element name=«FragmentedExplicitMessaging» minOccurs=«0»>
<xsd:element name=«TransmissionTimeout» type=«dt_UINT» minOccurs=«0»/>
<xsd:element name=«TypicalTargetAddress» minOccurs=«0»>
<xsd:element name=«Class» type=«dt_USINT» minOccurs=«0»/>
<xsd:element name=«Instance» type=«dt_USINT» minOccurs=«0»/>
<xsd:element name=«Attribute» type=«dt_USINT» minOccurs=«0»/>
<xsd:attribute ref=«Supported»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«DeviceNetObject»>
<xsd:element name=«DeviceNetObject_InstanceAttributes» minOccurs=«0»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalSet»
<xsd:element name=«Baud_Rate»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalSet»
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalSet»
<xsd:element name=«Bus_Off_Counter»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalSet»
<xsd:element name=«Allocation_Information»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:element name=«MAC_ID_Switch_Changed»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:element name=«Baud_Rate_Switch_Changed»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:element name=«MAC_ID_Switch_Value»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:element name=«Baud_Rate_Switch_Value»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«DeviceNetObject_InstanceOperations» minOccurs=«0»>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Set_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Allocate_MS_Connection_Set»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Release_Group2_Identifier_Set»>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«Port» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:element name=«PortTypeName»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«ControlNet»/>
<xsd:enumeration value=«ControlNet_Redundant»/>
<xsd:enumeration value=«TCP»/>
<xsd:enumeration value=«DeviceNet»/>
<xsd:restriction base=«et_VendorSpecificKeyword»/>
<xsd:element name=«PortName» type=«dt_EDS_Char_Array» minOccurs=«0»/>
<xsd:element name=«PortObject» type=«dt_EPATH» minOccurs=«0»/>
<xsd:element name=«PortNumber» type=«dt_UINT»/>
<xsd:element name=«PortSpecific»>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«Port[1-9][0-9]{0,4}»/>
<xsd:element name=«NM-DeviceNetObject»>
<xsd:element name=«DeviceNetObject_ClassAttributes» minOccurs=«0»>
<xsd:element name=«ObjectRevision»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_Mandatory» fixed=«Get»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«DeviceNetObject_ClassOperations» minOccurs=«0»>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«NM-ConnectionObject»>
<xsd:element name=«ConnectionObject_ClassAttributes» minOccurs=«0»>
<xsd:element name=«ObjectRevision»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«ConnectionObject_ClassOperations» minOccurs=«0»>
<xsd:attribute ref=«SupportedService»/>
<xsd:attribute ref=«SupportedService»/>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Find_Next_Object_Instance»>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«NM-MessageRouter»>
<xsd:element name=«MessageRouter_ClassAttributes» minOccurs=«0»>
<xsd:element name=«ObjectRevision»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»/>
<xsd:element name=«OptionalAttributeList»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»/>
<xsd:element name=«OptionalServiceList»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»/>
<xsd:element name=«MaxIDClassAttributes»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»/>
<xsd:element name=«MaxIDInstanceAttributes»>
<xsd:attribute name=«Access_Rule» type=«at_AccessType_OptionalGet»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«MessageRouter_ClassOperations» minOccurs=«0»>
<xsd:element name=«Get_Attribute_All»>
<xsd:attribute ref=«SupportedService»/>
<xsd:element name=«Get_Attribute_Single»>
<xsd:attribute ref=«SupportedService»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«SupportedService» use=«required»>
<xsd:restriction base=«xsd:boolean»>
<xsd:pattern value=«true|false»/>
<xsd:attribute name=«Supported» use=«required»>
<xsd:restriction base=«xsd:boolean»>
<xsd:pattern value=«true|false»/>
<xsd:simpleType name=«et_MAC-IDRange»>
<xsd:restriction base=«xsd:nonNegativeInteger»>
<xsd:maxInclusive value=«63»/>
<xsd:complexType name=«et_SpecificIOInfoType»>
<xsd:element name=«CompatibleIOTypeMask» type=«dt_WORD»/>
<xsd:element name=«DefaultProducingConnection» type=«dt_UINT»/>
<xsd:element name=«DefaultConsumingConnection» type=«dt_UINT»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:complexType name=«et_GenericIOInfoType»>
<xsd:element name=«Size» type=«dt_UINT»/>
<xsd:element name=«NumberSignificantBits» type=«dt_UINT»/>
<xsd:element name=«CompatibleIOTypeMask» type=«dt_WORD»/>
<xsd:element name=«Name_String» type=«dt_EDS_Char_Array»/>
<xsd:element name=«ConnectionPathSize» type=«dt_UINT»/>
<xsd:element name=«Path» type=«dt_EPATH»/>
<xsd:element name=«Help_String» type=«dt_EDS_Char_Array»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:complexType name=«et_IOInfoType»>
<xsd:element name=«DefaultIOTypeMask» type=«dt_WORD»/>
<xsd:element name=«PollInfo» type=«et_SpecificIOInfoType» minOccurs=«0»/>
<xsd:element name=«StrobeInfo» type=«et_SpecificIOInfoType» minOccurs=«0»/>
<xsd:element name=«MulticastPollInfo» type=«et_SpecificIOInfoType» minOccurs=«0»/>
<xsd:element name=«COSInfo» type=«et_SpecificIOInfoType» minOccurs=«0»/>
<xsd:element name=«CyclicInfo» type=«et_SpecificIOInfoType» minOccurs=«0»/>
<xsd:element name=«Input» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:extension base=«et_GenericIOInfoType»>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«Input[1-9][0-9]{0,4}»/>
<xsd:element name=«Output» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:extension base=«et_GenericIOInfoType»>
<xsd:attribute name=«id» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«Output[1-9][0-9]{0,4}»/>
<xsd:any namespace=«##any» minOccurs=«0» maxOccurs=«unbounded»/>
A.3.2 Описание шаблонов профилей коммуникационных сетей. XML инкапсуляция файлов EDS
Файлы XML профилей коммуникационных сетей, используемые для инкапсуляции файлов EDS, должны соответствовать XML схеме профилей коммуникационных сетей, как установлено в A.3.2.2.
Семантика подэлементов элемента ExternalProfileHandle, используемого для обращения к имеющемуся файлу EDS, установлена в таблице A.2. В зависимости от значения атрибута WrapperReference к файлу EDS можно обратиться, используя элементы идентификации либо из самого файла EDS, либо из продукта, описанного этой EDS.
Примечание — Выбор соответствующих элементов идентификации зависит от предполагаемого использования файла wrapper.
A.3.2.2 XML схема: файл EDS_CommNet_Profile_wrapper.xsd (см. A.2.1.3.1)
Примечание — XML схема включает в себя файл «MasterTemplateTypes.xsd» (см. A.2.1.3.1).
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»>
<!- — Target namespaces are not specified in this master template — ->
<xsd:redefine schemaLocation=«MasterTemplateTypes.xsd»>
<xsd:complexType name=«ISO15745Reference_DataType»>
<xsd:restriction base=«ISO15745Reference_DataType»>
<xsd:element name=«ISO15745Part» type=«xsd:positiveInteger»/>
<xsd:element name=«ISO15745Edition» type=«xsd:positiveInteger»/>
<xsd:element name=«ProfileTechnology» type=«xsd:string» fixed=«EDS»/>
<xsd:element name=«ISO15745Profile»>
<xsd:element ref=«ProfileHeader»/>
<xsd:element ref=«ProfileBody»/>
xsd:documentation* HEADER SECTION *</xsd:documentation>
<xsd:element name=«ProfileHeader»>
<xsd:element name=«ProfileIdentification» type=«xsd:string»/>
<xsd:element name=«ProfileRevision» type=«xsd:string»/>
<xsd:element name=«ProfileName» type=«xsd:string»/>
<xsd:element name=«ProfileSource» type=«xsd:string»/>
<xsd:element name=«ProfileClassID» type=«ProfileClassID_DataType»
fixed=«CommunicationNetwork»/>
<xsd:element name=«ProfileDate» type=«xsd:date» minOccurs=«0»/>
<xsd:element name=«AdditionalInformation» type=«xsd:anyURI» minOccurs=«0»/>
<xsd:element name=«ISO15745Reference» type=«ISO15745Reference_DataType»/>
<xsd:element name=«IASInterfaceType» type=«IASInterface_DataType» fixed=«CSI»/>
xsd:documentation* BODY SECTION *</xsd:documentation>
<xsd:element name=«ProfileBody»>
<xsd:element name=«ExternalProfileHandle»>
<xsd:extension base=«ProfileHandle_DataType»>
<xsd:attribute name=«WrapperReference» use=«optional» default=«FILEINFO»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«FILEINFO»/>
<xsd:enumeration value=«DEVICEINFO»/>
A.4 Электронная информационная таблица EDS
A.4.1 Общие требования к EDS на основе CIP
Данный подраздел устанавливает требования к кодированию электронной информационной таблицы (EDS), которые являются общими для сетей на основе CIP. Указанные требования определяют стандартный формат кодирования файлов, используемых для продуктов CIP, без учета главной платформы средств конфигурирования или файловой системы.
Термин «файл», используемый в данном контексте, относится к любому общепринятому формату файла, связанного с файловой системой средств конфигурирования без учета средств для хранения файлов.
Файл EDS определяется как файл ASCII, который включает представление ASCII объектов в устройстве, которые могут быть оценены из сети [например, Parameter (Параметр) и Assembly (Компоновка)], и дополнительную информацию, необходимую для поддержки адресации объектов.
Один файл должен содержать всю EDS. EDS должна состоять из разделов. Таблица A.6 описывает структуру разделов, которые являются общими для нескольких сетей на основе CIP, соответствующие разрешенные разделители разделов и порядок следования этих разделов в EDS.
| Название раздела | Разрешенный разделитель | Расположение | Обязательно/Дополнительно |
| Описание файла | [File] | 1 | Обязательно |
| Описание устройства | [Device] | 2 | Обязательно |
| Классификация устройства | [Device Classification] | a | Дополнительно |
| Класс параметров | [ParamClass] | a | Дополнительно |
| Параметры | [Params] | a | Дополнительно |
| Группы параметров | [Groups] | a | Дополнительно |
| Компоновка | [Assembly] | a | Дополнительно |
| Характеристики соединений | [Connection Manager] | a | Дополнительно |
| Порт | [Port] | a | Дополнительно |
| Модульный | [Modular] | a | Дополнительно |
| Со стороны продавца | [Vendor ID_vendorspecifickeyword] | Последний | Дополнительно |
| a Эти дополнительные группы должны быть расположены после обязательных групп. | |||
Содержимое электронной информационной таблицы (EDS) должно быть организовано следующим образом:
- все файлы EDS должны содержать раздел Описание файла, который должен быть первым разделом файла EDS и должен использовать разрешенный разделитель [File];
- все файлы EDS должны содержать раздел Описание устройства, который должен сразу же следовать за разделом Описание файла и должен использовать разрешенный разделитель [Device];
- дополнительные разделы, описанные в данной спецификации, могут быть представлены в любом порядке при условии отсутствия в файле EDS ссылки вперед;
- дополнительный раздел (дополнительные разделы), относящийся (относящиеся) к продавцу, должен (должны) использовать разрешенный разделитель (разрешенные разделители) [VendorID_vendorspecifickeyword], установленный (установленные) в A.4.1.2.2.11, и должен (должны) быть расположен (расположены) после всех разделов, установленных в данной спецификации.
A.4.1.2.2 Правила форматирования EDS
Файл EDS должен состоять из разделов, входных данных, полей, комментариев и пробелов. Настоящий подраздел устанавливает правила, которые следует соблюдать при определении EDS.
В файле EDS могут быть использованы пробелы, но они должны игнорироваться всеми интерпретаторами EDS, если они находятся за пределами полей и массивов символов в двойных кавычках.
Интерпретатор EDS должен рассматривать нижеприведенные символы как символы пробелов. Эти символы, считываемые интерпретатором, но не кодированные как символы, читаемые человеком, указывают на наличие в файле пробела:
- знак пробела;
- новая строка;
- возврат каретки;
- перевод строки;
- табуляция, вертикальная и горизонтальная;
- перевод страницы;
- метка конца файла;
- комментарии.
A.4.1.2.2.3 Символы ключевых слов
Все ключевые слова в файле EDS должны состоять из символов ASCII из следующего списка:
- прописные буквы A — Z;
- строчные буквы a — z;
- цифры 0 — 9;
- специальный символ подчеркивания «_»;
- символ пробела.
Пробел следует использовать только в ключевом слове раздела. Пробел должен находиться внутри названия раздела, и использование множества последовательных пробелов запрещается.
Файл EDS должен разделяться на обязательные и дополнительные разделы.
A.4.1.2.2.5 Разделители разделов
Каждый раздел в EDS должен быть надлежащим образом разделен ключевым словом раздела в квадратных скобках (Legal Delimiter). Допустимые разрешенные разделители разделов должны соответствовать разделителям, установленным в таблице A.6.
A.4.1.2.2.6 Ключевые слова разделов
Каждое ключевое слово раздела определяется текстом между началом разделителя ключевого слова раздела «[» и конечным разделителем «]». Символы, используемые в ключевых словах раздела, определены в A.4.1.2.2.3. Имеются два типа ключевых слов раздела, общедоступные ключевые слова и ключевые слова продавца.
A.4.1.2.2.7 Последовательность разделов
Каждый обязательный раздел должен располагаться в требуемом порядке, как установлено в A.4.1.2. Дополнительные разделы могут целиком пропускаться или включаться с пустыми символами — заменителями данных. За исключением раздела (разделов), относящегося (относящихся) к продавцу, дополнительные разделы могут располагаться в любом порядке. Раздел (разделы), относящийся (относящиеся) к продавцу, должен (должны) быть последним (последними) в файле EDS.
Каждый раздел в EDS должен содержать один или несколько вводов, начинающихся с ключевого слова ввода, после которого следует знак равенства. Значение ключевого слова ввода должно быть глобальным в области действия, что позволяет использовать ключевые слова, определенные в одном разделе, также и в другом разделе. Каждый ввод должен оканчиваться точкой с запятой. Ввод может расширяться, включая множество строк, если запятые надлежащим образом разделяют поля.
A.4.1.2.2.9 Ключевые слова ввода
Ключевое слово ввода должно состоять из однозначно определяемой последовательности символов ключевого слова, как установлено в A.4.1.2.2.3. Имеются два типа ключевых слов ввода: общедоступные ключевые слова и ключевые слова продавца.
A.4.1.2.2.10 Общедоступное ключевое слово
Общедоступное ключевое слово должно всегда определяться в спецификации CIP ответственными ассоциациями продавцов. Общедоступное ключевое слово никогда не должно начинаться с цифры.
A.4.1.2.2.11 Ключевые слова продавца
Ключевые слова могут быть ключевыми словами, относящимися к продавцу. Эти ключевые слова должны начинаться с идентификатора компании продавца с добавлением после него символа подчеркивания (VendorID_VendorSpecificKeyword). VendorID (идентификатор продавца) должен воспроизводиться в десятичной системе счисления и не должен содержать в начале нулей. Каждый продавец несет ответственность за сохранение и документирование своих ключевых слов.
Каждый ввод должен содержать одно или несколько полей. Разделители в виде запятой должны разделять все поля. Значение поля (полей) должно зависеть от контекста раздела. Поля ввода являются либо обязательными, либо дополнительными, как установлено в этой спецификации. Пробелы и пустоты между запятыми должны быть использованы для непредставленных дополнительных полей. Точка с запятой может быть использована для указания отсутствия замыкающих дополнительных полей. Термин «номер поля» должен указывать положение поля ввода. Поля следует нумеровать слева направо (или сверху вниз), начиная с номера 1.
A.4.1.2.2.13 Ключевые слова полей
Ключевое слово полей должно состоять из однозначно определенной последовательности символов ключевого поля, как установлено в A.4.1.2.2.3. Имеются два типа ключевых слов полей: общедоступные ключевые слова и ключевые слова продавца.
A.4.1.2.2.14 Составные поля данных
Некоторые поля ввода следует устанавливать с использованием данных, которые не могут быть определены одним значением между разделителями в виде запятой. Возможность дополнительного разделения всего поля определяют путем использования одного или нескольких наборов символов в виде парных фигурных скобок «{» и «}». Содержимое между этими символами следует рассматривать как один элемент или ввод. Содержимое может быть сгруппировано в множестве фигурных скобок.
Комментарии должны разделяться символом в виде знака доллара ($) и символом новой строки. Интерпретатор EDS должен рассматривать все символы между разделителями комментариев как пробелы. Разделитель комментария $, обнаруживаемый внутри поля или набора символов в виде двойных кавычек, не должен рассматриваться как разделитель комментариев.
Пример — Ниже приводятся примеры некоторых комментариев:
| $ This is a valid comment line | |
|---|---|
| 1, 2, 3; | $ This is a valid comment |
| $ Comments cannot span |
|
| more than one line |
<= This is an error — no $ |
A.4.1.2.2.16 Пример структуры форматирования EDS
Примеры на рисунке A.1 показывают структуру электронной информационной таблицы.
Рисунок A.1 — Пример структуры форматирования EDS (информативный)
A.4.1.2.3 Требования к имени файла
Соглашения по присвоению имени файлам не принимаются для дисковых файлов EDS, за исключением файлов в среде DOS/Windows: эти файлы должны иметь суффикс «.EDS», приписываемый к имени файла.
A.4.1.3 Требования к кодированию данных EDS
В настоящем подразделе установлены требования к кодированию данных для файла EDS.
Информация, содержащаяся в файле EDS, может представлять конфигурируемые атрибуты экземпляров объектов в приборе. Все данные в файле EDS должны быть текстом, состоящим из набора символов ASCII, тогда как атрибуты класса объектов и экземпляров не нуждаются в использовании ASCII (доступные типы данных определяются в спецификации CIP). Поэтому может потребоваться преобразование (трансляция) между данными, содержащимися в файле EDS, и атрибутами объекта; эта трансляция устанавливается в последующих подразделах.
Элементарные типы данных, установленные в спецификации CIP, также используются для других элементов EDS, однако значение изменяется, как описано в последующих подразделах (см. A.4.1.3.3 - A.4.1.3.10).
Некоторые типы данных используются только в файлах EDS (см. A.4.1.3.11 - A.4.1.3.14).
A.4.1.3.2 Соглашение по файлу символов ASCII
Все данные в EDS должны кодироваться с использованием 8-битных символов ASCII, где все ссылки на символы ASCII означают 8-битный формат символов ASCII (как установлено в таблицах 1 и 2, строка 00 ИСО/МЭК 10646-1). Символы, которые не могут быть воспроизведены на терминале ANSI, не должны использоваться в именах идентификатора или в представлениях данных. Правильные значения символов ASCII должны включать в себя новую строку, табуляцию и значения от 32 до 126 в десятичной системе счисления.
A.4.1.3.3 Соглашение по строке символов — EDS_Char_Array
Все строковые данные в файле EDS должны быть строками символов фиксированной длины без символа конца строки и должны заключаться в двойные кавычки (EDS_Char_Array data type).
Существуют две формы преобразований строковых данных. Символы, заключенные между двойными кавычками, должны быть преобразованы в 8-битные символы ASCII. Символы, заключенные между двойными кавычками, которым предшествует заглавная буква L, должны быть преобразованы в 16-битные символы стандарта UNICODE (юникод).
Пример 1 — «Это результат в строке, состоящей из 8-битных символов».
Пример 2 — L «Строка символов UNICODE, включающая греческий символ Pi\u03C0».
Примечание — Текст \u03C0 определяет одиночный 16-битный символ со значением 03C0. В наборе символов UNICODE это соответствует таблице 9, строка 3, Basic Greek — символ нижнего регистра. Описания управляющей последовательности символов даны в A.4.1.3.3.5.
A.4.1.3.3.2 Действия в случае недостаточного количества символов в поле строки
Интерпретатор EDS должен использовать выравнивание символов в поле по правому знаку и заполнить неустановленные символы пробелами в начале строки текста (ASCII 0x20) для остающейся длины строки.
Пример — Если параметр имеет максимальную длину строки 8 и вмещает строку «123AB», строка интерпретируется как «~~~123AB», где символы тильда (~) представляют пробелы.
A.4.1.3.3.3 Действия в случае избыточного количества символов в поле строки
Если заданное поле строки содержит слишком много символов, интерпретатор EDS должен отсечь символы слева направо.
Пример — Если параметр имеет максимальную длину строки 8 и вмещает строку «I23ABCDEFG», строка отсекается и интерпретируется как «I23ABCDE».
A.4.1.3.3.4 Конкатенация строки
Множество строк без промежуточных запятых должно подвергаться конкатенации.
| Строка: | «ABC» «123» «XYZ» |
|---|---|
| Интерпретируется как: | «ABC123XYZ» |
Строки также могут находиться на отдельных строках текста.
| «ABC» | $ Это комментарий |
|---|---|
| «123» | |
| «XYZ» |
также интерпретируются как: «ABC123XYZ»
Для строки UNICODE (длинная строка) только первым двойным кавычкам должна предшествовать заглавная буква L.
Пример 3 — L «ABC» «123» «XYZ» — то же самое, что и L «ABC123XYZ».
A.4.1.3.3.5 Управляющие последовательности строк
Интерпретатор EDS должен опознавать все управляющие последовательности, перечисленные в таблице A.7. Интерпретация зависит от приложения.
Управляющие последовательности строк
Если встречаются с последовательностью, не указанной выше, интерпретирующее устройство должно отвергнуть целую строку и указать ошибку. Файлы EDS должны содержать только управляющие последовательности, установленные в таблице A.7.
A.4.1.3.4 Соглашение по строкам ASCII (STRING, SHORT_STRING, STRING2)
Все типы строковых данных (STRING, SHORT_STRING, STRING2), используемые в атрибутах объектов, должны преобразовываться в файл EDS EDS_Char_Array.
Тип данных Международной строки (STRINGI) CIP кодируется в файле EDS как представление сложного типа данных. Все содержимое ввода STRINGI должно заключаться в пару фигурных скобок. После числа языковых элементов, установленных как USINT, должны следовать определения языковых элементов, причем каждый такой элемент заключается в пару фигурных скобок и разделяется запятой. Каждый языковой элемент ввода STRINGI должен определяться в виде четырех полей. Первое поле (выбор языка) должно представлять собой точно три символьные строки фиксированной длины, заключенные в двойные кавычки, — код языка, установленный в ИСО 639-2/Т. Тип строковых данных должен быть представлен с использованием кода типа данных, как установлено в спецификации CIP для STRING, STRING2, STRINGN или SHORT_STRING. Выбор набора символов должен быть представлен как UINT, как установлено в Кодах принтера IANA MIB (RFC 1759). Часть содержимого строки языкового элемента должна быть представлена как строка или длинная строка.
Пример — Ниже представлен ввод STRINGI на трех языках:
Тип данных CIP (EPATH), используемый, в частности, для определения строк маршрута CIP, должен кодироваться в файлах EDS с использованием базового формата, установленного в настоящем стандарте для файла EDS_Char_Array. Кроме того, содержимое строки для маршрута CIP или других данных EPATH должно состоять из групп двух соседних шестнадцатеричных символов, разделенных пробелами. Могут быть использованы как верхний регистр, так и нижний регистр.
Пример 2 — «20 05 24 02 30 04»
A.4.1.3.7 Соглашение по целым числам без знака ASCII (USINT, UINT, UDINT, ULINT)
Типы целочисленных данных без знака представляют положительные целочисленные значения. Целочисленные данные без знака следует вводить либо в десятичной системе счисления, либо в шестнадцатеричной системе счисления без пробелов или запятых между символами. Если для представления целочисленных символов без знака используют шестнадцатеричную систему счисления, последовательность двух символов 0x без пробела должна предшествовать целочисленным символам без знака.
В десятичной системе счисления не следует использовать впередиидущие нули, но они могут быть использованы в шестнадцатеричной системе счисления. В шестнадцатеричной системе счисления могут быть использованы как верхний регистр, так и нижний регистр, а общее число символов для типа ULINT должно ограничиваться числом 10 (0x плюс еще 8) или 18 (0x плюс еще 16).
Пример — Десятичное значение UINT 254 может быть представлено как 254 (в десятичной системе счисления) или как 0xFE (в шестнадцатеричной системе счисления), а 0254 (десятичная система счисления) и 0x0000000FE (шестнадцатеричная система счисления) являются недопустимыми.
A.4.1.3.8 Соглашение по целым числам со знаком ASCII (SINT, INT, DINT, LINT)
Типы данных SINT, INT, DINT и LINT представляют значения целочисленных данных со знаком. Целочисленные данные со знаком следует вводить либо в десятичной системе счисления, либо в шестнадцатеричной системе счисления с пробелами или запятыми между символами. Если для представления целочисленных символов со знаком используют шестнадцатеричную систему счисления, последовательность двух символов 0x без пробела должна предшествовать целочисленной последовательности символов.
В десятичной системе счисления не следует использовать впередиидущие нули, но они могут быть использованы в шестнадцатеричной системе счисления. В шестнадцатеричной системе счисления могут быть использованы как верхний регистр, так и нижний регистр, а общее число символов для типа LINT должно ограничиваться числом 10 (0x плюс еще 8) или 18 (0x плюс еще 16).
Пример — Десятичное значение INT 254 может быть представлено как 254 (в десятичной системе счисления) или как -0xFE (в шестнадцатеричной системе счисления) или как 0x000000FE (в шестнадцатеричной системе счисления), а 0254 (десятичная система счисления) и 0x0000000FE (шестнадцатеричная система счисления) являются недопустимыми.
A.4.1.3.9 Соглашение по словам ASCII (BYTE, WORD, DWORD, LWORD)
Типы данных BYTE, WORD, DWORD и LWORD представляют значения с побитовой адресацией. Эти значения считают дискретными значениями позиции двоичного разряда, и они не предназначены для представления целочисленных значений со знаком или без знака. Однако для удобства эти значения должны быть введены в десятичной, шестнадцатеричной или двоичной системе счисления без пробелов или запятых между символами. Если для представления целочисленных символов используют шестнадцатеричную (соответственно двоичную) систему счисления, последовательность двух символов 0x (соответственно 0b) без пробела должна предшествовать символам значений.
В десятичной системе счисления не следует использовать впередиидущие нули, но они могут быть использованы в шестнадцатеричной и двоичной системах счисления. В шестнадцатеричной системе счисления могут быть использованы как верхний регистр, так и нижний регистр, а общее число символов для типа LWORD должно ограничиваться числом 10 (0x плюс еще 8) или 18 (0x плюс еще 16).
Пример — Десятичное значение WORD 254 может быть представлено как 254 (в десятичной системе счисления) или как 0xFE (в шестнадцатеричной системе счисления), или как 0x000000FE (в шестнадцатеричной системе счисления), а 0254 (в десятичной системе счисления) и 0x0000000FE (в шестнадцатеричной системе счисления) являются недопустимыми.
A.4.1.3.10 Соглашение по плавающей точке ASCII (REAL, LREAL)
Типы данных REAL и LREAL представляют двоичные значения с плавающей точкой. Внутреннее представление форматов этих данных описано в IEEE 754. В этом же стандарте описаны как численные значения, так и последовательности битов, которые интерпретируются как символьные значения NaN («не число»), а также как плюс и минус бесконечности. Значения с плавающей точкой могут быть введены либо как целые значения, значения, основанные на десятичном представлении плавающей точки, либо как значения, вводимые в «экспоненциальном» представлении. Целые значения являются теми же, что и значения, приведенные для типов данных INT, DINT или LINT. Эти значения не могут быть использованы для представления дробных значений. Десятичные значения с плавающей точкой являются значениями, которые имеют как целую часть, так и дробную компоненту. Целое значение и дробные компоненты разделяются десятичной точкой «.» или символом периода. Форма значений в «экспоненциальном» представлении является такой же, как и представление дробных значений с добавлением экспоненциальной компоненты (показателя степени). Этот показатель степени всегда является целым числом со знаком до 10, в которое возводится значение основания системы счисления.
Примечание — Максимальная точность значений с плавающей точкой определяется возможностями внутреннего двоичного формата, т.е. числом двоичных разрядов, доступных для кодирования мантиссы. Поэтому использование большого числа десятичных разрядов в десятичной системе счисления (мантисса в экспоненциальном представлении) для значений с плавающей точкой является более удобным представлением. EDS определяет произвольные пределы для числа десятичных разрядов.
Диапазон разрешенных данных REAL (32-битный формат IEEE с ординарной точностью) устанавливают по формуле
значение = (-1)s·(2)e-127·(m),
где s — значение знакового бита;
e — 8-битный показатель степени. Допустимые значения этого показателя лежат в диапазоне от -126 до +127;
m — нормализованная 24-битная мантисса (23 бита внутренней памяти плюс один скрытый бит). Допустимые значения мантиссы лежат в диапазоне между 0 и 16777215.
Комбинирование e и m позволяет установить диапазон приближенных абсолютных значений 0 — 3,4028e38.
EDS использует для данных REAL следующие представления значений с плавающей точкой:
| - представление в виде целых чисел (фиксированных): | от -16777215 до 1677725; |
|---|---|
| - десятичная система счисления (с плавающей точкой): | 0.0 — +/- 9999999999999999, |
где общее число разрядов не должно превышать 16 (помимо символа десятичной точки и символа знака). Оба этих символа могут быть опущены (знак + подразумевается, если символ знака опущен).
«Экспоненциальное» представление: 0.0 — +/- nn.nnnnnnnnnE +/- xxxx,
где общее число разрядов в мантиссе не должно превышать 11 (помимо символа десятичной точки и символа знака), а число разрядов в показателе степени не должно превышать 4 (помимо символа «E» и символа знака). Десятичная точка может располагаться в мантиссе где угодно. Как символ десятичной точки, так и символ знака в мантиссе могут быть опущены (знак «+» подразумевается, если символ знака опущен).
Диапазон разрешенных данных LREAL (64-битный формат IEEE с двойной точностью) определяют по формуле
значение = (-1)s·(2)e — 1023·(m),
где s — значение знакового бита;
e — 11-битный показатель степени. Допустимые значения этого показателя лежат в диапазоне от -1022 до +1023;
m — нормализованная 53-битная мантисса (52 бита внутренней памяти плюс один скрытый бит). Допустимые значения мантиссы лежат в диапазоне между 0 и 9007199254740991.
Комбинирование e и m позволяет установить диапазон приближенных абсолютных значений 0 — 1,7976e308.
EDS использует для данных LREAL следующие представления значений с плавающей точкой:
- представление в виде целых чисел (фиксированных):
- от 9007199254740991 до + 9007199254740991;
- десятичная система счисления (с плавающей точкой):
где общее число разрядов не должно превышать 16 (помимо символа десятичной точки и символа знака). Оба этих символа могут быть опущены (знак «+» подразумевается, если символ знака опущен).
«Экспоненциальное» представление:
0.0 — +/- nnnn.nnnnnnnnnnnnE +/- xxxx,
где общее число разрядов в мантиссе не должно превышать 16 (помимо символа десятичной точки и символа знака), а число разрядов в показателе степени не должно превышать 4 (помимо символа «E и символа знака). Десятичная точка может располагаться в мантиссе где угодно. Как символ десятичной точки, так и символ знака в мантиссе могут быть опущены (знак „+“ подразумевается, если символ знака опущен).»
В дополнение к вводимым значениям, указанным выше, представление плавающей точки учитывает два стиля вводов и два типа бесконечностей. Существуют два типа Nan («не число»), а именно сигнализация Nan и «тихое» NaN (Quiet NaN). Кроме того, формат устанавливает представления значений плюс и минус бесконечностей. В этих случаях резервируются следующие специальные слова, которые должны использоваться для представления ввода ассоциированного символа плавающей точки:
| - «тихое» не число | QUIET-NAN; |
|---|---|
| - сигнализация не числа | SIGNAL-NAN; |
| - бесконечность плюс | INFINITY (или +INFINITY); |
| - бесконечность минус | -INFINITY. |
Тип данных EDS_Date должен иметь формат mm-dd-yyyy, где mm — месяц, dd — день, yyyy — год. Правильные значения месяца, дня и года mm-dd-yyyy должны быть следующими:
| mm - | 01 — 12; |
|---|---|
| dd - | 01 — 31 (в зависимости от месяца и года); |
| yyyy - | 1996 — 9999. |
Представление года двумя символами может быть использовано в случае, если тип данных EDS_Date имеет формат mm-dd-yy, где mm — месяц, dd — день месяца, а yy — год. В этом случае две первые цифры года имеют предполагаемое значение 19, так что yy = 96 должно означать год 1996. Правильные значения месяца, дня и года параметров mm-dd-yy должны быть следующими:
| m m - | 01 — 12; |
|---|---|
| dd - | 01 — 31 (в зависимости от месяца и года); |
| yy - | 98 — 99 (подразумеваются две первые цифры 19). |
Примечание — Представление года двумя цифрами не рекомендуется.
Тип данных EDS_Time_Of_Day должен иметь формат hh.mm.ss, где hh — часы, mm — минуты и ss — секунды. Правильные значения часов, минут и секунд должны быть следующими:
| hh - | 00 — 23; |
|---|---|
| mm - | 00 — 59; |
| ss - | 00 — 59. |
Тип данных EDS_Revision должен иметь формат Major_Revision.Minor_Revision с правильными значениями:
| Major_Revision | 0 — 9; |
|---|---|
| Minor_Revision | 0 — 9. |
Значение EDS_Revision 0.0 следует рассматривать как ошибочное.
Пример — EDS_Revision 1.4 соответствует старшей версии 1 и младшей версии 4.
Все ссылки на EDS_URL в требованиях к EDS предназначены для получения формализованной информации, необходимой для определения местоположения ресурсов и доступа к ним через Интернет. EDS_URL должен кодироваться в файлах EDS с использованием базового формата, установленного в ИСО 15745-2 для EDS_Char_Array. Кроме того, содержимое строки для EDS_URL должно иметь формат, установленный Сетевой рабочей группой RFC 1738 «Универсальный указатель ресурсов (URL)» Интернета. Что касается спецификаций в файле EDS, EDS_URL должен ограничиваться любой из следующих форм:
A.4.1.4 Основные требования к файлу EDS
В данном подразделе описаны основные разделы EDS, являющиеся общими для нескольких сетей на основе CIP, и установлены соответствующие требования к применению. В таблице A.8 указано местоположение подразделов определений этих разделов.
| Разделы EDS | Определено в |
|---|---|
| Раздел описания файла | A.4.1.4.2 |
| Раздел описания устройства | A.4.1.4.3 |
| Раздел классификации устройства | A.4.1.4.4 |
| Раздел классов параметров | A.4.1.4.5 |
| Раздел параметров | A.4.1.4.6 |
| Раздел групп параметров | A.4.1.4.7 |
| Раздел компоновки | A.4.1.4.8 |
| Раздел управления соединениями | A.4.1.4.9 |
| Раздел портов | A.4.1.4.10 |
| Раздел модулей | A.4.1.5.2 |
A.4.1.4.2 Раздел описания файла
Раздел описания файла должен содержать административную информацию о файле EDS. Средства конфигурирования должны считывать эту информацию, форматировать и воспроизводить ее пользователю. Пользователь также может иметь доступ к этому разделу с помощью программы просмотра текстового файла и воспроизводить неформатированную информацию. Раздел не требует внесения в него изменений, если только пользователь вручную не внес изменения в файл. Раздел описания файла должен содержать вводы, приведенные в таблице A.9.
Вводимые в раздел описания файла данные должны предоставлять информацию, как показано в таблице A.10.
Вводимые (входные) данные описания файла
На рисунке A.2 приведен пример, представляющий типичный раздел [File].
Рисунок A.2 — Пример раздела [File] (информативный)
A.4.1.4.3 Раздел описания устройств
Раздел описания устройств должен содержать информацию изготовителя по устройствам, включая те же значения, что и в объекте Идентичность устройств. Раздел описания устройств должен содержать входные данные, установленные в таблице A.11.
| Входные данные | Ключевое слово | Номер поля | Тип данных | Обязательно/Дополнительно |
| Идентификатор продавца a, b | VendCode | 1 | UINT | Обязательно |
| Название продавца | VendorName | 1 | EDS_Char_Array | Обязательно |
| Тип устройства a, b | ProdType | 1 | UINT | Обязательно |
| Строка типа устройства | ProdTypeStr | 1 | EDS_Char_Array | Обязательно |
| Код продукта a, b | ProdCode | 1 | UINT | Обязательно |
| Старшая версия a, b | MajRev | 1 | USINT | Обязательно |
| Младшая версия a | MinRev | 1 | USINT | Обязательно |
| Название продукта c | ProdName | 1 | EDS_Char_Array | Обязательно |
| Номер каталога | Catalog | 1 | EDS_Char_Array | Дополнительно |
| Исключить из соединения с использованием адаптерного блока | Исключить FromAdapterRackConnection | 1 | EDS_Char_Array | Дополнительно |
| Имя файла, содержащего изображение иконки | Icon | 1 | EDS_Char_Array | Дополнительно |
| a Эти вводимые данные представляют атрибут объекта Идентичность. b Эти вводимые данные используют для согласования EDS с конкретным продуктом/версией. c Эти вводимые данные представляют атрибут объекта Идентичность, хотя тип данных может слегка отличаться. | ||||
Название входных данных поля описания устройства устанавливает номер строки ввода.
Средства конфигурирования должны использовать требуемые входные данные в разделе описания устройств для согласования EDS с конфигурируемым устройством. Входные данные должны предоставлять информацию, установленную в таблице A.12.
Входные данные для описания устройств
На рисунке A.3 приводится пример, представляющий типичный раздел устройств [Device].
Рисунок A.3 — Пример раздела устройств (информативный)
A.4.1.4.4 Раздел классификации устройств
Раздел классификации устройств должен классифицировать устройство, описываемое EDS, как принадлежащее одному или нескольким категориям устройств. Ключевое слово ввода для всех классификаций должно состоять из набора символов «Class», объединенных с десятичным числом. Числа должны начинаться с 1 для первого класса и должны увеличиваться для каждого дополнительного класса.
Число полей для каждого ввода классификации должно быть переменным, что позволяет построить древовидную структуру классификации, аналогичную структуре директории систем. Подклассификация общедоступных классификаций должна резервироваться. Классификация со стороны продавца может быть подклассифицирована по усмотрению продавца. Первое поле должно представлять наивысший уровень в древовидной структуре и должно включать в себя одно из следующих ключевых слов:
Ключевое слово со стороны продавца должно начинаться с идентификатора компании продавца, после чего следует символ подчеркивания (VendorID_VendorSpecificField). VendorID должен воспроизводиться в десятичной системе счисления и не должен содержать впередиидущих нулей. Каждый продавец со своей стороны несет ответственность за поддержание и документирование ключевого слова поля.
A.4.1.4.5 Раздел классов параметров
Раздел классов параметров должен идентифицировать общие атрибуты параметров конфигурации, описываемые EDS, которые соответствуют поднабору атрибутов класса Parameter Object и установлены в Библиотеке Объектов CIP.
Раздел классов параметров должен содержать вводимые данные, установленные в таблице A.13.
Вводимые в раздел классов параметров данные должны предоставлять информацию, как показано в таблице A.14.
Вводимые данные (вводы) классов параметров
Ввод дескриптора классов параметров должен содержать биты, которые описывают характеристики параметров, как установлено в таблице A.15. Биты, не установленные в таблице A.15, не должны использоваться и им должны быть присвоены нулевые значения (0).
Значения битов дескриптора классов параметров
Рисунок A.4 является примером, показывающим типичный раздел класса параметров.
| [ParamClass] MaxInst = 3; Descriptor = 0x0E; CfgAssembly = 3; |
|---|
Рисунок A.4 — Пример раздела класса параметров [ParamClass] (информативный)
Раздел параметров должен идентифицировать параметры конфигурации в устройстве. Ключевое слово ввода должно быть одним из следующих наборов символов: «Param», «ProxyParam», «ProxiedParam», объединенным с числом (десятичным) экземпляров параметров для устройства, например «Param1». Фактический экземпляр объекта параметров может быть (но необязательно) реализован в устройстве. Наоборот, не требуется, чтобы все экземпляры объекта параметров имели соответствующий ввод «ParamN» в EDS. Однако если экземпляр объекта параметров существует в узле и если этот параметр также описывается в EDS, тогда значение «N» в «ParamN» должно соответствовать экземпляру объекта параметра.
Каждый ввод должен содержать форматированные поля, представленные в таблице A.16. Ключевые слова «ProxyParam» и «ProxiedParam» определяются далее в A.4.1.5.3.1 как часть требований EDS к модулям.
| Имя поля | Номер поля | Тип данных | Обязательно/Дополнительно |
| Зарезервированное | 1 | USINT | Обязательно |
| Размер маршрута связи | 2 | USINT | Дополнительно |
| Маршрут связи | 3 | EPATH | Дополнительно |
| Дескриптор | 4 | WORD | Обязательно |
| Тип данных | 5 | USINT/EPATH | Обязательно |
| Размер данных | 6 | USINT | Обязательно |
| Название параметра | 7 | EDS_Char_Array | Обязательно |
| Строка единиц измерения | 8 | EDS_Char_Array | Обязательно |
| Строка справки | 9 | EDS_Char_Array | Обязательно |
| Минимальное значение | 10 | data type | Дополнительно |
| Максимальное значение | 11 | data type | Дополнительно |
| Значение по умолчанию | 12 | data type | Обязательно |
| Масштабный множитель | 13 | UINT | Дополнительно |
| Масштабный делитель | 14 | UINT | Дополнительно |
| Масштабное основание | 15 | UINT | Дополнительно |
| Масштабное смещение | 16 | INT | Дополнительно |
| Связь множителя | 17 | UINT | Дополнительно |
| Связь делителя | 18 | UINT | Дополнительно |
| Связь основания | 19 | UINT | Дополнительно |
| Связь смещения | 20 | UINT | Дополнительно |
| Десятичная точность | 21 | USINT | Дополнительно |
| Международное название параметров | 22 | STRINGI | Дополнительно |
| Международные технические единицы | 23 | STRINGI | Дополнительно |
| Международная строка справки | 24 | STRINGI | Дополнительно |
| a Эти позиции будут определены в таблице A.20. | |||
Вводимые данные раздела параметров должны содержать информацию, установленную в таблицах A.17 и A.21.
Поля параметров, перечисленные в таблице A.17, являются общими для всех параметров.
| Поля | Описание |
|---|---|
| Зарезервированное | Данное первое поле должно содержать нуль |
| Размер маршрута связи | Число байтов, используемых для представления маршрута. Если размер канала связи не согласуется с числом байтов в поле «Маршрут связи», тогда «Размер канала связи» должен быть проигнорирован. Если этот параметр не адресуется из канала связи, то данное поле должно быть пустым. Если это поле является пустым, а поле «Маршрут связи» непустым, «Размер канала связи» должен быть равен числу байтов в поле «Маршрут связи» |
| Маршрут связи | Маршрут CIP к атрибуту объекта, где было найдено значение параметра. Маршрут должен быть введен как набор символов, используя нотацию маршрута, описанную в МЭК 62026-3:2000, и формат, установленный в A.4.1.3.6. Если параметр, описываемый этим вводом ParamN, не непосредственно адресуется из сети, то данное поле должно быть пустым. Если это поле содержит пустую строку, «», параметр, описываемый этим вводом ParamN, должен быть адресован как атрибут данных (атрибут экземпляра 1) N-го экземпляра объекта параметров (т.е. используя маршрут «20 0F 24 № 30 01») |
| Дескриптор | Дескриптор параметров. Содержит флаги битов, описывающих поведение отдельных параметров (см. таблицу A.18) |
| Тип данных | Идентификатор типов данных, как определено в МЭК 62026-3:2000 (Спецификация и Кодирование типов данных). Данный идентификатор должен кодироваться либо как USINT, либо как EPATH. Примечание — Старые версии файлов EDS могут использовать идентификаторы типов данных USINT, как установлено в таблице A.19, но эти версии в настоящее время устарели. Они представлены здесь по причинам совместимости |
| Размер (объем) данных | Значение размеров числовых данных. Для типов данных строки и EPATH это поле устанавливает число байтов в расчете на символ или ввод. Следовательно, для типов данных STRING и EPATH это значение должно быть равно 1. Для типа данных STRING2 оно должно равняться 2. Для типа данных STRINGN рассматриваемое значение должно быть установлено, как равное N |
| Название параметра | Текстовое название параметра. В случае необходимости для согласования с максимально допустимой длиной набора символов найденный текст должен быть усечен |
| Строка единиц измерения | Набор символов единиц измерения на текстовом дисплее. В случае необходимости для согласования с максимально допустимой длиной набора символов найденный текст должен быть усечен |
| Строка справки | Набор символов текстовой справки. В случае необходимости для согласования с максимально допустимой длиной набора символов найденный текст должен быть усечен |
| Минимальное значение | Что касается смысла и требований, основанных на типе данных параметров, см. таблицу A.20 |
| Максимальное значение | Что касается смысла и требований, основанных на типе данных параметров, см. таблицу A.20 |
| Значение по умолчанию | Числовое значение по умолчанию, присваемое значению данных параметров |
| Международное название параметров | Название параметра, представляемое в нотации STRINGI |
| Название международных технических единиц | Технические единицы измерения, представляемые в нотации STRINGI |
| Международная строка справки | Строка справки, представляемая в нотации STRINGI |
Биты поля дескриптора должны быть такими, как установлено в таблице A.18
Определения битов поля дескриптора
Старые версии файлов EDS могут использовать идентификаторы типов данных, как установлено в таблице A.19.
Идентификаторы типов данных (устаревшие)
Таблица A.20 определяет смысл и конкретные требования, касающиеся вводов минимальных и максимальных значений, основанных на типе данных параметров.
Семантика для вводов минимальных и максимальных значений
| Тип данных | Описание и семантика | Семантика минимальных значений | Семантика максимальных значений | Обязательно/Дополнительно/Недопустимо |
| BYTE | Битовая строка — длина 8 бит | Минимальное и максимальное значения для этих типов данных не определены и не должны устанавливаться в файле EDS | Недопустимо | |
| WORD | Битовая строка — длина 16 бит | |||
| DWORD | Битовая строка — длина 32 бита | |||
| LWORD | Битовая строка — длина 64 бита | |||
| STRING a | Строка (индикатор длиной 2 байта, 1 байт в расчете на символ) | Минимальная длина строки | Максимальная длина строки | Обязательно |
| STRING2 a | Строка (индикатор длиной 2 байта, 2 байта в расчете на символ) | Минимальная длина строки | Максимальная длина строки | Обязательно |
| STRINGN a | Строка (индикатор длиной 2 байта, № байтов в расчете на символ) | Минимальная длина строки | Максимальная длина строки | Обязательно |
| SHORT_STRING a | Строка символов (индикатор длиной 1 байт, 1-байтные символы) | Минимальная длина строки | Максимальная длина строки | Обязательно |
| EPATH a | Нумерованный маршрут | Минимальная длина строки | Максимальная длина строки | Дополнительно |
| Все другие типы данных | Минимальное числовое значение, которое может быть присвоено значению данных | Максимальное числовое значение, которое может быть присвоено значению данных | Дополнительно b | |
| a Типы данных STRING, STRING2, STRINGN, SHORT_STRING и EPATH не имеют спецификации по минимальному или максимальному значению. Поля минимального и максимального значений используются для представления длин минимальной и максимальной строки или минимального и максимального маршрута. В этих случаях параметр Размер данных используется для представления числа байтов, необходимых в расчете на символ или кодируемую единицу. b Если Минимальное значение и/или Максимальное значение не установлены, тогда минимальное и/или максимальное значения для параметра данных определяются в соответствии с МЭК 62026-3:2000, основываясь на типе данных параметра. | ||||
Поля параметров, перечисленные в таблице A.21, являются дополнительными и значимыми только в случае, если используются со следующими типами данных: SINT, INT, DINT, LINT, USINT, UINT, UDINT, ULINT, REAL и LREAL. Спецификация этих полей с любым другим типом данных запрещается.
Поля параметров, зарезервированные для типов числовых данных
Масштабирование не должно выполняться устройством, содержащим параметр, но должно выполняться средствами воспроизведения. Если масштабирование поддерживается, средство масштабирования должно использовать формулу, приведенную на рисунке A.5, позволяющую определить техническое значение параметра (т.е. воспроизводимое значение) из фактического значения параметра. Если масштабирование не поддерживается, тогда значение параметра должно воспроизводиться как оно есть.
EngValue = \frac{(ActualValue + Offset) \cdot Mult \cdot Base}{Div \cdot 10^{DecimalPrecision}} .
Примечание — Если расширенное масштабирование не поддерживается, то эта формула должна использоваться с DecimalPrecision=0.
Рисунок A.5 — Формула масштабирования параметра
В разделе [Params] может также быть второе ключевое слово. Это ключевое слово должно использоваться для предоставления нумерованного списка выборов параметров, представляемых пользователю. Ключевое слово ввода для всех нумерованных параметров должно состоять из набора символов, «Enum», объединенных с десятичным числом из соответствующего ввода Param. Каждый ввод «Enum» должен состоять из пар целых чисел и строк.
На рисунке A.6 приведен пример типичного раздела Parameter.
A.4.1.4.7 Раздел групп параметров
Раздел групп параметров должен идентифицировать все группы параметров в устройстве. Каждая группа параметров должна содержать список параметров в группе. Ключевое слово ввода для каждой группы должно состоять из комбинации набора символов, «Group», и номера группы параметров (десятичного), например «Group1». Десятичные номера должны начинаться с единицы и увеличиваться на единицу.
Фактический экземпляр объекта группы параметров может быть (но необязательно) реализован в устройстве. Наоборот, не требуется, чтобы все экземпляры объекта группы параметров имели соответствующий ввод «GroupN» в EDS. Однако если экземпляр объекта группы параметров существует в узле и если эта группа параметров также описывается в EDS, тогда значение «N» в «Group N» должно соответствовать экземпляру объекта группы параметров.
Поля в каждом вводе должны содержать название группы, число элементов в группе и номера экземпляров параметров в группе. Раздел группы параметров должен содержать поля, показанные в таблице A.22.
| Имя поля | Номер поля | Тип данных | Обязательно/Дополнительно |
|---|---|---|---|
| Строка названия группы | 1 | EDS_Char_Array | Обязательно |
| Число элементов | 2 | UINT | Обязательно |
| Параметр | 3 до (числа членов + 2) | UINT | Обязательно |
На рисунке A.7 представлен пример, показывающий раздел типичных групп параметров.
| [Groups] Group1 = «Setup», 2, 1, 2; $ group 1 Group2 = «Monitor», 2, 2, 3; $ group 2 Group3 = «Maintenance», 2, 1, 3; $ group 3 |
|---|
Рисунок A.7 — Пример раздела [Groups]
Раздел компоновки описывает структуру блока данных. Часто такой блок представляет собой атрибут данных объекта Компоновка; однако данный раздел EDS может быть использован для описания любой сложной структуры. Описание этого блока данных соответствует описанию механизма, используемого объектом Компоновка для описания списка своих членов.
Ключевое слово ввода «Revision» имеет поле 16-битных целых чисел, которое должно быть версией (атрибут класса 1) объекта Компоновка в приборе. Если этот дополнительный ввод опущен, версия объекта Компоновка должна быть версией 2.
Ключевое слово ввода для всех компоновок должно состоять из одного из следующих наборов символов: «Assem», «ProxyAssem», «ProxiedAssem», объединенных с номером (десятичным) экземпляра объекта Компоновка для прибора, например «Assem1». Если отдельный экземпляр объекта Компоновка адресуется из канала связи, должно быть взаимно однозначное соответствие между номером Assem в файле EDS и номером экземпляра компоновки в устройстве. Ключевые слова «ProxyAssem» and «ProxiedAssem» определены далее в A.4.1.5.3.2 как часть требований EDS к модулям.
Каждый ввод должен содержать форматированные поля, показанные в таблице A.23.
Первое поле «Название» должно быть строкой, дающей имя блоку данных. Это дополнительное поле может быть использовано интерфейсом пользователя.
Второе поле «Маршрут» должно быть строкой, устанавливающей логическую цепь. Этот маршрут должен идентифицировать адрес блока данных в устройстве. Если блок, описываемый этим вводом AssemN, не непосредственно адресуется из канала связи, то это поле должно быть пустым. Если это поле является пустой строкой, блок данных должен адресоваться как атрибут данных (атрибут экземпляра 3) N-го экземпляра объекта Компоновка.
Третье поле «Размер» должно устанавливать размер блока данных в байтах. Если ни это поле, ни поля «Member Size»/«Member Reference» не представлены, размер блока данных должен быть равен 0. Однако оба этих поля могут быть представлены, поскольку они оба устанавливают размер блока, размеры, устанавливаемые обоими способами, должны быть согласованы.
Четвертое поле «Дескриптор» должно быть битовым полем, описывающим некоторые характеристики Компоновки. Биты этого поля должны интерпретироваться, как установлено в таблице A.24.
Поля 5 и 6 должны быть зарезервированы и должны быть пустыми.
Остающиеся поля должны быть спаренными так, чтобы поле «Member Size (Размер элемента)» спаривалось с полем «Member Reference (Элементная Ссылка)», делая полное число полей четным. Число пар полей в таком вводе должно быть переменным. Пары должны соответствовать списку элементов объекта Компоновка.
Разрешенные значения поля «Member Reference» должны быть одним из следующих значений:
- ссылка AssemN или ProxyAssemN из раздела [Assembly];
- строка, представляющая маршрут (EPATH);
- константа UDINT;
- дополнительные значения, установленные для модульной EDS в A.4.1.5.3.2.
Если поле «Member Reference» является пустым, число битов, установленных полем «Member Size», должно использоваться как дополнение в объекте Компоновка. Поле «Member Reference», содержащее пустую строку, следует рассматривать так, как если бы поле было пустым. Поле «Member Reference» и его соответствующее поле «Member Size» не должны быть одновременно пустыми. Если поле «Member Reference» устанавливает EPATH, то этот маршрут должен состоять либо из Логических сегментов (маршрут к объекту в приборе), либо из Сегментов данных.
Поле «Member Size» должно измеряться в битах. Если поле «Member Size» является пустым, должен использоваться установленный размер поля «Member Reference». Установленный размер ввода Param должен быть таким, как определено в его 6-м поле (размер). Установленный размер ввода Assem должен быть таким, как определено в его 3-м поле (размер).
Элементы должны размещаться в первом младшем бите блока данных, так же как и в объекте Компоновка. Если размер поля «Member Size» меньше установленного размера соответствующего поля «Member Reference», должны использоваться младшие биты соответствующего поля «Member Reference». Если размер поля «Member Size» больше установленного размера соответствующего поля «Member Reference», после всего элемента должны следовать дополняющие нули, позволяющие увеличить размер элемента до «Member Size». Размер представленного блока данных должен быть целым числом байтов. Размер всех элементов должен соответствовать размеру поля «AssemN Size» (когда выражается в битах).
На рисунке A.8 представлен пример, показывающий типичный раздел Компоновка. В этом примере длина Assem5 составляет 1 байт, а его значение по умолчанию определяется как 0x21.
Примечание — Ключевое слов Variant, объединенное с десятичным числом (например, «Variant1»), резервируется для определения в дальнейшем новых типов вводов в разделе Компоновка.
Настоящий раздел CIP не используется в файлах EDS DeviceNet, поэтому он не рассмотрен в настоящем стандарте.
В настоящем разделе должны описываться маршрутизируемые порты CIP, имеющиеся в приборе. Каждый маршрутизируемый порт CIP, рассматриваемый в настоящем разделе, должен иметь соответствующий ввод. Ключевое слово ввода для всех портов должно состоять из набора символов «Port», объединенных с десятичным числом, соответствующим экземпляру объекта Порт. Например, Port1 соответствует экземпляру 1 объекта Порт.
Примечание — Маршрутизируемый порт CIP представляет порт обмена сообщениями с другим портом CIP, подключенным к другому каналу связи CIP.
Каждый ввод должен содержать форматированные поля, установленные в таблице A.25.
Первое поле «Название типа порта» (Port Type Name) должно быть одним из следующих ключевых слов:
- DeviceNet;
- Ключевое слово поля продавца, начинающееся с Идентификатора продавца и символа подчеркивания ('65535_').
Дополнительное поле «Название порта» (Port Name) должно быть строкой, устанавливающей название порта, и может быть использовано интерфейсом пользователя. Поле «Объект порта» (Port Object) должно иметь маршрут (EPATH), который идентифицирует объект связи, относящийся к сети, ассоциированный с портом.
Номер порта 1 должен соответствовать «порту» задней панели. Устройства с задней панелью, которые не могут маршрутизировать сообщения CIP, не должны иметь порт номер 1.
На рисунке A.9 представлен пример, показывающий типичный раздел Порт.
Рисунок A.9 — Пример раздела [Port]
A.4.1.5 Требования к файлу EDS модульных устройств
Настоящий подраздел описывает концепцию и содержимое EDS модульных устройств и устанавливает требования к их применению.
A.4.1.5.2 Раздел модульных устройств Modular section
Раздел Modular section должен описывать систему на основе стойки. Должны быть использованы два типа модульных устройств:
A.4.1.5.2.2 Устройство на основе стоек
Раздел Modular section, описывающий стойку, должен содержать установленное ключевое слово «DefineSlotsInRack». Единственное поле этого ввода должно содержать 16-битовое целое число без знака (UINT), устанавливающее число слотов в стойке. Даже если для стойки устанавливается электронный ключ, он необязательно должен адресовываться из канала связи. Ключевое слово SLOT (Слот), используемое в определениях маршрута в разделе Connection Manager, должно находиться в диапазоне от 0 до числа слотов минус 1.
Ключевое слово «SlotDisplayRule» является дополнительным. Единственное поле этого ввода должно быть параметром из раздела {Params} (только ParamN), определяющим трансляцию между внутренними и внешними слотами.
На рисунке A.10 представлен пример, показывающий EDS для устройств на основе стойки, включая раздел модулей.
Рисунок A.10 — Раздел [Modular], описывающий стойку
A.4.1.5.2.3 Модульное устройство (основные вводы)
Раздел [Modular], описывающий модуль, должен содержать вводы «Width (Ширина)» и «Rack (стойка)».
Требуемый ввод с ключевым словом «Width» должен иметь единственное поле, которое устанавливает, сколько слотов в стойке используется модулем. Поле должно содержать 16 битное целое число без знака (UINT).
Ключевое слово ввода для всех стоек, в которых может быть размещен модуль, должно состоять из набора символов «Rack», объединенного с десятичным числом. Числа должны начинаться с 1 для первой стойки и должны увеличиваться на 1 для каждой дополнительной стойки. Поля для вводов «Rack» должны быть такими, как показано в таблице A.26.
Поля «Vendor ID», «Product Type», «Product Cod» «Major Revision» и «Minor Revision» должны идентифицировать электронный ключ стойки, в которую может быть вставлен модуль. Зарезервированное поле должно быть пустым. Поля «Legal Slot» должны идентифицировать слоты, в которые может быть вставлен модуль. EDS для модуля должен содержать один ввод «Rack» для каждой стойки, в которой может быть размещен модуль.
Рисунок A.11 представляет пример, показывающий типичный раздел Modular.
| [Modular] Width = 1; | |
| Rack1 = | \$ this module can plug into |
| 65535, 101, 1, 1, 1,,,, | \$ slots 1, 2, 3 and 4 of |
| 1, 2, 3, 4; | \$ this five slot chassis |
Рисунок A.11 — Пример раздела [Modular]
A.4.1.5.2.4 Модульный прибор (дополнительные вводы)
В EDS устанавливаются дополнительные вводы, позволяющие идентифицировать устройство и кодировать его для модулей в системах на основе стойки, которые не поддерживают CIP.
С этой целью модульные устройства обычно разделяют на две категории:
- модули, имеющие подключения канала связи CIP, соответствующий объект Идентичность, адресуемый из канала связи, и размещаемые в слоте 0 (например, коммуникационные адаптеры);
- модули, не имеющие подключения канала связи CIP или адресуемого объекта Идентичность, не могут быть размещены в слоте 0 (например, модули ввода/вывода).
Примечание — CIP предоставляет другие механизмы идентификации устройств и их кодирования для модулей, поддерживающих адресуемый объект Идентичность канала связи CIR.
Вводы для модуля, не имеющего адресуемого объекта Идентичность канала связи
Раздел Modular, описывающий модуль, не имеющий адресуемого объекта Идентичность канала связи, может содержать ключевое слово ввода «ExternalID». Ключевое слово должно иметь единственное поле. Это поле должно быть байтовой строкой, идентифицирующей модуль. Байтовая строка должна кодироваться с использованием того же формата, как и для ERATH.
На рисунке A.12 представлен пример, показывающий типичный раздел [Modular], который описывает модуль без адресуемого объекта Идентичность канала связи.
Рисунок A.12 — Пример раздела Modular (модуль без адресуемого объекта Идентичность канала связи)
Вводы для модуля, имеющего подключение канала связи и размещенного в слоте 0
Раздел Modular, описывающий модуль, имеющий подключение канала связи и размещенный в слоте 0, может содержать любое из следующих ключевых слов ввода или комбинацию этих слов.
Ключевое слово «GenericID» должно иметь единственное поле. Это поле должно быть байтовой строкой, которая должна включаться в сегмент данных для соединения модуля вместо ExternalID, если кодирование модуля не требуется. Эта байтовая строка должна кодироваться с использованием того же формата, который был установлен для EPATH.
Ключевое слово «ExternIDExactMatch» должно иметь единственное поле со значением Yes (Да) или No (Нет). Значение Yes должно указывать, что ExternalID устанавливает одно конкретное устройство. Значение No должно указывать, что ExternalID устанавливает один из наборов совместимых устройств. Если ключевое слово «ExternIDExactMatch» пропущено, по умолчанию ExternalID должно устанавливать одно конкретное устройство.
Ключевое слово «Query (Запрос)» должно иметь четыре поля. Первое слово должно быть маршрутом, идентифицирующим адресуемый атрибут канала связи, который содержит набор внешних идентификаторов, по одному для каждого слота в стойке, за исключением слота 0. Второе поле должно быть сервисом для использования с маршрутом запроса (т.е. 1 — получить все атрибуты или 14 — получить один атрибут). Третье поле должно быть целым числом, определяющим число байтов, используемых для идентификации каждого модуля, и должно находиться в диапазоне 1 — 16. Если двойной модуль слота находится в стойке, внешний идентификатор модуля должен появляться дважды в наборе, возвращенном из запроса. Запрос должен быть адресован только модулю в слоте 0. Четвертое поле ExternalID должно быть возвращаемым, когда имеется пустой слот, кодируемый с использованием того же формата, который был установлен для EPATH.
На рисунке A.13 представлен пример, показывающий типичный раздел [Modular], описывающий модуль с подключением канала связи, размещенный в слоте 0.
с подключением канала связи в слоте 0)
A.4.1.5.3 Добавление модулей в основные разделы EDS
Ключевые слова «ProxyParam» и «ProxiedParam» должны быть использованы для описания параметров, замещаемых адаптерным устройством DeviceNet в другом приборе, который не поддерживает протокол CIP. Примером такого устройства является адаптерный модуль DeviceNet (устройство, замещающее соединение) в многослотной стойке ввода/вывода с аналоговым модулем ввода/вывода (устройство, замещающее соединение).
Ключевое слово «ProxyParam» должно быть в EDS для устройства, выполняющего роль «заместителя».
Ключевое слово «ProxiedParam» должно быть в EDS для устройства, выполняющего роль «заместителя».
Информация в разделе Modular должна быть использована для ассоциации файлов EDS, содержащих ключевые слова «ProxyParam», с файлами EDS, содержащими ключевые слова «ProxiedParam». Эта ассоциация должна существовать, если оба файла EDS устанавливают согласованный ввод для стойки (Rack).
Десятичное число (объединяемое с «ProxyParam» и «ProxiedParam») должно быть использовано для согласования «ProxyParam» с «ProxiedParam». Значения поля согласованной пары «ProxyParam» и «ProxiedParam» должны быть объединены для составления такой же информации по значению поля, которая существует в единственном вводе «Param». Это объединение должно быть выполнено с использованием значения поля из «ProxyParam», если только значение этого поля не определяется ключевым словом «Module». Если значение поля, установленное в «ProxyParam», определяется ключевым словом «Module», должно быть использовано значение поля, установленное в «ProxiedParam». Разрешается устанавливать значения поля для вводов «ProxiedParam», соответствующее значение поля которых в «ProxyParam» не определяется ключевым полем «Module», однако эти значения поля не должны быть использованы, они должны существовать только для документации.
В разделе Param также может существовать другое ключевое слово. Это ключевое слово должно быть использовано для предоставления минимального, максимального значений и значения по умолчанию, добавляемых к минимальному, максимальному значениям и к значению по умолчанию «ProxyParam». Это ключевое слово ввода должно иметь вид «ProxyParamSizeAdder» и должно быть объединено с десятичным числом из соответствующего ввода «ProxyParam». Определение этих полей согласовывается с определениями «Param». Ключевое слово «ProxyParamSizeAdder» предоставляет средства для адаптера на соединении модуля (например, «ProxyConnect»), добавляя данные по адаптеру в данные по модулю и возвращая объединенные данные по соединению.
В разделе [Param] также может существовать другое ключевое слово, соответствующее «ProxyParam», «ProxyEnum». «ProxyEnum» определяется так же, как и «Enum», за исключением того, что оно ассоциируется с «ProxyParam», а не с «Param». В разделе [Param] также может существовать второе ключевое слово, соответствующее «ProxiedParam», «ProxiedEnum». «ProxiedEnum» определяется так же, как и «Enum», за исключением того, что оно ассоциируется с «ProxiedParam», а не с «Param».
Ключевые слова «ProxyAssem» и «ProxiedAssem» должны быть использованы для описания компоновок замещаемым адаптерным устройством CIP в другом устройстве, которое не поддерживает протокол CIP. Примером такого устройства является адаптерный модуль DeviceNet (устройство, замещающее соединение) в многослотной стойке ввода/вывода с аналоговым модулем ввода/вывода (прибор, замещающий соединение).
Ключевое слово «ProxyAssem» должно существовать в EDS для устройства, выполняющего роль «заместителя».
Информация в разделе Modular должна быть использована для ассоциации файлов EDS, содержащих ключевые слова «ProxyAssem», с файлами EDS, содержащими ключевые слова «ProxiedAssem». Эта ассоциация должна существовать, если оба файла EDS устанавливают согласованный ввод для стойки (Rack).
Десятичное число (объединяемое с «ProxyAssem» и «ProxiedAssem») должно быть использовано для согласования «ProxyAssem» с «ProxiedAssem». Значения поля согласованной пары «ProxyAssem» и «ProxiedAssem» должны быть объединены для составления такой же информации по значению поля, которая существует в единственном вводе «Assem». Это объединение должно быть выполнено с использованием значения поля из «ProxyAssem», если только значение этого поля не определяется одним из ключевых слов «Module» или «ModuleMemberList». Если значение поля, установленное в «ProxyAssem», определяется ключевым словом «Module», должно быть использовано значение поля, установленное в «ProxiedAssem». Значение поля «Module» не должно быть использовано для полей «Member Size» или «Member Reference». «ModuleMemberList» должно быть использовано только вместо пары полей «Member Size» и «Member Reference». Если значение поля, установленное в «ProxyAssem», определяется как «ModuleMemberList», должны быть использованы все поля «Member Size» и «Member Reference», установленные в «ProxiedAssem». Разрешается устанавливать значения поля для вводов «ProxiedAssem», соответствующее значение поля которых в «ProxyAssem» не определяется ключевым полем «Module», однако эти значения поля не должны быть использованы, они должны существовать только для документации.
Дополнительные ключевые слова полей
Адаптерное соединение стойки является подключением к стойке адаптерного устройства, содержащего данные из модулей в стойке. Такое соединение также может быть использовано для посылки данных по конфигурации и кодированию для модулей в стойке (например, при установлении соединения).
Следующие ключевые слова являются дополнительными значениями, учитывающими поле «Member Reference» в разделе Компоновка, которое определяет специальное назначение данных, установленных элементом компоновки:
- ExternalID;
- InputSlotMask0 или InputSlotMask1;
- OutputSlotMask0 или OutputSlotMask1;
- ConfigSlotMask0 или ConfigSlotMask1.
Ключевое слово «ExternalID» устанавливает, что этот элемент компоновки должен содержать либо значение «ExternalID» модульного устройства, если кодирование необходимо, либо значение «GenericID», устанавливаемое в EDS адаптера, если кодирование модуля не требуется.
Ключевое слово «ExternalID», объединенное с десятичным числом (например, ExternalID2), должно быть использовано для кодирования отдельного устройства для адаптерных соединений стойки. Десятичное (положительное) число № в «ExternalIDN» определяет слот № в стойке. Ключевое слово «ExternalIDN» устанавливает, что данный элемент компоновки должен содержать либо значение «ExternalID» модульного устройства для слота N, если кодирование устройства для этого слота необходимо, либо значение «GenericID», устанавливаемое в EDS адаптера, если кодирование модуля для этого слота не требуется.
Примечание — Кодирование недоступно для слота 0.
Ключевое слово «InputSlotMask0» или «InputSlotMask1» должно указывать местоположение входной щелевой маски в компоновке. Входная щелевая маска является набором битов, которые представляют включение или исключение исполнителя модуля в (из) данные (данных) инициатора в адаптерном соединении стойки. Если используется ключевое слово «InputSlotMask0», то бит 0 в этом наборе представляет слот 0, бит 1 представляет слот 1 и т.д. Если используется ключевое слово «InputSlotMask1», то бит 0 в этом наборе представляет слот 1, бит 1 представляет слот 2 и т.д. Ключевые слова «InputSlotMask0» и «InputSlotMask1» не должны быть использованы одновременно в одной и той же компоновке. Предшествующее поле «Member size» должно быть обязательным.
Ключевое слово «OutputSlotMask0» или «OutputSlotMask1» должно указывать местоположение выходной щелевой маски в компоновке. Выходная щелевая маска является набором битов, которые представляют включение или исключение исполнителя модуля в данные (из данных) инициатора в адаптерном соединении стойки. Если используется ключевое слово «OutputSlotMask0», то бит 0 в этом наборе представляет слот 0, бит 1 представляет слот 1 и т.д. Если используется ключевое слово «OutputSlotMask1», то бит 0 в этом наборе представляет слот 1, бит 1 представляет слот 2 и т.д. Ключевые слова «OutputSlotMask0» и «OutputSlotMask1» не должны быть использованы одновременно в одной и той же компоновке. Предшествующее поле «Member size» должно быть обязательным.
Ключевое слово «ConfigSlotMask0» или «ConfigSlotMask1» должно указывать местоположение щелевой маски конфигурации в компоновке. Щелевая маска конфигурации является набором битов, которые представляют включение или исключение данных по конфигурации модуля в сервис установления адаптерного соединения стойки. Если используется ключевое слово «ConfigSlotMask0», то бит 0 в этом наборе представляет слот 0, бит 1 представляет слот 1 и т.д. Если используется ключевое слово «ConfigSlotMask1», то бит 0 в этом наборе представляет слот 1, бит 1 представляет слот 2 и т.д. Ключевые слова «ConfigSlotMask0» и «ConfigSlotMask1» не должны быть использованы одновременно в одной и той же компоновке. Предшествующее поле «Member size» должно быть обязательным.
A.4.1.5.3.3 Добавления в раздел Управление соединениями
Данный раздел CIP не используется в файлах EDS DeviceNet, поэтому в настоящем стандарте он не рассмотрен.
A.4.1.5.3.4 Примеры расширенного раздела EDS (информативные)
На рисунках A.14 и A.15 представлены примеры, показывающие использование модульных расширений EDS для разделов Параметр и Компоновка.
Рисунок A.14 — Пример вводов ProxyParam и ProxyAssem
| [Params] ProxiedParam1 = ,,,,,, «inputsize»,«»,«»,0,2,2,,,,,,,,,; [Assembly] ProxiedAssem1 = «real time input format»,,,,,; ProxiedAssem2 = «real time status format»,,,,,,16,; |
|---|
Рисунок A.15 — Пример согласованных вводов ProxiedParam и ProxiedAssem
A.4.2 Требования к EDS для DeviceNet
A.4.2.1 Содержание ES для DeviceNet
Настоящий подраздел устанавливает требования к кодированию файлов Электронной Информационной Таблицы (EDS) для сетей на основе DeviceNet.
Таблица A.27 описывает структуру разделов, которые могут быть представлены в DeviceNet EDS, соответствующие разрешенные разграничители разделов и порядок этих разделов в EDS. Некоторые из этих разделов являются общими для нескольких сетей на основе CIP, их конкретное использование для DeviceNet установлено в A.4.2.2, если это необходимо. Другие разделы являются специфическими для DeviceNet и установлены в A.4.2.4.
| Название раздела | Разрешенный разграничитель | Размещение | Обязательно/Дополнительно |
| Описание файлов | [File] | 1 | Обязательно |
| Описание устройств | [Device] | 2 | Обязательно |
| Классификация устройств | [Device Classification] | a | Условно b |
| Класс параметров | [ParamClass] | a | Дополнительно |
| Параметры | [Params] | a | Дополнительно |
| Группы параметров | [Groups] | a | Дополнительно |
| Компоновка | [Assembly] | a | Дополнительно |
| Характеристики соединений | [Connection Manager] | Не применяется | Не применяется |
| Порт | [Port] | a | Дополнительно |
| Модульный | [Modular] | a | Дополнительно |
| Нумерации параметров | [EnumPar] | a | Дополнительно |
| Характеристики ввода/вывода | [IO_Info] | a | Условно c |
| Спецификация продавца | [VendorID_vend orspecifickeyword] | Последний | Дополнительно |
| a При размещении этих групп необходимо только следовать разделам Описание устройств и Классификация устройств. b Данный раздел необходим, если включен модульный раздел, в противном случае он может быть пропущен. c Данный раздел необходим, если реализуется соответствующая функциональность, в противном случае он может быть пропущен. | |||
Содержимое DeviceNet EDS должно быть организовано следующим образом:
- все файлы EDS DeviceNet, включающие в себя модульный раздел, должны также содержать раздел Классификация приборов, который должен использовать разрешенный разграничитель [Device Classification], и могут быть размещены где угодно после раздела Описание файлов;
- дополнительные и условные разделы, описанные в данной спецификации, могут быть представлены в любом порядке при условии, что в файле EDS отсутствуют ссылки вперед.
A.4.2.2 Реализация общих требований CIP
A.4.2.2.1 Раздел классификации устройств
Для любого совместимого устройства DeviceNet раздел классификации устройств их EDS, если он представлен, должен содержать не менее одного ввода ключевого слова ClassN с его первым полем, установленным на DeviceNet. Дополнительная подклассификация классификации DeviceNet должна быть зарезервирована.
В разделе Порт EDS ввод PortN, соответствующий совместимому порту DeviceNet, должен устанавливаться следующим образом:
- поле «Port Type Name (Название типа порта)» должно иметь значение «DeviceNet»;
- дополнительное поле «Port Object (объект Порт») должно быть установлено на маршруте объекта DeviceNet для этого порта;
- в полях «Port Name (Название порта)» и «Port Number (Число портов)» не размещаются никакие дополнительные требования, кроме требований, установленных в общем подразделе CIP (см. A.4.1.4.10).
A.4.2.3 Дополнительные требования к кодированию данных
Для файлов DeviceNet EDS дополнительные требования к кодированию данных не устанавливают.
A.4.2.4 Дополнительные требования к файлам
A.4.2.4.1 Раздел нумерованных строк параметров
Настоящий раздел предоставляет нумерованный список параметров, выбираемых пользователем. Ключевое слово ввода для всех нумерованных строк параметров должно состоять из набора символов «Param», объединенного с номером (десятичным) экземпляра параметров для прибора. Каждый параметр, поддерживающий нумерованные строки и не имеющий соответствующего ввода Enum в разделе Параметры, должен иметь ввод в этом разделе. Вводы должны быть расположены в возрастающем порядке.
Поля в каждом вводе должны содержать нумерованные строки, разделенные запятыми. Положение в списке определяет нумерованное значение, присваемое строке. Первой строке в нумерованном списке присваивается минимальное значение параметра. Каждой последующей строке присваивается значение, увеличенное на единицу. Для каждого целого значения от минимального значения параметра до максимального значения параметра должна быть использована одна строка.
Каждый ввод в разделе Нумерованные строки параметров должен содержать форматированные поля, показанные в таблице A.28.
Формат нумерованных строк параметров
| Имя поля | Номер поля | Тип данных | Обязательно/Дополнительно |
|---|---|---|---|
| Нумерованная строка (нумерованные строки) | 1 — число нумераций | EDS_Char_Array | Обязательно |
На рисунке A.16 представлен пример, показывающий типичный раздел нумерованных строк параметров.
| [EnumPar] | |
| Param2 = | \$ enums for param 2 |
| «1 ms input delay», «10 ms input delay», «25 ms input delay»; | |
| Param3 = | \$ enums for param 3 |
| «Light Operate», «Dark Operate»; | |
Рисунок A.16 — Пример раздела [EnumPar]
A.4.2.4.2 Раздел характеристик ввода/вывода
Раздел характеристик ввода/вывода должен содержать информацию о возможностях ввода/вывода заранее определенного набора основных/подчиненных соединений прибора (см. МЭК 62026-3:2000). Этот раздел является обязательным, если прибор реализует соединение ввода/вывода, характеристики которого могут быть полностью представлены одним или несколькими вводами в этом разделе.
В данном разделе должны быть описаны следующие характеристики ввода/вывода прибора:
- тип триггера ввода/вывода (Опрос, Строб, Изменение состояния, Циклический);
- размер сообщения ввода/вывода (число байтов);
- заранее установленные маршруты соединений ввода/вывода.
Раздел характеристик ввода/вывода должен содержать вводы, установленные в таблице A.29.
Формат характеристик ввода/вывода
Вводы в разделе характеристик ввода/вывода должны предоставлять информацию, как показано в таблице A.30.
Вводы характеристик ввода/вывода
A.4.2.4.2.2 Ввод информации ввода/вывода по умолчанию
Ввод информации ввода/вывода по умолчанию должен определять информацию ввода/вывода прибора по умолчанию.
Ввод информации ввода/вывода по умолчанию должен содержать форматированные поля, представленные в таблице A.31.
Формат информации ввода/вывода по умолчанию
| Имя поля | Номер поля | Тип данных | Обязательно/Дополнительно |
|---|---|---|---|
| Маска типа ввода/вывода по умолчанию | 1 | WORD | Обязательно |
Поле маски типа ввод/вывода по умолчанию должно быть битовым отображаемым полем, позволяющим определять типы ввода/вывода по умолчанию для устройства. Присвоение битов установлено в таблице A.32.
Присвоение битов маски типа ввода/вывода по умолчанию
| Бит | Определение бита |
|---|---|
| 0 | Опрос |
| 1 | Строб |
| 2 | Изменение состояния |
| 3 | Циклический |
| 4 | Многоадресный опрос |
| 5 — 15 | Зарезервированный |
Ввод информации по опросам должен определять типы ввода/вывода, которые могут быть использованы вместе с соединением с опросами. Он также должен устанавливать соединения выхода и входа опросов по умолчанию.
Если данный ввод не представлен, тогда:
Ввод информации по опросам должен содержать форматированные поля, показанные в таблице A.33.
Ввод информации по опросам должен предоставлять информацию, как показано в таблице A.34.
| Поля | Описание |
|---|---|
| Совместимая маска типа ввода/вывода | Битовое отображаемое поле определяет типы ввода/вывода, с которыми может быть объединено опрашиваемое соединение. Присвоение битов должно быть таким же, как и для маски типа ввода/вывода по умолчанию (см. таблицу A.32). Должен быть установлен бит опроса |
| Соединение выхода по умолчанию | Устанавливает один из вводов соединения выхода по умолчанию для опрашиваемого соединения. Нуль должен указывать, что для соединения с опросами выходные данные отсутствуют |
| Соединение входа по умолчанию | Устанавливает один из вводов соединения входа по умолчанию для опрашиваемого соединения. Нуль должен указывать, что для соединения с опросами входные данные отсутствуют |
Ввод информации по стробам должен определять типы ввода/вывода, которые могут быть использованы вместе со строб-соединением. Он также должен устанавливать строб-соединения выхода и входа по умолчанию.
Если данный ввод не представлен, тогда:
- строб-соединение в приборе не поддерживается или
- соединение не может быть полностью описано логической структурой этого ключевого слова.
Ввод информации по стробам должен содержать форматированные поля, показанные в таблице A.35.
Ввод информации по стробам должен предоставлять информацию, как показано в таблице A.36.
| Поля | Описание |
|---|---|
| Совместимая маска типа ввода/вывода | Битовое отображаемое поле определяет типы ввода/вывода, с которыми может быть объединено строб-соединение. Присвоение битов должно быть таким же, как и для маски типа ввода/вывода по умолчанию (см. таблицу A.32). Должен быть установлен битовый строб |
| Соединение выхода по умолчанию | Устанавливает один из вводов соединения выхода по умолчанию для строб-соединения. Нуль должен указывать, что для строб-соединения выходные данные отсутствуют |
| Соединение входа по умолчанию | Устанавливает один из вводов соединения входа по умолчанию для строб-соединения. Нуль должен указывать, что для строб-соединения входные данные отсутствуют |
A.4.2.4.2.5 Ввод информации по изменению состояния
Ввод информации по изменению состояния должен определять типы ввода/вывода, которые могут быть использованы вместе с соединением изменения состояния. Он также должен устанавливать соединения входа и выхода изменения состояния по умолчанию.
Если данный ввод не представлен, тогда:
- соединение Изменение Состояния в приборе не поддерживается;
- соединение не может быть полностью описано логической структурой этого ключевого слова.
Ввод информации по изменению состояния должен содержать форматированные поля, показанные в таблице A.37.
Ввод информации по изменению состояния должен предоставлять информацию, как показано в таблице A.38.
| Поля | Описание |
|---|---|
| Совместимая маска типа ввода/вывода | Битовое отображаемое поле определяет типы ввода/вывода, с которыми может быть объединено соединение Изменение Состояния. Присвоение битов должно быть таким же, как и для маски типа ввода/вывода по умолчанию (см. таблицу A.32). Должен быть установлен бит изменения состояния |
| Соединение выхода по умолчанию | Устанавливает один из вводов соединения выхода по умолчанию для соединения Изменение Состояния. Нуль должен указывать, что для соединения Изменение Состояния выходные данные отсутствуют |
| Соединение входа по умолчанию | Устанавливает один из вводов соединения ввода по умолчанию для соединения Изменение Состояния. Нуль должен указывать, что для соединения Изменение Состояния входные данные отсутствуют |
A.4.2.4.2.6 Ввод информации по циклам
Ввод информации по циклам должен определять типы ввода/вывода, которые могут быть использованы вместе с циклическим соединением. Он также должен устанавливать циклические соединения выхода и входа по умолчанию.
Если данный ввод не представлен, тогда:
- циклическое соединение в устройстве не поддерживается;
- соединение не может быть полностью описано логической структурой этого ключевого слова.
Ввод информации по циклам должен содержать форматированные поля, показанные в таблице A.39.
Ввод информации по циклам должен предоставлять информацию, как показано в таблице A.40.
| Поля | Описание |
|---|---|
| Совместимая маска типа ввода/вывода | Битовое отображаемое поле определяет типы ввода/вывода, с которыми может быть объединено циклическое соединение. Присвоение битов должно быть таким же, как и для маски типа ввода/вывода по умолчанию (см. таблицу A.32). Должен быть установлен бит циклов |
| Соединение выхода по умолчанию | Устанавливает один из вводов соединения выхода по умолчанию для циклического соединения. Нуль должен указывать, что для циклического соединения выходные данные отсутствуют |
| Соединение входа по умолчанию | Устанавливает один из вводов соединения входа по умолчанию для циклического соединения. Нуль должен указывать, что для циклического соединения входные данные отсутствуют |
A.4.2.4.2.7 Ввод информации по многоадресным опросам
Ввод информации по многоадресным опросам должен определять типы ввода/вывода, которые могут быть использованы вместе с соединением с многоадресными опросами. Он также должен устанавливать соединения вывода и ввода многоадресных опросов по умолчанию.
Если данный ввод не представлен, тогда:
- соединение с многоадресными опросами в приборе не поддерживается;
- соединение не может быть полностью описано логической структурой этого ключевого слова.
Ввод информации по многоадресным опросам должен содержать форматированные поля, показанные в таблице A.41.
Ввод информации по многоадресным опросам должен представлять информацию, как показано в таблице A.42.
Поля информации по многоадресным опросам
| Поля | Описание |
|---|---|
| Совместимая маска типа ввода/вывода | Битовое отображаемое поле определяет типы ввода/вывода, с которыми может быть объединено соединение с многоадресными опросами. Присвоение битов должно быть таким же, как и для маски типа ввода/вывода по умолчанию (см. таблицу A.32). Должен быть установлен бит многоадресных опросов |
| Соединение выхода по умолчанию | Устанавливает один из вводов соединения выхода по умолчанию для соединения с многоадресными опросами. Нуль должен указывать, что для соединения с многоадресными опросами выходные данные отсутствуют |
| Соединение входа по умолчанию | Устанавливает один из вводов соединения входа по умолчанию для соединения с многоадресными опросами. Нуль должен указывать, что для соединения с многоадресными опросами входные данные отсутствуют |
A.4.2.4.2.8 Вводимые данные соединений выходов устройства
Вводимые данные соединений выходов устройства должны быть использованы для определения логически кодированного маршрута к данным одного или нескольких объектов, которые могут быть созданы соединением ввода/вывода.
Каждый ввод должен определять размер соединения в байтах и битах, если он использует типы ввода/вывода, маршрут соединения, строку имен и строку справки.
Ключевое слово для вводов соединений выхода должно состоять из комбинации набора символов «input», объединенных с десятичным числом, например «input1». Десятичное число должно начинаться с единицы и увеличиваться на единицу.
Каждый ввод соединения выхода должен содержать форматированные поля, как показано в таблице A.43.
Ввод соединения выхода должен предоставлять информацию, показанную в таблице A.44.
| Поля | Описание |
|---|---|
| Размер | Размер этих данных в байтах |
| Число значимых битов | Число последовательных значимых битов этих данных (биты, которые фактически используются). Нуль должен указывать, что все биты данных являются значимыми |
| Совместимая маска типа ввода/вывода | Битовое отображаемое поле, определяющее типы ввода/вывода, с которыми эти данные могут быть использованы. Присвоение битов должно быть таким же, как и для маски типа ввода/вывода по умолчанию (см. таблицу A.32) |
| Строка имен | Текстовое имя данных (максимум 32 символа). При воспроизведении в зависимости от возможностей дисплея средств конфигурирования может возникнуть необходимость усечения текста |
| Размер маршрута соединения | Число байтов, используемых для представления маршрута |
| Маршрут соединения | Маршрут данных соединения. Маршрут должен вводиться как набор символов с использованием нотации маршрута, описанной в МЭК 62026-3:2000, и формата, установленного в A.4.1.3.6. |
| Строка справки | Текстовая строка справки. При воспроизведении в зависимости от возможностей дисплея средств конфигурирования может возникнуть необходимость усечения текста. |
A.4.2.4.2.9 Вводимые данные соединений входов устройства
Вводимые данные соединений входов устройства должны быть использованы для определения логически кодированного маршрута из данных одного или нескольких объектов, которые могут приниматься соединением ввода/вывода.
Отдельный ввод необходим для каждого случая, если:
Каждый ввод должен определять размер соединения в байтах и битах, если он использует типы ввода/вывода, маршрут соединения, строку имен и строку справки.
Ключевое слово для вводов соединений входов должно состоять из комбинации набора символов «Output», объединенных с десятичным числом, например «Output1». Десятичное число должно начинаться с единицы и увеличиваться на единицу.
Каждый ввод соединения входа должен содержать форматированные поля, как показано в таблице A.45.
Ввод соединения входа должен предоставлять информацию, представленную в таблице A.46.
| Поля | Описание |
|---|---|
| Размер | Размер этих данных в байтах. Для строб-соединений единица должна устанавливать, что строб-бит используется, а нуль должен устанавливать, что он не используется |
| Число значимых битов | Число последовательных значимых битов этих данных (биты, которые фактически используются). Нуль должен указывать, что все биты данных являются значимыми |
| Совместимая маска типа ввода/вывода | Битовое отображаемое поле, определяющее типы ввода/вывода, с которыми эти данные могут быть использованы. Присвоение битов должно быть таким же, как и для маски типа ввода/вывода по умолчанию (см. таблицу A.32) |
| Строка имен | Текстовое имя данных (максимум 32 символа). При воспроизведении в зависимости от возможностей дисплея средств конфигурирования может возникнуть необходимость усечения текста |
| Размер маршрута соединения | Число байтов, используемых для представления маршрута |
| Маршрут соединения | Маршрут данных соединения. Маршрут должен вводиться как набор символов с использованием нотации маршрута, описанной в МЭК 62026-3:2000, и формата, установленного в A.4.1.3.6 |
| Строка справки | Текстовая строка справки. При воспроизведении в зависимости от возможностей дисплея средств конфигурирования может возникнуть необходимость усечения текста |
Настоящий подраздел содержит примеры разделов файлов EDS, устанавливающие характеристики ввода/вывода устройств.
Рисунок A.17 представляет пример, показывающий типичный раздел характеристик ввода/вывода для прибора с возможностями опросов и стробов (Опрос по умолчанию).
Рисунок A.17 — Пример характеристик ввода/вывода. Устройство с возможностями опросов и стробов. Опрос по умолчанию
Рисунок A.18 представляет пример, показывающий типичный раздел характеристик ввода/вывода для устройства Strobe Only (только один вход и один выход).
Рисунок A.18 — Пример характеристик ввода/вывода для устройства Strobe Only, только один вход и один выход
Рисунок A.19 представляет пример, показывающий типичный раздел характеристик ввода/вывода для устройства с возможностями опросов и изменения состояния (Опросы и изменение состояния по умолчанию).
Рисунок A.19 — Пример характеристик ввода/вывода. Устройство с возможностями опросов и изменения состояния. Опросы и изменение состояния по умолчанию
(обязательное)
XML схемы шаблонов профилей устройств, определенные в B.1.5, содержат отображения диаграмм классов профилей устройств, представленных в 6.2.1. Помимо классов и атрибутов отображения они содержат дополнительные элементы с атрибутами XML или без них, облегчающие однозначное описание профилей устройств и устройств XML. Для повторного использования некоторых определений элементов и гибкого расширения описаний профиля устройств и устройств с использованием моделей, используемых здесь, классы были отражены в нескольких XML схемах. В таблице B.1 перечислены все XML схемы описания обмена шаблонами профилей устройств CANopen.
Примечание — Описание профилей устройств или описание устройств может не потребоваться для применения всех XML схем, установленных в настоящем приложении.
Профиль устройств использует типы данных МЭК 61158. Для введения дополнительных атрибутов информация по типам данных моделируется с использованием объявлений типов элементов XML. Альтернативные имена типов данных МЭК 61131-3 и CANopen предоставляются как постоянные атрибуты. Эти элементы типов данных определяются с именем «FDCMLdt.xsd» в XML схеме, которая определяется в B.1.5.2.
Профиль устройств использует модель сборных элементов. Эти элементы фигурируют в форме списка сборных элементов (пример: proccessDataDescriptionList/processDataDescription).
B.1.2.3 Описательный текст для элементов
Профиль устройств предлагает три разные возможности предоставления описательного текста для элементов. Должны быть использованы только B.1.2.3.2 и B.1.2.3.3. B.1.2.3.4 может быть использован вместе с B.1.2.3.2 или B.1.2.3.3.
B.1.2.3.2 Текст, вставленный в профиль устройств
Каждый элемент, требующий описательного текста, должен иметь дочерний элемент label с атрибутом xml:lang. Это позволяет использовать множество языков с одним профилем приборов. Дополнительно текст короткой справки может быть предоставлен с использованием элемента help. Он также имеет атрибут xml:lang. Этот атрибут состоит из двухбуквенного кода языка и дополнительного двухбуквенного кода страны, разделенных тире, и имеет следующий формат:
ISO 639 code for name of language [«-» ISO 3166-1-Alpha-2 code]
Пример — xml:lang='en-us' устанавливает текст на английском языке в американской редакции.
B.1.2.3.3 Текст, предоставляемый файлами текстовых ресурсов
Элементы labelRef и helpRef должны предоставлять указатель текстового ресурса, хранящегося в файле внешнего тестового ресурса. AIF должна заменять эти ресурсы посредством текста, предусмотренного файлом текстовых ресурсов. Файлы текстовых ресурсов, используемые профилем приборов, должны быть определены в элементе dictionary.
Формат файла текстовых ресурсов должен быть установлен в XML схеме «FDCMLTextResource.xsd», которая определена в B.1.5.4.
B.1.2.3.4 Указатель внешней документации
Дополнительно может быть предоставлен указатель внешней документации. Элемент hlpRefFile должен указывать положение в файле, определяемое элементом helpFile.
Если элемент профиля устройств имеет значение, то должно использоваться одно из следующих описаний значения:
Для моделирования обусловленного поведения устройств должны быть использованы следующие элементы:
Каждый возможный запрещаемый или разрешаемый целевой объект имеет в XML схеме разрешаемый атрибут.
B.1.2.6 Внутренние обращения элементов
Маршрут, установленный в атрибуте ref, должен быть допустимым маршрутом Xpath (см. [8]).
B.1.2.7 Однозначная идентификация элементов
Элементы, которые требуют идентификации, имеют атрибут uniqueID. Значение этого однозначного идентификатора должно состоять из:
token_index [ [_subindex]...], индекса типа unsigned16 и субиндекса типа unsigned8.
Элементы компоновки позволяют сгруппировать соответствующие элементы объектов. Компоновка содержит список указателей Xpath своих объектов.
B.1.2.9 Категории со стороны продавца
Разработчик AIP может добавить элементы категорий в сборные элементы.
Пример — Разработчик AIP добавляет processDataCategory для входных сигналов и processDataCategory для выходных сигналов.
B.1.3.1 Объекты datatypeTemplateList, datatypeTemplate
Объект datatypeTemplate позволяет определить разработчика AIP или типы данных, относящиеся к профилям устройств. Эти типы данных вызываются с элементом datatypeInstance. Они могут быть описаны следующим образом:
B.1.3.2 Атрибут объекта communicationEntity
Таблица B.2 описывает атрибуты объекта communicationEntity, определенные в 6.2.1.3.4.
| Атрибут | Описание | Тип данных | Значение |
|---|---|---|---|
| Протокол | Коммуникационный протокол | xsd:string | 'CANopen' |
| Коммуникатор | Устанавливает, играет ли этот объект активную роль в сетевых коммуникациях или нет | xsd:string | 'YES' — принимает участие в сетевых коммуникациях. 'NO' — не принимает участия в сетевых коммуникациях |
| communicationEntityType | Тип коммуникационного объекта | xsd:string | 'SLAVE' 'MASTER' 'CLIENT' 'SERVER' 'PEER' (объект, действующий как клиент и сервер) 'MASTER_SERVER' (объект, действующий как основной и подчиненный) 'DEVICEMODULE' (объект, нуждающийся в родителе для коммуникации через сеть) 'PASSIVE' (объект, не принимающий участия в сетевых коммуникациях) |
| communicationProfile | Идентификатор коммуникационных профилей | xsd:string | См. 6.2.2.2 |
B.1.3.3 Атрибуты объекта channel1
Таблица B.3 описывает атрибуты объекта channel1, определенного в 6.2.1.3.3.2.
| Атрибут | Описание | Тип данных | Значение |
|---|---|---|---|
| channelType | Тип канала | xsd:string | |
| direction | Направление потока данных через этот канал | xsd:string | «I»: Вход «Q»: Выход «X»: Все равно |
Таблица B.4 описывает атрибуты объектов MAU, определенные в 6.2.1.3.3.3.
B.1.3.5 Атрибуты объектов slot (слот)
Таблица B.5 описывает атрибуты объектов slot, определенные в 6.2.1.3.3.4.
| Атрибут | Описание | Тип данных | Значения |
| Номер | Указывает положение, в котором дочернее устройство может быть добавлено в последовательность дочерних устройств | xsd:string | Атрибут номер может содержать один номер ('3'), список номеров ('3,5,7'), диапазон номеров ('1 — 3') или комбинацию ('1 — 2,4,6,9 — 10') <1>. |
| <1> Если дочерние устройства могут быть подключены к любому слоту, используют номер, определяющий максимальное число подключаемых дочерних устройств. Например, если 64 дочерних устройства могут быть подключены к родительскому устройству, используют slot number='1 — 64'. Для каждого положения слота требуется элемент MAUUsage, указывающий на подключенный объект MAU. | |||
B.1.3.6 Атрибуты объектов LED и LEDState
Таблица B.6 описывает атрибуты объекта LED, определенные в 6.2.1.3.3.5. Дочерний объект LEDState описывает разные состояния. Атрибуты LEDState описаны в таблице B.7.
| Атрибут | Описание | Тип данных | Значение |
|---|---|---|---|
| LEDType | Тип LED | xsd:string | «IOStatus» «IODiagnostic» «DeviceStatus» «DeviceDiagnostic» «CommStatus» «CommDiagnostic» |
B.1.4 Описания дополнительных элементов
Объект accessPath должен описывать маршрут относительно объекта communicationEntity для получения доступа к объекту localDataDescription. Формат объекта:
- для объекта localDataDescription: не определен.
Примечание — Формат для объекта localDataDescription в настоящем стандарте не рассмотрен.
На рисунке B.1 показаны порядок и нумерация смещений в байтах и битах.
| канал обрабатываемых данных | |||||||||||||||||||||||||||||||||
| октет 0 | октет 1 | октет 2 | ... | октет n | byteoffset | ||||||||||||||||||||||||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ... | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | bitoffset |
Рисунок B.1 — Смещения в байтах и битах в канале обрабатываемых данных
Объект datatype должен определять тип данных родительского элемента.
Объект file содержит ссылку XLink [7] на внешний файл.
B.1.4.4 Элементы gain, offset, maxVal, minVal, default, stepVal, on
Для уточнения элемента range должны быть использованы следующие элементы:
Все значения относятся к xactual.
Масштабные коэффициенты, если они представлены, должны быть использованы, как установлено в следующей формуле: xscale = offset + xactual·gain.
B.1.4.5 Объекты picture, hotspotList, hotspot
Объект picture должен содержать ссылку на графическое представление элемента. Атрибуты элемента picture установлены в таблице B.8.
Объект hotspotList является набором элементов hotspot. Элементы hotspot определяют положение объектов channel, LED или MAU в графическом представлении. Атрибуты объекта hotspot установлены в таблице B.9. Значения атрибутов xPos и yPos определяют относительное положение (см. рисунок B.2). Элемент hotElement является маршрутом Xpath к объектам channel, LED или MAU.
Рисунок B.2 — Положения hotspot точек соединения
B.1.4.6 Объект specificProperty
Элемент specificProperty резервируется для расширений, выполняемых разработчиком AIP.
Примечание — Использование элемента specificProperty в настоящем стандарте не рассмотрено.
Объект tool определяет специальную сервисную программу родительского элемента. Таблица B.10 описывает атрибуты элемента tool.
Элемент uses определяет ассоциацию «uses», как определено на рисунках 7 и 9.
B.1.5 XML схемы шаблонов профилей устройств
<xsd:schema xmlns = «http://www.can-cia.org/xml/canopen»
targetNamespace = «http://www.can-cia.org/xml/canopen»
elementFormDefault = «qualified»
attributeFormDefault = «unqualified»>
<xsd:import namespace = «http://www.w3.org/1999/xlink» schemaLocation = «xlinkdef.xsd»/>
<xsd:include schemaLocation = «FDCMLdt.xsd»/>
<xsd:element ref = «label» maxOccurs = «unbounded»/>
<xsd:element ref = «labelRef»/>
<xsd:element ref = «helpRef»/>
<xsd:element ref = «label» maxOccurs = «unbounded»/>
<xsd:element ref = «help» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «labelRef»/>
<xsd:element ref = «helpRef» minOccurs = «0»/>
<xsd:element ref = «helpFileRef» minOccurs = «0»/>
<xsd:group name = «g_stringValues»>
<xsd:element ref = «const» maxOccurs = «unbounded»/>
<xsd:element ref = «edit» maxOccurs = «unbounded»/>
<xsd:element ref = «labelRef»/>
<xsd:element ref = «instanceValue»/>
<xsd:element ref = «const» maxOccurs = «unbounded»/>
<xsd:element ref = «edit» maxOccurs = «unbounded»/>
<xsd:element ref = «enumeration» maxOccurs = «unbounded»/>
<xsd:element ref = «range» maxOccurs = «unbounded»/>
<xsd:element ref = «yes» minOccurs = «0»/>
<xsd:element ref = «no» minOccurs = «0»/>
<xsd:element ref = «reference» maxOccurs = «unbounded»/>
<xsd:element ref = «instanceValue»/>
<xsd:attributeGroup name = «ag_FDCML»>
<xsd:attribute name = «formatName» fixed = «FDCML» form = «unqualified» type = «xsd:string»/>
<xsd:attribute name = «formatVersion» fixed = «2.0» form = «unqualified» type = «xsd:string»/>
<xsd:attribute name = «fileName» use = «required» form = «unqualified» type = «xsd:string»/>
<xsd:attribute name = «fileCreator» use = «required» form = «unqualified» type = «xsd:string»/>
<xsd:attribute name = «fileCreationDate» use = «required» form = «unqualified» type = «xsd:date»/>
<xsd:attribute name = «fileModificationDate» use = «required» form = «unqualified» type = «xsd:date»/>
<xsd:attribute name = «fileVersion» use = «required» form = «unqualified» type = «xsd:string»/>
<xsd:attributeGroup name = «accessCategory»>
<xsd:attribute name = «accessCategory» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «read»/>
<xsd:enumeration value = «write»/>
<xsd:enumeration value = «readWrite»/>
<xsd:enumeration value = «noAccess»/>
<xsd:attributeGroup name = «dataType»>
<xsd:attribute name = «dataType» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «bool»/>
<xsd:enumeration value = «byte»/>
<xsd:enumeration value = «char»/>
<xsd:enumeration value = «word»/>
<xsd:enumeration value = «dWord»/>
<xsd:enumeration value = «IWord»/>
<xsd:enumeration value = «sInt»/>
<xsd:enumeration value = «usInt»/>
<xsd:enumeration value = «int»/>
<xsd:enumeration value = «uInt»/>
<xsd:enumeration value = «dInt»/>
<xsd:enumeration value = «udInt»/>
<xsd:enumeration value = «lInt»/>
<xsd:enumeration value = «ulInt»/>
<xsd:enumeration value = «real»/>
<xsd:enumeration value = «IReal»/>
<xsd:enumeration value = «string»/>
<xsd:enumeration value = «unicode»/>
<xsd:enumeration value = «struct»/>
<xsd:enumeration value = «physical»/>
<xsd:enumeration value = «array»/>
<xsd:attributeGroup name = «persistent»>
<xsd:attribute name = «persistent» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «false»/>
<xsd:enumeration value = «true»/>
<xsd:enumeration value = «n.a»/>
<xsd:attributeGroup name = «type»>
<xsd:attribute name = «type» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «fixedValue»/>
<xsd:enumeration value = «vendorSpecific»/>
<xsd:attributeGroup name = «use»>
<xsd:attribute name = «use» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «required»/>
<xsd:enumeration value = «optional»/>
<!- -xmlns:xml=«http://www.w3.org/XML/1998/namespace»- ->
<xsd:element name = «ISO15745Profile»>
xsd:documentationDocument Element</xsd:documentation>
<xsd:element ref = «ProfileHeader»/>
<xsd:element ref = «ProfileBody»/>
<xsd:element ref = «ProfilesBody»/>
<xsd:element name = «accessPath» type = «xsd:string»/>
<xsd:element name = «additionalItem»>
<xsd:element ref = «pictureList» minOccurs = «0»/>
<xsd:element ref = «specificProperty» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «additionalItem» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «instances» minOccurs = «0»/>
<xsd:attribute name = «uniqueID» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «additionalItemType» use = «required» type = «xsd:string»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «additionalItemCategory»>
<xsd:element ref = «additionalItem» maxOccurs = «unbounded»/>
<xsd:attribute name = «uniqueID» type = «xsd:ID»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «additionalItemList»>
<xsd:choice maxOccurs = «unbounded»>
<xsd:element ref = «additionalItemCategory»/>
<xsd:element ref = «additionalItem»/>
<xsd:attribute name = «uniqueID» type = «xsd:ID»/>
<xsd:attribute name = «additionalItemsType» use = «required» type = «xsd:string»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «alignment»>
<xsd:attribute name = «type» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «byte»/>
<xsd:enumeration value = «word»/>
<xsd:enumeration value = «dword»/>
<xsd:enumeration value = «lword»/>
<xsd:element name = «ApplicationProcess»>
<xsd:element ref = «externalSchema»/>
<xsd:element name = «arrayType»>
<xsd:group ref = «g_datatypes»/>
<xsd:element ref = «subrange» maxOccurs = «unbounded»/>
<xsd:attribute name = «initialValues» type = «xsd:string»/>
<xsd:element name = «buildDate»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «capabilities»>
<xsd:element ref = «externalSchema»/>
<xsd:element name = «cfgItemList»>
<xsd:sequence minOccurs = «0»>
<xsd:element ref = «CANopenDedicatedCfgCategory»/>
<xsd:group ref = «g_datatypes»/>
<xsd:element ref = «datatypeInstance»/>
<xsd:attribute name = «ref» use = «required» type = «xsd:string»/>
<xsd:element name = «channel»>
<xsd:element ref = «pictureList» minOccurs = «0»/>
<xsd:element ref = «accessPath» minOccurs = «0»/>
<xsd:element ref = «specificProperty» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «uses» minOccurs = «0»/>
<xsd:element ref = «provides» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «channel» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «instances» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:attribute name = «uniqueID» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «channelType» type = «xsd:string»/>
<xsd:attribute name = «direction» default = «X»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «I»/>
<xsd:enumeration value = «Q»/>
<xsd:enumeration value = «X»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «channelList»>
<xsd:element ref = «channel» maxOccurs = «unbounded»/>
<xsd:element name = «communicationEntity»>
<xsd:sequence minOccurs = «0»>
<xsd:element ref = «cfgItemList» minOccurs = «0»/>
<xsd:element ref = «CANopenIdentity»/>
<xsd:element name = «CANopenCommunicationFunctionList» minOccurs = «0»>
<xsd:element ref = «function» maxOccurs = «unbounded»/>
<xsd:element name = «CANopenCommunicationParameterList»>
<xsd:element ref = «parameter» maxOccurs = «unbounded»/>
<xsd:element ref = «CANopenObjectAccessList»/>
<xsd:attribute name = «uniqueID» type = «xsd:ID»/>
<xsd:attribute name = «protocol» use = «required» type = «xsd:string»/>
<xsd:attribute name = «communicator» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:attribute name = «communicationEntityType» default = «SLAVE»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «SLAVE»/>
<xsd:enumeration value = «MASTER»/>
<xsd:enumeration value = «CLIENT»/>
<xsd:enumeration value = «SERVER»/>
<xsd:enumeration value = «INTERCONNECTION»/>
<xsd:enumeration value = «PEER»/>
<xsd:enumeration value = «MASTER_SLAVE»/>
<xsd:enumeration value = «DEVICEMODULE»/>
<xsd:enumeration value = «PASSIVE»/>
<xsd:attribute name = «communicationProfile» type = «xsd:string»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «connection»>
<xsd:sequence minOccurs = «0»>
<xsd:element ref = «specificProperty» maxOccurs = «unbounded»/>
<xsd:attribute name = «destination» use = «required» type = «xsd:string»/>
<xsd:attribute name = «source» use = «required» type = «xsd:string»/>
<xsd:element name = «connectionList»>
<xsd:element ref = «connection» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:group ref = «g_datatypes»/>
<xsd:element ref = «datatypeInstance»/>
<xsd:attribute ref = «xml:lang»/>
<xsd:attribute ref = «xlink:type»/>
<xsd:attribute ref = «xlink:href»/>
<xsd:attribute name = «format» type = «xsd:string»/>
<xsd:attribute name = «unit» type = «xsd:string»/>
<xsd:element name = «datatype»>
<xsd:group ref = «g_datatypes»/>
<xsd:element ref = «datatypeInstance»/>
<xsd:element name = «datatypeInstance» nillable = «true»>
<xsd:attribute name = «ref» use = «required» type = «xsd:string»/>
<xsd:element name = «datatypeTemplate»>
<xsd:element ref = «directlyDerivedType»/>
<xsd:element ref = «enumeratedType»/>
<xsd:element ref = «subrangeType»/>
<xsd:element ref = «arrayType»/>
<xsd:element ref = «structuredType»/>
<xsd:element name = «datatypeTemplateList»>
<xsd:element ref = «alignment» minOccurs = «0»/>
<xsd:element ref = «endianess» minOccurs = «0»/>
<xsd:element ref = «datatypeTemplate» maxOccurs = «unbounded»/>
<xsd:element name = «default»>
<xsd:group ref = «g_numericDatatypes»/>
<xsd:group ref = «g_booleanDatatypes»/>
<xsd:group ref = «g_userDatatypes»/>
<xsd:group ref = «g_timeDatatypes»/>
<xsd:element name = «deviceFamily»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «defaultfile»>
<xsd:attribute ref = «xlink:type»/>
<xsd:attribute ref = «xlink:href» use = «required»/>
<xsd:element name = «deleteEntity»>
<xsd:attribute name = «node» use = «required» type = «xsd:string»/>
<xsd:element name = «DeviceFunction»>
<xsd:choice maxOccurs = «unbounded»>
<xsd:element ref = «externalSchema» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element name = «DeviceIdentity»>
<xsd:element ref = «vendorName»/>
<xsd:element ref = «vendorID» minOccurs = «0»/>
<xsd:element ref = «vendorText» minOccurs = «0»/>
<xsd:element ref = «deviceFamily»/>
<xsd:element ref = «capabilities» minOccurs = «0»/>
<xsd:element ref = «productFamily» minOccurs = «0»/>
<xsd:element ref = «productName»/>
<xsd:element ref = «productID» minOccurs = «0»/>
<xsd:element ref = «productText» minOccurs = «0»/>
<xsd:element ref = «orderNumber» minOccurs = «0»/>
<xsd:element ref = «version» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «buildDate» minOccurs = «0»/>
<xsd:element ref = «specificationRevision» minOccurs = «0»/>
<xsd:element ref = «instanceName» minOccurs = «0»/>
<xsd:element ref = «serialNumber» minOccurs = «0»/>
<xsd:element name = «DeviceManager»>
<xsd:element ref = «importList» minOccurs = «0»/>
<xsd:element ref = «datatypeTemplateList» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «dictionaryList» minOccurs = «0»/>
<xsd:element ref = «helpFileList» minOccurs = «0»/>
<xsd:element ref = «toolList» minOccurs = «0»/>
<xsd:element ref = «pictureList» minOccurs = «0»/>
<xsd:element ref = «deviceStructure» minOccurs = «0»/>
<xsd:element ref = «localDataDescriptionList» minOccurs = «0»/>
<xsd:element ref = «additionalItemList» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «communicationEntity» maxOccurs = «unbounded»/>
<xsd:element ref = «processingEntity» maxOccurs = «unbounded»/>
<xsd:element ref = «externalSchema» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element name = «deviceStructure»>
<xsd:element ref = «channelList» minOccurs = «0»/>
<xsd:element ref = «MAUList» minOccurs = «0»/>
<xsd:element ref = «slotList» minOccurs = «0»/>
<xsd:element ref = «indicatorList» minOccurs = «0»/>
<xsd:element ref = «externalSchema» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element name = «dictionary»>
<xsd:attribute ref = «xml:lang» use = «required»/>
<xsd:attribute name = «dictID» type = «xsd:string»/>
<xsd:element name = «dictionaryList»>
<xsd:element ref = «dictionary» maxOccurs = «unbounded»/>
<xsd:element name = «directlyDerivedType»>
<xsd:group ref = «g_datatypes»/>
<xsd:attribute name = «initialValue» type = «xsd:string»/>
<xsd:element name = «disable»>
<xsd:attribute name = «ref» use = «required» type = «xsd:string»/>
<xsd:group ref = «g_stringDatatypes»/>
<xsd:element ref = «datatypeInstance»/>
<xsd:attribute ref = «xml:lang»/>
<xsd:attribute ref = «xlink:type»/>
<xsd:attribute ref = «xlink:href»/>
<xsd:attribute name = «format» type = «xsd:string»/>
<xsd:attribute name = «unit» type = «xsd:string»/>
<xsd:attribute name = «ref» use = «required» type = «xsd:string»/>
<xsd:element name = «endianess»>
<xsd:attribute name = «type» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «little»/>
<xsd:enumeration value = «big»/>
<xsd:element name = «enumeratedType»>
<xsd:element ref = «enumeratedValue» maxOccurs = «unbounded»/>
<xsd:attribute name = «initialValue» type = «xsd:string»/>
<xsd:element name = «enumeratedValue»>
<xsd:group ref = «g_datatypes»/>
<xsd:element name = «enumeration»>
<xsd:group ref = «g_numericDatatypes»/>
<xsd:group ref = «g_booleanDatatypes»/>
<xsd:group ref = «g_stringDatatypes»/>
<xsd:group ref = «g_userDatatypes»/>
<xsd:element ref = «relations» minOccurs = «0»/>
<xsd:attribute name = «default» default = «NO»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «NO»/>
<xsd:enumeration value = «YES»/>
<xsd:attribute name = «multipleSelection»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:element name = «externalSchema»>
<xsd:any namespace = «##any» processContents = «strict»/>
<xsd:attribute ref = «xlink:type»/>
<xsd:attribute ref = «xlink:href» use = «required»/>
<xsd:group ref = «g_numericDatatypes»/>
<xsd:group ref = «g_userDatatypes»/>
<xsd:extension base = «xsd:string»>
<xsd:attribute ref = «xml:lang» use = «required»/>
<xsd:element name = «helpFile»>
<xsd:attribute ref = «xml:lang» use = «required»/>
<xsd:attribute name = «helpFileID» type = «xsd:string»/>
<xsd:element name = «helpFileList»>
<xsd:element ref = «helpFile» maxOccurs = «unbounded»/>
<xsd:element name = «helpFileRef»>
<xsd:attribute name = «helpFileID» type = «xsd:string»/>
<xsd:attribute name = «helpID» type = «xsd:string»/>
<xsd:element name = «helpRef»>
<xsd:attribute name = «dictID» type = «xsd:string»/>
<xsd:attribute name = «textID» use = «required» type = «xsd:string»/>
<xsd:element name = «hotspot»>
<xsd:attribute name = «xPos» use = «required»>
<xsd:restriction base = «xsd:nonNegativeInteger»>
<xsd:maxInclusive value = «100»/>
<xsd:attribute name = «yPos» use = «required»>
<xsd:restriction base = «xsd:nonNegativeInteger»>
<xsd:maxInclusive value = «100»/>
<xsd:attribute name = «hotElement» use = «required» type = «xsd:string»/>
<xsd:element name = «hotspotList»>
<xsd:element ref = «hotspot» maxOccurs = «unbounded»/>
<xsd:simpleType name = «IASInterface_DataType»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «CSI»/>
<xsd:enumeration value = «HCI»/>
<xsd:enumeration value = «ISI»/>
<xsd:enumeration value = «API»/>
<xsd:enumeration value = «CMI»/>
<xsd:enumeration value = «ESI»/>
<xsd:enumeration value = «FSI»/>
<xsd:enumeration value = «MTI»/>
<xsd:enumeration value = «SEI»/>
<xsd:enumeration value = «USI»/>
<xsd:restriction base = «xsd:string»>
<xsd:simpleType name = «ProfileClassID_DataType»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «AIP»/>
<xsd:enumeration value = «Process»/>
<xsd:enumeration value = «InformationExchange»/>
<xsd:enumeration value = «Resource»/>
<xsd:enumeration value = «Device»/>
<xsd:enumeration value = «CommunicationNetwork»/>
<xsd:enumeration value = «Equipment»/>
<xsd:enumeration value = «Human»/>
<xsd:enumeration value = «Material»/>
<xsd:element name = «identity»>
<xsd:element ref = «vendorName»/>
<xsd:element ref = «typeName»/>
<xsd:element ref = «version» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «buildDate»/>
<xsd:element ref = «specificationRevision» minOccurs = «0»/>
<xsd:element ref = «instanceName» minOccurs = «0»/>
<xsd:element name = «importList»>
<xsd:element ref = «file» maxOccurs = «unbounded»/>
<xsd:element name = «indicatorList»>
<xsd:element ref = «LEDList» minOccurs = «0»/>
<xsd:element name = «instanceName»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «instances»>
<xsd:element ref = «externalSchema» maxOccurs = «unbounded»/>
<xsd:choice maxOccurs = «unbounded»>
<xsd:element ref = «modifyValue»/>
<xsd:element ref = «modifyEntity»/>
<xsd:element ref = «recalcValue»/>
<xsd:element ref = «recalcEntity»/>
<xsd:element ref = «deleteEntity»/>
<xsd:attribute name = «maxInstances» type = «xsd:nonNegativeInteger»/>
<xsd:element name = «instanceValue» type = «xsd:string»/>
<xsd:element name = «internalConnectionPoint»>
<xsd:element ref = «uses» minOccurs = «0»/>
<xsd:element ref = «specificProperty» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «instances» minOccurs = «0»/>
<xsd:attribute name = «uniqueID» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «ref» use = «required» type = «xsd:string»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «internalConnectionPointList»>
<xsd:element ref = «internalConnectionPoint» maxOccurs = «unbounded»/>
<xsd:element name = «ISO15745Edition» type = «xsd:positiveInteger»/>
<xsd:element name = «ISO15745Part» type = «xsd:positiveInteger»/>
<xsd:complexType name = «ISO15745Reference_DataType»>
<xsd:element name = «ISO15745Part» type = «xsd:positiveInteger»/>
<xsd:element name = «ISO15745Edition» type = «xsd:positiveInteger»/>
<xsd:element name = «ProfileTechnology» type = «xsd:string»/>
<xsd:extension base = «xsd:string»>
<xsd:attribute ref = «xml:lang» use = «required»/>
<xsd:attribute ref = «xlink:type»/>
<xsd:attribute ref = «xlink:href»/>
<xsd:element name = «labelRef»>
<xsd:attribute name = «dictID» type = «xsd:string»/>
<xsd:attribute name = «textID» use = «required» type = «xsd:string»/>
<xsd:attribute ref = «xlink:type»/>
<xsd:attribute ref = «xlink:href»/>
<xsd:element ref = «LEDState» maxOccurs = «unbounded»/>
<xsd:element ref = «specificProperty» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:attribute name = «uniqueID» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «LEDType» use = «required»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «IOStatus»/>
<xsd:enumeration value = «IODiagnostic»/>
<xsd:enumeration value = «DeviceStatus»/>
<xsd:enumeration value = «DeviceDiagnostic»/>
<xsd:enumeration value = «CommStatus»/>
<xsd:enumeration value = «CommDiagnostic»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «LEDList»>
<xsd:element ref = «LED» maxOccurs = «unbounded»/>
<xsd:element name = «LEDState»>
<xsd:sequence minOccurs = «0»>
<xsd:element ref = «specificProperty» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:attribute name = «LEDCondition» use = «required»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «ON»/>
<xsd:enumeration value = «OFF»/>
<xsd:attribute name = «LEDColor»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «GREEN»/>
<xsd:enumeration value = «YELLOW»/>
<xsd:enumeration value = «RED»/>
<xsd:enumeration value = «ORANGE»/>
<xsd:enumeration value = «BLUE»/>
<xsd:enumeration value = «WHITE»/>
<xsd:attribute name = «LEDFrequency» type = «xsd:float»/>
<xsd:attribute name = «LEDFlashCount» type = «xsd:nonNegativeInteger»/>
<xsd:attribute name = «ref» type = «xsd:string»/>
<xsd:element name = «localDataCategory»>
<xsd:element ref = «localDataDescription» maxOccurs = «unbounded»/>
<xsd:attribute name = «uniqueID» type = «xsd:ID»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «localDataDescription»>
<xsd:element ref = «pictureList» minOccurs = «0»/>
<xsd:element ref = «accessPath»/>
<xsd:element ref = «datatype»/>
<xsd:element ref = «specificProperty» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «uses» minOccurs = «0»/>
<xsd:element ref = «provides» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «localDataDescription» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «instances» minOccurs = «0»/>
<xsd:attribute name = «uniqueID» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «direction» use = «required»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «I»/>
<xsd:enumeration value = «Q»/>
<xsd:attribute name = «localDataDescriptionType» use = «required» type = «xsd:string»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «localDataDescriptionList»>
<xsd:sequence minOccurs = «0»>
<xsd:choice maxOccurs = «unbounded»>
<xsd:element ref = «localDataCategory»/>
<xsd:element ref = «localDataDescription»/>
<xsd:element name = «logicalConnectionPoint»>
<xsd:element ref = «pictureList» minOccurs = «0»/>
<xsd:element ref = «specificProperty» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «uses» minOccurs = «0»/>
<xsd:element ref = «provides» maxOccurs = «unbounded»/>
<xsd:element ref = «instances» minOccurs = «0»/>
<xsd:attribute name = «uniqueID» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «logicalConnectionPointType» use = «required» type = «xsd:string»/>
<xsd:attribute name = «role» use = «required»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «CLIENT»/>
<xsd:enumeration value = «SERVER»/>
<xsd:enumeration value = «PEER»/>
<xsd:enumeration value = «PUBLISHER»/>
<xsd:enumeration value = «SUBSCRIBER»/>
<xsd:enumeration value = «PUBLISHERSUBSCRIBER»/>
<xsd:attribute name = «maxRelationships» default = «1» type = «xsd:nonNegativeInteger»/>
<xsd:attribute name = «newLevel» default = «NO»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «logicalConnectionPointAssembly»>
<xsd:element ref = «specificProperty» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «uses» minOccurs = «0»/>
<xsd:element ref = «provides» maxOccurs = «unbounded»/>
<xsd:element ref = «instances» minOccurs = «0»/>
<xsd:attribute name = «uniqueID» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «logicalConnectionPointAssemblyType» use = «required» type = «xsd:string»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «logicalConnectionPointAssemblyList»>
<xsd:sequence minOccurs = «0»>
<xsd:element ref = «logicalConnectionPointAssembly» maxOccurs = «unbounded»/>
<xsd:element name = «logicalConnectionPointList»>
<xsd:sequence minOccurs = «0»>
<xsd:element ref = «logicalConnectionPoint» maxOccurs = «unbounded»/>
<xsd:element ref = «pictureList» minOccurs = «0»/>
<xsd:element ref = «specificProperty» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «instances» minOccurs = «0»/>
<xsd:attribute name = «uniqueID» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «protocol» use = «required» type = «xsd:string»/>
<xsd:attribute name = «interfaceType» use = «required» type = «xsd:string»/>
<xsd:attribute name = «MAUType» type = «xsd:string»/>
<xsd:attribute name = «newLevel» default = «NO»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «NO»/>
<xsd:enumeration value = «YES»/>
<xsd:attribute name = «directlyConnected» use = «required»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «NO»/>
<xsd:enumeration value = «YES»/>
<xsd:attribute name = «direction» use = «required»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «IN»/>
<xsd:enumeration value = «IN_UNI»/>
<xsd:enumeration value = «OUT»/>
<xsd:enumeration value = «OUT_UNI»/>
<xsd:enumeration value = «INOUT»/>
<xsd:attribute name = «sequenceNumber» default = «1» type = «xsd:nonNegativeInteger»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «MAUList»>
<xsd:element ref = «MAU» maxOccurs = «unbounded»/>
<xsd:element name = «MAUUsage»>
<xsd:attribute name = «ref» use = «required» type = «xsd:string»/>
<xsd:element name = «MAUUsageList»>
<xsd:element ref = «MAUUsage» maxOccurs = «unbounded»/>
<xsd:group ref = «g_numericDatatypes»/>
<xsd:group ref = «g_booleanDatatypes»/>
<xsd:group ref = «g_userDatatypes»/>
<xsd:group ref = «g_timeDatatypes»/>
<xsd:group ref = «g_numericDatatypes»/>
<xsd:group ref = «g_booleanDatatypes»/>
<xsd:group ref = «g_userDatatypes»/>
<xsd:group ref = «g_timeDatatypes»/>
<xsd:element name = «modifyEntity»>
<xsd:choice maxOccurs = «unbounded»>
<xsd:any namespace = «http://www.can-cia.org/xml/canopen/» processContents = «strict»/>
<xsd:attribute name = «node» use = «required» type = «xsd:string»/>
<xsd:element name = «modifyValue»>
<xsd:attribute name = «node» use = «required» type = «xsd:string»/>
<xsd:element ref = «relations» minOccurs = «0»/>
<xsd:attribute name = «default» default = «NO»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «NO»/>
<xsd:enumeration value = «YES»/>
<xsd:element name = «nonStandardizedExtension»>
<xsd:any namespace = «##any» processContents = «strict»/>
<xsd:group ref = «g_numericDatatypes»/>
<xsd:group ref = «g_userDatatypes»/>
<xsd:element ref = «relations»/>
<xsd:attribute name = «value» use = «required» type = «xsd:string»/>
<xsd:element name = «orderNumber»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «picture»>
<xsd:sequence minOccurs = «0»>
<xsd:element ref = «hotspotList» minOccurs = «0»/>
<xsd:attribute name = «picClassification» type = «xsd:string»/>
<xsd:attribute name = «picType» use = «required» type = «xsd:string»/>
<xsd:attribute name = «picName» use = «required» type = «xsd:string»/>
<xsd:attribute name = «xSize» type = «xsd:positiveInteger»/>
<xsd:attribute name = «ySize» type = «xsd:positiveInteger»/>
<xsd:element name = «pictureList»>
<xsd:element ref = «picture» maxOccurs = «unbounded»/>
<xsd:element name = «processingEntity»>
<xsd:sequence minOccurs = «0»>
<xsd:element ref = «identity» minOccurs = «0»/>
<xsd:element ref = «helpFileList» minOccurs = «0»/>
<xsd:element ref = «toolList» minOccurs = «0»/>
<xsd:element ref = «pictureList» minOccurs = «0»/>
<xsd:element ref = «cfgItemList» minOccurs = «0»/>
<xsd:element ref = «additionalItemList» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «logicalConnectionPointList» minOccurs = «0»/>
<xsd:element ref = «logicalConnectionPointAssemblyList» minOccurs = «0»/>
<xsd:element ref = «internalConnectionPointList» minOccurs = «0»/>
<xsd:element ref = «externalSchema» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:attribute name = «uniqueID» type = «xsd:ID»/>
<xsd:attribute name = «processingEntityType» use = «required» type = «xsd:string»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «productFamily»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «productID»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «productName»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «productText»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «ProfileBody»>
<xsd:element ref = «DeviceIdentity»/>
<xsd:element ref = «DeviceManager»/>
<xsd:element ref = «DeviceFunction» maxOccurs = «unbounded»/>
<xsd:element ref = «ApplicationProcess» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «nonStandardizedExtension» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:attributeGroup ref = «ag_FDCML»/>
<xsd:attribute name = «supportedLanguages» type = «xsd:NMTOKENS»/>
<xsd:attribute name = «uniqueID» type = «xsd:ID»/>
<xsd:element name = «ProfileHeader»>
<xsd:element name = «ProfileIdentification» type = «xsd:string»/>
<xsd:element name = «ProfileRevision» type = «xsd:string»/>
<xsd:element name = «ProfileName» type = «xsd:string»/>
<xsd:element name = «ProfileSource» type = «xsd:string»/>
<xsd:element name = «ProfileClassID» type = «ProfileClassID_DataType»/>
<xsd:element name = «ProfileDate» type = «xsd:date» minOccurs = «0»/>
<xsd:element name = «AdditionalInformation» type = «xsd:anyURI» minOccurs = «0»/>
<xsd:element name = «ISO15745Reference» type = «ISO15745Reference_DataType»/>
<xsd:element name = «IASInterfaceType» type = «IASInterface_DataType» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element name = «ProfilesBody»>
<xsd:element ref = «DeviceIdentity» minOccurs = «0»/>
<xsd:element ref = «ProfileBody» maxOccurs = «unbounded»/>
<xsd:element ref = «connectionList»/>
<xsd:attributeGroup ref = «ag_FDCML»/>
<xsd:attribute name = «supportedLanguages» type = «xsd:NMTOKENS»/>
<xsd:element name = «provides»>
<xsd:attribute name = «ref» use = «required» type = «xsd:string»/>
<xsd:element ref = «minVal» minOccurs = «0»/>
<xsd:element ref = «maxVal» minOccurs = «0»/>
<xsd:element ref = «stepVal» minOccurs = «0»/>
<xsd:element ref = «offset» minOccurs = «0»/>
<xsd:element ref = «gain» minOccurs = «0»/>
<xsd:element ref = «default» minOccurs = «0»/>
<xsd:element ref = «on» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:attribute name = «format» type = «xsd:string»/>
<xsd:attribute name = «unit» type = «xsd:string»/>
<xsd:element name = «recalcEntity»>
<xsd:attribute name = «node» use = «required» type = «xsd:string»/>
<xsd:element name = «recalcValue»>
<xsd:attribute name = «node» use = «required» type = «xsd:string»/>
<xsd:element name = «reference»>
<xsd:attribute name = «ref» use = «required» type = «xsd:string»/>
<xsd:element name = «relations»>
<xsd:choice maxOccurs = «unbounded»>
<xsd:element ref = «disable»/>
<xsd:element name = «serialNumber»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element ref = «MAUUsageList»/>
<xsd:element ref = «defaultfile» minOccurs = «0»/>
<xsd:element ref = «file» maxOccurs = «unbounded»/>
<xsd:element ref = «specificProperty» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «instances» minOccurs = «0»/>
<xsd:attribute name = «uniqueID» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «number» use = «required» type = «xsd:string»/>
<xsd:attribute name = «enabled» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «slotList»>
<xsd:element ref = «slot» maxOccurs = «unbounded»/>
<xsd:element name = «specificationRevision»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «specificProperty»>
<xsd:sequence minOccurs = «0»>
<xsd:attribute name = «propertyType» use = «required» type = «xsd:string»/>
<xsd:attribute name = «enabled» default =«YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «NO»/>
<xsd:enumeration value = «YES»/>
<xsd:element name = «stepVal»>
<xsd:group ref = «g_numericDatatypes»/>
<xsd:group ref = «g_booleanDatatypes»/>
<xsd:group ref = «g_userDatatypes»/>
<xsd:group ref = «g_timeDatatypes»/>
<xsd:element name = «structuredType»>
<xsd:choice maxOccurs = «unbounded»>
<xsd:element ref = «varDeclaration»/>
<xsd:element ref = «subrangeVarDeclaration»/>
<xsd:element name = «subrange»>
<xsd:attribute name = «lowerLimit» use = «required» type = «xsd:string»/>
<xsd:attribute name = «upperLimit» use = «required» type = «xsd:string»/>
<xsd:element name = «subrangeType»>
<xsd:group ref = «g_integerDatatypes»/>
<xsd:element ref = «subrange»/>
<xsd:attribute name = «initialValue» type = «xsd:string»/>
<xsd:element name = «subrangeVarDeclaration»>
<xsd:group ref = «g_integerDatatypes»/>
<xsd:element ref = «subrange» minOccurs = «0»/>
<xsd:attribute name = «initialValue» type = «xsd:string»/>
<xsd:attribute name = «toolClassification» use = «required» type = «xsd:string»/>
<xsd:attribute name = «toolID» use = «required» type = «xsd:string»/>
<xsd:element name = «toolList»>
<xsd:element ref = «tool» maxOccurs = «unbounded»/>
<xsd:element name = «typeName»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:attribute name = «ref» use = «required» type = «xsd:string»/>
<xsd:element name = «varDeclaration»>
<xsd:group ref = «g_datatypes»/>
<xsd:element ref = «subrange» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:attribute name = «initialValue» type = «xsd:string»/>
<xsd:element name = «vendorID»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «vendorName»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «vendorText»>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «version»>
<xsd:attribute name = «versionType» use = «required» type = «xsd:string»/>
<xsd:attribute name = «readOnly» default = «YES»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element ref = «relations» minOccurs = «0»/>
<xsd:attribute name = «default» default = «NO»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «YES»/>
<xsd:enumeration value = «NO»/>
<xsd:element name = «associatedParameter»>
<xsd:extension base = «xsd:string»>
<xsd:attribute name = «associatedParameterValue» use = «required» type = «xsd:string»/>
<xsd:element name = «configParametersList»>
<xsd:element ref = «parameterRef» maxOccurs = «unbounded»/>
<xsd:element name = «constraint»>
xsd:documentationThe elements under Constraints aren't checked by the parser. The languages, to use to describe the constraints, don't refer to a schema.
<xsd:any namespace = «##any» processContents = «skip» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:attribute name = «constraintID» use = «required»>
<xsd:restriction base = «xsd:ID»>
<xsd:pattern value = «C\d{1,6}»/>
<xsd:attribute name = «constraintType» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «among_parameters»/>
<xsd:enumeration value = «display»/>
<xsd:enumeration value = «network»/>
<xsd:enumeration value = «device»/>
<xsd:attribute name = «constraintLanguage» use = «required» type = «xsd:string»/>
<xsd:element name = «constraintsList»>
<xsd:element ref = «constraint» maxOccurs = «unbounded»/>
<xsd:element name = «commandParameter»>
<xsd:extension base = «xsd:string»>
<xsd:attribute name = «commandParameterValue» use = «required» type = «xsd:string»/>
<xsd:element name = «defaultValue»>
<xsd:extension base = «xsd:string»>
<xsd:attributeGroup ref = «type»/>
<xsd:element name = «function»>
<xsd:element ref = «inputsList» minOccurs = «0»/>
<xsd:element ref = «outputsList» minOccurs = «0»/>
<xsd:element ref = «configParametersList» minOccurs = «0»/>
<xsd:element ref = «constraintsList» minOccurs = «0»/>
<xsd:element name = «functionStateTransitionDiagram» minOccurs = «0»>
<xsd:element ref = «stateTransitionDiagram»/>
<xsd:attribute name = «name» use = «required» type = «xsd:string»/>
<xsd:attribute name = «description» type = «xsd:string»/>
<xsd:attribute name = «functionID» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «version» use = «required» type = «xsd:string»/>
<xsd:element name = «functionRef»>
xsd:documentationBy this way the hierarchical view of the device can be describe. There is no limitation in the level number.</xsd:documentation>
<xsd:element ref = «functionRef» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:attribute name = «functionName» use = «required» type = «xsd:string»/>
<xsd:attribute name = «functionIDREF» use = «required» type = «xsd:string»/>
<xsd:attribute name = «functionURL» type = «xsd:string»/>
<xsd:attribute name = «functionDescription» type = «xsd:string»/>
<xsd:element name = «highLimit»>
<xsd:extension base = «xsd:string»>
<xsd:attributeGroup ref = «type»/>
<xsd:element name = «inputsList»>
<xsd:element ref = «parameterRef» maxOccurs = «unbounded»/>
<xsd:element name = «listOfValues»>
<xsd:element ref = «value» maxOccurs = «unbounded»/>
<xsd:element name = «lowLimit»>
<xsd:extension base = «xsd:string»>
<xsd:attributeGroup ref = «type»/>
xsd:documentationFor dataType = array, only first member is needed</xsd:documentation>
<xsd:element ref = «defaultValue» minOccurs = «0»/>
<xsd:element ref = «lowLimit» minOccurs = «0»/>
<xsd:element ref = «highLimit» minOccurs = «0»/>
<xsd:element ref = «unit» minOccurs = «0»/>
<xsd:element ref = «listOfValues» minOccurs = «0»/>
<xsd:element ref = «membersList» minOccurs = «0»/>
<xsd:sequence minOccurs = «0»>
<xsd:element ref = «actualValue» minOccurs = «0»/>
<xsd:attribute name = «name» use = «required» type = «xsd:string»/>
<xsd:attribute name = «description» type = «xsd:string»/>
<xsd:attribute name = «memberID» use = «required» type = «xsd:string»/>
<xsd:attributeGroup ref = «dataType»/>
<xsd:element name = «membersList»>
xsd:documentationmembersList is mandatory if dataType = struct or array.</xsd:documentation>
<xsd:element ref = «member» maxOccurs = «unbounded»/>
<xsd:attribute name = «numberOfMembers» use = «required» type = «xsd:integer»/>
<xsd:element name = «outputsList»>
<xsd:element ref = «parameterRef» maxOccurs = «unbounded»/>
<xsd:element name = «parameter» type = «parameterType»/>
<xsd:element name = «state» type = «stateType»/>
<xsd:element name = «statesTab»>
<xsd:element ref = «state» maxOccurs = «unbounded»/>
<xsd:element name = «stateTransitionDiagram» type = «stateTransitionDiagramType»/>
<xsd:element name = «transition» type = «transitionType»/>
<xsd:element name = «transtionsTab»>
<xsd:element ref = «transition» maxOccurs = «unbounded»/>
<xsd:attribute name = «multiplier» use = «required» type = «xsd:string»/>
<xsd:attribute name = «unitURI» type = «xsd:anyURI»/>
<xsd:extension base = «xsd:string»>
<xsd:attribute name = «meaning» type = «xsd:string»/>
<xsd:complexType name = «parameterType»>
<xsd:element ref = «defaultValue» minOccurs = «0»/>
<xsd:element ref = «lowLimit» minOccurs = «0»/>
<xsd:element ref = «highLimit» minOccurs = «0»/>
<xsd:element ref = «unit» minOccurs = «0»/>
<xsd:element ref = «listOfValues» minOccurs = «0»/>
<xsd:element ref = «membersList» minOccurs = «0»/>
<xsd:element ref = «actualValue» minOccurs = «0»/>
<xsd:sequence minOccurs = «0»>
<xsd:attribute name = «name» use = «required» type = «xsd:string»/>
<xsd:attribute name = «denotation» type = «xsd:string»/>
<xsd:attribute name = «description» type = «xsd:string»/>
<xsd:attribute name = «paramID» use = «required» type = «xsd:ID»/>
<xsd:attributeGroup ref = «accessCategory»/>
<xsd:attribute name = «constraintIDREF» type = «xsd:IDREF»/>
<xsd:attributeGroup ref = «dataType»/>
<xsd:attributeGroup ref = «persistent»/>
<xsd:attributeGroup ref = «use»/>
<xsd:complexType name = «stateType»>
<xsd:element ref = «associatedParameter»/>
<xsd:attribute name = «description» type = «xsd:string»/>
<xsd:attribute name = «initialState» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «false»/>
<xsd:enumeration value = «true»/>
<xsd:attribute name = «stateName» use = «required» type = «xsd:ID»/>
<xsd:attribute name = «stateParent» type = «xsd:string»/>
<xsd:complexType name = «transitionType»>
<xsd:element ref = «commandParameter» maxOccurs = «unbounded»/>
<xsd:attribute name = «description» type = «xsd:string»/>
<xsd:attribute name = «transitionNumber» use = «required»>
xsd:documentationNumber format = Tx to Txxxxxx</xsd:documentation>
<xsd:restriction base = «xsd:ID»>
<xsd:pattern value = «T\d{1,6}»/>
<xsd:attribute name = «fromState» use = «required» type = «xsd:IDREF»/>
<xsd:attribute name = «toState» use = «required» type = «xsd:IDREF»/>
<xsd:complexType name = «stateTransitionDiagramType»>
<xsd:element ref = «statesTab»/>
<xsd:element ref = «transtionsTab»/>
<xsd:element name = «actualValue» type = «xsd:string»/>
<xsd:element name = «CANopenIdentity»>
<xsd:element name = «CANopenVendorId»>
<xsd:extension base = «xsd:unsignedLong»>
<xsd:attribute name = «paramId» use = «required» type = «xsd:ID»/>
<xsd:element name = «CANopenProductCode» minOccurs = «0»>
<xsd:extension base = «xsd:unsignedLong»>
<xsd:attribute name = «paramId» use = «required» type = «xsd:ID»/>
<xsd:element name = «CANopenRevisionNumber» minOccurs = «0»>
<xsd:extension base = «xsd:unsignedLong»>
<xsd:attribute name = «paramId» use = «required» type = «xsd:ID»/>
<xsd:element name = «CANopenSerialNumber» minOccurs = «0»>
<xsd:extension base = «xsd:unsignedLong»>
<xsd:attribute name = «paramId» use = «required» type = «xsd:ID»/>
<xsd:element name = «CANopenManufacturerDeviceName» minOccurs = «0»>
<xsd:extension base = «xsd:string»>
<xsd:attribute name = «paramId» use = «required» type = «xsd:ID»/>
<xsd:element name = «CANopenManufacturerHardwareVersion» minOccurs = «0»>
<xsd:extension base = «xsd:string»>
<xsd:attribute name = «paramId» use = «required» type = «xsd:ID»/>
<xsd:element name = «CANopenManufacturerSoftwareVersion» minOccurs = «0»>
<xsd:extension base = «xsd:string»>
<xsd:attribute name = «paramId» use = «required» type = «xsd:ID»/>
<xsd:element name = «CANopenDedicatedCfgCategory»>
<xsd:element name = «CANopenGeneralCapabilities»>
<xsd:element name = «CANopenDeviceCommissioning» minOccurs = «0»>
<xsd:element name = «parameterRef»>
<xsd:attribute name = «paramID» use = «required» type = «xsd:IDREF»/>
<xsd:element name = «CANopenObjectAccessList»>
<xsd:element name = «CANopenObject» maxOccurs = «65536»>
<xsd:element name = «CANopenSubObject» maxOccurs = «255»>
<xsd:attribute name = «subIndex» use = «required» type = «xsd:unsignedByte»/>
<xsd:attribute name = «pdoMapping» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «NotAllowed»/>
<xsd:enumeration value = «ReceiveOnly»/>
<xsd:enumeration value = «TransmitOnly»/>
<xsd:enumeration value = «ReceiveTransmit»/>
<xsd:attribute name = «paramID» type = «xsd:IDREF»/>
<xsd:attribute name = «maxSubNumber» type = «xsd:unsignedByte»/>
<xsd:attribute name = «index» use = «required» type = «xsd:unsignedShort»/>
<xsd:attribute name = «objectCode» use = «required» type = «xsd:unsignedByte»/>
<xsd:schema targetNamespace=«http://www.FDCML.org»
xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns:xlink=«http://www.w3.org/1999/xlink»
elementFormDefault=«qualified»
attributeFormDefault=«unqualified»
<xsd:include schemaLocation=«FDCMLdt.xsd»/>
<xsd:import namespace=«http://www.w3.org/1999/xlink» schemaLocation=«xlinkdef.xsd»/>
<xsd:element name=«binaryDate» nillable=«true»>
xsd:documentationBinary Date w/ 7 octets</xsd:documentation>
<xsd:restriction base=«xsd:string»/>
<xsd:element name=«binaryDate2000» nillable=«true»>
xsd:documentationBinary Date w/ 8 octets</xsd:documentation>
<xsd:restriction base=«xsd:string»/>
<xsd:element name=«binaryTime0» nillable=«true»>
xsd:documentationbinary number w/ 2 octets, unit is 10 us</xsd:documentation>
<xsd:restriction base=«xsd:unsignedShort»/>
<xsd:element name=«binaryTime1» nillable=«true»>
xsd:documentationbinary number w/ 2 octets, unit is 100 us</xsd:documentation>
<xsd:restriction base=«xsd:unsignedShort»/>
<xsd:element name=«binaryTime2» nillable=«true»>
xsd:documentationbinary number w/ 2 octets, unit is 1 ms</xsd:documentation>
<xsd:restriction base=«xsd:unsignedShort»/>
<xsd:element name=«binaryTime3» nillable=«true»>
xsd:documentationbinary number w/ 2 octets, unit is 10 ms</xsd:documentation>
<xsd:restriction base=«xsd:unsignedShort»/>
<xsd:element name=«binaryTime4» nillable=«true»>
xsd:documentationbinary number w/ 4 octets, unit is 10 us</xsd:documentation>
<xsd:restriction base=«xsd:unsignedInt»/>
<xsd:element name=«binaryTime5» nillable=«true»>
xsd:documentationbinary number w/ 4 octets, unit is 100 us</xsd:documentation>
<xsd:restriction base=«xsd:unsignedInt»/>
<xsd:element name=«binaryTime6» nillable=«true»>
xsd:documentationbinary number w/ 4 octets, unit is 1 ms</xsd:documentation>
<xsd:restriction base=«xsd:unsignedInt»/>
<xsd:element name=«binaryTime7» nillable=«true»>
xsd:documentationbinary number w/ 6 octets, unit is 1 ms</xsd:documentation>
<xsd:restriction base=«xsd:unsignedLong»>
<xsd:maxInclusive value=«281474976710655»/>
<xsd:element name=«binaryTime8» nillable=«true»>
xsd:documentationbinary number w/ 6 octets, unit is 10 us</xsd:documentation>
<xsd:restriction base=«xsd:unsignedLong»>
<xsd:maxInclusive value=«281474976710655»/>
<xsd:element name=«binaryTime9» nillable=«true»>
xsd:documentationbinary number w/ 6 octets, unit is 100 us</xsd:documentation>
<xsd:restriction base=«xsd:unsignedLong»>
<xsd:maxInclusive value=«281474976710655»/>
<xsd:simpleType name=«t_bitstring»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«(([0-1]{8})_?)*([0-1]{8})»/>
<xsd:element name=«bitstring» nillable=«true»>
xsd:documentationsting of bits (length in octets)</xsd:documentation>
<xsd:extension base=«t_bitstring»>
<xsd:attribute name=«length» type=«xsd:nonNegativeInteger» use=«required»/>
<xsd:attribute name=«IEC61131» type=«xsd:string» use=«optional»/>
<xsd:attribute name=«WinVT» type=«xsd:string» use=«optional»/>
<xsd:simpleType name=«t_bitstring16»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«0x([0-9]|[A-F]){4}»/>
<xsd:simpleType name=«t_bitstring32»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«0x([0-9]|[A-F]){8}»/>
<xsd:simpleType name=«t_bitstring64»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«0x([0-9]|[A-F]){16}»/>
<xsd:simpleType name=«t_bitstring8»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«0x([0-9]|[A-F]){2}»/>
<xsd:element name=«boolean» nillable=«true»>
xsd:documentationone bit representing the values true and false</xsd:documentation>
<xsd:extension base=«xsd:boolean»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«BOOL»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_BOOL»/>
<xsd:element name=«bool» nillable=«true»>
xsd:documentationoctet representing the values true and false</xsd:documentation>
<xsd:extension base=«xsd:boolean»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«BOOL»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_BOOL»/>
<xsd:element name=«byte» nillable=«true»>
xsd:documentationstring of 8 bit (byte)</xsd:documentation>
<xsd:extension base=«t_bitstring8»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«BYTE»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_UI1»/>
<xsd:simpleType name=«t_compactBooleanArray»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«0x([0-9]|[A-F]){2}»/>
<xsd:element name=«compactBooleanArray» nillable=«true»>
xsd:documentationarray of 8 bits, length one octet</xsd:documentation>
<xsd:extension base=«t_compactBooleanArray»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«BYTE»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_UI1»/>
<xsd:element name=«date_and_time» nillable=«true»>
xsd:documentationstructured datatype consiting of timeOfDay4 and date2</xsd:documentation>
xsd:documentationrepresented by ISO 8601 dateTime</xsd:documentation>
<xsd:extension base=«xsd:dateTime»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«DATE_AND_TIME»/>
<xsd:element name=«date» nillable=«true»>
xsd:documentationDate without time indication</xsd:documentation>
xsd:documentationrepresented by ISO 8601 date</xsd:documentation>
<xsd:extension base=«xsd:date»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«DATE»/>
<xsd:element name=«date7» nillable=«true»>
xsd:documentationDate with time indication</xsd:documentation>
xsd:documentationrestricted later ?</xsd:documentation>
<xsd:extension base=«xsd:string»/>
<xsd:element name=«dint» nillable=«true»>
xsd:documentationbinary number w/ 4 octets</xsd:documentation>
<xsd:extension base=«xsd:int»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«DINT»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_I4»/>
<xsd:element name=«dword» nillable=«true»>
xsd:documentationstring of 32 bit (dword)</xsd:documentation>
<xsd:extension base=«t_bitstring32»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«DWORD»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_UI4»/>
<xsd:element name=«fieldbusTime» nillable=«true»>
xsd:documentationIEC 61158-4 DL-Time</xsd:documentation>
xsd:documentationrestricted later ?</xsd:documentation>
<xsd:extension base=«xsd:string»/>
<xsd:element name=«fTime» nillable=«true»>
xsd:documentationbinary number w/ 4 octets, unit is 1 us</xsd:documentation>
xsd:documentation4 octets, unit is 1 us</xsd:documentation>
<xsd:extension base=«xsd:int»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«DINT»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_I4»/>
<xsd:element name=«int» nillable=«true»>
xsd:documentationbinary number w/ 2 octets</xsd:documentation>
<xsd:extension base=«xsd:short»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«INT»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_I2»/>
<xsd:element name=«IPV4Address» nillable=«true»>
xsd:documentationIP V4 address in dotted notation</xsd:documentation>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«((([0-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])).){3}(([0-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))»/>
<xsd:element name=«IPV6Address» nillable=«true»>
xsd:documentationIP V6 address in dotted notation</xsd:documentation>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«((([0-9])|([1-9][0-9])|(1 [0-9][0-9])|(2[0-4][0-9])|(25[0-5])).){5}(([0-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))»/>
<xsd:element name=«iTime» nillable=«true»>
xsd:documentationbinary number w/ 2 octets, unit is 1 ms</xsd:documentation>
xsd:documentation2 octets, unit is 1 ms</xsd:documentation>
<xsd:extension base=«xsd:short»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«INT»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_I2»/>
<xsd:element name=«lint» nillable=«true»>
xsd:documentationbinary number w/ 8 octets</xsd:documentation>
<xsd:extension base=«xsd:long»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«LINT»/>
<xsd:element name=«lreal» nillable=«true»>
xsd:documentationANSI/IEEE 754 double precision</xsd:documentation>
<xsd:extension base=«xsd:double»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«LREAL»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_R8»/>
<xsd:element name=«lTime» nillable=«true»>
xsd:documentationbinary number w/ 8 octets, unit is 1 us</xsd:documentation>
xsd:documentation8 octets, unit is 1 us</xsd:documentation>
<xsd:extension base=«xsd:long»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«LINT»/>
<xsd:element name=«lword» nillable=«true»>
xsd:documentationstring of 64 bit (lword)</xsd:documentation>
<xsd:extension base=«t_bitstring64»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«LWORD»/>
<xsd:simpleType name=«t_octetString»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«(0x([0-9]|[A-F]){2},)*0x([0-9]|[A-F]){2}»/>
<xsd:element name=«octetString» nillable=«true»>
xsd:documentationordered sequence of octets, length in octets</xsd:documentation>
<xsd:extension base=«t_octetString»>
<xsd:attribute name=«length» type=«xsd:nonNegativeInteger» use=«required»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_BSTR»/>
<xsd:simpleType name=«t_octetString1»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«0x([0-9]|[A-F]){2}»/>
<xsd:element name=«octetString1» nillable=«true»>
xsd:documentation 1 octet</xsd:documentation>
<xsd:extension base=«t_octetString1»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«BYTE»/>
<xsd:attribute name=«WinVT» type=«xsd:string»fixed=«VT_UI1»/>
<xsd:simpleType name=«t_octetString16»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«0x([0-9]|[A-F]){32}»/>
<xsd:element name=«octetString16» nillable=«true»>
xsd:documentationordered sequence of 16 octets</xsd:documentation>
<xsd:extension base=«t_octetString16»>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_BSTR»/>
<xsd:simpleType name=«t_octetString2»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«0x([0-9]|[A-F]){4}»/>
<xsd:element name=«octetString2» nillable=«true»>
xsd:documentationordered sequence of 2 octets</xsd:documentation>
<xsd:extension base=«t_octetString2»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«WORD»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_UI2»/>
<xsd:simpleType name=«t_octetString4»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«0x([0-9]|[A-F]){8}»/>
<xsd:element name=«octetString4» nillable=«true»>
xsd:documentationordered sequence of 4 octets</xsd:documentation>
<xsd:extension base=«t_octetString4»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«DWORD»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_UI4»/>
<xsd:simpleType name=«t_octetString8»>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«0x([0-9]|[A-F]){16}»/>
<xsd:element name=«octetString8» nillable=«true»>
xsd:documentationordered sequence of 8 octets</xsd:documentation>
<xsd:extension base=«t_octetString8»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«LWORD»/>
<xsd:element name=«real» nillable=«true»>
xsd:documentationANSI/IEEE 754 single precision</xsd:documentation>
<xsd:extension base=«xsd:float»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«REAL»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_R4»/>
<xsd:element name=«sint» nillable=«true»>
xsd:documentationbinary number w/ 1 octet</xsd:documentation>
<xsd:extension base=«xsd:byte»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«SINT»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_I1»/>
<xsd:element name=«time» nillable=«true»>
xsd:documentationbinary number w/ 4 octets, unit is 1 ms</xsd:documentation>
xsd:documentation4 octets, unit is 1 ms</xsd:documentation>
<xsd:extension base=«xsd:int»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«TIME»/>
<xsd:element name=«timeDifference4» nillable=«true»>
xsd:documentationbinary number w/ 4 octets, unit is 1 ms</xsd:documentation>
xsd:documentationTimeDifference without date indication</xsd:documentation>
<xsd:extension base=«xsd:unsignedInt»/>
<xsd:element name=«timeDifference6» nillable=«true»>
xsd:documentationtime difference with additional difference in days</xsd:documentation>
xsd:documentationrestricted later ?</xsd:documentation>
<xsd:extension base=«xsd:string»/>
<xsd:element name=«timeOfDay6» nillable=«true»>
xsd:documentationtime of day with date indication</xsd:documentation>
xsd:documentationrestricted later ?</xsd:documentation>
<xsd:extension base=«xsd:string»/>
<xsd:element name=«time_of_day» nillable=«true»>
xsd:documentationtime of day without date indication</xsd:documentation>
xsd:documentationTimeOfDay without date indication</xsd:documentation>
<xsd:extension base=«xsd:unsignedInt»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«TIME_OF_DAY»/>
<xsd:element name=«timeValue» nillable=«true»>
xsd:documentationbinary number w/ 8 octets, unit is 1/32 ms</xsd:documentation>
xsd:documentationunit of time is 1/32 millisecond</xsd:documentation>
<xsd:extension base=«xsd:unsignedLong»/>
<xsd:element name=«universalTime» nillable=«true»>
xsd:documentation12 octet string YYMMDDHHMMSS</xsd:documentation>
<xsd:restriction base=«xsd:string»>
<xsd:pattern value=«([0-9]{2})((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))(([0-1][0-9])|(2[0-3]))(([0-5][0-9]){2})»/>
<xsd:element name=«udint» nillable=«true»>
xsd:documentationbinary number w/ 4 octets and sign bit</xsd:documentation>
<xsd:extension base=«xsd:unsignedInt»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«UDINT»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_UI4»/>
<xsd:element name=«uint» nillable=«true»>
xsd:documentationbinary number w/ 2 octets and sign bit</xsd:documentation>
<xsd:extension base=«xsd:unsignedShort»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«UINT»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_UI2»/>
<xsd:element name=«ulint» nillable=«true»>
xsd:documentationbinary number w/ 8 octets and sign bit</xsd:documentation>
<xsd:extension base=«xsd:unsignedLong»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«ULINT»/>
<xsd:element name=«usint» nillable=«true»>
xsd:documentationbinary number w/ 1 octet and sign bit</xsd:documentation>
<xsd:extension base=«xsd:unsignedByte»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«USINT»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_UI1»/>
<xsd:element name=«visibleString» nillable=«true»>
xsd:documentationVisibleString1, VisibleString2, VisibleString4, VisibleString8, VisibleString16, UNICODE Char, VisibleString, UNICODEString</xsd:documentation>
xsd:documentationthis type resembles the 61158 datatypes visibleString[n], UNICODE char, visibleString, UNICODEString, string, string1, string2, stringn, shortString</xsd:documentation>
<xsd:extension base=«xsd:string»>
<xsd:attribute ref=«xml:lang» use=«optional»/>
<xsd:attribute name=«maxLen» type=«xsd:nonNegativeInteger» use=«optional»/>
<xsd:attribute name=«charSet» type=«xsd:string» use=«optional»/>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«STRING»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«BSTR»/>
<xsd:element name=«word» nillable=«true»>
xsd:documentationstring of 16 bit (word)</xsd:documentation>
<xsd:extension base=«t_bitstring16»>
<xsd:attribute name=«IEC61131» type=«xsd:string» fixed=«WORD»/>
<xsd:attribute name=«WinVT» type=«xsd:string» fixed=«VT_UI2»/>
<xsd:element name=«array» nillable=«true»>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«dim» type=«xsd:nonNegativeInteger» use=«required»/>
<xsd:attribute name=«maxDim» type=«xsd:nonNegativeInteger» use=«optional»/>
<xsd:attribute name=«embeddedDatatype» use=«required»>
<xsd:restriction base=«xsd:string»>
<xsd:enumeration value=«boolean»/>
<xsd:enumeration value=«bool»/>
<xsd:enumeration value=«sint»/>
<xsd:enumeration value=«int»/>
<xsd:enumeration value=«dint»/>
<xsd:enumeration value=«lint»/>
<xsd:enumeration value=«usint»/>
<xsd:enumeration value=«uint»/>
<xsd:enumeration value=«udint»/>
<xsd:enumeration value=«ulint»/>
<xsd:enumeration value=«real»/>
<xsd:enumeration value=«Ireal»/>
<xsd:enumeration value=«byte»/>
<xsd:enumeration value=«word»/>
<xsd:enumeration value=«dword»/>
<xsd:enumeration value=«Iword»/>
<xsd:enumeration value=«binaryDate»/>
<xsd:enumeration value=«binaryDate2000»/>
<xsd:enumeration value=«date7»/>
<xsd:enumeration value=«date»/>
<xsd:enumeration value=«timeOfDay6»/>
<xsd:enumeration value=«time_of_day»/>
<xsd:enumeration value=«timeDifference6»/>
<xsd:enumeration value=«timeDifference4»/>
<xsd:enumeration value=«timeValue»/>
<xsd:enumeration value=«time»/>
<xsd:enumeration value=«iTime»/>
<xsd:enumeration value=«fTime»/>
<xsd:enumeration value=«lTime»/>
<xsd:enumeration value=«universalTime»/>
<xsd:enumeration value=«fieldbusTime»/>
<xsd:enumeration value=«visibleString»/>
<xsd:enumeration value=«octetString»/>
<xsd:enumeration value=«octetString1»/>
<xsd:enumeration value=«octetString2»/>
<xsd:enumeration value=«octetString4»/>
<xsd:enumeration value=«octetString8»/>
<xsd:enumeration value=«octetString16»/>
<xsd:enumeration value=«binaryTime0»/>
<xsd:enumeration value=«binaryTime1»/>
<xsd:enumeration value=«binaryTime2»/>
<xsd:enumeration value=«binaryTime3»/>
<xsd:enumeration value=«binaryTime4»/>
<xsd:enumeration value=«binaryTime5»/>
<xsd:enumeration value=«binaryTime6»/>
<xsd:enumeration value=«binaryTime7»/>
<xsd:enumeration value=«binaryTime8»/>
<xsd:enumeration value=«binaryTime9»/>
<xsd:enumeration value=«compactBooleanArray»/>
<xsd:enumeration value=«date_and_time»/>
<xsd:enumeration value=«record»/>
<xsd:enumeration value=«array»/>
<xsd:enumeration value=«IPV4Address»/>
<xsd:enumeration value=«IPV6Address»/>
<xsd:attribute name=«embeddedStringLength» type=«xsd:nonNegativeInteger» use=«optional»/>
<xsd:element name=«record» nillable=«true»>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«elements» type=«xsd:nonNegativeInteger» use=«required»/>
<xsd:attribute name=«maxElements» type=«xsd:nonNegativeInteger» use=«optional»/>
<xsd:attribute name=«octetLength» type=«xsd:nonNegativeInteger» use=«optional»/>
<xsd:attribute name=«format» type=«xsd:string» use=«optional»/>
<xsd:element name=«udt» nillable=«true»>
xsd:documentationuser defined simple data type</xsd:documentation>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«name» type=«xsd:string» use=«required»/>
<xsd:attribute name=«bitLength» type=«xsd:integer» use=«required»/>
<xsd:attribute name=«interpretation» use=«required»>
<xsd:restriction base=«xsd:string»>
<xsd:enumeration value=«BIT»/>
<xsd:enumeration value=«UNSIGNED»/>
<xsd:enumeration value=«INTEGER»/>
<xsd:attribute name=«IEC61131» type=«xsd:string» use=«optional»/>
<xsd:attribute name=«WinVT» type=«xsd:string» use=«optional»/>
<xsd:group name=«g_booleanDatatypes»>
xsd:documentationgroup of boolean data types</xsd:documentation>
<xsd:element ref=«octetString1»/>
<xsd:element ref=«octetString2»/>
<xsd:element ref=«octetString4»/>
<xsd:element ref=«octetString8»/>
<xsd:element ref=«octetString16»/>
<xsd:element ref=«compactBooleanArray»/>
<xsd:group name=«g_signedIntegerDatatypes»>
xsd:documentationgroup of signed integer data types</xsd:documentation>
<xsd:group name=«g_unsignedIntegerDatatypes»>
xsd:documentationgroup of unsigned integer data types</xsd:documentation>
<xsd:group name=«g_floatDatatypes»>
xsd:documentationgroup of float data types</xsd:documentation>
<xsd:group name=«g_integerDatatypes»>
xsd:documentationgroup of integer data types</xsd:documentation>
<xsd:group ref=«g_signedIntegerDatatypes»/>
<xsd:group ref=«g_unsignedIntegerDatatypes»/>
<xsd:group name=«g_numericDatatypes»>
xsd:documentationgroup of numeric data types</xsd:documentation>
<xsd:group ref=«g_integerDatatypes»/>
<xsd:group ref=«g_floatDatatypes»/>
<xsd:group name=«g_userDatatypes»>
xsd:documentationgroup of user defined simple data types</xsd:documentation>
<xsd:group name=«g_dateDatatypes»>
xsd:documentationgroup of date data types</xsd:documentation>
<xsd:element ref=«binaryDate»/>
<xsd:element ref=«binaryDate2000»/>
<xsd:group name=«g_dtDatatypes»>
xsd:documentationgroup of date and time data types</xsd:documentation>
<xsd:element ref=«timeOfDay6»/>
<xsd:element ref=«timeDifference6»/>
<xsd:element ref=«universalTime»/>
<xsd:element ref=«date_and_time»/>
<xsd:element ref=«fieldbusTime»/>
<xsd:group name=«g_timeDatatypes»>
xsd:documentationgroup of time data types</xsd:documentation>
<xsd:element ref=«time_of_day»/>
<xsd:element ref=«timeDifference4»/>
<xsd:element ref=«binaryTime0»/>
<xsd:element ref=«binaryTime1»/>
<xsd:element ref=«binaryTime2»/>
<xsd:element ref=«binaryTime3»/>
<xsd:element ref=«binaryTime4»/>
<xsd:element ref=«binaryTime5»/>
<xsd:element ref=«binaryTime6»/>
<xsd:element ref=«binaryTime7»/>
<xsd:element ref=«binaryTime8»/>
<xsd:element ref=«binaryTime9»/>
<xsd:group name=«g_stringDatatypes»>
xsd:documentationgroup of string data types</xsd:documentation>
<xsd:element ref=«visibleString»/>
<xsd:element ref=«octetString»/>
<xsd:element ref=«bitstring»/>
<xsd:element ref=«IPV4Address»/>
<xsd:element ref=«IPV6Address»/>
<xsd:group name=«g_complexDatatypes»>
xsd:documentationgroup of complex data types</xsd:documentation>
<xsd:group name=«g_datatypes»>
xsd:documentationgroup of all FDCML data types</xsd:documentation>
<xsd:group ref=«g_numericDatatypes»/>
<xsd:group ref=«g_userDatatypes»/>
<xsd:group ref=«g_dateDatatypes»/>
<xsd:group ref=«g_stringDatatypes»/>
<xsd:group ref=«g_complexDatatypes»/>
<xsd:group ref=«g_booleanDatatypes»/>
<xsd:group ref=«g_dtDatatypes»/>
<xsd:group ref=«g_timeDatatypes»/>
B.1.5.3 FDCMLISO15745DeviceFunction.xsd
<xsd:schema targetNamespace=«http://www.fdcml.org/DeviceFunction»
xmlns:xlink=«http://www.w3.org/1999/xlink» xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns=«http://www.fdcml.org/DeviceFunction» elementFormDefault=«qualified»
attributeFormDefault=«unqualified»>
<xsd:import namespace=«http://www.w3.org/XML/1998/namespace» schemaLocation=«xmldef.xsd»/>
<xsd:import namespace=«http://www.w3.org/1999/xlink» schemaLocation=«xlinkdef.xsd»/>
<xsd:complexType name=«parameterType»>
<xsd:element ref=«defaultValue» minOccurs=«0»/>
<xsd:element ref=«lowLimit» minOccurs=«0»/>
<xsd:element ref=«highLimit» minOccurs=«0»/>
<xsd:element ref=«unit» minOccurs=«0»/>
<xsd:element ref=«listOfValues» minOccurs=«0»/>
<xsd:element ref=«membersList» minOccurs=«0»/>
<xsd:element ref=«actualValue» minOccurs=«0»/>
<xsd:attribute name=«name» type=«xsd:string» use=«required»/>
<xsd:attribute name=«denotation» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:attribute name=«paramID» type=«xsd:ID» use=«required»/>
<xsd:attributeGroup ref=«accessCategory»/>
<xsd:attribute name=«constraintIDREF» type=«xsd:IDREF»/>
<xsd:attributeGroup ref=«dataType»/>
<xsd:attributeGroup ref=«persistent»/>
<xsd:attributeGroup ref=«use»/>
<xsd:complexType name=«stateTransitionDiagramType»>
<xsd:element ref=«statesTab»/>
<xsd:element ref=«transitionsTab»/>
<xsd:complexType name=«stateType»>
<xsd:element ref=«associatedParameter»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:attribute name=«initialState» use=«required»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«false»/>
<xsd:enumeration value=«true»/>
<xsd:attribute name=«stateName» type=«xsd:ID» use=«required»/>
<xsd:attribute name=«stateParent» type=«xsd:string»/>
<xsd:complexType name=«transitionType»>
<xsd:element ref=«commandParameter» maxOccurs=«unbounded»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:attribute name=«transitionNumber» use=«required»>
xsd:documentationNumber format = Tx to Txxxxxx</xsd:documentation>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«T\d{1,6}»/>
<xsd:attribute name=«fromState» type=«xsd:IDREF» use=«required»/>
<xsd:attribute name=«toState» type=«xsd:IDREF» use=«required»/>
<xsd:element name=«actualValue» type=«xsd:string»/>
<xsd:element name=«associatedParameter»>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«associatedParameterValue» type=«xsd:string» use=«required»/>
<xsd:element name=«commandParameter»>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«commandParameterValue» type=«xsd:string» use=«required»/>
<xsd:element name=«configParametersList»>
<xsd:element ref=«parameterRef» maxOccurs=«unbounded»/>
<xsd:element name=«constraint»>
xsd:documentationThe elements under Constraints aren't checked by the parser. The languages, to use to describe the constraints, don't refer to a schema.
<xsd:any namespace=«##any» processContents=«skip» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«constraintID» use=«required»>
<xsd:restriction base=«xsd:ID»>
<xsd:pattern value=«C\d{1,6}»/>
<xsd:attribute name=«constraintType» use=«required»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«among_parameters»/>
<xsd:enumeration value=«display»/>
<xsd:enumeration value=«network»/>
<xsd:enumeration value=«device»/>
<xsd:attribute name=«constraintLanguage» type=«xsd:string» use=«required»/>
<xsd:element name=«constraintsList»>
<xsd:element ref=«constraint» maxOccurs=«unbounded»/>
<xsd:element name=«defaultValue»>
<xsd:extension base=«xsd:string»>
<xsd:attributeGroup ref=«type»/>
<xsd:element ref=«inputsList» minOccurs=«0»/>
<xsd:element ref=«outputsList» minOccurs=«0»/>
<xsd:element ref=«configParametersList» minOccurs=«0»/>
<xsd:element ref=«constraintsList» minOccurs=«0»/>
<xsd:element name=«functionStateTransitionDiagram» minOccurs=«0»>
<xsd:element ref=«stateTransitionDiagram»/>
<xsd:attribute name=«name» type=«xsd:string» use=«required»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:attribute name=«functionID» type=«xsd:ID» use=«required»/>
<xsd:attribute name=«version» type=«xsd:string» use=«required»/>
<xsd:element name=«functionRef»>
xsd:documentationBy this way the hierarchical view of the device can be described. There is no limitation in the level number.</xsd:documentation>
<xsd:element ref=«functionRef» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«functionName» type=«xsd:string» use=«required»/>
<xsd:attribute name=«functionIDREF» type=«xsd:string» use=«required»/>
<xsd:attribute name=«functionURL» type=«xsd:string»/>
<xsd:attribute name=«functionDescription» type=«xsd:string»/>
<xsd:element name=«functionView»>
xsd:documentationNetwork independent description of the intrinsic function of a device, from a configuration and service (i.e.: tuning, maintenance, diagnostic,
) perspective</xsd:documentation>
<xsd:element name=«functionList» minOccurs=«0»>
<xsd:element ref=«function» maxOccurs=«unbounded»/>
<xsd:element name=«parameterList»>
<xsd:element ref=«parameter» maxOccurs=«unbounded»/>
<xsd:element name=«functionAnalysis» minOccurs=«0»>
<xsd:element ref=«functionRef» maxOccurs=«unbounded»/>
<xsd:extension base=«xsd:string»>
<xsd:attribute ref=«xml:lang» use=«required»/>
<xsd:element name=«helpFileRef»>
<xsd:attribute name=«helpFileID» type=«xsd:string»/>
<xsd:attribute name=«helpID» type=«xsd:string»/>
<xsd:attribute name=«dictID» type=«xsd:string»/>
<xsd:attribute name=«textID» type=«xsd:string» use=«required»/>
<xsd:element name=«highLimit»>
<xsd:extension base=«xsd:string»>
<xsd:attributeGroup ref=«type»/>
<xsd:element name=«inputsList»>
<xsd:element ref=«parameterRef» maxOccurs=«unbounded»/>
<xsd:extension base=«xsd:string»>
<xsd:attribute ref=«xml:lang» use=«required»/>
<xsd:attribute ref=«xlink:type»/>
<xsd:attribute ref=«xlink:href»/>
<xsd:attribute name=«dictID» type=«xsd:string»/>
<xsd:attribute name=«textID» type=«xsd:string» use=«required»/>
<xsd:attribute ref=«xlink:type»/>
<xsd:attribute ref=«xlink:href»/>
<xsd:element name=«listOfValues»>
<xsd:element ref=«value» maxOccurs=«unbounded»/>
<xsd:extension base=«xsd:string»>
<xsd:attributeGroup ref=«type»/>
xsd:documentationFor dataType = array, only first member is needed</xsd:documentation>
<xsd:element ref=«defaultValue» minOccurs=«0»/>
<xsd:element ref=«lowLimit» minOccurs=«0»/>
<xsd:element ref=«highLimit» minOccurs=«0»/>
<xsd:element ref=«unit» minOccurs=«0»/>
<xsd:element ref=«listOfValues» minOccurs=«0»/>
<xsd:element ref=«membersList» minOccurs=«0»/>
<xsd:element ref=«actualValue» minOccurs=«0»/>
<xsd:attribute name=«name» type=«xsd:string» use=«required»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:attribute name=«memberID» type=«xsd:string» use=«required»/>
<xsd:attributeGroup ref=«dataType»/>
<xsd:element name=«membersList»>
xsd:documentationmembersList is mandatory if dataType = struct or array.</xsd:documentation>
<xsd:element ref=«member» maxOccurs=«unbounded»/>
<xsd:attribute name=«numberOfMembers» type=«xsd:integer» use=«required»/>
<xsd:element name=«outputsList»>
<xsd:element ref=«parameterRef» maxOccurs=«unbounded»/>
<xsd:element name=«parameterRef»>
<xsd:attribute name=«paramID» type=«xsd:IDREF» use=«required»/>
<xsd:element name=«parameter» type=«parameterType»/>
<xsd:element name=«state» type=«stateType»/>
<xsd:element name=«statesTab»>
<xsd:element ref=«state» maxOccurs=«unbounded»/>
<xsd:element name=«stateTransitionDiagram» type=«stateTransitionDiagramType»/>
<xsd:element name=«transition» type=«transitionType»/>
<xsd:element name=«transitionsTab»>
<xsd:element ref=«transition» maxOccurs=«unbounded»/>
<xsd:attribute name=«multiplier» type=«xsd:string» use=«required»/>
<xsd:attribute name=«unitURI» type=«xsd:anyURI»/>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«meaning» type=«xsd:string»/>
<xsd:attributeGroup name=«accessCategory»>
<xsd:attribute name=«accessCategory» use=«required»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«read»/>
<xsd:enumeration value=«write»/>
<xsd:enumeration value=«readWrite»/>
<xsd:enumeration value=«noAccess»/>
<xsd:attributeGroup name=«dataType»>
<xsd:attribute name=«dataType» use=«required»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«bool»/>
<xsd:enumeration value=«byte»/>
<xsd:enumeration value=«char»/>
<xsd:enumeration value=«word»/>
<xsd:enumeration value=«dWord»/>
<xsd:enumeration value=«IWord»/>
<xsd:enumeration value=«sInt»/>
<xsd:enumeration value=«usInt»/>
<xsd:enumeration value=«int»/>
<xsd:enumeration value=«uInt»/>
<xsd:enumeration value=«dInt»/>
<xsd:enumeration value=«udInt»/>
<xsd:enumeration value=«lInt»/>
<xsd:enumeration value=«ulInt»/>
<xsd:enumeration value=«real»/>
<xsd:enumeration value=«IReal»/>
<xsd:enumeration value=«string»/>
<xsd:enumeration value=«unicode»/>
<xsd:enumeration value=«struct»/>
<xsd:enumeration value=«physical»/>
<xsd:enumeration value=«array»/>
<xsd:attributeGroup name=«persistent»>
<xsd:attribute name=«persistent» use=«required»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«false»/>
<xsd:enumeration value=«true»/>
<xsd:enumeration value=«n.a»/>
<xsd:attributeGroup name=«type»>
<xsd:attribute name=«type» use=«required»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«fixedValue»/>
<xsd:enumeration value=«vendorSpecific»/>
<xsd:attributeGroup name=«use»>
<xsd:attribute name=«use» use=«required»>
<xsd:restriction base=«xsd:NMTOKEN»>
<xsd:enumeration value=«required»/>
<xsd:enumeration value=«optional»/>
<xsd:element ref=«label» maxOccurs=«unbounded»/>
<xsd:element ref=«help» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«helpRef» minOccurs=«0»/>
<xsd:element ref=«helpFileRef» minOccurs=«0»/>
<xsd:schema targetNamespace=«http://www.fdcml.org/TextResource» xmlns=«http://www.fdcml.org/TextResource»
xmlns:xsd=«http://www.w3.org/2001/XMLSchema» elementFormDefault=«qualified»
attributeFormDefault=«unqualified» version=«1.0»>
<xsd:import namespace=«http://www.w3.org/XML/1998/namespace» schemaLocation=«xmldef.xsd»/>
<xsd:element name=«FDCMLTextResource»>
xsd:documentationtext resource for FDCML</xsd:documentation>
<xsd:element name=«textEntry» type=«t_textEntry» maxOccurs=«unbounded»/>
<xsd:attribute ref=«xml:lang» use=«required»/>
<xsd:complexType name=«t_textEntry»>
xsd:documentationsingle text</xsd:documentation>
<xsd:extension base=«xsd:string»>
<xsd:attribute name=«textID» type=«xsd:ID» use=«required»/>
<xsd:schema targetNamespace=«http://www.w3.org/XML/1998/namespace»
xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
elementFormDefault=«unqualified»
attributeFormDefault=«unqualified»
<xsd:attribute name=«lang» type=«xsd:language»/>
<xsd:attribute name=«space» default=«preserve»>
<xsd:restriction base=«xsd:NCName»>
<xsd:enumeration value=«default»/>
<xsd:enumeration value=«preserve»/>
<xsd:schema targetNamespace=«http://www.w3.org/1999/xlink»
xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns:xlink=«http://www.w3.org/1999/xlink»
elementFormDefault=«unqualified»
attributeFormDefault=«unqualified»
<xsd:restriction base=«xsd:string»>
<xsd:enumeration value=«simple»/>
<xsd:attribute name=«href» type=«xsd:anyURI»/>
B.2 Описание шаблонов профилей коммуникационных сетей
XML файлы коммуникационных профилей должны соответствовать XML схеме профилей коммуникационных сетей, как установлено ниже.
<xsd:schema xmlns = «http://www.can-cia.org/xml/canopen/commnetworkprofile/»
targetNamespace = «http://www.can-cia.org/xml/canopen/commnetworkprofile/»
xmlns:xlink = «http://www.w3.org/1999/xlink»
xmlns:xsd = «http://www.w3.org/2001/XMLSchema»
elementFormDefault = «qualified»
attributeFormDefault = «unqualified»>
<xsd:import namespace = «http://www.w3.org/1999/xlink» schemaLocation = «xlinkdef.xsd»/>
<xsd:attributeGroup name = «use»>
<xsd:attribute name = «use» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «required»/>
<xsd:enumeration value = «optional»/>
<xsd:attributeGroup name = «type»>
<xsd:attribute name = «type» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «fixedValue»/>
<xsd:enumeration value = «vendorSpecific»/>
<xsd:attributeGroup name = «persistent»>
<xsd:attribute name = «persistent» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «false»/>
<xsd:enumeration value = «true»/>
<xsd:enumeration value = «n.a»/>
<xsd:attributeGroup name = «dataType»>
<xsd:attribute name = «dataType» use = «required»>
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «bool»/>
<xsd:enumeration value = «byte»/>
<xsd:enumeration value = «char»/>
<xsd:enumeration value = «word»/>
<xsd:enumeration value = «dWord»/>
<xsd:enumeration value = «IWord»/>
<xsd:enumeration value = «sInt»/>
<xsd:enumeration value = «usInt»/>
<xsd:enumeration value = «int»/>
<xsd:enumeration value = «uInt»/>
<xsd:enumeration value = «dInt»/>
<xsd:enumeration value = «udInt»/>
<xsd:enumeration value = «lInt»/>
<xsd:enumeration value = «ulInt»/>
<xsd:enumeration value = «real»/>
<xsd:enumeration value = «IReal»/>
<xsd:enumeration value = «string»/>
<xsd:enumeration value = «unicode»/>
<xsd:enumeration value = «struct»/>
<xsd:enumeration value = «physical»/>
<xsd:enumeration value = «array»/>
<xsd:attributeGroup name = «accessCategory»>
<xsd:attribute name = «accessCategory» use = «required»
<xsd:restriction base = «xsd:NMTOKEN»>
<xsd:enumeration value = «read»/>
<xsd:enumeration value = «write»/>
<xsd:enumeration value = «readWrite»/>
<xsd:enumeration value = «noAccess»/>
<xsd:attributeGroup name = «ag_FDCML»>
<xsd:attribute name = «formatName» fixed = «FDCML» form = «unqualified» type = «xsd:string»/>
<xsd:attribute name = «formatVersion» fixed = «2.0» form = «unqualified» type = «xsd:string»/>
<xsd:attribute name = «fileName» use = «required» form = «unqualified» type = «xsd:string»/>
<xsd:attribute name = «fileCreator» use = «required» form =«unqualified» type = «xsd:string»/>
<xsd:attribute name = «fileCreationDate» use = «required» form = «unqualified» type = «xsd:date»/>
<xsd:attribute name = «fileModificationDate» use = «required» form = «unqualified» type = «xsd:date»/>
<xsd:attribute name = «fileVersion» use = «required» form = «unqualified» type = «xsd:string»/>
<xsd:element ref = «label» maxOccurs = «unbounded»/>
<xsd:element ref = «help» minOccurs = «0» maxOccurs = «unbounded»/>
<xsd:element ref = «labelRef»/>
<xsd:element ref = «helpRef minOccurs = „0“/>»
<xsd:element ref = «helpFileRef» minOccurs = «0»/>
<!- -xmlns:xml=«http://www.w3.org/XML/1998/namespace»- ->
################ global elements
<xsd:element name = «ISO15745Profile»>
xsd:documentationDocument Element</xsd:documentation>
<xsd:element ref = «ProfileHeader»/>
<xsd:element ref = «ProfileBody»/>
<xsd:element name = «help» type = «xsd:string»/>
<xsd:element name = «helpFileRef»>
<xsd:attribute name = «helpFileID» type = «xsd:string»/>
<xsd:attribute name = «helpID» type = «xsd:string»/>
<xsd:element name = «helpRef»>
<xsd:attribute name = «dictID» type = «xsd:string»/>
<xsd:attribute name = «textID» use = «required» type = «xsd:string»/>
<xsd:simpleType name = «IASInterface_DataType»>
<xsd:union memberTypes = « „>“»
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «CSI»/>
<xsd:enumeration value = «HCI»/>
<xsd:enumeration value = «ISI»/>
<xsd:enumeration value = «API»/>
<xsd:enumeration value = «CMI»/>
<xsd:enumeration value = «ESI»/>
<xsd:enumeration value = «FSI»/>
<xsd:enumeration value = «MTI»/>
<xsd:enumeration value = «SEI»/>
<xsd:enumeration value = «USI»/>
<xsd:restriction base = «xsd:string»>
<xsd:simpleType name = «ProfileClassID_DataType»>
<xsd:restriction base = «xsd:string»>
<xsd:enumeration value = «AIP»/>
<xsd:enumeration value = «Process»/>
<xsd:enumeration value = «Information Exchange»/>
<xsd:enumeration value = «Resource»/>
<xsd:enumeration value = «Device»/>
<xsd:enumeration value = «CommunicationNetwork»/>
<xsd:enumeration value = «Equipment»/>
<xsd:enumeration value = «Human»/>
<xsd:enumeration value = «Material»/>
<xsd:element name = «ISO15745Edition» type = «xsd:positiveInteger»/>
<xsd:element name = «ISO15745Part» type = «xsd:positiveInteger»/>
<xsd:complexType name = «ISO15745Reference_DataType»>
<xsd:element name = «ISO15745Part» type = «xsd:positiveInteger»/>
<xsd:element name = «ISO15745Edition» type = «xsd:positiveInteger»/>
<xsd:element name = «ProfileTechnology» type = «xsd:string»/>
<xsd:extension base = «xsd:string»>
<xsd:attribute ref = «xlink:type»/>
<xsd:attribute ref = «xlink:href»/>
<xsd:element name = «labelRef»>
<xsd:attribute name = «dictID» type = «xsd:string»/»
<xsd:attribute name = «textID» use = «required» type = «xsd:string»/>
<xsd:attribute ref = «xlink:type»/>
<xsd:attribute ref = «xlink:href»/>
<xsd:element name = «ProfileBody»>
<xsd:element ref = «TransportLayers»/>
<xsd:element ref = «ApplicationLayers»/>
<xsd:element ref = «NetworkManagement» minOccurs = «0»/>
<xsd:attributeGroup ref = «ag_FDCML»/>
<xsd:attribute name = «supportedLanguages» type = «xsd:NMTOKENS»/>
<xsd:attribute name = «uniqueID» type = «xsd:ID»/>
<xsd:element name = «ProfileHeader»>
<xsd:element name = «ProfileIdentification» type = «xsd:string»/>
<xsd:element name = «ProfileRevision» type = «xsd:string»/>
<xsd:element name = «ProfileName» type = «xsd:string»/>
<xsd:element name = «ProfileSource» type = «xsd:string»/>
<xsd:element name = «ProfileClassID» type = «ProfileClassID_DataType»/>
<xsd:element name = «ProfileDate» type = «xsd:date» minOccurs = «0»/>
<xsd:element name = «AdditionalInformation» type = «xsd:anyURI» minOccurs = «0»/>
<xsd:element name = «ISO15745Reference» type = «ISO15745Reference_DataType»/>
<xsd:element name = «IASInterfaceType» type = «IASInterface DataType» minOccurs = «0» maxOccurs = «unbounded»/>
################ attribute groups
<xsd:element name = «communicationProfile» type = «xsd:string»/>
<xsd:element name = «TransportLayers»>
<xsd:element name = «cfgItemList»>
<xsd:sequence minOccurs = «0»>
<xsd:element name = «CANopenDedicatedCfgCategory»>
<xsd:element name = «CANopenBaudRate»>
<xsd:element name = «BaudRate10»>
<xsd:attribute name = «Supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «BaudRate20»>
<xsd:attribute name = «Supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «BaudRate50»>
<xsd:attribute name = «Supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «BaudRate125»>
<xsd:attribute name = «Supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «BaudRate250»>
<xsd:attribute name = «Supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «BaudRate500»>
<xsd:attribute name = «Supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «BaudRate800»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «BaudRate1000»>
<xsd:attribute name = «Supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «CANopenGeneralCapabilities»>
<xsd:element name = «GroupMessaging»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «DynamicChannels»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «SDORequestingDevice»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «CANopenDeviceCommissioning» minOccurs = «0»>
<xsd:element name = «BaudRate»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «BaudRate10»/>
<xsd:enumeration value = «BaudRate20»/>
<xsd:enumeration value = «BaudRate50»/>
<xsd:enumeration value = «BaudRate125»/>
<xsd:enumeration value = «BaudRate250»/>
<xsd:enumeration value = «BaudRate500»/>
<xsd:enumeration value = «BaudRate800»/>
<xsd:enumeration value = «BaudRate1000»/>
<xsd:element name = «ApplicationLayers»>
<xsd:element name = «cfgItemList»>
<xsd:sequence minOccurs = «0»>
<xsd:element name = «CANopenDedicatedCfgCategory»>
<xsd:element name = «CANopenDummyMappingDataTypes»>
<xsd:element name = «dmBoolean»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «dmInteger8»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «dmInteger16»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «dmInteger32»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «dmUnsigned8»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «dmUnsigned16»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «dmUnsigned32»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «CANopenGeneralCapabilities»>
<xsd:element name = «Granularity»>
<xsd:attribute name = «value» type = «xsd:unsignedShort»/>
<xsd:element name = «CANopenDeviceCommissioning» minOccurs = «0»>
<xsd:element name = «NetworkManagement»>
<xsd:element name = «cfgItemList»>
<xsd:sequence minOccurs = «0»>
<xsd:element name = «CANopenDedicatedCfgCategory»>
<xsd:element name = «CANopenGeneralCapabilities»>
<xsd:element name = «LayerSettingServiceSlave»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «SelfStartingDevice»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «CANopenManagerCapabilities» minOccurs = «0»>
<xsd:element name = «MasterSwitchable»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «FlyingMaster»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «SDOManager»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «ConfigurationManager»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «LayerSettingServiceMaster»>
<xsd:attribute name = «supported» use = «required»>
<xsd:restriction base = «xsd:NMTOKENS»>
<xsd:enumeration value = «No»/>
<xsd:enumeration value = «Yes»/>
<xsd:element name = «CANopenDeviceCommissioning» minOccurs = «0»>
<xsd:element name = «NodeId» type = «xsd:unsignedShort»/>
<xsd:element name = «NodeName» type = «sd:string» minOccurs = «0»/>
<xsd:element name = «NetNumber» type = «xsd:unsignedLong» minOccurs = «0»/>
<xsd:element name = «NetworkName» type = «xsd:string» minOccurs = «0»/>
<xsd:element ref = «communicationProfile» minOccurs = «0» maxOccurs = «unbounded»/>
СВЕДЕНИЯ О СООТВЕТСТВИИ ССЫЛОЧНЫХ МЕЖДУНАРОДНЫХ И ЕВРОПЕЙСКОГО РЕГИОНАЛЬНОГО СТАНДАРТОВ ССЫЛОЧНЫМ НАЦИОНАЛЬНЫМ СТАНДАРТАМ РОССИЙСКОЙ ФЕДЕРАЦИИ
| Обозначение ссылочного международного, европейского регионального стандарта | Степень соответствия | Обозначение и наименование соответствующего национального стандарта |
| ИСО 639-1:2002 | <*> | |
| ИСО 639-2:1998 | <*> | |
| ИСО 3166-1:1997 | <*> | |
| ИСО/МЭК 10646-1:2000 | <*> | |
| ИСО 11898:1993 | <*> | |
| ИСО 15745-1:2003 | <*> | |
| МЭК 61158 (все части) | <*> | |
| МЭК 61784-1:2003 | <*> | |
| МЭК 62026-3:2000 | <*> | |
| ЕН 50325-4:2002 | <*> | |
| <*> Соответствующий национальный стандарт отсутствует. До его утверждения рекомендуется использовать перевод на русский язык данного международного европейского регионального стандарта. Перевод данного международного европейского регионального стандарта находится в Федеральном информационном фонде технических регламентов и стандартов. | ||
БИБЛИОГРАФИЯ
| УДК 658.52.011.56 | ОКС 25.040.40 | Т58 |
| Ключевые слова: автоматизированные промышленные системы, интеграция, жизненный цикл систем, управление производством | ||










