Структура технологических специальных профилей коммуникационных сетей и коммуникационные аспекты структуры профилей устройств (приборов), основанные на ИСО 11898, описаны в разделе 6, включающем в себя следующие технологии:
- DeviceNet (см. 6.1);
- CANopen (см. 6.2).
Определения связанных шаблонов профилей даны в приложениях A и B.
6.1.1.1 Общие положения
На рисунке 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;
- информацию по структуре устройства (для устройств, интегрированных в модульную систему).
Сервисы позволяют:
- отключить устройство;
- осуществлять поиск атрибутов DeviceManager.
6.1.1.4 Функция устройств
Класс Функция устройств (DeviceFunction) содержит атрибуты и поддерживает сервисы, позволяющие осуществлять функциональное управление (например, конфигурирование) устройствами.
Пример - Примерами объектов DeviceFunction являются объекты перегрузки, распознавания присутствия объекта, аналоговых входных данных и дискретных выходных данных.
Примечание - Определение специального класса DeviceFunction в ИСО 15745-2 не установлено.
6.1.1.5 Прикладной процесс
На рисунке 2 показана структура класса Прикладной процесс (ApplicationProcess).
![]() Класс Компоновка (Assembly) собирает несколько элементов данных прикладного процесса в один блок для оптимизации коммуникаций. Класс Параметр (Parameter) обеспечивает стандартизованный интерфейс для оценивания отдельных элементов данных прикладного процесса. Класс Группа Параметров (ParameterGroup) устанавливает группы связанных параметров для определенной цели (например, конфигурирование, мониторинг). Класс Компоновка и класс Параметр поддерживают атрибуты и сервисы как на уровне класса, так и на уровне экземпляра.
Классы Assem (Компоновка), Param (Параметр) и Group (Группа) определяют отдельные экземпляры основных классов.
Примечание - Класс Компоновка и класс Параметр соответствуют объектам Компоновка DeviceNet и Параметр. Объект Компоновка полностью определен в МЭК 61158-5:2003 и МЭК 61158-6:2003 (тип 2).
6.1.2.1 Общие положения
На рисунке 3 показана структура классов профилей коммуникационных сетей DeviceNet.
![]() коммуникационных сетей 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.1.1 Общие положения
На рисунке 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.
![]() (DeviceIdentity)
Класс DeviceIdentity должен состоять из дочерних классов, показанных на рисунке 5 и установленных в таблице 2.
Таблица 2
6.2.1.3 Управление устройством
6.2.1.3.1 Общие положения
На рисунке 6 показано представление CANopen класса Управление устройством (DeviceManager).
![]() (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 (светоизлучающим диодом).
Объект channelList должен быть набором объектов channel. Эти объекты должны описывать физические или логические точки ввода/вывода устройства.
6.2.1.3.3.3 Объекты MAUList (Список устройств подключения к среде), MAU (Устройство подключения к среде)
Объект MAUList должен быть набором объектов MAU. Эти объекты должны описывать точки доступа к сетевым средам.
Объект slotList должен быть набором объектов slot. Объект slot должен содержать ссылку на описание внешнего обмена профилями устройства CANopen.
Примечание - Слоты используют для описания модульных устройств или отдельных комбинаций устройств.
6.2.1.3.3.5 Объекты indicatorList (Список индикаторов), LEDList (Список светоизлучающих диодов), LED (светоизлучающий диод)
Объект LEDList должен быть набором объектов LED. Этот объект должен описывать LED устройства.
Примечание - Класс indicatorList может быть расширен в последующих изданиях ИСО 15745-2.
6.2.1.3.4.1 Общие положения
На рисунке 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.
![]() Класс 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.
![]() (Функция устройства)
В случае различных представлений функции устройства для описания 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.1 Общие положения
На рисунке 10 показана диаграмма классов профиля коммуникационной сети CANopen.
![]() коммуникационной сети CANopen
XML схема, представляющая профиль коммуникационной сети CANopen, определена в приложении B. Имя файла XML схемы должно быть "COCommNetworkProfile.xsd".
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.
(обязательное)
A.1 Общие положения
Верхние уровни сети DeviceNet основаны на Общем Промышленном Протоколе (CIP). Этот протокол моделирует все коммуникационные и прикладные сущности как объекты. Передача специальных сообщений CIP требует выполнения сервисов на соответствующих экземплярах объекта (или на их атрибутах). Эта схема обеспечивает заданный доступ ко всем данным по конфигурации, состоянию и переменным рабочего цикла в узле. В то же самое время соединения ввода/вывода позволяют осуществлять прямой обмен с базой данных ввода/вывода без промежуточной обработки данных. В обоих случаях все адреса данных в устройстве устанавливаются с использованием маршрута CIP, т.е. октетного строкового потока, определяющего экземпляр прикладного объекта, атрибут и/или конечную точку соединения.
Для дистанционного конфигурирования устройств с коммуникационным интерфейсом CIP существуют разные опции, включающие в себя:
- информацию по приборам, сохраняемую в печатном или электронном формате;
- специализированные объекты Parameter Object, которые предоставляют заданный открытый интерфейс для отдельных значений данных по конфигурации/параметрам и также могут вводить дополнительную информацию по конфигурации, например описательный текст, тип данных, границы данных и данные по умолчанию;
- специализированную компоновку конфигурации, которая позволяет загружать и скачивать массивы данных по конфигурации путем группирования отдельных значений данных;
- комбинации методов, перечисленных выше.
Средства конфигурирования, доступные в настоящее время для устройств на основе CIP, используют специально отформатированный файл ASCII, называемый Электронная Информационная Таблица (EDS), который предоставляет:
- информацию, необходимую для идентификации подключенного устройства;
- описание данных по устройству, которые могут быть оценены через сеть (например, конфигурируемые параметры);
- описание коммуникационных возможностей, поддерживаемых устройством (например, соединения);
- дополнительную информацию от продавца.
EDS позволяет средствам конфигурирования автоматизировать процесс конфигурирования устройств. Требования EDS определяют открытый, согласованный и совместимый метод, позволяющий выполнить конфигурирование устройств в среде CIP.
Информация EDS во многом аналогична информации, необходимой как для профиля коммуникационной сети, так и для профиля устройств, поэтому следующие подклассы устанавливают формат для:
- шаблонов профилей коммуникационной сети и приборов, как определено в ИСО 15745-1;
- инкапсуляции унаследованных файлов EDS в шаблоны ИСО 15745 ("упаковщики");
- унаследованной Электронной Информационной Таблицы (EDS), включая общую семантическую информацию.
Примечание - EDS сети DeviceNET заданного прибора может быть получена из содержимого соответствующих XML файлов профилей приборов и коммуникационных сетей с использованием соответствующих таблиц стилей.
A.2.1 Описание шаблонов профилей устройств на основе XML
A.2.1.1 Общие положения
Файлы 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.
Таблица A.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 XML схемы
Примечание - XML схема содержит все стили, определенные как часть основного шаблона в ИСО 15745-1.
<?xml version="1.0" encoding="windows-1251" ?>
<xsd:schema xmlns:xsd="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<!- - Target namespaces are not specified in this master template - ->
<xsd:annotation>
<xsd:documentation>* HEADER DATA TYPES *</xsd:documentation>
</xsd:annotation>
<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:restriction>
</xsd:simpleType>
<xsd:complexType name="ISO15745Reference_DataType">
<xsd:sequence>
<xsd:element name="ISO15745Part" type="xsd:positiveInteger" />
<xsd:element name="ISO15745Edition" type="xsd:positiveInteger" />
<xsd:element name="ProfileTechnology" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="IASInterface_DataType">
<xsd:union>
<xsd:simpleType>
<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>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="4" />
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:annotation>
<xsd:documentation>* ISO 15745 DEFINED DATA TYPES *</xsd:documentation>
</xsd:annotation>
<xsd:complexType name="ProfileHandle_DataType">
<xsd:sequence>
<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" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Примечание - XML схема определяет элементы, составляющие ее (например, типы данных, типы элементов, группы атрибутов), используемые в других XML схемах.
<?xml version="1.0" encoding="windows-1251"?>
<xsd:schema xmlns:xsd="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<!- - Target namespaces are not specified in this master template - ->
<xsd:annotation>
<xsd:documentation>* CIP DATA TYPES *</xsd:documentation>
</xsd:annotation>
<xsd:simpleType name="dt_USINT">
<xsd:restriction base="xsd:unsignedByte"/>
</xsd:simpleType>
<xsd:simpleType name="dt_UINT">
<xsd:restriction base="xsd:unsignedShort"/>
</xsd:simpleType>
<xsd:simpleType name="dt_UDINT">
<xsd:restriction base="xsd:unsignedInt"/>
</xsd:simpleType>
<xsd:simpleType name="dt_ULINT">
<xsd:restriction base="xsd:unsignedLong"/>
</xsd:simpleType>
<xsd:simpleType name="dt_SINT">
<xsd:restriction base="xsd:byte"/>
</xsd:simpleType>
<xsd:simpleType name="dt_INT">
<xsd:restriction base="xsd:short"/>
</xsd:simpleType>
<xsd:simpleType name="dt_DINT">
<xsd:restriction base="xsd:int"/>
</xsd:simpleType>
<xsd:simpleType name="dt_LINT">
<xsd:restriction base="xsd:long"/>
</xsd:simpleType>
<xsd:simpleType name="dt_BYTE">
<xsd:restriction base="xsd:hexBinary">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="dt_WORD">
<xsd:restriction base="xsd:hexBinary">
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="dt_DWORD">
<xsd:restriction base="xsd:hexBinary">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="dt_LWORD">
<xsd:restriction base="xsd:hexBinary">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="dt_REAL">
<xsd:restriction base="xsd:float"/>
</xsd:simpleType>
<xsd:simpleType name="dt_LREAL">
<xsd:restriction base="xsd:double"/>
</xsd:simpleType>
<xsd:simpleType name="dt_EDS_Char_Array">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="dt_EPATH">
<xsd:list itemType="et_EPATH_item"/>
</xsd:simpleType>
<xsd:simpleType name="dt_STRINGI">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="dt_EDS_Date">
<xsd:restriction base="xsd:date"/>
</xsd:simpleType>
<xsd:simpleType name="dt_EDS_Time_Of_Day">
<xsd:restriction base="xsd:time"/>
</xsd:simpleType>
<xsd:simpleType name="dt_EDS_Revision">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]\.[1-9]|[1-9]\.[0-9]|[1-9]\.[1-9]"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="dt_EDS_URL">
<xsd:restriction base="xsd:anyURI">
<xsd:pattern value="/template/go.php?url=https://.*"/>
<xsd:pattern value="ftp://.*"/>
<xsd:pattern value=".*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="at_AccessType_OptionalGet">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="None"/>
<xsd:enumeration value="Get"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="at_AccessType_OptionalSet">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="None"/>
<xsd:enumeration value="Get"/>
<xsd:enumeration value="Set"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="at_AccessType_Mandatory">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="Get"/>
<xsd:enumeration value="Set"/>
</xsd:restriction>
</xsd:simpleType>
<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>
</xsd:simpleType>
<xsd:simpleType name="et_EPATH_item">
<xsd:union>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="([0-9]|[a-f]|[A-F]){2}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="SLOT"/>
<xsd:enumeration value="SLOT_MINUS_ONE"/>
<xsd:enumeration value="SYMBOL_ANSI"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType>
<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:pattern value="ProxyParam[1-9][0-9]{0,4}"/>
<xsd:pattern value="\[ProxyParam[1-9][0-9]{0,4}\]"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:simpleType name="et_ParamReference">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:pattern value="Param[1-9][0-9]{0,4}([:][0-9]{1,2})*"/>
<xsd:pattern value="ProxyParam[1-9][0-9]{0,4}([:][0-9]{1,2})*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="et_AssemReference">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:pattern value="Assem[1-9][0-9]{0,4}"/>
<xsd:pattern value="ProxyAssem[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
<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"/>
</xsd:attributeGroup>
</xsd:schema>
Примечание - XML схема включает в себя файлы "Master Template Types.xsd" (см. A.2.1.3.1) и "CIPDataTypes.xsd" (см. A.2.1.3.2).
<?xml version="1.0" encoding="windows-1251"?>
<xsd:schema xmlns:xsd="/template/go.php?url=https://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:complexContent>
<xsd:restriction base="ISO15745Reference_DataType">
<xsd:sequence>
<xsd:element name="ISO15745Part" type="xsd:positiveInteger"/>
<xsd:element name="ISO15745Edition" type="xsd:positiveInteger"/>
<xsd:element name="ProfileTechnology" type="xsd:string" fixed="CIP"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:redefine>
<xsd:include schemaLocation="CIPDataTypes.xsd"/>
<xsd:element name="ISO15745Profile">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="ProfileHeader"/>
<xsd:element ref="ProfileBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:annotation>
<xsd:documentation>* HEADER SECTION *</xsd:documentation>
</xsd:annotation>
<xsd:element name="ProfileHeader">
<xsd:complexType>
<xsd:sequence>
<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"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:annotation>
<xsd:documentation>* BODY SECTION *</xsd:documentation>
</xsd:annotation>
<xsd:element name="ProfileBody">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
<xsd:attributeGroup ref="ag_FileDescription"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeviceIdentity">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DeviceIdentity_InstanceAttributes">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="VendCode">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="dt_UINT">
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="VendName">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="dt_EDS_Char_Array"/>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="SpecificationConformance" type="dt_EDS_Char_Array"
minOccurs="0"/>
<xsd:element name="ProdType">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="dt_UINT">
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProdTypeStr">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="dt_EDS_Char_Array"/>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProdCode">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="dt_UINT">
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProdRevision">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MajRev" type="dt_USINT"/>
<xsd:element name="MinRev" type="dt_USINT"/
</xsd:sequence>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Status" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="SerialNumber" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProdName">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="State" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConfigurationConsistencyValue" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="HeartbeatInterval" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalSet"
use="required"/>
</xsd:complexType>
</xsd:element>
<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"
minOccurs="0"/>
<xsd:element name="DeviceClassification" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Class" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MainClass">
<xsd:simpleType>
<xsd:union>
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="ControlNet"/>
<xsd:enumeration value="DeviceNet"/>
<xsd:enumeration value="EtherNetIP"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base="et_VendorSpecificKeyword"/>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
</xsd:element>
<xsd:element name="SubClass" type="xsd:NMTOKEN" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="Class[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeviceIdentity_InstanceOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Get_Attribute_All">
<xsd:complexType>
<xsd:attribute ref="SupportedService" fixed="true"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Reset">
<xsd:complexType>
<xsd:attribute ref="SupportedService" fixed="true"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeviceManager">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DeviceIdentity_ClassAttributes" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ObjectRevision">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaxInstance">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaxIDClassAttributes">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaxIDInstanceAttributes">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeviceIdentity_ClassOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Get_Attribute_All">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Reset">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Find_Next_Object_Instance">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Modular" minOccurs="0">
<xsd:complexType>
<xsd:choice>
<xsd:element name="Chassis">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DefineSlotsInRack" type="dt_UINT"/>
<xsd:element name="SlotDisplayRule" type="et_ParamReference"
minOccurs="0"/>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Module">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Width" type="dt_UINT"/>
<xsd:element name="Rack" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<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"
maxOccurs="unbounded"/>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="Rack[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<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:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="Yes"/>
<xsd:enumeration value="No"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Query" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Path" type="dt_EPATH"/>
<xsd:element name="Service" type="dt_USINT"/>
<xsd:element name="Size">
<xsd:simpleType>
<xsd:restriction base="dt_USINT">
<xsd:minInclusive value="1"/>
<xsd:maxInclusive value="16"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ExternalID" type="dt_EPATH"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeviceFunction">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ApplicationProcess">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Parameter" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Parameter_Class" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Parameter_ClassAttributes">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ObjectRevision" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaxInstance">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ParameterClassDescriptor">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Get"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConfigurationAssemblyInstance">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Get"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="NativeLanguage" minOccurs="0">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalSet" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Parameter_ClassOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Get_Attribute_All">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Reset">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService" fixed="true"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Set_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Restore">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Save">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Parameter_Instance" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Parameter_InstanceAttributes" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ParameterValue">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="LinkPathSize">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="LinkPath">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ParamDescriptor">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="DataType">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="DataSize">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ParameterName">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="UnitsString">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="HelpString">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MinimumValue">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaximumValue">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="DefaultValue">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ScalingMultiplier">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ScalingDivider">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ScalingBase">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ScalingOffset">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MultiplierLink">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="DivisorLink">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="BaseLink">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="OffsetLink">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="DecimalPrecision">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Parameter_InstanceOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Get_Attribute_All">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService" fixed="true"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Set_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService" fixed="true"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Enum_String">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Param" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="et_ParamType">
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="Param[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProxyParam" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="et_ProxyParamType">
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="ProxyParam[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProxiedParam" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="et_ParamType">
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="ProxiedParam[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Assembly" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Assembly_Class" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Assembly_ClassAttributes" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ObjectRevision">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaxInstance">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Assembly_ClassOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Create">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Delete">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService" fixed="true"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Assembly_Instance" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Assembly_InstanceAttributes" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NumberOfMembers">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalGet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="AssemblyMemberList">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_OptionalSet" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="AssemblyData">
<xsd:complexType>
<xsd:attribute name="Access_Rule"
type="at_AccessType_Mandatory" use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Assembly_InstanceOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Delete">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService" fixed="true"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Set_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Member">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Set_Member">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Insert_Member">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Remove_Member">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Assem" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="et_AssemType">
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="Assem[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProxyAssem" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="et_AssemType">
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="ProxyAssem[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProxiedAssem" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="et_AssemType">
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="ProxiedAssem[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ParameterGroup" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Group" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<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:choice>
</xsd:sequence>
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="Group[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:attribute name="SupportedService" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:boolean">
<xsd:pattern value="true|false"/>
</xsd:restrictions>
</xsd:simpleType>
</xsd:attribute>
<xsd:complexType name="et_ParamType">
<xsd:sequence>
<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:element name="DataType">
<xsd:simpleType>
<xsd:union memberTypes="dt_USINT dt_EPATH"/>
</xsd:simpleType>
</xsd:element>
<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:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="EnumValue" type="dt_LINT"/>
<xsd:element name="EnumName" type="dt_EDS_Char_Array"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="et_ProxyParamType">
<xsd:complexContent>
<xsd:extension base="et_ParamType">
<xsd:sequence>
<xsd:element name="ProxyParamSizeAdder" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MinimumValue"/>
<xsd:element name="MaximumValue"/>
<xsd:element name="DefaultValue"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="et_AssemType">
<xsd:sequence>
<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:complexType>
<xsd:choice>
<xsd:element name="MemberSize" type="dt_UINT"/>
<xsd:element name="MemberReference" type="et_MemberReferenceType"/>
<xsd:element name="VariantReference">
<xsd:complexType/>
</xsd:element>
<xsd:choice>
<xsd:sequence>
<xsd:element name="MemberSize" type="dt_UINT"/>
<xsd:element name="MemberReference" type="et_MemberReferenceType"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="MemberSize" type="dt_UINT"/>
<xsd:element name="VariantReference">
<xsd:complexType/>
</xsd:element>
</xsd:sequence>
</xsd:choice>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="et_MemberReferenceType">
<xsd:union memberTypes="et_AssemReference et_ParamReference dt_UDINT dt_EPATH
xsd:NMTOKEN"/>
</xsd:simpleType>
</xsd:schema>
A.2.2 Описание шаблонов профилей устройств - инкапсуляция XML файлов EDS
A.2.2.1 Общие положения
Файлы XML профилей устройств, используемые для инкапсуляции файлов EDS, должны соответствовать XML схеме профилей устройств, как установлено в A.2.2.2.
Семантика подэлементов элемента ExternalProfileHandle, используемого для обращения к имеющемуся файлу EDS, установлена в таблице A.2. В зависимости от значения атрибута WrapperReference к файлу EDS можно обратиться, используя элементы идентификации либо из самого файла EDS, либо из продукта, описанного этой EDS.
Примечание 1 - Выбор соответствующих элементов идентификации зависит от предполагаемого использования упаковочного (wrapper) файла.
Таблица A.2
(Внешний Идентификатор Профиля)
Элементы DeviceIdentity (Идентичность устройств), DeviceManager (Управление устройствами), DeviceFunction (Функция устройств) и Application Process (Прикладной процесс) должны быть совместимы с форматами, установленными в A.2.1.3.3.
Примечание 2 - Они могут быть использованы в течение перехода от унаследованного формата EDS к полному формату XML.
Примечание - XML схема включает в себя файл "MasterTemplateTypes.xsd" (см. A.2.1.3.1).
<?xml version="1.0" encoding="windows-1251"?>
<xsd:schema xmlns:xsd="/template/go.php?url=https://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:complexContent>
<xsd:restriction base="ISO15745Reference_DataType">
<xsd:sequence>
<xsd:element name="ISO15745Part" type="xsd:positiveInteger"/>
<xsd:element name="ISO15745Edition" type="xsd:positiveInteger"/>
<xsd:element name="ProfileTechnology" type="xsd:string" fixed="EDS"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:redefine>
<xsd:element name="ISO15745Profile">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="ProfileHeader"/>
<xsd:element ref="ProfileBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:annotation>
<xsd:documentation>* HEADER SECTION *</xsd:documentation>
</xsd:annotation>
<xsd:element name="ProfileHeader">
<xsd:complexType>
<xsd:sequence>
<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"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:annotation>
<xsd:documentation>* BODY SECTION *</xsd:documentation>
</xsd:annotation>
<xsd:element name="ProfileBody">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DeviceIdentity" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeviceManager" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeviceFunction" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ApplicationProcess" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ExternalProfileHandle">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="ProfileHandle_DataType">
<xsd:attribute name="WrapperReference" use="optional" default="FILEINFO">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="FILEINFO"/>
<xsd:enumeration value="DEVICEINFO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
A.3.1 Описание шаблонов профилей коммуникационных сетей на основе XML
A.3.1.1 Общие положения
Файлы 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.
Таблица 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.4
A.3.1.2.3.2 DNLinkLayer (Канальный уровень DN)
Данный элемент определяет некоторые характеристики, связанные с конфигурацией уровней каналов передачи данных.
Семантика его подэлементов установлена в таблице A.5.
Таблица A.5
A.3.1.2.3.3 Элемент DeviceNetObject
Данный элемент устанавливает поддерживаемые атрибуты экземпляров и операции Объекта DeviceNet (см. МЭК 62026-3).
A.3.1.2.3.4 Порты (Ports)
Данный элемент идентифицирует порты устройств, которые способны маршрутизировать сообщения из одного канала связи в другой канал связи.
Семантика подэлемента 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).
Примечание - XML схема включает в себя файлы "MasterTemplateTypes.xsd" (см. A.2.1.3.1) и "CIPDataTypes.xsd" (см. A.2.1.3.2).
<?xml version="1.0" encoding="windows-1251"?>
<xsd:schema xmlns:xsd="/template/go.php?url=https://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:complexContent>
<xsd:restriction base="ISO15745Reference_DataType">
<xsd:sequence>
<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:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:redefine>
<xsd:include schemaLocation="CIPDataTypes.xsd"/>
<xsd:element name="ISO15745Profile">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="ProfileHeader"/>
<xsd:element ref="ProfileBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:annotation>
<xsd:documentation>* HEADER SECTION *</xsd:documentation>
</xsd:annotation>
<xsd:element name="ProfileHeader">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
<xsd:annotation>
<xsd:documentation>* BODY SECTION *</xsd:documentation>
</xsd:annotation>
<xsd:element name="ProfileBody">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="ApplicationLayers"/>
<xsd:element ref="TransportLayers"/>
<xsd:element ref="NetworkManagement" minOccurs="0"/>
</xsd:sequence>
<xsd:attributeGroup ref="ag_FileDescription"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ApplicationLayers">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="ConnectionObject"/>
<xsd:element ref="MessageRouter"/>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TransportLayers">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NetworkManagement">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="NM-DeviceNetObject"/>
<xsd:element ref="NM-ConnectionObject" minOccurs="0"/>
<xsd:element ref="NM-MessageRouter" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConnectionObject">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ConnectionObject_InstanceAttributes" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="State">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="InstanceType">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="TransportClassTrigger">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProducedConnectionID">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConsumedConnectionID">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="InitialCommCharacteristics">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProducedConnectionSize">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConsumedConnectionSize">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ExpectedPacketRate">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="WatchdogTimeoutAction">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProducedConnectionPathLength">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProducedConnectionPath">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConsumedConnectionPathLength">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConsumedConnectionPath">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory"
use="required" fixed="Set"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProductionInhibitTime">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalSet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConnectionObject_InstanceOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Reset">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Delete">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Apply_Attributes">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService" fixed="true"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Set_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element ref="ConnectionDescriptions" minOccurs="0"/>
<xsd:element name="IO_Characteristics" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="IO_Info" type="et_IOInfoType"/>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Connection Descriptions">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Connection" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="InstanceType">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="ExplicitMessage"/>
<xsd:enumeration value="PolledIO"/>
<xsd:enumeration value="BitStrobedIO"/>
<xsd:enumeration value="DynamicIO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ProductionTrigger">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="Cyclic"/>
<xsd:enumeration value="ChangeOfState"/>
<xsd:enumeration value="ApplicationTriggered"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="TransportType">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="Server"/>
<xsd:enumeration value="Client"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="TransportClass">
<xsd:simpleType>
<xsd:restriction base="dt_SINT">
<xsd:enumeration value="0"/>
<xsd:enumeration value="2"/>
<xsd:enumeration value="3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ProducedConnectionSize" type="dt_UINT"/>
<xsd:element name="ConsumedConnectionSize" type="dt_UINT"/>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MessageRouter">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MessageRouter_InstanceAttributes" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Object_List">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaximumConnectionSupported">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="dt_UINT">
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="NumberActiveConnections">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="dt_UINT">
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ActiveConnectionList">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="dt_UINT">
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MessageRouter_InstanceOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Get_Attribute_All">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DNPhysicalLayer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Connectors" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="ConnectorType">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="OpenHardWired"/>
<xsd:enumeration value="OpenPluggable"/>
<xsd:enumeration value="SealedMini"/>
<xsd:enumeration value="SealedMicro"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="LEDs" minOccurs="0">
<xsd:complexType>
<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:complexType>
</xsd:element>
<xsd:element name="Baud_Rate_Setting" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="BR_125Kbits" minOccurs="0">
<xsd:complexType>
<xsd:attribute ref="Supported"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="BR_250Kbits" minOccurs="0">
<xsd:complexType>
<xsd:attribute ref="Supported"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="BR_500Kbits" minOccurs="0">
<xsd:complexType>
<xsd:attribute ref="Supported"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="SwitchType" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="DipSwitch"/>
<xsd:enumeration value="Other"/>
<xsd:enumeration value="SoftwareOnly"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="SoftwareSettable" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:boolean">
<xsd:pattern value="true"/>
<xsd:pattern value="false"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="ElectricalCharacteristics" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MaxNetworkPowerConsumption" type="dt_REAL"/>
</xsd:sequence>
<xsd:attribute name="IsolatedPhysicalLayer">
<xsd:simpleType>
<xsd:restriction base="xsd:boolean">
<xsd:pattern value="true"/>
<xsd:pattern value="false"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="Other" type="xsd:string" minOccurs="0"/>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DNLinkLayer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MAC-IDSetting" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DefaultMAC-ID" type="et_MAC-IDRange" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="SwitchType" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="DipSwitch"/>
<xsd:enumeration value="Other"/>
<xsd:enumeration value="SoftwareOnly"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="SoftwareSettable" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:boolean">
<xsd:pattern value="true"/>
<xsd:pattern value="false"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="PredefinedMasterSlaveConnectionSet" minOccurs="0">
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="DynamicConnectionSupport" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="NotSupported"/>
<xsd:enumeration value="Group1"/>
<xsd:enumeration value="Group2"/>
<xsd:enumeration value="Group3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="FragmentedExplicitMessaging" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="TransmissionTimeout" type="dt_UINT" minOccurs="0"/>
<xsd:element name="TypicalTargetAddress" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute ref="Supported"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeviceNetObject">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DeviceNetObject_InstanceAttributes" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MAC_ID">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalSet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Baud_Rate">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalSet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="BOI">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalSet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Bus_Off_Counter">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalSet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Allocation_Information">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MAC_ID_Switch_Changed">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Baud_Rate_Switch_Changed">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MAC_ID_Switch_Value">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Baud_Rate_Switch_Value">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeviceNetObject_InstanceOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Set_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Allocate_MS_Connection_Set">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Release_Group2_Identifier_Set">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Ports">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Port" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PortTypeName">
<xsd:simpleType>
<xsd:union>
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="ControlNet"/>
<xsd:enumeration value="ControlNet_Redundant"/>
<xsd:enumeration value="TCP"/>
<xsd:enumeration value="DeviceNet"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base="et_VendorSpecificKeyword"/>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
</xsd:element>
<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:complexType>
<xsd:sequence>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="Port[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NM-DeviceNetObject">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DeviceNetObject_ClassAttributes" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ObjectRevision">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_Mandatory" fixed="Get"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeviceNetObject_ClassOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NM-ConnectionObject">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ConnectionObject_ClassAttributes" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ObjectRevision">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConnectionObject_ClassOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Reset">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Create">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Delete">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Find_Next_Object_Instance">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NM-MessageRouter">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MessageRouter_ClassAttributes" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ObjectRevision">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="OptionalAttributeList">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="OptionalServiceList">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaxIDClassAttributes">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MaxIDInstanceAttributes">
<xsd:complexType>
<xsd:attribute name="Access_Rule" type="at_AccessType_OptionalGet"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MessageRouter_ClassOperations" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Get_Attribute_All">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Get_Attribute_Single">
<xsd:complexType>
<xsd:attribute ref="SupportedService"/>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:attribute name="SupportedService" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:boolean">
<xsd:pattern value="true|false"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="Supported" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:boolean">
<xsd:pattern value="true|false"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:simpleType name="et_MAC-IDRange">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:maxInclusive value="63"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="et_SpecificIOInfoType">
<xsd:sequence>
<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:sequence>
</xsd:complexType>
<xsd:complexType name="et_GenericIOInfoType">
<xsd:sequence>
<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:sequence>
</xsd:complexType>
<xsd:complexType name="et_IOInfoType">
<xsd:sequence>
<xsd:element name="Default">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DefaultIOTypeMask" type="dt_WORD"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<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:complexType>
<xsd:complexContent>
<xsd:extension base="et_GenericIOInfoType">
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="Input[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Output" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="et_GenericIOInfoType">
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="Output[1-9][0-9]{0,4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
A.3.2 Описание шаблонов профилей коммуникационных сетей. XML инкапсуляция файлов EDS
A.3.2.1 Общие положения
Файлы 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).
<?xml version="1.0" encoding="windows-1251"?>
<xsd:schema xmlns:xsd="/template/go.php?url=https://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:complexContent>
<xsd:restriction base="ISO15745Reference_DataType">
<xsd:sequence>
<xsd:element name="ISO15745Part" type="xsd:positiveInteger"/>
<xsd:element name="ISO15745Edition" type="xsd:positiveInteger"/>
<xsd:element name="ProfileTechnology" type="xsd:string" fixed="EDS"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:redefine>
<xsd:element name="ISO15745Profile">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="ProfileHeader"/>
<xsd:element ref="ProfileBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:annotation>
<xsd:documentation>* HEADER SECTION *</xsd:documentation>
</xsd:annotation>
<xsd:element name="ProfileHeader">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
<xsd:annotation>
<xsd:documentation>* BODY SECTION *</xsd:documentation>
</xsd:annotation>
<xsd:element name="ProfileBody">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ExternalProfileHandle">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="ProfileHandle_DataType">
<xsd:attribute name="WrapperReference" use="optional" default="FILEINFO">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="FILEINFO"/>
<xsd:enumeration value="DEVICEINFO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
A.4.1 Общие требования к EDS на основе CIP
A.4.1.1 Общие положения
Данный подраздел устанавливает требования к кодированию электронной информационной таблицы (EDS), которые являются общими для сетей на основе CIP. Указанные требования определяют стандартный формат кодирования файлов, используемых для продуктов CIP, без учета главной платформы средств конфигурирования или файловой системы.
Термин "файл", используемый в данном контексте, относится к любому общепринятому формату файла, связанного с файловой системой средств конфигурирования без учета средств для хранения файлов.
Файл EDS определяется как файл ASCII, который включает представление ASCII объектов в устройстве, которые могут быть оценены из сети [например, Parameter (Параметр) и Assembly (Компоновка)], и дополнительную информацию, необходимую для поддержки адресации объектов.
A.4.1.2 Содержимое EDS
A.4.1.2.1 Структура EDS
Один файл должен содержать всю EDS. EDS должна состоять из разделов. Таблица A.6 описывает структуру разделов, которые являются общими для нескольких сетей на основе CIP, соответствующие разрешенные разделители разделов и порядок следования этих разделов в EDS.
Таблица A.6
Содержимое электронной информационной таблицы (EDS) должно быть организовано следующим образом:
- все файлы EDS должны содержать раздел Описание файла, который должен быть первым разделом файла EDS и должен использовать разрешенный разделитель [File];
- все файлы EDS должны содержать раздел Описание устройства, который должен сразу же следовать за разделом Описание файла и должен использовать разрешенный разделитель [Device];
- дополнительные разделы, описанные в данной спецификации, могут быть представлены в любом порядке при условии отсутствия в файле EDS ссылки вперед;
- дополнительный раздел (дополнительные разделы), относящийся (относящиеся) к продавцу, должен (должны) использовать разрешенный разделитель (разрешенные разделители) [VendorID_vendorspecifickeyword], установленный (установленные) в A.4.1.2.2.11, и должен (должны) быть расположен (расположены) после всех разделов, установленных в данной спецификации.
A.4.1.2.2 Правила форматирования EDS
A.4.1.2.2.1 Общие положения
Файл EDS должен состоять из разделов, входных данных, полей, комментариев и пробелов. Настоящий подраздел устанавливает правила, которые следует соблюдать при определении EDS.
A.4.1.2.2.2 Пробелы в EDS
В файле EDS могут быть использованы пробелы, но они должны игнорироваться всеми интерпретаторами EDS, если они находятся за пределами полей и массивов символов в двойных кавычках.
Интерпретатор EDS должен рассматривать нижеприведенные символы как символы пробелов. Эти символы, считываемые интерпретатором, но не кодированные как символы, читаемые человеком, указывают на наличие в файле пробела:
- знак пробела;
- новая строка;
- возврат каретки;
- перевод строки;
- табуляция, вертикальная и горизонтальная;
- перевод страницы;
- метка конца файла;
- комментарии.
Все ключевые слова в файле EDS должны состоять из символов ASCII из следующего списка:
- прописные буквы A - Z;
- строчные буквы a - z;
- цифры 0 - 9;
- специальный символ подчеркивания "_";
- символ пробела.
Пробел следует использовать только в ключевом слове раздела. Пробел должен находиться внутри названия раздела, и использование множества последовательных пробелов запрещается.
A.4.1.2.2.4 Разделы
Файл 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.
A.4.1.2.2.8 Ввод
Каждый раздел в EDS должен содержать один или несколько вводов, начинающихся с ключевого слова ввода, после которого следует знак равенства. Значение ключевого слова ввода должно быть глобальным в области действия, что позволяет использовать ключевые слова, определенные в одном разделе, также и в другом разделе. Каждый ввод должен оканчиваться точкой с запятой. Ввод может расширяться, включая множество строк, если запятые надлежащим образом разделяют поля.
A.4.1.2.2.9 Ключевые слова ввода
Ключевое слово ввода должно состоять из однозначно определяемой последовательности символов ключевого слова, как установлено в A.4.1.2.2.3. Имеются два типа ключевых слов ввода: общедоступные ключевые слова и ключевые слова продавца.
A.4.1.2.2.10 Общедоступное ключевое слово
Общедоступное ключевое слово должно всегда определяться в спецификации CIP ответственными ассоциациями продавцов. Общедоступное ключевое слово никогда не должно начинаться с цифры.
Ключевые слова могут быть ключевыми словами, относящимися к продавцу. Эти ключевые слова должны начинаться с идентификатора компании продавца с добавлением после него символа подчеркивания (VendorID_VendorSpecificKeyword). VendorID (идентификатор продавца) должен воспроизводиться в десятичной системе счисления и не должен содержать в начале нулей. Каждый продавец несет ответственность за сохранение и документирование своих ключевых слов.
A.4.1.2.2.12 Поля вводов
Каждый ввод должен содержать одно или несколько полей. Разделители в виде запятой должны разделять все поля. Значение поля (полей) должно зависеть от контекста раздела. Поля ввода являются либо обязательными, либо дополнительными, как установлено в этой спецификации. Пробелы и пустоты между запятыми должны быть использованы для непредставленных дополнительных полей. Точка с запятой может быть использована для указания отсутствия замыкающих дополнительных полей. Термин "номер поля" должен указывать положение поля ввода. Поля следует нумеровать слева направо (или сверху вниз), начиная с номера 1.
A.4.1.2.2.13 Ключевые слова полей
Ключевое слово полей должно состоять из однозначно определенной последовательности символов ключевого поля, как установлено в A.4.1.2.2.3. Имеются два типа ключевых слов полей: общедоступные ключевые слова и ключевые слова продавца.
A.4.1.2.2.14 Составные поля данных
Некоторые поля ввода следует устанавливать с использованием данных, которые не могут быть определены одним значением между разделителями в виде запятой. Возможность дополнительного разделения всего поля определяют путем использования одного или нескольких наборов символов в виде парных фигурных скобок "{" и "}". Содержимое между этими символами следует рассматривать как один элемент или ввод. Содержимое может быть сгруппировано в множестве фигурных скобок.
A.4.1.2.2.15 Комментарии
Комментарии должны разделяться символом в виде знака доллара ($) и символом новой строки. Интерпретатор EDS должен рассматривать все символы между разделителями комментариев как пробелы. Разделитель комментария $, обнаруживаемый внутри поля или набора символов в виде двойных кавычек, не должен рассматриваться как разделитель комментариев.
Пример - Ниже приводятся примеры некоторых комментариев:
A.4.1.2.2.16 Пример структуры форматирования EDS
Примеры на рисунке A.1 показывают структуру электронной информационной таблицы.
(информативный)
A.4.1.2.3 Требования к имени файла
Соглашения по присвоению имени файлам не принимаются для дисковых файлов EDS, за исключением файлов в среде DOS/Windows: эти файлы должны иметь суффикс ".EDS", приписываемый к имени файла.
A.4.1.3 Требования к кодированию данных EDS
A.4.1.3.1 Общие положения
В настоящем подразделе установлены требования к кодированию данных для файла 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.1 Общие положения
Все строковые данные в файле 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 Конкатенация строки
Множество строк без промежуточных запятых должно подвергаться конкатенации.
Пример 1 -
Строки также могут находиться на отдельных строках текста.
Пример 2 -
Следующие строки:
также интерпретируются как: "ABC123XYZ"
Для строки UNICODE (длинная строка) только первым двойным кавычкам должна предшествовать заглавная буква L.
Пример 3 - L "ABC" "123" "XYZ" - то же самое, что и L "ABC123XYZ".
Интерпретатор EDS должен опознавать все управляющие последовательности, перечисленные в таблице A.7. Интерпретация зависит от приложения.
Таблица A.7
Если встречаются с последовательностью, не указанной выше, интерпретирующее устройство должно отвергнуть целую строку и указать ошибку. Файлы EDS должны содержать только управляющие последовательности, установленные в таблице A.7.
A.4.1.3.4 Соглашение по строкам ASCII (STRING, SHORT_STRING, STRING2)
Все типы строковых данных (STRING, SHORT_STRING, STRING2), используемые в атрибутах объектов, должны преобразовываться в файл EDS EDS_Char_Array.
A.4.1.3.5 STRINGI
Тип данных Международной строки (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 должно состоять из групп двух соседних шестнадцатеричных символов, разделенных пробелами. Могут быть использованы как верхний регистр, так и нижний регистр.
Пример 1 - "20 04 24 01"
Пример 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 (в шестнадцатеричной системе счисления) являются недопустимыми.
Типы данных 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 следующие представления значений с плавающей точкой:
где общее число разрядов не должно превышать 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;
- десятичная система счисления (с плавающей точкой):
0.0 - +/- 9999999999999999,
где общее число разрядов не должно превышать 16 (помимо символа десятичной точки и символа знака). Оба этих символа могут быть опущены (знак "+" подразумевается, если символ знака опущен).
"Экспоненциальное" представление:
0.0 - +/- nnnn.nnnnnnnnnnnnE +/- xxxx,
где общее число разрядов в мантиссе не должно превышать 16 (помимо символа десятичной точки и символа знака), а число разрядов в показателе степени не должно превышать 4 (помимо символа "E и символа знака). Десятичная точка может располагаться в мантиссе где угодно. Как символ десятичной точки, так и символ знака в мантиссе могут быть опущены (знак "+" подразумевается, если символ знака опущен).
В дополнение к вводимым значениям, указанным выше, представление плавающей точки учитывает два стиля вводов и два типа бесконечностей. Существуют два типа Nan ("не число"), а именно сигнализация Nan и "тихое" NaN (Quiet NaN). Кроме того, формат устанавливает представления значений плюс и минус бесконечностей. В этих случаях резервируются следующие специальные слова, которые должны использоваться для представления ввода ассоциированного символа плавающей точки:
Тип данных EDS_Date должен иметь формат mm-dd-yyyy, где mm - месяц, dd - день, yyyy - год. Правильные значения месяца, дня и года mm-dd-yyyy должны быть следующими:
Представление года двумя символами может быть использовано в случае, если тип данных EDS_Date имеет формат mm-dd-yy, где mm - месяц, dd - день месяца, а yy - год. В этом случае две первые цифры года имеют предполагаемое значение 19, так что yy = 96 должно означать год 1996. Правильные значения месяца, дня и года параметров mm-dd-yy должны быть следующими:
Примечание - Представление года двумя цифрами не рекомендуется.
A.4.1.3.12 EDS_Time_Of_Day
Тип данных EDS_Time_Of_Day должен иметь формат hh.mm.ss, где hh - часы, mm - минуты и ss - секунды. Правильные значения часов, минут и секунд должны быть следующими:
A.4.1.3.13 EDS_Revision
Тип данных EDS_Revision должен иметь формат Major_Revision.Minor_Revision с правильными значениями:
Значение 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 должен ограничиваться любой из следующих форм:
http;
ftp;
file (файл).
A.4.1.4 Основные требования к файлу EDS
A.4.1.4.1 Обзор
В данном подразделе описаны основные разделы EDS, являющиеся общими для нескольких сетей на основе CIP, и установлены соответствующие требования к применению. В таблице A.8 указано местоположение подразделов определений этих разделов.
Таблица A.8
Раздел описания файла должен содержать административную информацию о файле EDS. Средства конфигурирования должны считывать эту информацию, форматировать и воспроизводить ее пользователю. Пользователь также может иметь доступ к этому разделу с помощью программы просмотра текстового файла и воспроизводить неформатированную информацию. Раздел не требует внесения в него изменений, если только пользователь вручную не внес изменения в файл. Раздел описания файла должен содержать вводы, приведенные в таблице A.9.
Таблица A.9
Вводимые в раздел описания файла данные должны предоставлять информацию, как показано в таблице A.10.
Таблица A.10
На рисунке A.2 приведен пример, представляющий типичный раздел [File].
Раздел описания устройств должен содержать информацию изготовителя по устройствам, включая те же значения, что и в объекте Идентичность устройств. Раздел описания устройств должен содержать входные данные, установленные в таблице A.11.
Таблица A.11
Название входных данных поля описания устройства устанавливает номер строки ввода.
Средства конфигурирования должны использовать требуемые входные данные в разделе описания устройств для согласования EDS с конфигурируемым устройством. Входные данные должны предоставлять информацию, установленную в таблице A.12.
Таблица A.12
На рисунке A.3 приводится пример, представляющий типичный раздел устройств [Device].
Раздел классификации устройств должен классифицировать устройство, описываемое EDS, как принадлежащее одному или нескольким категориям устройств. Ключевое слово ввода для всех классификаций должно состоять из набора символов "Class", объединенных с десятичным числом. Числа должны начинаться с 1 для первого класса и должны увеличиваться для каждого дополнительного класса.
Число полей для каждого ввода классификации должно быть переменным, что позволяет построить древовидную структуру классификации, аналогичную структуре директории систем. Подклассификация общедоступных классификаций должна резервироваться. Классификация со стороны продавца может быть подклассифицирована по усмотрению продавца. Первое поле должно представлять наивысший уровень в древовидной структуре и должно включать в себя одно из следующих ключевых слов:
- ControlNet;
- DeviceNet;
- EtherNetIP;
- ключевое слово поля со стороны продавца.
Ключевое слово со стороны продавца должно начинаться с идентификатора компании продавца, после чего следует символ подчеркивания (VendorID_VendorSpecificField). VendorID должен воспроизводиться в десятичной системе счисления и не должен содержать впередиидущих нулей. Каждый продавец со своей стороны несет ответственность за поддержание и документирование ключевого слова поля.
Раздел классов параметров должен идентифицировать общие атрибуты параметров конфигурации, описываемые EDS, которые соответствуют поднабору атрибутов класса Parameter Object и установлены в Библиотеке Объектов CIP.
Раздел классов параметров должен содержать вводимые данные, установленные в таблице A.13.
Таблица A.13
Вводимые в раздел классов параметров данные должны предоставлять информацию, как показано в таблице A.14.
Таблица A.14
Ввод дескриптора классов параметров должен содержать биты, которые описывают характеристики параметров, как установлено в таблице A.15. Биты, не установленные в таблице A.15, не должны использоваться и им должны быть присвоены нулевые значения (0).
Таблица A.15
Рисунок A.4 является примером, показывающим типичный раздел класса параметров.
(информативный)
Раздел параметров должен идентифицировать параметры конфигурации в устройстве. Ключевое слово ввода должно быть одним из следующих наборов символов: "Param", "ProxyParam", "ProxiedParam", объединенным с числом (десятичным) экземпляров параметров для устройства, например "Param1". Фактический экземпляр объекта параметров может быть (но необязательно) реализован в устройстве. Наоборот, не требуется, чтобы все экземпляры объекта параметров имели соответствующий ввод "ParamN" в EDS. Однако если экземпляр объекта параметров существует в узле и если этот параметр также описывается в EDS, тогда значение "N" в "ParamN" должно соответствовать экземпляру объекта параметра.
Каждый ввод должен содержать форматированные поля, представленные в таблице A.16. Ключевые слова "ProxyParam" и "ProxiedParam" определяются далее в A.4.1.5.3.1 как часть требований EDS к модулям.
Таблица A.16
Вводимые данные раздела параметров должны содержать информацию, установленную в таблицах A.17 и A.21.
Поля параметров, перечисленные в таблице A.17, являются общими для всех параметров.
Таблица A.17
Биты поля дескриптора должны быть такими, как установлено в таблице A.18
Таблица A.18
Старые версии файлов EDS могут использовать идентификаторы типов данных, как установлено в таблице A.19.
Таблица A.19
Таблица A.20 определяет смысл и конкретные требования, касающиеся вводов минимальных и максимальных значений, основанных на типе данных параметров.
Таблица A.20
Поля параметров, перечисленные в таблице A.21, являются дополнительными и значимыми только в случае, если используются со следующими типами данных: SINT, INT, DINT, LINT, USINT, UINT, UDINT, ULINT, REAL и LREAL. Спецификация этих полей с любым другим типом данных запрещается.
Таблица A.21
Масштабирование не должно выполняться устройством, содержащим параметр, но должно выполняться средствами воспроизведения. Если масштабирование поддерживается, средство масштабирования должно использовать формулу, приведенную на рисунке A.5, позволяющую определить техническое значение параметра (т.е. воспроизводимое значение) из фактического значения параметра. Если масштабирование не поддерживается, тогда значение параметра должно воспроизводиться как оно есть.
.Примечание - Если расширенное масштабирование не поддерживается, то эта формула должна использоваться с DecimalPrecision=0.
В разделе [Params] может также быть второе ключевое слово. Это ключевое слово должно использоваться для предоставления нумерованного списка выборов параметров, представляемых пользователю. Ключевое слово ввода для всех нумерованных параметров должно состоять из набора символов, "Enum", объединенных с десятичным числом из соответствующего ввода Param. Каждый ввод "Enum" должен состоять из пар целых чисел и строк.
На рисунке A.6 приведен пример типичного раздела Parameter.
Раздел групп параметров должен идентифицировать все группы параметров в устройстве. Каждая группа параметров должна содержать список параметров в группе. Ключевое слово ввода для каждой группы должно состоять из комбинации набора символов, "Group", и номера группы параметров (десятичного), например "Group1". Десятичные номера должны начинаться с единицы и увеличиваться на единицу.
Фактический экземпляр объекта группы параметров может быть (но необязательно) реализован в устройстве. Наоборот, не требуется, чтобы все экземпляры объекта группы параметров имели соответствующий ввод "GroupN" в EDS. Однако если экземпляр объекта группы параметров существует в узле и если эта группа параметров также описывается в EDS, тогда значение "N" в "Group N" должно соответствовать экземпляру объекта группы параметров.
Поля в каждом вводе должны содержать название группы, число элементов в группе и номера экземпляров параметров в группе. Раздел группы параметров должен содержать поля, показанные в таблице A.22.
Таблица A.22
На рисунке A.7 представлен пример, показывающий раздел типичных групп параметров.
Раздел компоновки описывает структуру блока данных. Часто такой блок представляет собой атрибут данных объекта Компоновка; однако данный раздел EDS может быть использован для описания любой сложной структуры. Описание этого блока данных соответствует описанию механизма, используемого объектом Компоновка для описания списка своих членов.
Ключевое слово ввода "Revision" имеет поле 16-битных целых чисел, которое должно быть версией (атрибут класса 1) объекта Компоновка в приборе. Если этот дополнительный ввод опущен, версия объекта Компоновка должна быть версией 2.
Ключевое слово ввода для всех компоновок должно состоять из одного из следующих наборов символов: "Assem", "ProxyAssem", "ProxiedAssem", объединенных с номером (десятичным) экземпляра объекта Компоновка для прибора, например "Assem1". Если отдельный экземпляр объекта Компоновка адресуется из канала связи, должно быть взаимно однозначное соответствие между номером Assem в файле EDS и номером экземпляра компоновки в устройстве. Ключевые слова "ProxyAssem" and "ProxiedAssem" определены далее в A.4.1.5.3.2 как часть требований EDS к модулям.
Каждый ввод должен содержать форматированные поля, показанные в таблице A.23.
Таблица A.23
Первое поле "Название" должно быть строкой, дающей имя блоку данных. Это дополнительное поле может быть использовано интерфейсом пользователя.
Второе поле "Маршрут" должно быть строкой, устанавливающей логическую цепь. Этот маршрут должен идентифицировать адрес блока данных в устройстве. Если блок, описываемый этим вводом AssemN, не непосредственно адресуется из канала связи, то это поле должно быть пустым. Если это поле является пустой строкой, блок данных должен адресоваться как атрибут данных (атрибут экземпляра 3) N-го экземпляра объекта Компоновка.
Третье поле "Размер" должно устанавливать размер блока данных в байтах. Если ни это поле, ни поля "Member Size"/"Member Reference" не представлены, размер блока данных должен быть равен 0. Однако оба этих поля могут быть представлены, поскольку они оба устанавливают размер блока, размеры, устанавливаемые обоими способами, должны быть согласованы.
Четвертое поле "Дескриптор" должно быть битовым полем, описывающим некоторые характеристики Компоновки. Биты этого поля должны интерпретироваться, как установлено в таблице A.24.
Таблица A.24
Поля 5 и 6 должны быть зарезервированы и должны быть пустыми.
Остающиеся поля должны быть спаренными так, чтобы поле "Member Size (Размер элемента)" спаривалось с полем "Member Reference (Элементная Ссылка)", делая полное число полей четным. Число пар полей в таком вводе должно быть переменным. Пары должны соответствовать списку элементов объекта Компоновка.
Разрешенные значения поля "Member Reference" должны быть одним из следующих значений:
- ссылка ParamN или ProxyParamN из раздела [Params];
- ссылка 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.
Таблица A.25
Первое поле "Название типа порта" (Port Type Name) должно быть одним из следующих ключевых слов:
- ControlNet;
- ControlNet_Redundant;
- TCP (указывает порт TCP EtherNet/IP);
- DeviceNet;
- Ключевое слово поля продавца, начинающееся с Идентификатора продавца и символа подчеркивания ('65535_').
Дополнительное поле "Название порта" (Port Name) должно быть строкой, устанавливающей название порта, и может быть использовано интерфейсом пользователя. Поле "Объект порта" (Port Object) должно иметь маршрут (EPATH), который идентифицирует объект связи, относящийся к сети, ассоциированный с портом.
Номер порта 1 должен соответствовать "порту" задней панели. Устройства с задней панелью, которые не могут маршрутизировать сообщения CIP, не должны иметь порт номер 1.
На рисунке A.9 представлен пример, показывающий типичный раздел Порт.
A.4.1.5 Требования к файлу EDS модульных устройств
A.4.1.5.1 Общие положения
Настоящий подраздел описывает концепцию и содержимое EDS модульных устройств и устанавливает требования к их применению.
A.4.1.5.2.1 Содержимое
Раздел 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.4.1.5.2.3 Модульное устройство (основные вводы)
Раздел [Modular], описывающий модуль, должен содержать вводы "Width (Ширина)" и "Rack (стойка)".
Требуемый ввод с ключевым словом "Width" должен иметь единственное поле, которое устанавливает, сколько слотов в стойке используется модулем. Поле должно содержать 16 битное целое число без знака (UINT).
Ключевое слово ввода для всех стоек, в которых может быть размещен модуль, должно состоять из набора символов "Rack", объединенного с десятичным числом. Числа должны начинаться с 1 для первой стойки и должны увеличиваться на 1 для каждой дополнительной стойки. Поля для вводов "Rack" должны быть такими, как показано в таблице A.26.
Таблица A.26
Поля "Vendor ID", "Product Type", "Product Cod" "Major Revision" и "Minor Revision" должны идентифицировать электронный ключ стойки, в которую может быть вставлен модуль. Зарезервированное поле должно быть пустым. Поля "Legal Slot" должны идентифицировать слоты, в которые может быть вставлен модуль. EDS для модуля должен содержать один ввод "Rack" для каждой стойки, в которой может быть размещен модуль.
Рисунок A.11 представляет пример, показывающий типичный раздел Modular.
A.4.1.5.2.4 Модульный прибор (дополнительные вводы)
Общее представление
В EDS устанавливаются дополнительные вводы, позволяющие идентифицировать устройство и кодировать его для модулей в системах на основе стойки, которые не поддерживают CIP.
С этой целью модульные устройства обычно разделяют на две категории:
- модули, имеющие подключения канала связи CIP, соответствующий объект Идентичность, адресуемый из канала связи, и размещаемые в слоте 0 (например, коммуникационные адаптеры);
- модули, не имеющие подключения канала связи CIP или адресуемого объекта Идентичность, не могут быть размещены в слоте 0 (например, модули ввода/вывода).
Примечание - CIP предоставляет другие механизмы идентификации устройств и их кодирования для модулей, поддерживающих адресуемый объект Идентичность канала связи CIR.
Вводы для модуля, не имеющего адресуемого объекта Идентичность канала связи
Раздел Modular, описывающий модуль, не имеющий адресуемого объекта Идентичность канала связи, может содержать ключевое слово ввода "ExternalID". Ключевое слово должно иметь единственное поле. Это поле должно быть байтовой строкой, идентифицирующей модуль. Байтовая строка должна кодироваться с использованием того же формата, как и для ERATH.
На рисунке 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), должно быть использовано для кодирования отдельного устройства для адаптерных соединений стойки. Десятичное (положительное) число N в "ExternalIDN" определяет слот N в стойке. Ключевое слово "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 для разделов Параметр и Компоновка.
и 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.
Таблица A.27
Содержимое DeviceNet EDS должно быть организовано следующим образом:
- все файлы EDS DeviceNet, включающие в себя модульный раздел, должны также содержать раздел Классификация приборов, который должен использовать разрешенный разграничитель [Device Classification], и могут быть размещены где угодно после раздела Описание файлов;
- дополнительные и условные разделы, описанные в данной спецификации, могут быть представлены в любом порядке при условии, что в файле EDS отсутствуют ссылки вперед.
Для любого совместимого устройства 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.1 Раздел нумерованных строк параметров
Настоящий раздел предоставляет нумерованный список параметров, выбираемых пользователем. Ключевое слово ввода для всех нумерованных строк параметров должно состоять из набора символов "Param", объединенного с номером (десятичным) экземпляра параметров для прибора. Каждый параметр, поддерживающий нумерованные строки и не имеющий соответствующего ввода Enum в разделе Параметры, должен иметь ввод в этом разделе. Вводы должны быть расположены в возрастающем порядке.
Поля в каждом вводе должны содержать нумерованные строки, разделенные запятыми. Положение в списке определяет нумерованное значение, присваемое строке. Первой строке в нумерованном списке присваивается минимальное значение параметра. Каждой последующей строке присваивается значение, увеличенное на единицу. Для каждого целого значения от минимального значения параметра до максимального значения параметра должна быть использована одна строка.
Каждый ввод в разделе Нумерованные строки параметров должен содержать форматированные поля, показанные в таблице A.28.
Таблица A.28
На рисунке A.16 представлен пример, показывающий типичный раздел нумерованных строк параметров.
A.4.2.4.2.1 Содержимое
Раздел характеристик ввода/вывода должен содержать информацию о возможностях ввода/вывода заранее определенного набора основных/подчиненных соединений прибора (см. МЭК 62026-3:2000). Этот раздел является обязательным, если прибор реализует соединение ввода/вывода, характеристики которого могут быть полностью представлены одним или несколькими вводами в этом разделе.
В данном разделе должны быть описаны следующие характеристики ввода/вывода прибора:
- тип триггера ввода/вывода (Опрос, Строб, Изменение состояния, Циклический);
- размер сообщения ввода/вывода (число байтов);
- заранее установленные маршруты соединений ввода/вывода.
Раздел характеристик ввода/вывода должен содержать вводы, установленные в таблице A.29.
Таблица A.29
Вводы в разделе характеристик ввода/вывода должны предоставлять информацию, как показано в таблице A.30.
Таблица A.30
A.4.2.4.2.2 Ввод информации ввода/вывода по умолчанию
Ввод информации ввода/вывода по умолчанию должен определять информацию ввода/вывода прибора по умолчанию.
Ввод информации ввода/вывода по умолчанию должен содержать форматированные поля, представленные в таблице A.31.
Таблица A.31
Поле маски типа ввод/вывода по умолчанию должно быть битовым отображаемым полем, позволяющим определять типы ввода/вывода по умолчанию для устройства. Присвоение битов установлено в таблице A.32.
Таблица A.32
A.4.2.4.2.3 Ввод информации по опросам
Ввод информации по опросам должен определять типы ввода/вывода, которые могут быть использованы вместе с соединением с опросами. Он также должен устанавливать соединения выхода и входа опросов по умолчанию.
Если данный ввод не представлен, тогда:
- соединение с опросами в приборе не поддерживается или
- соединение не может быть полностью описано логической структурой этого ключевого слова.
Ввод информации по опросам должен содержать форматированные поля, показанные в таблице A.33.
Таблица A.33
Ввод информации по опросам должен предоставлять информацию, как показано в таблице A.34.
Таблица A.34
A.4.2.4.2.4 Ввод информации по стробам
Ввод информации по стробам должен определять типы ввода/вывода, которые могут быть использованы вместе со строб-соединением. Он также должен устанавливать строб-соединения выхода и входа по умолчанию.
Если данный ввод не представлен, тогда:
- строб-соединение в приборе не поддерживается или
- соединение не может быть полностью описано логической структурой этого ключевого слова.
Ввод информации по стробам должен содержать форматированные поля, показанные в таблице A.35.
Таблица A.35
Ввод информации по стробам должен предоставлять информацию, как показано в таблице A.36.
Таблица A.36
A.4.2.4.2.5 Ввод информации по изменению состояния
Ввод информации по изменению состояния должен определять типы ввода/вывода, которые могут быть использованы вместе с соединением изменения состояния. Он также должен устанавливать соединения входа и выхода изменения состояния по умолчанию.
Если данный ввод не представлен, тогда:
- соединение Изменение Состояния в приборе не поддерживается;
- соединение не может быть полностью описано логической структурой этого ключевого слова.
Ввод информации по изменению состояния должен содержать форматированные поля, показанные в таблице A.37.
Таблица A.37
Ввод информации по изменению состояния должен предоставлять информацию, как показано в таблице A.38.
Таблица A.38
A.4.2.4.2.6 Ввод информации по циклам
Ввод информации по циклам должен определять типы ввода/вывода, которые могут быть использованы вместе с циклическим соединением. Он также должен устанавливать циклические соединения выхода и входа по умолчанию.
Если данный ввод не представлен, тогда:
- циклическое соединение в устройстве не поддерживается;
- соединение не может быть полностью описано логической структурой этого ключевого слова.
Ввод информации по циклам должен содержать форматированные поля, показанные в таблице A.39.
Таблица A.39
Ввод информации по циклам должен предоставлять информацию, как показано в таблице A.40.
Таблица A.40
A.4.2.4.2.7 Ввод информации по многоадресным опросам
Ввод информации по многоадресным опросам должен определять типы ввода/вывода, которые могут быть использованы вместе с соединением с многоадресными опросами. Он также должен устанавливать соединения вывода и ввода многоадресных опросов по умолчанию.
Если данный ввод не представлен, тогда:
- соединение с многоадресными опросами в приборе не поддерживается;
- соединение не может быть полностью описано логической структурой этого ключевого слова.
Ввод информации по многоадресным опросам должен содержать форматированные поля, показанные в таблице A.41.
Таблица A.41
Ввод информации по многоадресным опросам должен представлять информацию, как показано в таблице A.42.
Таблица A.42
A.4.2.4.2.8 Вводимые данные соединений выходов устройства
Вводимые данные соединений выходов устройства должны быть использованы для определения логически кодированного маршрута к данным одного или нескольких объектов, которые могут быть созданы соединением ввода/вывода.
Отдельный ввод данных необходим для каждого случая, если:
- он может быть установлен в маршруте соединения выхода;
- он может быть описан в файле EDS.
Каждый ввод должен определять размер соединения в байтах и битах, если он использует типы ввода/вывода, маршрут соединения, строку имен и строку справки.
Ключевое слово для вводов соединений выхода должно состоять из комбинации набора символов "input", объединенных с десятичным числом, например "input1". Десятичное число должно начинаться с единицы и увеличиваться на единицу.
Каждый ввод соединения выхода должен содержать форматированные поля, как показано в таблице A.43.
Таблица A.43
Ввод соединения выхода должен предоставлять информацию, показанную в таблице A.44.
Таблица A.44
A.4.2.4.2.9 Вводимые данные соединений входов устройства
Вводимые данные соединений входов устройства должны быть использованы для определения логически кодированного маршрута из данных одного или нескольких объектов, которые могут приниматься соединением ввода/вывода.
Отдельный ввод необходим для каждого случая, если:
- он может быть установлен в маршруте соединения входа;
- он может быть описан в файле EDS.
Каждый ввод должен определять размер соединения в байтах и битах, если он использует типы ввода/вывода, маршрут соединения, строку имен и строку справки.
Ключевое слово для вводов соединений входов должно состоять из комбинации набора символов "Output", объединенных с десятичным числом, например "Output1". Десятичное число должно начинаться с единицы и увеличиваться на единицу.
Каждый ввод соединения входа должен содержать форматированные поля, как показано в таблице A.45.
Таблица A.45
Ввод соединения входа должен предоставлять информацию, представленную в таблице A.46.
Таблица A.46
A.4.2.4.2.10 Примеры
Настоящий подраздел содержит примеры разделов файлов EDS, устанавливающие характеристики ввода/вывода устройств.
Рисунок A.17 представляет пример, показывающий типичный раздел характеристик ввода/вывода для прибора с возможностями опросов и стробов (Опрос по умолчанию).
Устройство с возможностями опросов и стробов.
Опрос по умолчанию
Рисунок A.18 представляет пример, показывающий типичный раздел характеристик ввода/вывода для устройства Strobe Only (только один вход и один выход).
для устройства Strobe Only, только один вход и один выход
Рисунок A.19 представляет пример, показывающий типичный раздел характеристик ввода/вывода для устройства с возможностями опросов и изменения состояния (Опросы и изменение состояния по умолчанию).
с возможностями опросов и изменения состояния. Опросы
и изменение состояния по умолчанию
(обязательное)
B.1.1 Общие положения
XML схемы шаблонов профилей устройств, определенные в B.1.5, содержат отображения диаграмм классов профилей устройств, представленных в 6.2.1. Помимо классов и атрибутов отображения они содержат дополнительные элементы с атрибутами XML или без них, облегчающие однозначное описание профилей устройств и устройств XML. Для повторного использования некоторых определений элементов и гибкого расширения описаний профиля устройств и устройств с использованием моделей, используемых здесь, классы были отражены в нескольких XML схемах. В таблице B.1 перечислены все XML схемы описания обмена шаблонами профилей устройств CANopen.
Примечание - Описание профилей устройств или описание устройств может не потребоваться для применения всех XML схем, установленных в настоящем приложении.
Таблица B.1
B.1.2 Основы
B.1.2.1 Элементы типов данных
Профиль устройств использует типы данных МЭК 61158. Для введения дополнительных атрибутов информация по типам данных моделируется с использованием объявлений типов элементов XML. Альтернативные имена типов данных МЭК 61131-3 и CANopen предоставляются как постоянные атрибуты. Эти элементы типов данных определяются с именем "FDCMLdt.xsd" в XML схеме, которая определяется в B.1.5.2.
B.1.2.2 Сборная модель
Профиль устройств использует модель сборных элементов. Эти элементы фигурируют в форме списка сборных элементов (пример: proccessDataDescriptionList/processDataDescription).
B.1.2.3 Описательный текст для элементов
B.1.2.3.1 Общие положения
Профиль устройств предлагает три разные возможности предоставления описательного текста для элементов. Должны быть использованы только 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.
Каждый элемент, требующий описательного текста, должен иметь дочерний элемент label с атрибутом xml:lang. Это позволяет использовать множество языков с одним профилем приборов. Дополнительно текст короткой справки может быть предоставлен с использованием элемента help. Он также имеет атрибут xml:lang. Этот атрибут состоит из двухбуквенного кода языка и дополнительного двухбуквенного кода страны, разделенных тире, и имеет следующий формат:
ISO 639 code for name of language ["-" ISO 3166-1-Alpha-2 code]
Пример - xml:lang='en-us' устанавливает текст на английском языке в американской редакции.
Элементы labelRef и helpRef должны предоставлять указатель текстового ресурса, хранящегося в файле внешнего тестового ресурса. AIF должна заменять эти ресурсы посредством текста, предусмотренного файлом текстовых ресурсов. Файлы текстовых ресурсов, используемые профилем приборов, должны быть определены в элементе dictionary.
Формат файла текстовых ресурсов должен быть установлен в XML схеме "FDCMLTextResource.xsd", которая определена в B.1.5.4.
Дополнительно может быть предоставлен указатель внешней документации. Элемент hlpRefFile должен указывать положение в файле, определяемое элементом helpFile.
Пример - Примерами внешней документации являются файлы *.hlp, *.html, или *.pdf.
B.1.2.4 Допустимое значение элемента
Если элемент профиля устройств имеет значение, то должно использоваться одно из следующих описаний значения:
B.1.2.5 Моделирование обусловленного поведения устройств
Для моделирования обусловленного поведения устройств должны быть использованы следующие элементы:
Каждый возможный запрещаемый или разрешаемый целевой объект имеет в XML схеме разрешаемый атрибут.
B.1.2.6 Внутренние обращения элементов
Маршрут, установленный в атрибуте ref, должен быть допустимым маршрутом Xpath (см. [8]).
B.1.2.7 Однозначная идентификация элементов
Элементы, которые требуют идентификации, имеют атрибут uniqueID. Значение этого однозначного идентификатора должно состоять из:
token_index [ [_subindex]...], индекса типа unsigned16 и субиндекса типа unsigned8.
B.1.2.8 Компоновки
Элементы компоновки позволяют сгруппировать соответствующие элементы объектов. Компоновка содержит список указателей Xpath своих объектов.
B.1.2.9 Категории со стороны продавца
Разработчик AIP может добавить элементы категорий в сборные элементы.
Пример - Разработчик AIP добавляет processDataCategory для входных сигналов и processDataCategory для выходных сигналов.
B.1.3 Объект DeviceManager
B.1.3.1 Объекты datatypeTemplateList, datatypeTemplate
Объект datatypeTemplate позволяет определить разработчика AIP или типы данных, относящиеся к профилям устройств. Эти типы данных вызываются с элементом datatypeInstance. Они могут быть описаны следующим образом:
B.1.3.2 Атрибут объекта communicationEntity
Таблица B.2 описывает атрибуты объекта communicationEntity, определенные в 6.2.1.3.4.
Таблица B.2
B.1.3.3 Атрибуты объекта channel1
Таблица B.3 описывает атрибуты объекта channel1, определенного в 6.2.1.3.3.2.
Таблица B.3
B.1.3.4 Атрибуты объектов MAU
Таблица B.4 описывает атрибуты объектов MAU, определенные в 6.2.1.3.3.3.
Таблица B.4
B.1.3.5 Атрибуты объектов slot (слот)
Таблица B.5 описывает атрибуты объектов slot, определенные в 6.2.1.3.3.4.
Таблица B.5
B.1.3.6 Атрибуты объектов LED и LEDState
Таблица B.6 описывает атрибуты объекта LED, определенные в 6.2.1.3.3.5. Дочерний объект LEDState описывает разные состояния. Атрибуты LEDState описаны в таблице B.7.
Таблица B.6
Таблица B.7
B.1.4 Описания дополнительных элементов
B.1.4.1 Объект accessPath
Объект accessPath должен описывать маршрут относительно объекта communicationEntity для получения доступа к объекту localDataDescription. Формат объекта:
- для объекта localDataDescription: не определен.
Примечание - Формат для объекта localDataDescription в настоящем стандарте не рассмотрен.
На рисунке B.1 показаны порядок и нумерация смещений в байтах и битах.
в канале обрабатываемых данных
B.1.4.2 Объект datatype
Объект datatype должен определять тип данных родительского элемента.
B.1.4.3 Объект file
Объект 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.
Таблица B.8
Объект hotspotList является набором элементов hotspot. Элементы hotspot определяют положение объектов channel, LED или MAU в графическом представлении. Атрибуты объекта hotspot установлены в таблице B.9. Значения атрибутов xPos и yPos определяют относительное положение (см. рисунок B.2). Элемент hotElement является маршрутом Xpath к объектам channel, LED или MAU.
Таблица B.9
![]() B.1.4.6 Объект specificProperty
Элемент specificProperty резервируется для расширений, выполняемых разработчиком AIP.
Примечание - Использование элемента specificProperty в настоящем стандарте не рассмотрено.
B.1.4.7 Объект tool
Объект tool определяет специальную сервисную программу родительского элемента. Таблица B.10 описывает атрибуты элемента tool.
Таблица B.10
B.1.4.8 Объект uses
Элемент uses определяет ассоциацию "uses", как определено на рисунках 7 и 9.
<?xml version = "1.0" encoding = "windows-1251"?>
<xsd:schema xmlns = "/template/go.php?url=https://www.can-cia.org/xml/canopen"
targetNamespace = "/template/go.php?url=https://www.can-cia.org/xml/canopen"
xmlns:xlink = "/template/go.php?url=https://www.w3.org/1999/xlink"
xmlns:xsd = "/template/go.php?url=https://www.w3.org/2001/XMLSchema"
version = "1.0"
elementFormDefault = "qualified"
attributeFormDefault = "unqualified">
<xsd:import namespace = "/template/go.php?url=https://www.w3.org/1999/xlink" schemaLocation = "xlinkdef.xsd"/>
<xsd:include schemaLocation = "FDCMLdt.xsd"/>
<xsd:group name = "g_labels">
<xsd:choice>
<xsd:element ref = "label" maxOccurs = "unbounded"/>
<xsd:element ref = "labelRef"/>
</xsd:choice>
</xsd:group>
<xsd:group name = "g_help">
<xsd:choice>
<xsd:element ref = "help" maxOccurs = "unbounded"/>
<xsd:element ref = "helpRef"/>
</xsd:choice>
</xsd:group>
<xsd:group name = "g_naming">
<xsd:sequence>
<xsd:choice>
<xsd:sequence>
<xsd:element ref = "label" maxOccurs = "unbounded"/>
<xsd:element ref = "help" minOccurs = "0" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element ref = "labelRef"/>
<xsd:element ref = "helpRef" minOccurs = "0"/>
</xsd:sequence>
</xsd:choice>
<xsd:element ref = "helpFileRef" minOccurs = "0"/>
</xsd:sequence>
</xsd:group>
<xsd:group name = "g_stringValues">
<xsd:choice>
<xsd:element ref = "const" maxOccurs = "unbounded"/>
<xsd:element ref = "edit" maxOccurs = "unbounded"/>
<xsd:element ref = "labelRef"/>
<xsd:element ref = "instanceValue"/>
</xsd:choice>
</xsd:group>
<xsd:group name = "g_values">
<xsd:choice>
<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:sequence>
<xsd:element ref = "yes" minOccurs = "0"/>
<xsd:element ref = "no" minOccurs = "0"/>
</xsd:sequence>
<xsd:element ref = "reference" maxOccurs = "unbounded"/>
<xsd:element ref = "instanceValue"/>
</xsd:choice>
</xsd:group>
<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>
<xsd:attributeGroup name = "accessCategory">
<xsd:attribute name = "accessCategory" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "read"/>
<xsd:enumeration value = "write"/>
<xsd:enumeration value = "readWrite"/>
<xsd:enumeration value = "noAccess"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name = "dataType">
<xsd:attribute name = "dataType" use = "required">
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name = "persistent">
<xsd:attribute name = "persistent" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "false"/>
<xsd:enumeration value = "true"/>
<xsd:enumeration value = "n.a"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name = "type">
<xsd:attribute name = "type" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "fixedValue"/>
<xsd:enumeration value = "vendorSpecific"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name = "use">
<xsd:attribute name = "use" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "required"/>
<xsd:enumeration value = "optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<!- -xmlns:xml="/template/go.php?url=https://www.w3.org/XML/1998/namespace"- ->
<xsd:element name = "ISO15745Profile">
<xsd:annotation>
<xsd:documentation>Document Element</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "ProfileHeader"/>
<xsd:choice>
<xsd:element ref = "ProfileBody"/>
<xsd:element ref = "ProfilesBody"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "accessPath" type = "xsd:string"/>
<xsd:element name = "additionalItem">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:element ref = "pictureList" minOccurs = "0"/>
<xsd:choice minOccurs = "0">
<xsd:group ref = "g_values"/>
</xsd:choice>
<xsd:element ref = "specificProperty" minOccurs = "0" maxOccurs = "unbounded"/>
<xsd:element ref = "additionalItem" minOccurs = "0" maxOccurs = "unbounded"/>
<xsd:element ref = "instances" minOccurs = "0"/>
</xsd:sequence>
<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:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "additionalItemCategory">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:element ref = "additionalItem" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "uniqueID" type = "xsd:ID"/>
<xsd:attribute name = "enabled" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "additionalItemList">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:choice maxOccurs = "unbounded">
<xsd:element ref = "additionalItemCategory"/>
<xsd:element ref = "additionalItem"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name = "uniqueID" type = "xsd:ID"/>
<xsd:attribute name = "additionalItemsType" use = "required" type = "xsd:string"/>
<xsd:attribute name = "enabled" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "alignment">
<xsd:complexType>
<xsd:attribute name = "type" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "byte"/>
<xsd:enumeration value = "word"/>
<xsd:enumeration value = "dword"/>
<xsd:enumeration value = "lword"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "ApplicationProcess">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "externalSchema"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "arrayType">
<xsd:complexType>
<xsd:sequence>
<xsd:choice minOccurs = "0">
<xsd:group ref = "g_help"/>
</xsd:choice>
<xsd:group ref = "g_datatypes"/>
<xsd:element ref = "subrange" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "initialValues" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "buildDate">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "capabilities">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "externalSchema"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "cfgItemList">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:element ref = "CANopenDedicatedCfgCategory"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "change">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_datatypes"/>
<xsd:element ref = "datatypeInstance"/>
</xsd:choice>
<xsd:attribute name = "ref" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "channel">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<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:sequence>
<xsd:attribute name = "uniqueID" use = "required" type = "xsd:ID"/>
<xsd:attribute name = "channelType" type = "xsd:string"/>
<xsd:attribute name = "direction" default = "X">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "I"/>
<xsd:enumeration value = "Q"/>
<xsd:enumeration value = "X"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "enabled" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "channelList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "channel" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "communicationEntity">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:element ref = "cfgItemList" minOccurs = "0"/>
<xsd:element ref = "CANopenIdentity"/>
<xsd:element name = "CANopenCommunicationFunctionList" minOccurs = "0">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "function" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenCommunicationParameterList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "parameter" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element ref = "CANopenObjectAccessList"/>
</xsd:sequence>
<xsd:attribute name = "uniqueID" type = "xsd:ID"/>
<xsd:attribute name = "protocol" use = "required" type = "xsd:string"/>
<xsd:attribute name = "communicator" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "communicationEntityType" default = "SLAVE">
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "communicationProfile" type = "xsd:string"/>
<xsd:attribute name = "enabled" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "connection">
<xsd:complexType>
<xsd:sequence minOccurs = "0">
<xsd:element ref = "specificProperty" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "destination" use = "required" type = "xsd:string"/>
<xsd:attribute name = "source" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "connectionList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "connection" minOccurs = "0" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "const">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_datatypes"/>
<xsd:element ref = "datatypeInstance"/>
</xsd:choice>
<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:complexType>
</xsd:element>
<xsd:element name = "datatype">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_datatypes"/>
<xsd:element ref = "datatypeInstance"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name = "datatypeInstance" nillable = "true">
<xsd:complexType>
<xsd:attribute name = "ref" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "datatypeTemplate">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:choice>
<xsd:element ref = "directlyDerivedType"/>
<xsd:element ref = "enumeratedType"/>
<xsd:element ref = "subrangeType"/>
<xsd:element ref = "arrayType"/>
<xsd:element ref = "structuredType"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "datatypeTemplateList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "alignment" minOccurs = "0"/>
<xsd:element ref = "endianess" minOccurs = "0"/>
<xsd:element ref = "datatypeTemplate" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "default">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_numericDatatypes"/>
<xsd:group ref = "g_booleanDatatypes"/>
<xsd:group ref = "g_userDatatypes"/>
<xsd:group ref = "g_timeDatatypes"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name = "deviceFamily">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "defaultfile">
<xsd:complexType>
<xsd:attribute ref = "xlink:type"/>
<xsd:attribute ref = "xlink:href" use = "required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "deleteEntity">
<xsd:complexType>
<xsd:attribute name = "node" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "DeviceFunction">
<xsd:complexType>
<xsd:choice maxOccurs = "unbounded">
<xsd:element ref = "externalSchema" minOccurs = "0" maxOccurs = "unbounded"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name = "DeviceIdentity">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "DeviceManager">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "deviceStructure">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "dictionary">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "file"/>
</xsd:sequence>
<xsd:attribute ref = "xml:lang" use = "required"/>
<xsd:attribute name = "dictID" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "dictionaryList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "dictionary" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "directlyDerivedType">
<xsd:complexType>
<xsd:sequence>
<xsd:choice minOccurs = "0">
<xsd:group ref = "g_help"/>
</xsd:choice>
<xsd:group ref = "g_datatypes"/>
</xsd:sequence>
<xsd:attribute name = "initialValue" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "disable">
<xsd:complexType>
<xsd:attribute name = "ref" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "edit">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_stringDatatypes"/>
<xsd:element ref = "datatypeInstance"/>
</xsd:choice>
<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:complexType>
</xsd:element>
<xsd:element name = "enable">
<xsd:complexType>
<xsd:attribute name = "ref" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "endianess">
<xsd:complexType>
<xsd:attribute name = "type" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "little"/>
<xsd:enumeration value = "big"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "enumeratedType">
<xsd:complexType>
<xsd:sequence>
<xsd:choice minOccurs = "0">
<xsd:group ref = "g_help"/>
</xsd:choice>
<xsd:element ref = "enumeratedValue" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "initialValue" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "enumeratedValue">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:choice minOccurs = "0">
<xsd:group ref = "g_datatypes"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "enumeration">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_labels"/>
<xsd:choice>
<xsd:group ref = "g_numericDatatypes"/>
<xsd:group ref = "g_booleanDatatypes"/>
<xsd:group ref = "g_stringDatatypes"/>
<xsd:group ref = "g_userDatatypes"/>
</xsd:choice>
<xsd:element ref = "relations" minOccurs = "0"/>
</xsd:sequence>
<xsd:attribute name = "default" default = "NO">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "NO"/>
<xsd:enumeration value = "YES"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "multipleSelection">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "externalSchema">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace = "##any" processContents = "strict"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "file">
<xsd:complexType>
<xsd:attribute ref = "xlink:type"/>
<xsd:attribute ref = "xlink:href" use = "required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "gain">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_numericDatatypes"/>
<xsd:group ref = "g_userDatatypes"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name = "help">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attribute ref = "xml:lang" use = "required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "helpFile">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "file"/>
</xsd:sequence>
<xsd:attribute ref = "xml:lang" use = "required"/>
<xsd:attribute name = "helpFileID" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "helpFileList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "helpFile" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "helpFileRef">
<xsd:complexType>
<xsd:attribute name = "helpFileID" type = "xsd:string"/>
<xsd:attribute name = "helpID" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "helpRef">
<xsd:complexType>
<xsd:attribute name = "dictID" type = "xsd:string"/>
<xsd:attribute name = "textID" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "hotspot">
<xsd:complexType>
<xsd:attribute name = "xPos" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:nonNegativeInteger">
<xsd:maxInclusive value = "100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "yPos" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:nonNegativeInteger">
<xsd:maxInclusive value = "100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "hotElement" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "hotspotList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "hotspot" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name = "IASInterface_DataType">
<xsd:union memberTypes = "">
<xsd:simpleType>
<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>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:length value = "4"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<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:restriction>
</xsd:simpleType>
<xsd:element name = "identity">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "importList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "file" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "indicatorList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "LEDList" minOccurs = "0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "instanceName">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "instances">
<xsd:complexType>
<xsd:choice>
<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:choice>
</xsd:choice>
<xsd:attribute name = "maxInstances" type = "xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "instanceValue" type = "xsd:string"/>
<xsd:element name = "internalConnectionPoint">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "uses" minOccurs = "0"/>
<xsd:element ref = "specificProperty" minOccurs = "0" maxOccurs = "unbounded"/>
<xsd:element ref = "instances" minOccurs = "0"/>
</xsd:sequence>
<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:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "internalConnectionPointList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "internalConnectionPoint" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "ISO15745Edition" type = "xsd:positiveInteger"/>
<xsd:element name = "ISO15745Part" type = "xsd:positiveInteger"/>
<xsd:complexType name = "ISO15745Reference_DataType">
<xsd:sequence>
<xsd:element name = "ISO15745Part" type = "xsd:positiveInteger"/>
<xsd:element name = "ISO15745Edition" type = "xsd:positiveInteger"/>
<xsd:element name = "ProfileTechnology" type = "xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name = "label">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attribute ref = "xml:lang" use = "required"/>
<xsd:attribute ref = "xlink:type"/>
<xsd:attribute ref = "xlink:href"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "labelRef">
<xsd:complexType>
<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:complexType>
</xsd:element>
<xsd:element name = "LED">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:element ref = "LEDState" maxOccurs = "unbounded"/>
<xsd:element ref = "specificProperty" minOccurs = "0" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "uniqueID" use = "required" type = "xsd:ID"/>
<xsd:attribute name = "LEDType" use = "required">
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "enabled" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "LEDList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "LED" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "LEDState">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:element ref = "specificProperty" minOccurs = "0" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "LEDCondition" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "ON"/>
<xsd:enumeration value = "OFF"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "LEDColor">
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "LEDFrequency" type = "xsd:float"/>
<xsd:attribute name = "LEDFlashCount" type = "xsd:nonNegativeInteger"/>
<xsd:attribute name = "ref" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "localDataCategory">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:element ref = "localDataDescription" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "uniqueID" type = "xsd:ID"/>
<xsd:attribute name = "enabled" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "localDataDescription">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<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:sequence>
<xsd:attribute name = "uniqueID" use = "required" type = "xsd:ID"/>
<xsd:attribute name = "direction" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "I"/>
<xsd:enumeration value = "Q"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "localDataDescriptionType" use = "required" type = "xsd:string"/>
<xsd:attribute name = "enabled" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "localDataDescriptionList">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:choice maxOccurs = "unbounded">
<xsd:element ref = "localDataCategory"/>
<xsd:element ref = "localDataDescription"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "logicalConnectionPoint">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<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:sequence>
<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:simpleType>
<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:restrictions>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "maxRelationships" default = "1" type = "xsd:nonNegativeInteger"/>
<xsd:attribute name = "newLevel" default = "NO">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "enabled" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "logicalConnectionPointAssembly">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<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:sequence>
<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:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "logicalConnectionPointAssemblyList">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:element ref = "logicalConnectionPointAssembly" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "logicalConnectionPointList">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:element ref = "logicalConnectionPoint" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "MAU">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:element ref = "pictureList" minOccurs = "0"/>
<xsd:element ref = "specificProperty" minOccurs = "0" maxOccurs = "unbounded"/>
<xsd:element ref = "instances" minOccurs = "0"/>
</xsd:sequence>
<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:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "NO"/>
<xsd:enumeration value = "YES"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "directlyConnected" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "NO"/>
<xsd:enumeration value = "YES"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "direction" use = "required">
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "sequenceNumber" default = "1" type = "xsd:nonNegativeInteger"/>
<xsd:attribute name = "enabled" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "MAUList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "MAU" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "MAUUsage">
<xsd:complexType>
<xsd:attribute name = "ref" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "MAUUsageList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "MAUUsage" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "maxVal">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_numericDatatypes"/>
<xsd:group ref = "g_booleanDatatypes"/>
<xsd:group ref = "g_userDatatypes"/>
<xsd:group ref = "g_timeDatatypes"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name = "minVal">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_numericDatatypes"/>
<xsd:group ref = "g_booleanDatatypes"/>
<xsd:group ref = "g_userDatatypes"/>
<xsd:group ref = "g_timeDatatypes"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name = "modifyEntity">
<xsd:complexType>
<xsd:choice maxOccurs = "unbounded">
<xsd:any namespace = "/template/go.php?url=https://www.can-cia.org/xml/canopen/" processContents = "strict"/>
</xsd:choice>
<xsd:attribute name = "node" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "modifyValue">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_values"/>
</xsd:choice>
<xsd:attribute name = "node" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "no">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:element ref = "relations" minOccurs = "0"/>
</xsd:sequence>
<xsd:attribute name = "default" default = "NO">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "NO"/>
<xsd:enumeration value = "YES"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "nonStandardizedExtension">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace = "##any" processContents = "strict"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "offset">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_numericDatatypes"/>
<xsd:group ref = "g_userDatatypes"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name = "on">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "relations"/>
</xsd:sequence>
<xsd:attribute name = "value" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "orderNumber">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "picture">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:element ref = "hotspotList" minOccurs = "0"/>
</xsd:sequence>
<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:complexType>
</xsd:element>
<xsd:element name = "pictureList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "picture" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "processingEntity">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<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:sequence>
<xsd:attribute name = "uniqueID" type = "xsd:ID"/>
<xsd:attribute name = "processingEntityType" use = "required" type = "xsd:string"/>
<xsd:attribute name = "enabled" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "productFamily">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "productID">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "productName">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "productText">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "ProfileBody">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
<xsd:attributeGroup ref = "ag_FDCML"/>
<xsd:attribute name = "supportedLanguages" type = "xsd:NMTOKENS"/>
<xsd:attribute name = "uniqueID" type = "xsd:ID"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "ProfileHeader">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "ProfilesBody">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "DeviceIdentity" minOccurs = "0"/>
<xsd:element ref = "ProfileBody" maxOccurs = "unbounded"/>
<xsd:element ref = "connectionList"/>
</xsd:sequence>
<xsd:attributeGroup ref = "ag_FDCML"/>
<xsd:attribute name = "supportedLanguages" type = "xsd:NMTOKENS"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "provides">
<xsd:complexType>
<xsd:attribute name = "ref" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "range">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
<xsd:attribute name = "format" type = "xsd:string"/>
<xsd:attribute name = "unit" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "recalcEntity">
<xsd:complexType>
<xsd:attribute name = "node" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "recalcValue">
<xsd:complexType>
<xsd:attribute name = "node" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "reference">
<xsd:complexType>
<xsd:attribute name = "ref" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "relations">
<xsd:complexType>
<xsd:choice maxOccurs = "unbounded">
<xsd:element ref = "enable"/>
<xsd:element ref = "disable"/>
<xsd:element ref = "change"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name = "serialNumber">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "slot">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<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:sequence>
<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:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "slotList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "slot" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "specificationRevision">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "specificProperty">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:group ref = "g_values"/>
</xsd:sequence>
<xsd:attribute name = "propertyType" use = "required" type = "xsd:string"/>
<xsd:attribute name = "enabled" default ="YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "NO"/>
<xsd:enumeration value = "YES"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "stepVal">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_numericDatatypes"/>
<xsd:group ref = "g_booleanDatatypes"/>
<xsd:group ref = "g_userDatatypes"/>
<xsd:group ref = "g_timeDatatypes"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name = "structuredType">
<xsd:complexType>
<xsd:sequence>
<xsd:choice minOccurs = "0">
<xsd:group ref = "g_help"/>
</xsd:choice>
<xsd:choice maxOccurs = "unbounded">
<xsd:element ref = "varDeclaration"/>
<xsd:element ref = "subrangeVarDeclaration"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "subrange">
<xsd:complexType>
<xsd:attribute name = "lowerLimit" use = "required" type = "xsd:string"/>
<xsd:attribute name = "upperLimit" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "subrangeType">
<xsd:complexType>
<xsd:sequence>
<xsd:choice minOccurs = "0">
<xsd:group ref = "g_help"/>
</xsd:choice>
<xsd:group ref = "g_integerDatatypes"/>
<xsd:element ref = "subrange"/>
</xsd:sequence>
<xsd:attribute name = "initialValue" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "subrangeVarDeclaration">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:group ref = "g_integerDatatypes"/>
<xsd:element ref = "subrange" minOccurs = "0"/>
</xsd:sequence>
<xsd:attribute name = "initialValue" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "tool">
<xsd:complexType>
<xsd:attribute name = "toolClassification" use = "required" type = "xsd:string"/>
<xsd:attribute name = "toolID" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "toolList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "tool" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "typeName">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "uses">
<xsd:complexType>
<xsd:attribute name = "ref" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "varDeclaration">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:choice>
<xsd:group ref = "g_datatypes"/>
<xsd:element ref = "uses"/>
</xsd:choice>
<xsd:element ref = "subrange" minOccurs = "0" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "initialValue" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "vendorID">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "vendorName">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "vendorText">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "version">
<xsd:complexType>
<xsd:choice>
<xsd:group ref = "g_labels"/>
</xsd:choice>
<xsd:attribute name = "versionType" use = "required" type = "xsd:string"/>
<xsd:attribute name = "readOnly" default = "YES">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "yes">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref = "g_naming"/>
<xsd:element ref = "relations" minOccurs = "0"/>
</xsd:sequence>
<xsd:attribute name = "default" default = "NO">
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "YES"/>
<xsd:enumeration value = "NO"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "associatedParameter">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attribute name = "associatedParameterValue" use = "required" type = "xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "configParametersList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "parameterRef" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "constraint">
<xsd:annotation>
<xsd:documentation>The elements under Constraints aren't checked by the parser. The languages, to use to describe the constraints, don't refer to a schema.
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace = "##any" processContents = "skip" minOccurs = "0" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "constraintID" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:ID">
<xsd:pattern value = "C\d{1,6}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "constraintType" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "among_parameters"/>
<xsd:enumeration value = "display"/>
<xsd:enumeration value = "network"/>
<xsd:enumeration value = "device"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "constraintLanguage" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "constraintsList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "constraint" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "commandParameter">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attribute name = "commandParameterValue" use = "required" type = "xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "defaultValue">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attributeGroup ref = "type"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "function">
<xsd:complexType>
<xsd:sequence>
<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:complexType>
<xsd:sequence>
<xsd:element ref = "stateTransitionDiagram"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<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:complexType>
</xsd:element>
<xsd:element name = "functionRef">
<xsd:annotation>
<xsd:documentation>By this way the hierarchical view of the device can be describe. There is no limitation in the level number.</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "functionRef" minOccurs = "0" maxOccurs = "unbounded"/>
</xsd:sequence>
<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:complexType>
</xsd:element>
<xsd:element name = "highLimit">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attributeGroup ref = "type"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "inputsList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "parameterRef" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "listOfValues">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "value" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "lowLimit">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attributeGroup ref = "type"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "member">
<xsd:annotation>
<xsd:documentation>For dataType = array, only first member is needed</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<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:group ref = "g_naming"/>
</xsd:sequence>
<xsd:element ref = "actualValue" minOccurs = "0"/>
</xsd:sequence>
<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:complexType>
</xsd:element>
<xsd:element name = "membersList">
<xsd:annotation>
<xsd:documentation>membersList is mandatory if dataType = struct or array.</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "member" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "numberOfMembers" use = "required" type = "xsd:integer"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "outputsList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "parameterRef" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "parameter" type = "parameterType"/>
<xsd:element name = "state" type = "stateType"/>
<xsd:element name = "statesTab">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "state" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "stateTransitionDiagram" type = "stateTransitionDiagramType"/>
<xsd:element name = "transition" type = "transitionType"/>
<xsd:element name = "transtionsTab">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "transition" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "unit">
<xsd:complexType>
<xsd:attribute name = "multiplier" use = "required" type = "xsd:string"/>
<xsd:attribute name = "unitURI" type = "xsd:anyURI"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "value">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attribute name = "meaning" type = "xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:complexType name = "parameterType">
<xsd:sequence>
<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:group ref = "g_naming"/>
</xsd:sequence>
</xsd:sequence>
<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>
<xsd:complexType name = "stateType">
<xsd:sequence>
<xsd:element ref = "associatedParameter"/>
</xsd:sequence>
<xsd:attribute name = "description" type = "xsd:string"/>
<xsd:attribute name = "initialState" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "false"/>
<xsd:enumeration value = "true"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "stateName" use = "required" type = "xsd:ID"/>
<xsd:attribute name = "stateParent" type = "xsd:string"/>
</xsd:complexType>
<xsd:complexType name = "transitionType">
<xsd:sequence>
<xsd:element ref = "commandParameter" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:attribute name = "description" type = "xsd:string"/>
<xsd:attribute name = "transitionNumber" use = "required">
<xsd:annotation>
<xsd:documentation>Number format = Tx to Txxxxxx</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base = "xsd:ID">
<xsd:pattern value = "T\d{1,6}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "fromState" use = "required" type = "xsd:IDREF"/>
<xsd:attribute name = "toState" use = "required" type = "xsd:IDREF"/>
</xsd:complexType>
<xsd:complexType name = "stateTransitionDiagramType">
<xsd:sequence>
<xsd:element ref = "statesTab"/>
<xsd:element ref = "transtionsTab"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name = "actualValue" type = "xsd:string"/>
<xsd:element name = "CANopenIdentity">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "CANopenVendorId">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:unsignedLong">
<xsd:attribute name = "paramId" use = "required" type = "xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenProductCode" minOccurs = "0">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:unsignedLong">
<xsd:attribute name = "paramId" use = "required" type = "xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenRevisionNumber" minOccurs = "0">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:unsignedLong">
<xsd:attribute name = "paramId" use = "required" type = "xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenSerialNumber" minOccurs = "0">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:unsignedLong">
<xsd:attribute name = "paramId" use = "required" type = "xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenManufacturerDeviceName" minOccurs = "0">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attribute name = "paramId" use = "required" type = "xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenManufacturerHardwareVersion" minOccurs = "0">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attribute name = "paramId" use = "required" type = "xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenManufacturerSoftwareVersion" minOccurs = "0">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attribute name = "paramId" use = "required" type = "xsd:ID"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenDedicatedCfgCategory">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "CANopenGeneralCapabilities">
<xsd:complexType/>
</xsd:element>
<xsd:element name = "CANopenDeviceCommissioning" minOccurs = "0">
<xsd:complexType/>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "parameterRef">
<xsd:complexType>
<xsd:attribute name = "paramID" use = "required" type = "xsd:IDREF"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenObjectAccessList">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "CANopenObject" maxOccurs = "65536">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "CANopenSubObject" maxOccurs = "255">
<xsd:complexType>
<xsd:attribute name = "subIndex" use = "required" type = "xsd:unsignedByte"/>
<xsd:attribute name = "pdoMapping" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "NotAllowed"/>
<xsd:enumeration value = "ReceiveOnly"/>
<xsd:enumeration value = "TransmitOnly"/>
<xsd:enumeration value = "ReceiveTransmit"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name = "paramID" type = "xsd:IDREF"/>
<xsd:attribute name = "maxSubNumber" type = "xsd:unsignedByte"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name = "index" use = "required" type = "xsd:unsignedShort"/>
<xsd:attribute name = "objectCode" use = "required" type = "xsd:unsignedByte"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<?xml version="1.0" encoding="windows-1251"?>
<xsd:schema targetNamespace="/template/go.php?url=https://www.FDCML.org"
xmlns="/template/go.php?url=https://www.FDCML.org"
xmlns:xsd="/template/go.php?url=https://www.w3.org/2001/XMLSchema"
xmlns:xlink="/template/go.php?url=https://www.w3.org/1999/xlink"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
<xsd:include schemaLocation="FDCMLdt.xsd"/>
<xsd:import namespace="/template/go.php?url=https://www.w3.org/1999/xlink" schemaLocation="xlinkdef.xsd"/>
<xsd:element name="binaryDate" nillable="true">
<xsd:annotation>
<xsd:documentation>Binary Date w/ 7 octets</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryDate2000" nillable="true">
<xsd:annotation>
<xsd:documentation>Binary Date w/ 8 octets</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryTime0" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 2 octets, unit is 10 us</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedShort"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryTime1" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 2 octets, unit is 100 us</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedShort"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryTime2" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 2 octets, unit is 1 ms</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedShort"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryTime3" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 2 octets, unit is 10 ms</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedShort"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryTime4" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 4 octets, unit is 10 us</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryTime5" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 4 octets, unit is 100 us</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryTime6" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 4 octets, unit is 1 ms</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryTime7" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 6 octets, unit is 1 ms</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedLong">
<xsd:maxInclusive value="281474976710655"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryTime8" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 6 octets, unit is 10 us</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedLong">
<xsd:maxInclusive value="281474976710655"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="binaryTime9" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 6 octets, unit is 100 us</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedLong">
<xsd:maxInclusive value="281474976710655"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:simpleType name="t_bitstring">
<xsd:restriction base="xsd:string">
<xsd:pattern value="(([0-1]{8})_?)*([0-1]{8})"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="bitstring" nillable="true">
<xsd:annotation>
<xsd:documentation>sting of bits (length in octets)</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="t_bitstring16">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9]|[A-F]){4}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="t_bitstring32">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9]|[A-F]){8}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="t_bitstring64">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9]|[A-F]){16}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="t_bitstring8">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9]|[A-F]){2}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="boolean" nillable="true">
<xsd:annotation>
<xsd:documentation>one bit representing the values true and false</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="bool" nillable="true">
<xsd:annotation>
<xsd:documentation>octet representing the values true and false</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="byte" nillable="true">
<xsd:annotation>
<xsd:documentation>string of 8 bit (byte)</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="t_compactBooleanArray">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9]|[A-F]){2}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="compactBooleanArray" nillable="true">
<xsd:annotation>
<xsd:documentation>array of 8 bits, length one octet</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="date_and_time" nillable="true">
<xsd:annotation>
<xsd:documentation>structured datatype consiting of timeOfDay4 and date2</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>represented by ISO 8601 dateTime</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:dateTime">
<xsd:attribute name="IEC61131" type="xsd:string" fixed="DATE_AND_TIME"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="date" nillable="true">
<xsd:annotation>
<xsd:documentation>Date without time indication</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>represented by ISO 8601 date</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:date">
<xsd:attribute name="IEC61131" type="xsd:string" fixed="DATE"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="date7" nillable="true">
<xsd:annotation>
<xsd:documentation>Date with time indication</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>restricted later ?</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string"/>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="dint" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 4 octets</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="dword" nillable="true">
<xsd:annotation>
<xsd:documentation>string of 32 bit (dword)</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="fieldbusTime" nillable="true">
<xsd:annotation>
<xsd:documentation>IEC 61158-4 DL-Time</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>restricted later ?</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string"/>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="fTime" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 4 octets, unit is 1 us</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>4 octets, unit is 1 us</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="int" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 2 octets</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="IPV4Address" nillable="true">
<xsd:annotation>
<xsd:documentation>IP V4 address in dotted notation</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="IPV6Address" nillable="true">
<xsd:annotation>
<xsd:documentation>IP V6 address in dotted notation</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="iTime" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 2 octets, unit is 1 ms</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>2 octets, unit is 1 ms</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="lint" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 8 octets</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:long">
<xsd:attribute name="IEC61131" type="xsd:string" fixed="LINT"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="lreal" nillable="true">
<xsd:annotation>
<xsd:documentation>ANSI/IEEE 754 double precision</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="lTime" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 8 octets, unit is 1 us</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>8 octets, unit is 1 us</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:long">
<xsd:attribute name="IEC61131" type="xsd:string" fixed="LINT"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="lword" nillable="true">
<xsd:annotation>
<xsd:documentation>string of 64 bit (lword)</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="t_bitstring64">
<xsd:attribute name="IEC61131" type="xsd:string" fixed="LWORD"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<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:restriction>
</xsd:simpleType>
<xsd:element name="octetString" nillable="true">
<xsd:annotation>
<xsd:documentation>ordered sequence of octets, length in octets</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="t_octetString1">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9]|[A-F]){2}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="octetString1" nillable="true">
<xsd:annotation>
<xsd:documentation> 1 octet</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="t_octetString16">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9]|[A-F]){32}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="octetString16" nillable="true">
<xsd:annotation>
<xsd:documentation>ordered sequence of 16 octets</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="t_octetString16">
<xsd:attribute name="WinVT" type="xsd:string" fixed="VT_BSTR"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="t_octetString2">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9]|[A-F]){4}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="octetString2" nillable="true">
<xsd:annotation>
<xsd:documentation>ordered sequence of 2 octets</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="t_octetString4">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9]|[A-F]){8}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="octetString4" nillable="true">
<xsd:annotation>
<xsd:documentation>ordered sequence of 4 octets</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="t_octetString8">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9]|[A-F]){16}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="octetString8" nillable="true">
<xsd:annotation>
<xsd:documentation>ordered sequence of 8 octets</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="t_octetString8">
<xsd:attribute name="IEC61131" type="xsd:string" fixed="LWORD"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="real" nillable="true">
<xsd:annotation>
<xsd:documentation>ANSI/IEEE 754 single precision</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="sint" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 1 octet</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="time" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 4 octets, unit is 1 ms</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>4 octets, unit is 1 ms</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:int">
<xsd:attribute name="IEC61131" type="xsd:string" fixed="TIME"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="timeDifference4" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 4 octets, unit is 1 ms</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>TimeDifference without date indication</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:unsignedInt"/>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="timeDifference6" nillable="true">
<xsd:annotation>
<xsd:documentation>time difference with additional difference in days</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>restricted later ?</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string"/>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="timeOfDay6" nillable="true">
<xsd:annotation>
<xsd:documentation>time of day with date indication</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>restricted later ?</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string"/>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="time_of_day" nillable="true">
<xsd:annotation>
<xsd:documentation>time of day without date indication</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>TimeOfDay without date indication</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:unsignedInt">
<xsd:attribute name="IEC61131" type="xsd:string" fixed="TIME_OF_DAY"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="timeValue" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 8 octets, unit is 1/32 ms</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>unit of time is 1/32 millisecond</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:unsignedLong"/>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="universalTime" nillable="true">
<xsd:annotation>
<xsd:documentation>12 octet string YYMMDDHHMMSS</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="udint" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 4 octets and sign bit</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="uint" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 2 octets and sign bit</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ulint" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 8 octets and sign bit</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:unsignedLong">
<xsd:attribute name="IEC61131" type="xsd:string" fixed="ULINT"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="usint" nillable="true">
<xsd:annotation>
<xsd:documentation>binary number w/ 1 octet and sign bit</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="visibleString" nillable="true">
<xsd:annotation>
<xsd:documentation>VisibleString1, VisibleString2, VisibleString4, VisibleString8, VisibleString16, UNICODE Char, VisibleString, UNICODEString</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>this type resembles the 61158 datatypes visibleString[n], UNICODE char, visibleString, UNICODEString, string, string1, string2, stringn, shortString</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="word" nillable="true">
<xsd:annotation>
<xsd:documentation>string of 16 bit (word)</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="array" nillable="true">
<xsd:complexType>
<xsd:simpleContent>
<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:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="embeddedStringLength" type="xsd:nonNegativeInteger" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="record" nillable="true">
<xsd:complexType>
<xsd:simpleContent>
<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:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="udt" nillable="true">
<xsd:annotation>
<xsd:documentation>user defined simple data type</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<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:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="BIT"/>
<xsd:enumeration value="UNSIGNED"/>
<xsd:enumeration value="INTEGER"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="IEC61131" type="xsd:string" use="optional"/>
<xsd:attribute name="WinVT" type="xsd:string" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:group name="g_booleanDatatypes">
<xsd:annotation>
<xsd:documentation>group of boolean data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element ref="boolean"/>
<xsd:element ref="bool"/>
<xsd:element ref="byte"/>
<xsd:element ref="word"/>
<xsd:element ref="dword"/>
<xsd:element ref="Iword"/>
<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:choice>
</xsd:group>
<xsd:group name="g_signedIntegerDatatypes">
<xsd:annotation>
<xsd:documentation>group of signed integer data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element ref="sint"/>
<xsd:element ref="int"/>
<xsd:element ref="dint"/>
<xsd:element ref="lint"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_unsignedIntegerDatatypes">
<xsd:annotation>
<xsd:documentation>group of unsigned integer data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element ref="usint"/>
<xsd:element ref="uint"/>
<xsd:element ref="udint"/>
<xsd:element ref="ulint"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_floatDatatypes">
<xsd:annotation>
<xsd:documentation>group of float data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element ref="real"/>
<xsd:element ref="Ireal"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_integerDatatypes">
<xsd:annotation>
<xsd:documentation>group of integer data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:group ref="g_signedIntegerDatatypes"/>
<xsd:group ref="g_unsignedIntegerDatatypes"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_numericDatatypes">
<xsd:annotation>
<xsd:documentation>group of numeric data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:group ref="g_integerDatatypes"/>
<xsd:group ref="g_floatDatatypes"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_userDatatypes">
<xsd:annotation>
<xsd:documentation>group of user defined simple data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element ref="udt"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_dateDatatypes">
<xsd:annotation>
<xsd:documentation>group of date data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element ref="binaryDate"/>
<xsd:element ref="binaryDate2000"/>
<xsd:element ref="date7"/>
<xsd:element ref="date"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_dtDatatypes">
<xsd:annotation>
<xsd:documentation>group of date and time data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element ref="timeOfDay6"/>
<xsd:element ref="timeDifference6"/>
<xsd:element ref="universalTime"/>
<xsd:element ref="date_and_time"/>
<xsd:element ref="fieldbusTime"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_timeDatatypes">
<xsd:annotation>
<xsd:documentation>group of time data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element ref="time_of_day"/>
<xsd:element ref="timeDifference4"/>
<xsd:element ref="time"/>
<xsd:element ref="fTime"/>
<xsd:element ref="lTime"/>
<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:element ref="iTime"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_stringDatatypes">
<xsd:annotation>
<xsd:documentation>group of string data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element ref="visibleString"/>
<xsd:element ref="octetString"/>
<xsd:element ref="bitstring"/>
<xsd:element ref="IPV4Address"/>
<xsd:element ref="IPV6Address"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_complexDatatypes">
<xsd:annotation>
<xsd:documentation>group of complex data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element ref="array"/>
<xsd:element ref="record"/>
</xsd:choice>
</xsd:group>
<xsd:group name="g_datatypes">
<xsd:annotation>
<xsd:documentation>group of all FDCML data types</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<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"/>
</xsd:choice>
</xsd:group>
</xsd:schema>
B.1.5.3 FDCMLISO15745DeviceFunction.xsd
<?xml version="1.0" encoding="windows-1251"?>
<xsd:schema targetNamespace="/template/go.php?url=https://www.fdcml.org/DeviceFunction"
xmlns:xlink="/template/go.php?url=https://www.w3.org/1999/xlink" xmlns:xsd="/template/go.php?url=https://www.w3.org/2001/XMLSchema"
xmlns="/template/go.php?url=https://www.fdcml.org/DeviceFunction" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:import namespace="/template/go.php?url=https://www.w3.org/XML/1998/namespace" schemaLocation="xmldef.xsd"/>
<xsd:import namespace="/template/go.php?url=https://www.w3.org/1999/xlink" schemaLocation="xlinkdef.xsd"/>
<xsd:complexType name="parameterType">
<xsd:sequence>
<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:group ref="g_naming"/>
</xsd:sequence>
</xsd:sequence>
<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>
<xsd:complexType name="stateTransitionDiagramType">
<xsd:sequence>
<xsd:element ref="statesTab"/>
<xsd:element ref="transitionsTab"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="stateType">
<xsd:sequence>
<xsd:element ref="associatedParameter"/>
</xsd:sequence>
<xsd:attribute name="description" type="xsd:string"/>
<xsd:attribute name="initialState" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="false"/>
<xsd:enumeration value="true"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="stateName" type="xsd:ID" use="required"/>
<xsd:attribute name="stateParent" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="transitionType">
<xsd:sequence>
<xsd:element ref="commandParameter" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="description" type="xsd:string"/>
<xsd:attribute name="transitionNumber" use="required">
<xsd:annotation>
<xsd:documentation>Number format = Tx to Txxxxxx</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="T\d{1,6}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="fromState" type="xsd:IDREF" use="required"/>
<xsd:attribute name="toState" type="xsd:IDREF" use="required"/>
</xsd:complexType>
<xsd:element name="actualValue" type="xsd:string"/>
<xsd:element name="associatedParameter">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="associatedParameterValue" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="commandParameter">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="commandParameterValue" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="configParametersList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="parameterRef" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="constraint">
<xsd:annotation>
<xsd:documentation>The elements under Constraints aren't checked by the parser. The languages, to use to describe the constraints, don't refer to a schema.
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="constraintID" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="C\d{1,6}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="constraintType" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="among_parameters"/>
<xsd:enumeration value="display"/>
<xsd:enumeration value="network"/>
<xsd:enumeration value="device"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="constraintLanguage" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="constraintsList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="constraint" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="defaultValue">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attributeGroup ref="type"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="function">
<xsd:complexType>
<xsd:sequence>
<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:complexType>
<xsd:sequence>
<xsd:element ref="stateTransitionDiagram"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<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:complexType>
</xsd:element>
<xsd:element name="functionRef">
<xsd:annotation>
<xsd:documentation>By this way the hierarchical view of the device can be described. There is no limitation in the level number.</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="functionRef" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<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:complexType>
</xsd:element>
<xsd:element name="functionView">
<xsd:annotation>
<xsd:documentation>Network independent description of the intrinsic function of a device, from a configuration and service (i.e.: tuning, maintenance, diagnostic,
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="functionList" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="function" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="parameterList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="parameter" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="functionAnalysis" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="functionRef" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="help">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="xml:lang" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="helpFileRef">
<xsd:complexType>
<xsd:attribute name="helpFileID" type="xsd:string"/>
<xsd:attribute name="helpID" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="helpRef">
<xsd:complexType>
<xsd:attribute name="dictID" type="xsd:string"/>
<xsd:attribute name="textID" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="highLimit">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attributeGroup ref="type"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="inputsList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="parameterRef" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="label">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="xml:lang" use="required"/>
<xsd:attribute ref="xlink:type"/>
<xsd:attribute ref="xlink:href"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="labelRef">
<xsd:complexType>
<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:complexType>
</xsd:element>
<xsd:element name="listOfValues">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="value" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="lowLimit">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attributeGroup ref="type"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="member">
<xsd:annotation>
<xsd:documentation>For dataType = array, only first member is needed</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<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:group ref="g_naming"/>
</xsd:sequence>
<xsd:element ref="actualValue" minOccurs="0"/>
</xsd:sequence>
<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:complexType>
</xsd:element>
<xsd:element name="membersList">
<xsd:annotation>
<xsd:documentation>membersList is mandatory if dataType = struct or array.</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="member" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="numberOfMembers" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="outputsList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="parameterRef" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="parameterRef">
<xsd:complexType>
<xsd:attribute name="paramID" type="xsd:IDREF" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="parameter" type="parameterType"/>
<xsd:element name="state" type="stateType"/>
<xsd:element name="statesTab">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="state" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="stateTransitionDiagram" type="stateTransitionDiagramType"/>
<xsd:element name="transition" type="transitionType"/>
<xsd:element name="transitionsTab">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="transition" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="unit">
<xsd:complexType>
<xsd:attribute name="multiplier" type="xsd:string" use="required"/>
<xsd:attribute name="unitURI" type="xsd:anyURI"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="value">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="meaning" type="xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:attributeGroup name="accessCategory">
<xsd:attribute name="accessCategory" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="read"/>
<xsd:enumeration value="write"/>
<xsd:enumeration value="readWrite"/>
<xsd:enumeration value="noAccess"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="dataType">
<xsd:attribute name="dataType" use="required">
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="persistent">
<xsd:attribute name="persistent" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="false"/>
<xsd:enumeration value="true"/>
<xsd:enumeration value="n.a"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="type">
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="fixedValue"/>
<xsd:enumeration value="vendorSpecific"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="use">
<xsd:attribute name="use" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="required"/>
<xsd:enumeration value="optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:group name="g_naming">
<xsd:sequence>
<xsd:choice>
<xsd:sequence>
<xsd:element ref="label" maxOccurs="unbounded"/>
<xsd:element ref="help" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element ref="labelRef"/>
<xsd:element ref="helpRef" minOccurs="0"/>
</xsd:sequence>
</xsd:choice>
<xsd:element ref="helpFileRef" minOccurs="0"/>
</xsd:sequence>
</xsd:group>
</xsd:schema>
<?xml version="1.0" encoding="windows-1251"?>
<xsd:schema targetNamespace="/template/go.php?url=https://www.fdcml.org/TextResource" xmlns="/template/go.php?url=https://www.fdcml.org/TextResource"
xmlns:xsd="/template/go.php?url=https://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="1.0">
<xsd:import namespace="/template/go.php?url=https://www.w3.org/XML/1998/namespace" schemaLocation="xmldef.xsd"/>
<xsd:element name="FDCMLTextResource">
<xsd:annotation>
<xsd:documentation>text resource for FDCML</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="textEntry" type="t_textEntry" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute ref="xml:lang" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="t_textEntry">
<xsd:annotation>
<xsd:documentation>single text</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="textID" type="xsd:ID" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:schema>
B.1.5.5 xmldef.xsd
<?xml version="1.0"?>
<xsd:schema targetNamespace="/template/go.php?url=https://www.w3.org/XML/1998/namespace"
xmlns:xsd="/template/go.php?url=https://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
version="1.0">
<xsd:attribute name="lang" type="xsd:language"/>
<xsd:attribute name="space" default="preserve">
<xsd:simpleType>
<xsd:restriction base="xsd:NCName">
<xsd:enumeration value="default"/>
<xsd:enumeration value="preserve"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:schema>
B.1.5.6 xlinkdef.xsd
<?xml version="1.0"?>
<xsd:schema targetNamespace="/template/go.php?url=https://www.w3.org/1999/xlink"
xmlns:xsd="/template/go.php?url=https://www.w3.org/2001/XMLSchema"
xmlns:xlink="/template/go.php?url=https://www.w3.org/1999/xlink"
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
version="1.0">
<xsd:attribute name="type">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="simple"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="href" type="xsd:anyURI"/>
</xsd:schema>
B.2 Описание шаблонов профилей коммуникационных сетей
XML файлы коммуникационных профилей должны соответствовать XML схеме профилей коммуникационных сетей, как установлено ниже.
<?xml version = "1.0" encoding = "UTF-16"?>
<xsd:schema xmlns = "/template/go.php?url=https://www.can-cia.org/xml/canopen/commnetworkprofile/"
targetNamespace = "/template/go.php?url=https://www.can-cia.org/xml/canopen/commnetworkprofile/"
xmlns:xlink = "/template/go.php?url=https://www.w3.org/1999/xlink"
xmlns:xsd = "/template/go.php?url=https://www.w3.org/2001/XMLSchema"
version = "1.0"
elementFormDefault = "qualified"
attributeFormDefault = "unqualified">
<xsd:import namespace = "/template/go.php?url=https://www.w3.org/1999/xlink" schemaLocation = "xlinkdef.xsd"/>
<xsd:attributeGroup name = "use">
<xsd:attribute name = "use" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "required"/>
<xsd:enumeration value = "optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name = "type">
<xsd:attribute name = "type" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "fixedValue"/>
<xsd:enumeration value = "vendorSpecific"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name = "persistent">
<xsd:attribute name = "persistent" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "false"/>
<xsd:enumeration value = "true"/>
<xsd:enumeration value = "n.a"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name = "dataType">
<xsd:attribute name = "dataType" use = "required">
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name = "accessCategory">
<xsd:attribute name = "accessCategory" use = "required"
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKEN">
<xsd:enumeration value = "read"/>
<xsd:enumeration value = "write"/>
<xsd:enumeration value = "readWrite"/>
<xsd:enumeration value = "noAccess"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<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>
<xsd:group name = "g_naming">
<xsd:sequence>
<xsd:choice>
<xsd:sequence>
<xsd:element ref = "label" maxOccurs = "unbounded"/>
<xsd:element ref = "help" minOccurs = "0" maxOccurs = "unbounded"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element ref = "labelRef"/>
<xsd:element ref = "helpRef minOccurs = "0"/>
</xsd:sequence>
</xsd:choice>
<xsd:element ref = "helpFileRef" minOccurs = "0"/>
</xsd:sequence>
</xsd:group>
<!- -xmlns:xml="/template/go.php?url=https://www.w3.org/XML/1998/namespace"- ->
<!- -
################ global elements
- ->
<xsd:element name = "ISO15745Profile">
<xsd:annotation>
<xsd:documentation>Document Element</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "ProfileHeader"/>
<xsd:element ref = "ProfileBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!- -
################ types
- ->
<xsd:element name = "help" type = "xsd:string"/>
<xsd:element name = "helpFileRef">
<xsd:complexType>
<xsd:attribute name = "helpFileID" type = "xsd:string"/>
<xsd:attribute name = "helpID" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "helpRef">
<xsd:complexType>
<xsd:attribute name = "dictID" type = "xsd:string"/>
<xsd:attribute name = "textID" use = "required" type = "xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name = "IASInterface_DataType">
<xsd:union memberTypes = " ">
<xsd:simpleType>
<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>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base = "xsd:string">
<xsd:length value = "4"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<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:restriction>
</xsd:simpleType>
<xsd:element name = "ISO15745Edition" type = "xsd:positiveInteger"/>
<xsd:element name = "ISO15745Part" type = "xsd:positiveInteger"/>
<xsd:complexType name = "ISO15745Reference_DataType">
<xsd:sequence>
<xsd:element name = "ISO15745Part" type = "xsd:positiveInteger"/>
<xsd:element name = "ISO15745Edition" type = "xsd:positiveInteger"/>
<xsd:element name = "ProfileTechnology" type = "xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name = "label"
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base = "xsd:string">
<xsd:attribute ref = "xlink:type"/>
<xsd:attribute ref = "xlink:href"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name = "labelRef">
<xsd:complexType>
<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:complexType>
</xsd:element>
<xsd:element name = "ProfileBody">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "TransportLayers"/>
<xsd:element ref = "ApplicationLayers"/>
<xsd:element ref = "NetworkManagement" minOccurs = "0"/>
</xsd:sequence>
<xsd:attributeGroup ref = "ag_FDCML"/>
<xsd:attribute name = "supportedLanguages" type = "xsd:NMTOKENS"/>
<xsd:attribute name = "uniqueID" type = "xsd:ID"/>
</xsd:complexType>
</xsd:element>
<xsd:element name = "ProfileHeader">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
<!- -
################ groups
- ->
<!- -
################ attribute groups
- ->
<xsd:element name = "communicationProfile" type = "xsd:string"/>
<xsd:element name = "TransportLayers">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "cfgItemList">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:element name = "CANopenDedicatedCfgCategory">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "CANopenBaudRate">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "BaudRate10">
<xsd:complexType>
<xsd:attribute name = "Supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "BaudRate20">
<xsd:complexType>
<xsd:attribute name = "Supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "BaudRate50">
<xsd:complexType>
<xsd:attribute name = "Supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "BaudRate125">
<xsd:complexType>
<xsd:attribute name = "Supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "BaudRate250">
<xsd:complexType>
<xsd:attribute name = "Supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "BaudRate500">
<xsd:complexType>
<xsd:attribute name = "Supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "BaudRate800">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "BaudRate1000">
<xsd:complexType>
<xsd:attribute name = "Supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenGeneralCapabilities">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "GroupMessaging">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "DynamicChannels">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "SDORequestingDevice">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenDeviceCommissioning" minOccurs = "0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "BaudRate">
<xsd:simpleType>
<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:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "ApplicationLayers">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "cfgItemList">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:element name = "CANopenDedicatedCfgCategory">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "CANopenDummyMappingDataTypes">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "dmBoolean">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "dmInteger8">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "dmInteger16">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "dmInteger32">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "dmUnsigned8">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction >
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "dmUnsigned16">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "dmUnsigned32">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenGeneralCapabilities">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "Granularity">
<xsd:complexType>
<xsd:attribute name = "value" type = "xsd:unsignedShort"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenDeviceCommissioning" minOccurs = "0">
<xsd:complexType>
<xsd:sequence/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "NetworkManagement">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "cfgItemList">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs = "0">
<xsd:group ref = "g_naming"/>
</xsd:sequence>
<xsd:element name = "CANopenDedicatedCfgCategory">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "CANopenGeneralCapabilities">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "LayerSettingServiceSlave">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "SelfStartingDevice">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenManagerCapabilities" minOccurs = "0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "MasterSwitchable">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "FlyingMaster">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "SDOManager">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "ConfigurationManager">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name = "LayerSettingServiceMaster">
<xsd:complexType>
<xsd:attribute name = "supported" use = "required">
<xsd:simpleType>
<xsd:restriction base = "xsd:NMTOKENS">
<xsd:enumeration value = "No"/>
<xsd:enumeration value = "Yes"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CANopenDeviceCommissioning" minOccurs = "0">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element ref = "communicationProfile" minOccurs = "0" maxOccurs = "unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
(справочное)
И ЕВРОПЕЙСКОГО РЕГИОНАЛЬНОГО СТАНДАРТОВ ССЫЛОЧНЫМ
НАЦИОНАЛЬНЫМ СТАНДАРТАМ РОССИЙСКОЙ ФЕДЕРАЦИИ
Таблица ДА.1
Вернуться в "Каталог нормативных документов"
Источник информации: https://xn--c1ad2agd.xn--p1ai/documents/prod/gost-r_gosudarstvennyj-standart/42/gost_99951.html
На правах рекламы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||