ГОСТ Р ИСО 20242-4-2012. Национальный стандарт Российской Федерации. Системы промышленной автоматизации и интеграция. Служебный интерфейс для испытательных прикладных программ. Часть 4. Шаблон профиля возможностей устройства
Актуально на 02.11.2026.
Как цитировать: "ГОСТ Р ИСО 20242-4-2012. Национальный стандарт Российской Федерации. Системы промышленной автоматизации и интеграция. Служебный интерфейс для испытательных прикладных программ. Часть 4. Шаблон профиля возможностей устройства". ГОСТ Р ИСО 20242-4-2012. https://bukva.ai/docs/standart-gost-r-iso-20242-4-2012
(утв. и введен в действие Приказом Росстандарта от 29.11.2012 № 1716-ст)
Примечание
Документ введен в действие с 01.01.2014.
Утвержден и введен в действие
Приказом Федерального агентства
по техническому регулированию
и метрологии
от 29 ноября 2012 г. № 1716-ст
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
СИСТЕМЫ ПРОМЫШЛЕННОЙ АВТОМАТИЗАЦИИ И ИНТЕГРАЦИЯ
СЛУЖЕБНЫЙ ИНТЕРФЕЙС ДЛЯ ИСПЫТАТЕЛЬНЫХ ПРИКЛАДНЫХ ПРОГРАММ
ШАБЛОН ПРОФИЛЯ ВОЗМОЖНОСТЕЙ УСТРОЙСТВА
Industrial automation systems and integration. Service
interface for testing applications. Part 4. Device
capability profile template
1 января 2014 года
Предисловие
1 ПОДГОТОВЛЕН АНО «Международная академия менеджмента и качества бизнеса» на основе собственного перевода на русский язык англоязычной версии стандарта, указанного в пункте 4
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 100 «Стратегический и инновационный менеджмент»
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 29 ноября 2012 г. № 1716-ст
4 Настоящий стандарт идентичен международному стандарту ИСО 20242-4:2011 «Системы промышленной автоматизации и интеграция. Служебный интерфейс для испытательных прикладных программ. Часть 4. Шаблон профиля возможностей устройства» (ISO 20242-4:2011 «Industrial automation systems and integration — Service interface for testing applications — Part 4: Device capability profile template», IDT).
При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты, сведения о которых приведены в дополнительном приложении ДА
Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. № 162-ФЗ «О стандартизации в Российской Федерации». Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
Введение
Настоящий стандарт разработан с целью облегчения интеграции измерительных и автоматических устройств, а также других периферийных устройств в различных компьютеризированных областях применения. В стандарте определены принципы создания драйверов устройств и режимы их работы в области применения измерительных автоматических средств.
Основной целью комплекса международных стандартов ИСО 20242 является обеспечение:
- независимости пользователя от операционной системы;
- независимости пользователя от технологии соединения (интерфейс устройства/сеть);
- независимости пользователя от поставщиков устройств;
- возможности сертификации драйверов устройств с подсоединенными к ним устройствами и выбранными режимами работы (с учетом используемой компьютерной платформы);
- независимости пользователя от последующих технологических усовершенствований устройств.
Стандарты комплекса ИСО 20242 не распространяются на разработку новых семейств устройств или использование специальных технологий для интерфейсов (сетей). В стандартах приведены общие описания сетей существующих устройств и их коммуникационных интерфейсов, обеспечивающих совместимость интерфейсов с другими устройствами аналогичного типа и назначения.
Комплекс стандартов ИСО 20242 включает в себя требования, распространяющиеся на:
- служебный интерфейс для управления ресурсами;
- служебный интерфейс виртуального устройства;
- шаблон функциональных характеристик устройства;
- служебный интерфейс прикладных программ;
- методы проверки на совместимость, критерии и отчеты о проведенных проверках.
Комплекс стандартов ИСО 20242 состоит из следующих частей:
- часть 1: Общий обзор;
- часть 2: Служебный интерфейс управления ресурсами.
- часть 3: Служебный интерфейс виртуального устройства;
- часть 4: Шаблон профиля возможностей устройства.
1 Область применения
В настоящем стандарте определены правила форматирования, а также синтаксические и семантические правила, предназначенные для описания:
- функциональных возможностей (далее — возможности) устройства и координатора (согласующего устройства) с использованием XML схем и
- конфигурации устройств на языке XML.
Примечание - Настоящий стандарт не распространяется на конфигурацию согласующего устройства, однако этот вопрос будет включен в следующее издание настоящего стандарта или в дополнение к нему.
2 Нормативные ссылки
В настоящем стандарте использованы нормативные ссылки на следующие стандарты. Для датированных ссылок применяют только указанное издание ссылочного стандарта, для недатированных — последнее издание (включая все изменения):
ISO/IEC 15745-1:2003, Industrial automation systems and integration — Open systems application integration framework — Part 1: Generic reference description (Системы промышленной автоматизации и интеграция. Прикладная среда интегрирования открытых систем. Часть 1. Общее эталонное описание)
ISO 20242-1:2005, Industrial automation systems and integration — Service interface for testing applications — Part 1: Overview (Системы промышленной автоматизации и интеграция. Служебный интерфейс для испытательных прикладных программ. Часть 1. Общие сведения)
ISO 20242-3, Industrial automation systems and integration — Service interface for testing applications — Part 3: Virtual device service interface (Системы промышленной автоматизации и интеграция. Часть 3. Служебный интерфейс для испытательных прикладных программ)
3 Термины и определения
В настоящем стандарте используются термины, определенные в ИСО 20242-1 и ИСО 20242-3, а также следующие термины с соответствующими определениями:
3.1 объект связи (communication object): Объект, с которым может быть установлено коммуникационное соединение для записи или считывания значений параметров.
3.2 координатор; согласующее устройство (coordinator): Программа с определенным интерфейсом для управления доступом прикладной программы к одному или нескольким драйверам устройств, а также для управления в реальном масштабе времени приложениями, синхронизацией и событиями.
3.3 профиль возможностей согласующего устройства (coordinator capability description): Текстовый файл, содержащий информацию о функциональных характеристиках виртуальных устройств, зарегистрированную в установленном формате (т.е. с заданной структурой, синтаксисом и т.д.).
3.4 описание возможностей устройства (device capability description): Информация о функциональных возможностях виртуальных устройств.
[ИСО 20242-3:2011, раздел 3.2]
3.5 драйвер устройства (device driver): Компьютерный программный модуль, обеспечивающий интерфейс с сервисными (служебными) функциями (согласно ИСО 20242) и открывающий доступ адаптера платформы к физическим устройствам.
3.6 функциональный объект (function object): Класс или экземпляр класса, определяющий одну функциональную возможность виртуального устройства.
3.7 операция (operation): Класс или экземпляр класса, определяющий одну законченную процедуру.
3.8 параметрическое описание экземпляра класса (parameterization instance description): Информация о конфигурациях согласующего устройства (координатора) и виртуальных устройствах.
3.9 виртуальное устройство (virtual device): Представление одного или нескольких физических устройств и/или автономных программных объектов для предоставления однозначного мнения относительно ресурсов интерфейса связи.
4 Сокращения
CCD — описание возможностей согласующего устройства (координатора) (Coordinator Capability Description);
DCD — описание возможностей устройства (Device Capability Description);
DCPT — шаблон профиля возможностей устройства (Device Capability Profile Template);
PID — параметрическое описание экземпляра класса (Parameterization Instance Description);
VD — виртуальное устройство (Virtual Device);
VDSI — служебный интерфейс виртуального устройства (Virtual Device Service Interface);
XML — расширяемый язык разметки (eXtensible Markup Language).
5 Концепция профиля возможностей устройства
5.1 Общие положения
На рисунке 1 приведена диаграмма классов, используемых в концепции профиля возможностей устройства в соответствии с настоящим стандартом. Обобщенный шаблон профиля возможностей устройства (далее — DCPT-шаблон) определяют на основе использования обобщенной информации, получаемой из шаблона профиля обмена данными по ИСО 15745-1. Зависящий от выбираемой технологии DCPT-шаблон дополняет обобщенный DCPT-шаблон, что позволяет описывать возможности устройства на языке XML. DCD-описание позволяет дополнить зависящий от выбираемой технологии DCPT-шаблон и описать возможности согласующего устройства на языке XML. CCD-описание позволяет импортировать DCD-описание драйверов устройств и сделать описание возможностей системы. PID-описание определяют путем создания экземпляра CCD-описания (связь один к одному) и DCD-описания (связь один ко многим). PID-описание является реализацией профиля информационного обмена данными согласно ИСО 15745-1 и может использоваться вместе с другими профилями, указанными в настоящем стандарте.
На рисунке 2 приведена диаграмма CCD- и DCD-классов, используемых в данной концепции. Обобщенный DCPT-шаблон позволяет определить совокупность обобщенных CCD- и DCD-описаний. Обобщенное CCD-описание характеризует обобщенные возможности согласующего устройства, обобщенное DCD-описание — обобщенные возможности виртуального устройства. Зависящий от выбираемой технологии CCD-класс в зависящем от технологии DCPT-классе содержит обобщенное CCD-описание и характеризует зависящие от технологии возможности согласующего устройства. Зависящий от выбираемой технологии DCD-класс содержит обобщенное DCD-описание и характеризует зависящие от выбираемой технологии возможности виртуальных устройств.
Зависящий от согласующего устройства OCD-класс входит в зависящий от технологии CCD-класс и характеризует зависящие от согласующего устройства возможности. Имя объекта в зависящем от согласующего устройства CCD-классе может быть задано с помощью зависящего от устройства имени. Обобщенные CCD- и DCD-классы состоят в неразрывной связи, поэтому зависящий от согласующего устройства CCD-класс и зависящий от устройства DCD-класс связаны между собой. OCD-класс позволяет импортировать DCD-описания драйверов устройств. Экземпляр CCD-класса в PID-классе позволяет использовать зависящий от выбираемого согласующего устройства OCD-класс в виде XML-схемы и записать его как XML-экземпляр. Имя XML-тэга экземпляра CCD-класса будет совпадать с именем зависящего от выбираемого согласующего устройства CCD-класса, а имя XML-тэга экземпляра DCD-класса — с именем зависящего от выбираемого устройства DCD-класса.
5.2 Процедура создания DCD-, CCD- и PID-описаний
5.2.1 Общие положения
Рисунок 3 иллюстрирует процедуру создания DCD- и CCD-описаний. В разделе 6 настоящего стандарта в рамках XML-языка определен обобщенный DCPT-шаблон. Технология каждого служебного интерфейса определяет зависящие от выбираемой технологии возможности и зависящий от выбираемой технологии DCPT-шаблон.
Примечание — Описания зависящих от выбираемой технологии DCPT-шаблонов для обобщенного интерфейса устройства (GDI) ASAM и технологии совместного использования информации для обмена данными (MICX-технология) приведены в приложениях A и B.
Примечание - Объекты в виде цилиндров означают XML-файлы, а объекты в виде листков — информацию относительно функциональных возможностей (ФВ) и конфигурации. Сплошные стрелки на диаграмме указывают на создание XML-файла, стрелки в виде точек — на ввод информации относительно ФВ, а пунктирные стрелки — на применение шаблона.
Generic DCPT (XML Schema) — файл обобщенного DCPT-шаблона
(с XML-структурой); Generic DCD — обобщенное DCD-описание;
Generic CCD — обобщенное CCD-описание; Technology specific
capabilities — информация относительно зависящих
от технологии возможностей; Extension — расширение;
Technology-specific DCPT (XML Schema) — файл зависящего
от технологии DCPT-шаблона (с XML-структурой);
Technology-specific DCD — зависящее от технологии
DCD-описание; Technology-specific CCD — зависящее
от технологии CCD-описание; Device
capabilities — возможности устройства; DCD (XML
Schema) — файл DCD-описания устройства (XML-схема);
Import — импорт; CCD (XML Schema) — файл CCD-описания;
Coordinator parameters and device
configurations — информация о параметрах согласующего
устройства и конфигурации устройства; PID (XML
Instance) — файл PID-описания (XML-экземпляр класса);
Coordinator capabilities — возможности согласующего
устройства
Рисунок 3 — Блок-схема процедуры создания
CCD- и DCD-описаний
Поставщик устройства или оборудования расширяет часть зависящих от выбираемой технологии DCD-описаний в зависящем от выбираемой технологии DCPT-шаблоне и приводит возможности драйвера для этого устройства или оборудования в DCD-описании, а затем предоставляет его вместе с драйвером устройства. Поставщик согласующего устройства расширяет часть зависящих от выбираемой технологии CCD-описаний в зависящем от выбираемой технологии DCPT-шаблоне и приводит возможности этого согласующего устройства в CCD-описании. В средствах конфигурирования используются CCD-описания, которые позволяют импортировать требуемые DCD-описания и создавать PID-описание, содержащее описания всех требуемых экземпляров классов с их именами и численными значениями. Согласующее устройство обеспечивает считывание PID-описания, осуществляет его инсталляцию, конфигурирование устройств и обеспечивает служебный интерфейс прикладных программ после применения ИСО 20242-5.
5.2.2 Описание возможностей устройства (DCD-описание)
- идентификационную информацию относительно драйвера устройства;
- описание возможностей виртуальных устройств, поддерживаемых драйвером.
5.2.3 Описание возможностей согласующего устройства (CCD-описание)
- идентификационную информацию, относящуюся к программному обеспечению согласующего устройства;
- описание возможностей согласующего устройства;
- информацию об аттестации служебного интерфейса, поддерживающего прикладные программы.
5.2.4 Параметрическое описание экземпляров класса (PID-описание)
- идентификационную информацию, относящуюся к PID-описанию профиля обмена информацией по ИСО 15745;
- параметрическое описание экземпляров класса с зависящими от выбираемого приложения именами;
- конфигурационные данные для драйверов устройств.
6 Обобщенный шаблон профиля возможностей устройства
6.1 Общие сведения
Обобщенный DCPT-шаблон позволяет определить общую структуру DCPT-шаблона, не зависящую от технической реализации служебного интерфейса. Зависящий от выбираемой технологии DCPT-шаблон является дополнительным к обобщенному DCPT-шаблону.
6.2 Модель обобщенного DCPT-шаблона
Обобщенный DCPT-шаблон использует шаблон профиля обмена обобщенной информацией, получаемый согласно ИСО 15745-1 в качестве основы и дополненный информацией относительно модели VDSI-интерфейса согласно ИСО 20242-3 и ИСО 20242-5 (служебный интерфейс прикладных программ). На рисунке 4 представлена структура классов обобщенного DCPT-шаблона. Профиль обмена информацией является корневым классом и содержит заголовок по ИСО 15745, а также основной текст по ИСО 15745, заголовок по ИСО 15745 содержит идентификационную информацию, относящуюся к используемому профилю. Основной текст по ИСО 15745 содержит одно или несколько обобщенных CCD-описаний. Профиль обмена информацией, заголовок по ИСО 15745 и основной текст по ИСО 15745 определены в ИСО 15745-1.
Обобщенное CCD-описание относится к абстрактному классу и характеризует обобщенные возможности согласующего устройства. Номер обобщенного CCD-описания совпадает с номером этого устройства.
Обобщенное CCD-описание содержит обобщенные DCD-описания. Обобщенное DCD-описание относится к (принадлежит) абстрактному классу и характеризует обобщенные возможности драйвера устройства. Номер обобщенного DCD-описания совпадает с номером этого драйвера.
Обобщенное DCD-описание содержит описания виртуальных устройств, которые относятся к (принадлежат) абстрактному классу и характеризуют обобщенные возможности виртуального устройства.
Виртуальное устройство содержит функциональные объекты, которые относятся к (принадлежат) абстрактному классу и характеризуют обобщенные возможности устройства.
Функциональный объект содержит объекты связи и рабочие операции.
Объект связи относится к (принадлежит) абстрактному классу и характеризует обобщенные возможности объекта связи, определенные в ИСО 20242-3.
Рабочая операция относится к (принадлежит) абстрактному классу и характеризует обобщенные возможности этой операции, определенные в ИСО 20242-3.
6.3 XML-схема для обобщенного DCPT-шаблона
XML-схема для обобщенного DCPT-шаблона содержится в шаблоне профиля обмена информацией (см. рисунок 5), включает в себя XML-схему для обобщенного CCD-описания и относится к элементу этого описания.
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns=«http://www.osi.ch/iso/ISO20242-4/GenericDCPT»
targetNamespace=«http://www.osi.ch/iso/ISO20242-4/GenericDCPT»
elementFormDefault=«qualified»>
<xsd:appinfo source=«DCPTHeader.xsd»>
<xsd:include schemaLocation=«GenericCCD.xsd»/>
<xsd:element name=«ISO15745Profile»>
<xsd:element ref=«ProfileHeader»/>
<xsd:element ref=«ProfileBody»/>
<xsd:element name=«ProfileHeader»>
<xsd:element name=«ProfileIdentification» type=«xsd:string»/>
<xsd:element name=«ProfileRevision» type=«xsd:string»/>
<xsd:element name=«ProfileName» type=«xsd:string»/>
<xsd:element name=«ProfileSource» type=«xsd:string»/>
<xsd:element name=«ProfileClassID» type=«ProfileClassID_DataType»
<xsd:element name=«ProfileDate» type=«xsd:date»
<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» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:complexType name=«ISO15745Reference_DataType»>
<xsd:element name=«ISO15745Part» type=«xsd:string»
<xsd:element name=«ISO15745Edition» type=«xsd:string»
<xsd:element name=«ProfileTechnology» type=«xsd:string»
<xsd:simpleType name=«ProfileClassID_DataType»>
<xsd:restriction base=«xsd:string»>
<xsd:enumeration value=«AIP»/>
<xsd:enumeration value=«Process»/>
<xsd:enumeration value=«InformationExchange»/>
<xsd:enumeration value=«Resource»/>
<xsd:enumeration value=«Device»/>
<xsd:enumeration value=«CommunicationNetwork»/>
<xsd:enumeration value=«Equipment»/>
<xsd:enumeration value=«Human»/>
<xsd:enumeration value=«Material»/>
<xsd:simpleType name=«IASInterface_DataType»>
<xsd:restriction base=«xsd:string»>
<xsd:enumeration value=«CSI»/>
<xsd:enumeration value=«HCI»/>
<xsd:enumeration value=«ISI»/>
<xsd:enumeration value=«API»/>
<xsd:enumeration value=«CMI»/>
<xsd:enumeration value=«ESI»/>
<xsd:enumeration value=«FSI»/>
<xsd:enumeration value=«MTI»/>
<xsd:enumeration value=«SEI»/>
<xsd:enumeration value=«USI»/>
<xsd:restriction base=«xsd:string»>
<xsd:element name=«ProfileBody»>
<xsd:element ref=«GenericCCD» maxOccurs=«unbounded»/>
XML-схема для обобщенного CCD-описания содержится в шаблоне обобщенного CCD-описания (см. рисунок 6), включает в себя XML-схему для обобщенного DCD-описания и относится к элементу этого описания.
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns=«http://www.osi.ch/iso/ISO20242-4/GenericDCPT»
targetNamespace=«http://www.osi.ch/iso/ISO20242-4/GenericDCPT»
elementFormDefault=«qualified»>
<xsd:appinfo source=«DCPTHeader.xsd»>
<xsd:include schemaLocation=«GenericDCD.xsd»/>
<xsd:element name=«GenericCCD» type=«GenericCCDType» abstract=«true»/>
<xsd:complexType name=«GenericCCDType» abstract=«true»>
<xsd:element ref=«GenericDCD» maxOccurs=«unbounded»/>
<xsd:attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«xsd:string» use=«required» fixed=«CCD»/>
XML-схема для обобщенного DCD-описания содержится в шаблоне обобщенного DCD-описания (см. рисунок 7) и включает в себя шаблоны для виртуального устройства, функционального объекта, объекта связи и рабочей операции.
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns=«http://www.osi.ch/iso/ISO20242-4/GenericDCPT»
targetNamespace=«http://www.osi.ch/iso/ISO20242-4/GenericDCPT»
elementFormDefault=«qualified»>
<xsd:appinfo source=«DCPTHeader.xsd»>
<xsd:element name=«GenericDCD»
type=«GenericDCDType» abstract=«true»/>
<xsd:complexType name=«GenericDCDType» abstract=«true»>
<xsd:element ref=«VirtualDevice» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«xsd:string»
<xsd:element name=«VirtualDevice»
type=«VirtualDeviceType» abstract=«true»/>
<xsd:complexType name=«VirtualDeviceType» abstract=«true»>
<xsd:element ref=«FunctionObject» maxOccurs=«unbounded»/>
<xsd:attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«xsd:string»
use=«required» fixed=«MODULE»/>
<xsd:element name=«FunctionObject»
type=«FunctionObjectType» abstract=«true»/>
<xsd:complexType name=«FunctionObjectType» abstract=«true»>
<xsd:element ref=«CommunicationObject» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«Operation» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«xsd:string»
use=«required» fixed=«INTERFACE»/>
<xsd:element name=«CommunicationObject»
type=«CommunicationObjectType» abstract=«true»/>
<xsd:complexType name=«CommunicationObjectType» abstract=«true»>
<xsd:attribute name=«name» type=«xsd:string»/>
<xsd:element name=«Operation» type=«OperationType» abstract=«true»/>
<xsd:complexType name=«OperationType» abstract=«true»>
<xsd:attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«xsd:string»
use=«required» fixed=«OPERATION»/>
7 Общие правила применения DCPT-шаблона
7.1 Общие сведения
Эти правила необходимо использовать для расширения (дополнения) DCPT-шаблона. Имена XML-элементов (тэги) могут быть определены специально для согласующего и других устройств. Для специальных целей в этот шаблон могут быть введены любые атрибуты и элементы, на которые настоящий стандарт не распространяется.
7.2 Заголовок DCPT-шаблона
Идентификационную информацию относительно DCD- и CCD-описаний приводят с помощью элемента xsd:appinfo в элементе xsd:annotation XML-схемы. Заголовок DCPT-шаблона содержит атрибуты, указанные в таблице 1.
Элементы заголовка DCPT-шаблона
| Наименование элемента | Описание элемента |
|---|---|
| DCPTIdentification | Идентификатор DCPT-шаблона. Тип XML-данных: строка. Пример — ABC-123-XX |
| DCPTRevision | Редакция DCPT-шаблона. Тип XML-данных: строка. Пример — 2.34 |
| DCPTName | Описательное имя DCPT-шаблона. Тип XML-данных: строка. Пример — DCD Thermometer |
| DCPTSource | Идентификатор разработчика DCPT-шаблона. Тип XML-данных: строка. Пример — ASAM |
| DCPTClassID | Идентификатор класса профиля. Тип XML-данных: строка. Действующими классами профилей являются: GenericDCPT TechnlogySpecificDCPT CCD DCD Пример — DCD |
| DCPTDate | Дата выпуска данной редакции профиля в формате CCYY-MM-DD. Тип XML-данных: дата 2011-09-21 |
| Additionalinformation | Расположение диаграмм/дополнительной информации относительно профиля. Данное поле является дополнительным. Тип XML-данных: любой унифицированный идентификатор ресурса (URI), anyURI Пример - http://www.asam.net |
| ISO20242Reference | Идентификатор части ИСО 20242 (см. элемент ISO20242Part), вместе с его редакцией (см. элемент ISO20242Edition) и используемой технологией (см. элемент Technology). Множественные ссылки разрешены, например для устройств с более чем одним связующим интерфейсом |
| ISO20242Edition | Редакция ссылочной части ИСО 20242. Тип XML-данных: положительное целое число. Пример — 1 |
| Technology | Наименование ссылочной технологии Тип XML-данных: строка При отсутствии применяемой в ИСО 20242 технологии необходимо использовать значение «None». Пример — None |
Соответствующая XML-схема приведена на рисунке 8.
<xsd:element name=«DCPTHeader»>
<xsd:element name=«DCPTIdentification» type=«xsd:string»/>
<xsd:element name=«DCPTRevision» type=«xsd:string»/>
<xsd:element name=«DCPTName» type=«xsd:string»/>
<xsd:element name=«DCPTSource» type=«xsd:string»/>
<xsd:element name=«DCPTClassID» type=«DCPTClassID_DataType»/>
<xsd:element name=«DCPTDate» type=«xsd:string»/>
<xsd:element name=«AdditionalInformation» type=«xsd:anyURI» minOccurs=«0»/>
<xsd:element name=«ISO20242Reference» type=«ISO20242Reference_DataType»/>
<xsd:simpleType name=«DCPTClassID_DataType»>
<xsd:restriction base=«xsd:string»>
<xsd:enumeration value=«CCD»/>
<xsd:enumeration value=«DCD»/>
<xsd:complexType name=«ISO20242Reference_DataType»>
<xsd:element name=«ISO20242Part» type=«xsd:string» fixed=«4»/>
<xsd:element name=«ISO20242Edition» type=«xsd:string» fixed=«1»/>
<xsd:element name=«Technology» type=«xsd:string»/>
Рисунок 8 — XML-схема для заголовка DCPT-шаблона
7.3 Дополнение шаблона профиля
7.3.1 Создание DCD-описания
DCD-описание содержит зависящие от выбираемого типа устройства элементы, которые получаются из зависящих от выбираемой технологии элементов и заменяют абстрактные элементы обобщенного DCPT-шаблона.
Примечание - В соответствии с настоящим стандартом не требуется импортировать обобщенные или зависящие от выбираемой технологии XML-схемы в зависящее от выбираемого устройства CD-описание, однако независимо созданное DCD-описание должно содержать информацию, аналогичную DCD-описанию импортируемых XML-схем, соответствующих настоящему стандарту.
Имена элементов (тэги) для DCD-описания могут быть специфичными для различных типов устройств. Элементы должны быть снабжены атрибутом «category», содержащим ключ для типа этого элемента, указанного в таблице 2. Содержанием этого атрибута должна быть ссылка на соответствующий элемент обобщенного DCPT-шаблона.
| Элемент обобщенного DCPT-шаблона | Содержание XML-атрибута «category» |
|---|---|
| GenericCCD | CCD |
| GenericDCD | DCD |
| Virtual Device | MODULE |
| FunctionObject | INTERFACE |
| Operation | OPERATION |
Дополнительные элементы могут иметь специфическое содержимое атрибута «category» в зависящих от выбираемой технологии приложениях.
7.3.2 Закрепление зависящих от выбираемого устройства элементов
Зависящий от выбираемого устройства элемент DCD-описания содержит один или несколько элементов виртуального устройства, которые не должны принадлежать (относиться к) какому-либо другому зависящему от выбираемого устройства элементу DCD-описания.
Зависящий от выбираемого устройства элемент виртуального устройства заменяет обобщенный элемент виртуального устройства и содержит (или не содержит) несколько зависящих от выбираемого устройства элементов функционального объекта, которые не должны принадлежать (относиться к) каким-либо другим зависящим от выбираемого виртуального устройства элементам функционального объекта и виртуального устройства.
Зависящий от выбираемого устройства элемент функционального объекта заменяет элемент обобщенного функционального объекта и содержит (или не содержит) несколько зависящих от выбираемого объекта связи элементов, которые не должны принадлежать (относиться к) какому-либо другому зависящему от выбираемого устройства элемента функциональному объекту.
7.3.3 Порядок реализации VDSI-интерфейса
Для создания виртуальных устройств, функциональных объектов и объектов связи с помощью сервисов VDSI_Initiate, VDSI_CreateFuncObject и VDSI_CreateCommObject, рассмотренных в ИСО 20242-3, их должен сопровождать дополнительный XML-атрибут «initOrder», относящийся к типу unsignedInt, определенный в XML-схеме и содержащий порядок создания экземпляра элемента с помощью VDSI-интерфейса.
7.3.4 Параметризация объектов связи
Если значение закреплено за объектом связи, то его необходимо записать с помощью согласующего устройства и сервиса VDSI_Write для VDSI-интерфейса. Можно определить дополнительный порядок записи значений в объекты связи, выполняемой с использованием XML-атрибута «initOrder».
Примечание — Способ многократной записи объекта связи приведен в приложении A.
7.4 Закрепление текстовой информации
Любой элемент DCPT-шаблона может иметь два вида присоединяемой текстовой информации — краткого и развернутого сообщения. Эти сообщения должны быть определены в дополнительном XML-экземпляре и пронумерованы согласно разделу 8. Нумерация сообщений организована иерархически в пронумерованных областях текста с помощью пронумерованных текстовых элементов. Номера текстов закрепляют за элементами DCPT-шаблона с помощью дополнительных XML-атрибутов типа xsd:unsignedInt, указанных в таблице 3.
XML-атрибуты присвоения текстовой информации
7.5 Создание PID-описания
7.5.1 XML-экземпляры CCD-классов
XML-экземпляр зависящего от выбранного согласующего устройства CCD-класса позволяет характеризовать особенности согласующего устройства. CCD-класс содержит один или несколько XML-экземпляров DCD-классов.
7.5.2 XML-экземпляры DCD-классов
XML-экземпляр зависящего от выбираемого устройства DCD-класса позволяет характеризовать драйвер устройства, который является элементом VDSI-интерфейса согласно ИСО 20242-3. Экземпляр DCD-класса содержит один или несколько XML-экземпляров зависящих от выбираемого устройства классов виртуальных устройств.
7.5.3 XML-экземпляры классов виртуальных устройств
XML-экземпляр зависящего от выбираемого устройства класса виртуальных устройств позволяет характеризовать экземпляр класса виртуального устройства с помощью сервиса VDSI_CreateFuncObject для VDSI-интерфейса. Может существовать (или не существовать) несколько экземпляров зависящего от выбираемого устройства класса виртуальных устройств.
7.5.4 XML-экземпляры классов функциональных объектов
XML-экземпляр зависящего от выбираемого устройства класса функциональных объектов позволяет характеризовать экземпляр класса функционального объекта, созданного с помощью сервиса для VDSI-интерфейса. Может существовать несколько экземпляров зависящего от выбираемого устройства класса виртуальных устройств. Экземпляр класса виртуального устройства может содержать (или не содержать) несколько экземпляров зависящих от выбираемого устройства классов объектов связи и/или несколько экземпляров зависящих от выбираемого устройства классов рабочих операций.
7.5.5 XML-экземпляры классов объектов связи
XML-экземпляр зависящего от выбираемого класса объектов связи позволяет характеризовать объект связи, созданный с помощью сервиса VDSI_CreateCommObject для VDSI-интерфейса. В одном конкретном классе объектов связи может быть только один экземпляр этого класса.
7.5.6 XML-экземпляры классов рабочих операций
XML-экземпляр зависящего от выбираемого класса рабочих операций позволяет характеризовать экземпляр класса рабочих операций, создаваемый в точном соответствии с реализацией класса связанных функциональных объектов с помощью VDSI-интерфейса. В одном зависящем от выбираемого устройства классе рабочих операций должен существовать только один экземпляр этого класса.
8 Многоязычные текстовые элементы
Для текстовой информации используют три вида сообщений — короткие информационные сообщения, расширенные информационные сообщения и сообщения об ошибках. Указанные сообщения должны содержаться в XML-экземпляре со структурой, определяемой согласно рисунку 9.
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
elementFormDefault=«qualified»>
<xsd:element name=«Area» minOccurs=«0» maxOccurs=«unbounded»>
<xsd:element name=«SubAreaText» type=«SubAreaType»/>
<xsd:element name=«SubAreaMessage» type=«SubAreaType»/>
<xsd:element name=«SubAreaError» type=«SubAreaType»/>
<xsd:attribute name=«number» type=«xsd:unsignedInt» use=«required»/>
<xsd:attribute name=«name» type=«xsd:Name» use=«optional»/>
<xsd:complexType name=«SubAreaType»>
<xsd:complexType name=«EntryType»>
<xsd:element name=«Text» type=«LangSpecType»
minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«number» type=«xsd:unsignedInt» use=«required»/>
<xsd:attribute name=«name» type=«xsd:Name» use=«optional»/>
<xsd:complexType name=«LangSpecType»>
<xsd:extension base=«xsd:normalizedString»>
<xsd:attribute name=«lang» type=«xsd:language» use=«required»/>
Рисунок 9 — XML-схема для текстовой информации об устройстве
Расширенные информационные сообщения вводят в XML-элемент
ШАБЛОН ПРОФИЛЯ ВОЗМОЖНОСТЕЙ GDI-ИНТЕРФЕЙСА ASAM
Обобщенный интерфейс устройства (GDI-интерфейс) ASAM определяет интерфейс для испытательных применений. В данном приложении описан зависящий от GDI-интерфейса шаблон возможностей устройства (версия 4.4 ASAM GDI). Примеры DCD-, CCD- и PID-описаний приведены далее.
A.2 Зависящая от выбираемого GDI-интерфейса модель профиля
Зависящая от выбираемого GDI-интерфейса модель профиля содержит информацию, необходимую для описания возможностей данного устройства и параметризации. На рисунке A.1 приведена диаграмма классов для зависящего от выбираемого GDI-интерфейса шаблона профилей возможностей устройства.
Рисунок A.1 — Диаграмма классов для зависящей от GDI-интерфейса модели DCPT-шаблона
A.2.2 Класс GDI_CCD (CCD-описание GDI-интерфейса)
Этот класс характеризует возможности зависящего от выбираемого GDI-интерфейса согласующего устройства, который входит в класс GenericCCD (обобщенное CCD-описание) и является абстрактным классом. Зависящий от выбираемого согласующего устройства класс CCD-описаний должен наследовать его и определять возможности конкретного согласующего устройства.
A.2.3 Класс GDI_DCD (DCD-описание GDI-интерфейса)
Этот класс характеризует возможности зависящего от выбираемого GDI-интерфейса драйвера устройства, который входит в класс GenericDCD (обобщенное DCD-описание) и является абстрактным классом. Зависящий от выбираемого согласующего устройства класс GDI-DCD должен наследовать его и определять возможности конкретного драйвера устройства.
A.2.4 Класс GDI_Header (заголовок для GDI-интерфейса)
Этот класс содержит дополнительную информацию, используемую для реализации драйвера устройства. Элементы класса GDI_Header указаны в таблице A.1. Определение класса GDI_Header также приведено в файле common.xsd GDI-интерфейса (см. A.6.2).
A.2.5 Класс GDI_Module (модуль GDI-интерфейса)
Этот класс характеризует возможности зависящего от выбираемого GDI-интерфейса виртуального устройства, который входит в класс VirtualDevice (виртуальное устройство) и является абстрактным классом. Зависящий от выбираемого согласующего устройства класс GDI_Module должен наследовать его и определять возможности конкретного виртуального устройства. Класс GDI_Module может содержать класс CreateParameter и быть идентифицирован по номеру, содержащемуся в дополнительном XML-атрибуте «moduleId» (типа «xsd:unsignedShort»).
A.2.6 Класс GDI_Interface (GDI-интерфейс)
Этот класс характеризует возможности функциональных объектов зависящего от выбираемого GDI-интерфейса виртуального устройства, который входит в класс FunctionObject (функциональный объект) и является абстрактным классом. Зависящий от выбираемого согласующего устройства класс GDI_Interface должен наследовать его свойства и определять возможности конкретного функционального объекта. Класс GDI_Interface может содержать класс CreateParameter и быть идентифицирован по номеру, содержащемуся в дополнительном XML-атрибуте «funcId» (типа «xsd:unsignedShort»).
A.2.7 Класс CreateParameter (создание параметра)
Этот класс предназначен для описания созданного параметра функционального объекта или виртуального устройства и является абстрактным классом. Каждый зависящий от устройства класс CreateParameter должен наследовать его свойства и определять тип данных созданного параметра. Сервисы VDSI-интерфейса VDSI_Initiate и VDSI_CreateFuncObject используют созданные параметры.
A.2.8 Класс GDI_Operation (работа GDI-интерфейса)
Этот класс предназначен для описания работы зависящего от выбираемого GDI-интерфейса виртуального устройства, который входит в класс Operation (рабочая операция) и является абстрактным классом. Каждый зависящий от выбираемого устройства класс GDI_Operation должен наследовать его свойства и определять возможности рабочей операции. Этот класс имеет один входной и один рабочий выходной параметры, которые могут быть использованы один раз (или не появляться) в XML-экземпляре. Закрепление значения за входным рабочим параметром в этом экземпляре (PID-описании) указывает на то, что операция должна быть выполнена с целью конфигурирования. Класс GDI_Operation идентифицируют с помощью номера, содержащегося в дополнительном XML-атрибуте, называемом «operationIdId» (типа «xsd:unsignedShort»).
A.2.9 Класс OperationInParameter (выходной параметр операции)
Класс OperationInParameter предназначен для отметки выполнения рабочей операции и является абстрактным классом. Каждый зависящий от выбираемого устройства класс OperationInParameter должен наследовать свойства этого класса и определять тип данных входного параметра.
A.2.10 Класс OperationOutParameter (выходной параметр операции)
Этот класс предназначен для указания возвращаемого значения в рабочей операции, который содержит значение выходного параметра. Каждый зависящий от выбираемого устройства класс OperationOutParameter должен наследовать свойства этого класса и определять тип данных значения этого параметра.
A.2.11 Класс AttributeReadOnly (только считывание атрибута)
Этот класс предназначен для указания значения времени обработки функционального объекта, которое может только считываться. Данный класс наследует свойства класса CommunicationObject и является абстрактным классом. Каждый зависящий от выбираемого устройства класс AttributeReadOnly должен наследовать свойства этого класса и определять функциональные возможности каждого значения времени обработки и типа данных значения этого параметра.
A.2.12 Класс AttributeReadWrite (считывание/запись атрибута)
Этот класс предназначен для указания значения времени обработки функционального объекта, которое может быть как считано, так и записано. Данный класс наследует свойства класса CommunicationObject и является абстрактным классом. Каждый зависящий от выбираемого устройства класс AttributeReadWrite должен наследовать свойства этого класса и определять возможности каждого значения времени обработки и типа данных этого значения.
A.2.13 Класс Parameter (параметр)
Этот класс характеризует возможности параметра функционального объекта, который может быть как считан и записан. Данный класс наследует свойства класса CommunicationObject и является абстрактным классом. Каждый зависящий от выбираемого устройства класс Parameter должен наследовать свойства этого класса и определять возможности каждого параметра и его тип данных.
A.2.14 Идентификация объектов связи GDI-интерфейса
Экземпляры классов AttributeReadOnly, AttributeReadWrite и Parameter идентифицируют с помощью номеров, которые являются числом этих экземпляров в представителе FunctionObject, начиная с 1.
A.3 Элементы типовых данных и сценариев конфигурирования
В 7.3.3 XML-атрибут initOrder был введен для описания последовательностей конфигурирования устройств, связанных с созданием виртуальных устройств, функциональных объектов и объектов связи, что является другим сценарием конфигурирования, определенным для объектов связи, которые в различные моменты времени могут принимать различные значения. С этой целью вводят класс OrderedValue, который не требуется в случае задания сценария записи данных, однако в этом случае может быть использовано то же значение, что и в атрибуте initOrder классов CommunicationObject и OrderedValue.
Элемент Value определяют для упрощения наследования типов данных без учета влияния наследования структурных классов. С помощью этого метода определение типов данных для объектов связи и формирование параметров разделяются в определении объекта связи. Значения элемента не требуются, если типы данных в объектах связи определены точно.
Этот класс характеризует значение, которое можно многократно устанавливать в различные моменты времени. Установка этого значения означает его запись с помощью сервисов VDSI_Write или VDSI_Execute, что применимо к объектам классов AttributeReadWrite, Parameter и OperationInParameter. Упорядоченное значение относится к абстрактному классу, который содержит порядок инициализации в его XML-атрибуте initOrder, который описывает, когда значение должно быть установлено, а также само значение. Каждый зависящий от выбираемого устройства класс OrderedValue должен наследовать класс OrderedValue и определять тип данных для значения.
Класс Value характеризует элемент типа xsd:anyType, который может ограничиваться любым другим типом и поэтому является меткой-заполнителем для любого типа элемента, определенного в описании возможностей устройства. Использование этих дополнительных элементов облегчает разделение наследования для определения типов данных.
Класс Value содержит данные, которые заменяются на служебный примитивный параметр CreateParameter, после чего используют либо сервис VDSI_Initiate для реализации виртуального устройства, либо сервис VDSI_CreateFuncObject — для реализации функционального объекта.
При конфигурировании не происходит замены на объект связи AttributeReadOnly и OperationOutParameter класса GDI_Operation, однако класс Value может быть использован для представления типа данных объектов.
Класс Value также может быть использован вместе с классом OrderedValue для классов AttributeReadWrite, Parameter и OperationInParameter, в случае если требуется сценарий конфигурирования с различными значениями в различные моменты времени. Если нет необходимости использования этого сценария, класс Value может быть использован вместо класса OrderedValue с классами AttributeReadWrite, Parameter и OperationInParameter.
A.4 Дополнительные идентификаторы типа для обобщенного DCPT-шаблона
В таблице A.2 указаны зависящие от выбираемой технологии типы идентификаторов параметра create, объектов связи и рабочих параметров.
Примечание - Дополнительный XML-атрибут «readonly» типа xsd:boolean является обязательным только для классов AttributeReadWrite и AttributeReadOnly. Если также используется класс Parameter, следует использовать содержимое «false».
| Элемент зависящего от выбираемой технологии DCPT-шаблона | Содержимое XML-атрибута «category» |
|---|---|
| OperationInParameter | IN |
| OperationOutParameter | OUT |
| Элемент зависящего от выбираемой технологии DCPT-шаблона | Содержимое XML-атрибута «category» |
|---|---|
| Create ParameterCR | CREATEPARAMETER |
A.5 Дополнительные XML-атрибуты для обобщенного DCPT-шаблона
Объекты связи AttributeReadOnly и AttributeReadWrite могут использоваться для передачи незатребованных данных с помощью сервисов VDSI_InfReport и VDSI_Accept. Запрос на использование указанных сервисов во время работы выполняется во время конфигурирования путем установки XML-атрибутов infReport и приема типа xsd:Boolean на значение true.
A.6 Зависящий от выбираемого GDI-интерфейса шаблон профиля возможностей устройства
Файл GDIcommon.xsd содержит XML-схему с базовыми классами, которые могут использоваться для описания XML-схемы и могут содержать всю информацию относительно описания возможностей, необходимых для оценки (определения) параметров. Определенные типы Parameter и AttributeReadWrite могут быть дополнены элементами OrderedValue и Value. В этом случае класс Value может иметь тип данных, который может быть определен в дополнительной XML-схеме. Кроме того, определенные типы классов CreateParameter, AttributeReadOnly и OperationOutParameter могут быть дополнены элементами класса Value с внешне определенными типами данных.
Примечание - Если элементы классов OrderedValue и Value не используются, а объекты связи содержат значения простых или комплексных типов данных, то они могут иметь другую структуру XML-схемы, основанную на дополнении типов данных. В этом случае файл GDIcommon.xsd может использоваться как модель структуры результирующего XML-экземпляра и необходимых XML-атрибутов.
A.6.2 XML-схема: Файл GDIcommon.xsd
<xsd: schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
elementFormDefault=«qualified» attributeFormDefault=«unqualified»>
<xsd:appinfo source=«http://www.asam.net/ISO20242-4/DCPTHeader.xsd»>
<xsd:simpleType name=«Category»>
<xsd: restriction base=«xsd:string»>
<xsd:enumeration value=«MODULE»/>
<xsd:enumeration value=«INTERFACE»/>
<xsd:enumeration value=«CREATEPARAMETER»/>
<xsd:enumeration value=«PARAMETER»/>
<xsd:enumeration value=«ATTRIBUTE»/>
<xsd:enumeration value=«OPERATION»/>
<xsd:enumeration value=«OUT»/>
<xsd:enumeration value=«DCD»/>
<xsd:enumeration value=«CCD»/>
<xsd:attributeGroup name=«TextAttributes»>
<xsd:attribute name=«areaMsg» type=«xsd:unsignedShort» use=«optional»/>
<xsd:attribute name=«infMsg» type=«xsd:unsignedShort» use=«optional»/>
<xsd:attribute name=«areaText» type=«xsd:unsignedShort» use=«optional»/>
<xsd: attribute name=«infText» type=«xsd:unsignedShort» use=«optional»/>
<xsd:complexType name=«TNamedDCDElement» abstract=«true»>
<xsd:attribute name=«name» type=«xsd:string» use=«optional»/>
<xsd:attribute name=«initOrder» type=«xsd:unsignedInt» use=«optional»/>
<xsd:attributeGroup ref=«TextAttributes»/>
<xsd:complexType name=«TOrderedValue» abstract=«true»>
<xsd:element name=«Value» type=«xsd:anyType»/>
<xsd:attribute name=«initOrder» type=«xsd:unsignedInt» use=«required»/>
<xsd:complexType name=«GDI_Module» abstract=«true»>
<xsd: extension base=«TNamedDCDElement»>
<xsd:attribute name=«moduleId» type=«xsd:unsignedShort» use=«required»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«MODULE»/>
<xsd:complexType name=«GDI_Interface» abstract=«true»>
<xsd: extension base=«TNamedDCDElement»>
<xsd:attribute name=«funcId» type=«xsd:unsignedShort» use=«required»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«INTERFACE»/>
<xsd:complexType name=«CreateParameter» abstract=«true»>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«CREATEPARAMETER»/>
<xsd:attributeGroup ref=«TextAttributes»/>
<xsd:complexType name=«CommunicationObjectReadWrite» abstract=«true»>
<xsd: extension base=«TNamedDCDElement»>
<xsd:attribute name=«readonly» type=«xsd:boolean» fixed=«false»/>
<xsd:complexType name=«CommunicationObjectReadOnly» abstract=«true»>
<xsd: extension base=«TNamedDCDElement»>
<xsd:attribute name=«readonly» type=«xsd:boolean» use=«required» fixed=«true»/>
<xsd:complexType name=«Parameter» abstract=«true»>
<xsd: extension base=«CommunicationObjectReadWrite»>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«PARAMETER»/>
<xsd:complexType name=«AttributeReadWrite» abstract=«true»>
<xsd: extension base=«CommunicationObjectReadWrite»>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«ATTRIBUTE»/>
<xsd:attribute name=«infReport» type=«xsd:boolean»/>
<xsd: attribute name=«accept» type=«xsd:boolean»/>
<xsd:complexType name=«AttributeReadOnly» abstract=«true»>
<xsd: extension base=«CommunicationObjectReadOnly»>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«ATTRIBUTE»/>
<xsd: attribute name=«infReport» type=«xsd:boolean»/>
<xsd:complexType name=«GDI_Operation» abstract=«true»>
<xsd: extension base=«TNamedDCDElement»>
<xsd:attribute name=«operationId» type=«xsd:unsignedShort» use=«required»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«OPERATION»/>
<xsd:complexType name=«OperationOutParameter» abstract=«true»>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«OUT»/>
<xsd:attributeGroup ref=«TextAttributes»/>
<xsd:complexType name=«OperationInParameter» abstract=«true»>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«IN»/>
<xsd:attributeGroup ref=«TextAttributes»/>
<xsd:complexType name=«TVersion»>
<xsd:element name=«Major» type=«xsd:unsignedByte»/>
<xsd:element name=«Minor» type=«xsd:unsignedByte»/>
<xsd:element name=«Revision» type=«xsd:unsignedByte»/>
<xsd:complexType name=«THeader»>
<xsd:element name=«DCD_Version» type=«xsd:unsignedInt»/>
<xsd:element name=«DeviceVersion» type=«xsd:unsignedInt»/>
<xsd:element name=«DriverName» type=«xsd:string»/>
<xsd:element name=«DriverVersion» type=«xsd:unsignedInt»/>
<xsd:element name=«Factory» type=«xsd:string»/>
<xsd:element name=«DIT» type=«xsd:string»/>
<xsd:element name=«GDI_Version» type=«TVersion»/>
<xsd:complexType name=«GDI_DCD» abstract=«true»>
<xsd:element name=«GDI_Header» type=«THeader» minOccurs=«0»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«DCD»/>
<xsd:attributeGroup ref=«TextAttributes»/>
<xsd:attribute name=«dllPath» type=«xsd:string» use=«required»/>
<xsd:attribute name=«driverVersion» type=«xsd:int» use=«required»/>
Файлы DCDa1.xsd и DCDa2.xsd содержат XML-схемы примеров DCD-описания, которые позволяют дополнять XML-схему в файле GDICommon.xsd в соответствии с возможностями драйверов устройства. Имена XML-элементов могут быть определены в соответствии с требованиями пользователя. Структурную информацию, имеющую отношение к XML-элементу, определяют с помощью содержимого XML-атрибута «category».
A.7.2 XML-схема: Файл DCDa1.xsd
<xsd: schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
elementFormDefault=«qualified» attributeFormDefault=«unqualified»>
<xsd:appinfo source=«http://www.asam.net/ISO20242-4/DCPTHeader.xsd»>
<xsd: include schemaLocation=«GDICommon.xsd»/>
<!-- Main type is GDI_DCD with contained Virtual Device Types.
There may be many different Virtual Device Types contained. -->
<xsd:complexType name=«Driver01»>
<xsd:extension base=«GDI_DCD»>
<xsd:element name=«myDevice01» type=«Device01» minOccurs=«0» maxOccurs=«unbounded»/>
<!-- Virtual Device Types have fixed numbers for identification in moduleID.
This is a restriction of type GDI_Module. If you want to avoid
restriction, move attribute moduleId from type GDI_Module with a fixed
number to type Device01 below, which then is an extension of GDI_Module
and type Device01_ will be obsolete. -->
<xsd:complexType name=«Device01_»>
<xsd: restriction base=«GDI_Module»>
<xsd:attribute name=«moduleId» type=«xsd:unsignedShort» use=«required» fixed=«1000»/>
<!-- Virtual Device Types typically contain a Create Parameter of a specific
type and several Function Objects of different types.
This exemplary Function Object type describes an input channel and it is
possible to use up to 16 channels with each Virtual Device instance. -->
<xsd:complexType name=«Device01»>
<xsd: extension base=«Device01_»>
<xsd:element name=«NumOfChannel» type=«CRParamDevice»/>
<xsd:element name=«fnADInput» type=«IFADInput» minOccurs=«0» maxOccurs=«16»/>
<xsd:complexType name=«CRParamDevice»>
<xsd:extension base=«CreateParameter»>
<xsd:element name=«Value» type=«xsd:unsignedShort» default=«5»/>
<!-- Function Object Types have fixed numbers for identification in funcID.
This is a restriction of type GDI_Interface. If you want to avoid
restriction, move attribute funcId from type GDI_Interface with a fixed
number to type IFADInput below, which then is an extension of
GDI_Interface and type IFADInput_ will be obsolete. -->
<xsd:complexType name=«IFADInput_»>
<xsd: restriction base=«GDI_Interface»>
<xsd: attribute name=«funcId» type=«xsd:unsignedShort» use=«required» fixed=«1077»/>
<!-- A simple Function Object type for the Virtual Device of type Device01.
Function Object types typically contain a Create Parameter and several
Communication Objects of kind GDI-Attribute or GDI-Parameter.
An example with additional GDI-Operation is given in DCD2.xsd -->
<xsd:complexType name=«IFADInput»>
<xsd: extension base=«IFADInput_»>
<xsd: element name=«Interrupt» type=«CRParamIFADInput»/>
<xsd:element name=«Polarity» type=«PolarityType» minOccurs=«0»/>
<xsd:element name=«Channel» type=«ChannelType» minOccurs=«0»/>
<xsd:element name=«ADValue» type=«ADValueType» minOccurs=«0»/>
<xsd:complexType name=«CRParamIFADInput»>
<xsd: extension base=«CreateParameter»>
<xsd:element name=«Value» type=«xsd:unsignedShort» default=«5»/>
<xsd:complexType name=«ADValueType»>
<xsd:extension base=«AttributeReadOnly»>
<xsd:element name=«OrderedValue» type=«OrderedValueAD» minOccurs=«0»/>
<xsd:complexType name=«OrderedValueAD»>
<xsd: restriction base=«TOrderedValue»>
<xsd:element name=«Value» type=«xsd:unsignedShort» default=«0»/>
<xsd:complexType name=«PolarityType»>
<xsd: extension base=«AttributeReadWrite»>
<xsd:element name=«OrderedValue» type=«OrderedValuePolarity»
minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:complexType name=«OrderedValuePolarity»>
<xsd: restriction base=«TOrderedValue»>
<xsd:element name=«Value» type=«TePolarity» default=«0»/>
<xsd:simpleType name=«TePolarity»>
<xsd: restriction base=«xsd:short»>
<xsd:complexType name=«ChannelType»>
<xsd:extension base=«Parameter»>
<xsd:element name=«OrderedValue» type=«OrderedValueChannel»
minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:complexType name=«OrderedValueChannel»>
<xsd: restriction base=«TOrderedValue»>
<xsd:element name=«Value» type=«xsd:unsignedShort» default=«0»/>
A.7.3 XML-схема: Файл DCDa2.xsd
<xsd: schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
elementFormDefault=«qualified» attributeFormDefault=«unqualified»>
<xsd:appinfo source=«http://www.asam.net/ISO20242-4/DCPTHeader.xsd»>
<xsd: include schemaLocation=«GDICommon.xsd»/>
<!-- Main type is GDI_DCD with contained Virtual Device Types.
There may be many different Virtual Device Types contained. -->
<xsd:complexType name=«Driver02»>
<xsd:extension base=«GDI_DCD»>
<xsd:element name=«myDevice02» type=«Device02» minOccurs=«0» maxOccurs=«unbounded»/>
<!-- Virtual Device Types have fixed numbers for identification in moduleID.
This is a restriction of type VDInstance. If you want to avoid
restriction, move attribute moduleId from type GDI_Module with a fixed
number to type Device02 below, which then is an extension of GDI_Module
and type Device02_ will be obsolete. -->
<xsd:complexType name=«Device02_»>
<xsd: restriction base=«GDI_Module»>
<xsd:attribute name=«moduleId» type=«xsd:unsignedShort» use=«required» fixed=«1002»/>
<!-- This exemplary Virtual Device Type only contains one Function Object
type without restricting the number of instances. -->
<xsd:complexType name=«Device02»>
<xsd: extension base=«Device02_»>
<xsd:element name=«myFunction02» type=«MyFunction02Type»
minOccurs=«0» maxOccurs=«unbounded»/>
<!-- Function Object Types have fixed numbers for identification in funcID.
This is a restriction of type GDI_Interface. If you want to avoid
restriction, move attribute funcId from type GDI_Interface with a fixed
number to type MyFunction02Type below, which then is an extension of
GDI_Interface and type MyFunction02Type_ will be obsolete. -->
<xsd:complexType name=«MyFunction02Type_»>
<xsd: restriction base=«GDI_Interface»>
<xsd: attribute name=«funcId» type=«xsd:unsignedShort» use=«required» fixed=«1008»/>
<!-- This Function Object type example contains only the Create Parameter
and one optional Operation. -->
<xsd:complexType name=«MyFunction02Type»>
<xsd: extension base=«MyFunction02Type_»>
<xsd:element name=«myCRPar02» type=«cpType02»/>
<xsd:element name=«myOperation02» type=«myOperation02Type» minOccurs=«0»/>
<xsd:complexType name=«cpType02»>
<xsd: extension base=«CreateParameter»>
<xsd:element name=«Value» type=«serialCom»/>
<xsd:complexType name=«serialCom»>
<xsd:element name=«speed» type=«speedType»/>
<xsd:element name=«length» type=«xsd:integer» fixed=«8»/>
<xsd:simpleType name=«speedType»>
<xsd: restriction base=«xsd:int»>
<xsd: enumeration value=«2400»/>
<xsd: enumeration value=«4800»/>
<xsd: enumeration value=«9600»/>
<xsd:complexType name=«myOperation02Type_»>
<xsd: restriction base=«GDI_Operation»>
<xsd:attribute name=«operationId» type=«xsd:unsignedShort» use=«required» fixed=«1009»/>
<xsd:complexType name=«myOperation02Type»>
<xsd: extension base=«myOperation02Type_»>
<xsd:element name=«OutValue» type=«op02outType» minOccurs=«0»/>
<xsd:element name=«InValue» type=«op02inType» minOccurs=«0»/>
<xsd:complexType name=«op02inType»>
<xsd:extension base=«OperationInParameter»>
<xsd:element name=«Input» type=«orderedvalueop02in» maxOccurs=«unbounded»/>
<xsd:complexType name=«orderedvalueop02in»>
<xsd: restriction base=«TOrderedValue»>
<xsd:element name=«Value» type=«xsd:double»/>
<!-- The output parameters for this operation is a special type «void»,
which defines, that the accordingly XML element has to be empty.
Implementations of service VDSI_Execute (e.g. Annex A of ISO 20242.3)
will define this case also (e.g. NULL pointer). It simply means,
that there will be no output value for this operation -->
<xsd:complexType name=«op02outType»>
<xsd:extension base=«OperationOutParameter»>
<xsd:element name=«Value» type=«void»/>
<xsd:complexType name=«void»/>
Файл CCDa.xsd содержит XML-схему примера CCD-описания, которая позволяет описывать XML-схему параметризации двух драйверов устройств.
A.8.2 XML-схема: Файл CCDa.xsd
<xsd: schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
elementFormDefault=«qualified» attributeFormDefault=«unqualified»>
<xsd:appinfo source=«http://www.asam.net/ISO20242-4/DCPTHeader.xsd»>
<!-- A coodinator capability description contains the capability
descriptions of all devices, which will be usable -->
<xsd:include schemaLocation=«DCDa1. xsd»/>
<xsd: include schemaLocation=«DCDa2.xsd»/>
<xsd:element name=«ISO15745Profile»>
<xsd: element ref=«ProfileHeader»/>
<xsd: element ref=«ProfileBody»/>
<xsd: element name=«ProfileHeader»>
<xsd: element name=«ProfileIdentification» type=«xsd:string»/>
<xsd:element name=«ProfileRevision» type=«xsd:string»/>
<xsd:element name=«ProfileName» type=«xsd:string»/>
<xsd:element name=«ProfileSource» type=«xsd:string»/>
<xsd: element name=«ProfileClassID» type=«ProfileClassID_DataType» fixed=«InformationExchange»/>
<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»
minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:complexType name=«ISO15745Reference_DataType»>
<xsd:element name=«ISO15745Part» type=«xsd:string» fixed=«1»/>
<xsd:element name=«ISO15745Edition» type=«xsd:string» fixed=«1»/>
<xsd:element name=«ProfileTechnology» type=«xsd:string» fixed=«None»/>
<xsd:simpleType name=«ProfileClassID_DataType»>
<xsd: restriction base=«xsd:string»>
<xsd:enumeration value=«AIP»/>
<xsd: enumeration value=«InformationExchange»/>
<xsd:enumeration value=«Device»/>
<xsd: enumeration value=«CommunicationNetwork»/>
<xsd:enumeration value=«Material»/>
<xsd:simpleType name=«IASInterface_DataType»>
<xsd: restriction base=«xsd:string»>
<xsd:enumeration value=«CSI»/>
<xsd:enumeration value=«HCI»/>
<xsd:enumeration value=«ISI»/>
<xsd:enumeration value=«API»/>
<xsd:enumeration value=«CMI»/>
<xsd:enumeration value=«ESI»/>
<xsd:enumeration value=«FSI»/>
<xsd:enumeration value=«MTI»/>
<xsd:enumeration value=«SEI»/>
<xsd:enumeration value=«USI»/>
<xsd: restriction base=«xsd:string»>
<xsd: element name=«ProfileBody»>
<xsd:element name=«CCD» maxOccurs=«unbounded»>
<xsd:element name=«DCD1» type=«Driver01» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«DCD2» type=«Driver02» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«CCD»/>
Файл SamplePIDa.xml содержит пример XML-данных для PID-описания, который позволяет использовать файл CCDa.xsd в качестве XML-схемы и определять экземпляры класса параметров согласующего устройства и драйверов устройства.
A.9.2 XML-схема: Пример файла PIDa.xml
<ISO15745Profile xmlns:xsi=«http://www.w3.org/2001/XMLSchema-instance»
xsi:noNamespaceSchemaLocation=«CCDa.xsd»>
http://www.asam.net/ISO20242-4/XPID
interrupt category=«CREATEPARAMETER»>
(справочное)
MICX-технология позволяет определить методы совместного использования производственной информации, представляемой на языке XML и предназначенной для промышленных применений. В данном приложении приведено описание шаблона профиля зависящих от MICX-технологии возможностей служебного интерфейса как совместно используемых для информационной передачи с помощью спецификаций на характеристики программ (PPS-спецификаций) OASIS. Примеры DCD-, CCD- и PID-описаний приведены далее.
B.2 Модель профиля MICX-технологии
Зависящая от MICX-технологии модель профиля содержит всю информацию, которая необходима для описания возможностей данного устройства и параметризации. На рисунке B.1 приведена диаграмма классов для зависящего от MICX-технологии шаблона профилей возможностей устройства.
B.2.2 Класс Device (устройство)
Этот класс характеризует возможности зависящего от MICX-технологии виртуального устройства и наследуется классом виртуальных устройств. Зависящий от устройства класс должен наследовать его свойства и определять возможности зависящего от данного устройства виртуального устройства.
B.2.3 Класс Activity (рабочая операция)
Этот класс характеризует возможности зависящей от MICX-технологии рабочей операции и наследуется классом функциональных объектов. Зависящий от рабочей операции класс должен наследовать его и определять возможности зависящей от устройства рабочей операции.
B.2.4 Класс Requester (инициатор запроса)
Этот класс характеризует возможности инициатора запроса, используемые в зависящей от MICX-технологии рабочей операции, наследуемые классом рабочих операций, обладающие несколькими классами сообщений (или не имеющие класса) и способные посылать ответные сообщения этих классов, которые могут приниматься. Инициатор запроса определен в части 2 PPS-спецификаций OASIS [3].
B.2.5 Класс Responder (респондент запроса)
Этот класс характеризует возможности респондента (ответчика) запроса, используемые в зависящей от MICX-технологии рабочей операции, наследуемые классом объектов связи, обладающие несколькими классами запрашиваемых сообщений (или не имеющие этого класса) и способные принимать ответные сообщения этих классов, которые могут посылаться. Респондент запроса определен в части 2 PPS-спецификаций OASIS [3].
B.2.6 Класс Sender (отправитель запроса)
Этот класс характеризует возможности отправителя запроса, используемые в зависящей от MICX-технологии рабочей операции, наследуемые классом объектов связи, обладающие несколькими классами уведомляющих сообщений (или не имеющие этого класса) и способные принимать ответные сообщения этих классов, которые могут посылаться. Данный класс имеет несколько классов доменных объектов (или не имеет этого класса) для записи данных в уведомляющие сообщения. Отправитель запроса определен в части 2 PPS-спецификаций OASIS [3].
B.2.7 Класс Receiver (получатель запроса)
Этот класс характеризует возможности получателя запроса, используемые в зависящей от MICX-технологии рабочей операции, наследуемые классом объектов связи, обладающие несколькими классами уведомляющих сообщений (или не имеющие этого класса) и способные принимать ответные сообщения этих классов, которые могут посылаться. Данный класс имеет несколько классов доменных объектов (или не имеет этого класса) для чтения данных из уведомляющих сообщений. Получатель запроса определен в части 2 PPS-спецификаций OASIS [3].
B.2.8 Класс Message (сообщение)
Этот класс характеризует возможности сообщения, которые позволяют зависящей от MICX-технологии рабочей операции получать и принимать его. Данный класс имеет один или несколько классов входных сообщений.
B.2.9 Класс Domain object (доменный объект)
Этот класс характеризует возможности доменного объекта, которые имеют респондер, отправитель или получатель запроса. Данный класс имеет один или несколько классов примитивных элементов.
B.2.10 Класс Transaction (транзакция)
Этот класс характеризует возможности входного сообщения, которые в зависимости от рабочей операции, используемой в MICX-технологии, способны посылать или принимать это сообщение. Данный класс содержит классы примитивных элементов. Каждый конкретный класс транзакции должен наследовать свойства абстрактного класса транзакций, определенные в части 2 PPS-спецификаций OASIS [3].
B.2.11 Класс Primitive element (примитивный элемент)
Этот класс характеризует возможности OASIS PPS-примитивного элемента сообщения, которое может посылаться и приниматься с помощью зависящей от MICX-технологии рабочей операции. В OASIS PPS предусмотрено восемь типов примитивных элементов — план, заказ (порядок), сторона, задание, операция, партия, ресурс, процесс и товар. Примитивные элементы определены в части 1 PPS-спецификаций OASIS [2].
B.3 Дополнительная идентификация типа для обобщенного DCPT-шаблона
В таблице B.1 указаны зависящие от технологии типы идентификаторов объектов связи.
| Элемент зависящего от выбираемой технологии DCPT-шаблона | Содержимое XML-атрибута «category» |
|---|---|
| Responder | RESPONDER |
| Sender | SENDER |
| Receiver | RECEIVER |
Примечание — В MICX-технологии содержимое атрибута «category» не связано с состоянием виртуального устройства. При этом любое содержимое должно иметь тот же смысл, что и содержимое ATTRIBUTE в GDI-интерфейсе ASAM (см. приложение A).
B.4 Зависящий от выбираемой MICX-технологии шаблон профилей возможностей устройства
Файл MICXCommon.xsd содержит XML-схему зависящего от выбираемой MICX-технологии DCPT-шаблона, которая позволяет расширять XML-схему для обобщенного DCPT-шаблона, приведенную в 6.3 в соответствии с зависящей от выбранной MICX-технологии моделью DCPT-шаблона (см. рисунок B.1). Этот файл позволяет импортировать XML-схемы в PPS-спецификации OASIS-системы (части 1 и 2).
B.4.2 XML-схема: Файл MICXCommon.xsd
<xsd: schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns=«http://www.mstc.or.jp/micx/ISO20242-4/MICX»
xmlns:dcpt=«http://www.osi.ch/iso/ISO20242-4/GenericDCPT»
xmlns:pps=«http://docs.oasis-open.org/pps/ns/core-elements»
xmlns:ppst=«http://docs.oasis-open.org/pps/ns/transaction-messages»
targetNamespace=«http://www.mstc.or.jp/micx/ISO20242-4/MICX»
elementFormDefault=«qualified»>
<xsd:appinfo source=«http://www.osi.ch/iso/ISO20242-4/DCPTHeader.xsd»>
<xsd: import namespace=«http://www.osi.ch/iso/ISO20242-4/GenericDCPT»
schemaLocation=«GenericDCPT.xsd»/>
<xsd: import namespace=«http://docs. oasis-open.org/pps/ns/core-elements»
schemaLocation=«pps-core-elements-1.0.xsd»/>
<xsd: import namespace=«http://docs. oasis-open.org/pps/ns/transaction-messages»
schemaLocation=«pps-transaction-messages-1.0.xsd»/>
<xsd:simpleType name=«categoryType»>
<xsd: restriction base=«xsd:string»>
<xsd:enumeration value=«CCD»/>
<xsd:enumeration value=«DCD»/>
<xsd: enumeration value=«MODULE»/>
<xsd:enumeration value=«INTERFACE»/>
<xsd:enumeration value=«OPERATION»/>
<xsd: enumeration value=«RESPONDER»/>
<xsd: enumeration value=«SENDER»/>
<xsd: enumeration value=«RECEIVER»/>
<xsd:simpleType name=«messageType»>
<xsd: restriction base=«xsd:string»>
<xsd:enumeration value=«REQUEST»/>
<xsd:enumeration value=«RESPONSE»/>
<xsd:enumeration value=«NOTIFY»/>
<xsd:element name=«RequestMessage» type=«MessageType» abstract=«true»/>
<xsd:element name=«ResponseMessage» type=«MessageType» abstract=«true»/>
<xsd:element name=«NotifyMessage» type=«MessageType» abstract=«true»/>
<xsd:element name=«DomainObject» type=«DomainObjectType» abstract=«true»/>
<xsd:element name=«Transaction» type=«ppst:TransactionType» abstract=«true»/>
<xsd:element name=«PrimitiveElement» type=«pps:PrimitiveType» abstract=«true»/>
<xsd:complexType name=«DCDType»>
<xsd:extension base=«dcpt:GenericDCDType»/>
<xsd:complexType name=«DeviceType»>
<xsd: extension base=«dcpt:VirtualDeviceType»/>
<xsd:complexType name=«ActivityType»>
<xsd:extension base=«dcpt:FunctionObjectType»/>
<xsd:complexType name=«RequesterType»>
<xsd:extension base=«dcpt:OperationType»>
<xsd:element ref=«RequestMessage» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ResponseMessage» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:complexType name=«ResponderType»>
<xsd:extension base=«dcpt:CommunicationObjectType»>
<xsd:element ref=«RequestMessage» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ResponseMessage» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«DomainObject» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«category» type=«categoryType» use=«required» fixed=«RESPONDER»/>
<xsd:complexType name=«SenderType»>
<xsd:extension base=«dcpt:CommunicationObjectType»>
<xsd:element ref=«NotifyMessage» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«DomainObject» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«category» type=«categoryType» use=«required» fixed=«SENDER»/>
<xsd:complexType name=«ReceiverType»>
<xsd:extension base=«dcpt:CommunicationObjectType»>
<xsd:element ref=«NotifyMessage» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«DomainObject» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«category» type=«categoryType» use=«required» fixed=«RECEIVER»/>
<xsd:complexType name=«MessageType»>
<xsd:element ref=«Transaction» maxOccurs=«unbounded»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«message» type=«messageType» use=«required»/>
<xsd:complexType name=«DomainObjectType»>
<xsd:element ref=«PrimitiveElement» maxOccurs=«unbounded»/>
<xsd: attribute name=«name» type=«xsd:string»/>
B.5 Пример программы DCD-описания
Файл DCDb.xsd содержит пример XML-схемы DCD-описания, которая позволяет дополнять XML-схему для зависящего от выбранной MICX-технологии DCPT-шаблона (см. B.4) в соответствии с возможностями драйвера устройства.
B.5.2 XML-схема: Файл DCDb.xsd
<xsd: schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns=«http://www.mstc.or.jp/micx/ISO20242-4/b/Example»
xmlns:micx=«http://www.mstc.or.jp/micx/ISO20242-4/MICX»
xmlns:pps=«http://docs.oasis-open.org/pps/ns/core-elements»
xmlns:ppst=«http://docs.oasis-open.org/pps/ns/transaction-messages»
targetNamespace=«http://www.mstc.or.jp/micx/ISO20242-4/b/Example»
elementFormDefault=«qualified»>
<xsd:appinfo source=«http://www.osi.ch/iso/ISO20242-4/DCPTHeader.xsd»>
<xsd: import namespace=«http://www. mstc.or.jp/micx/ISO20242-4/MICX»
schemaLocation=«MICXCommon.xsd»/>
<xsd: import namespace=«http://docs. oasis-open.org/pps/ns/core-elements»
schemaLocation=«pps-core-elements-1.0.xsd»/>
<xsd: import namespace=«http://docs. oasis-open.org/pps/ns/transaction-messages»
schemaLocation=«pps-transaction-messages-1.0.xsd»/>
<xsd:element name=«Device» type=«DeviceType»/>
<xsd:element name=«ProductionControl» type=«ProductionControlType»/>
<xsd:element name=«LoadRecipe» type=«LoadRecipeType»/>
<xsd: element name=«ExecutionControl» type=«ExecutionControlType»/>
<xsd: element name=«GetInformation» type=«GetInformationType»/>
<xsd:element name=«EventReport» type=«EventReportType»/>
<xsd:complexType name=«DCDType»>
<xsd:element ref=«Device» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«micx:categoryType» use=«required» fixed=«DCD»/>
<xsd:complexType name=«DeviceType»>
<xsd:element ref=«ProductionControl» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«micx:categoryType» use=«required» fixed=«MODULE»/>
<xsd:complexType name=«ProductionControlType»>
<xsd:element ref=«LoadRecipe» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ExecutionControl» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«GetInformation» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«EventReport» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«micx:categoryType» use=«required» fixed=«INTERFACE»/>
<xsd:complexType name=«LoadRecipeType»>
<xsd:element ref=«LoadRecipeRequest» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«LoadRecipeResponse» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«category» type=«micx:categoryType» use=«required» fixed=«OPERATION»/>
<xsd:complexType name=«ExecutionControlType»>
<xsd:element ref=«ExecutionRequest» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ExecutionResponse» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«micx:categoryType» use=«required» fixed=«OPERATION»/>
<xsd:complexType name=«GetInformationType»>
<xsd:element ref=«GetInformationRequest» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«GetInformationResponse» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«micx:categoryType»
use=«required» fixed=«OPERATION»/>
<xsd:complexType name=«EventReportType»>
<xsd:element ref=«NotifyEvent» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«EventObject» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«micx:categoryType»
use=«required» fixed=«RECEIVER»/
<xsd: element name=«EventObject»>
<xsd:element name=«EquipmentObject» type=«EquipmentType»
minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«PersonnelObject» type=«PersonnelType»
minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element name=«ExecutionObject» type=«ExecutionType»
minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:element name=«Equipment» type=«EquipmentType» substitutionGroup=«pps:Resource»/>
<xsd:complexType name=«EquipmentType»>
<xsd: restriction base=«pps:PrimitiveType»>
<xsd:element ref=«pps:Capacity» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Spec» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Event» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Description» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Author» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Date» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«key» type=«xsd:long»/>
<xsd:attribute name=«name» type=«xsd:string» fixed=«Equipment»/>
<xsd:attribute name=«type» type=«xsd:string»/>
<xsd:element name=«Personnel» type=«PersonnelType» substitutionGroup=«pps:Resource»/>
<xsd:complexType name=«PersonnelType»>
<xsd: restriction base=«pps:PrimitiveType»>
<xsd:element ref=«pps: Capacity» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Spec» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Event» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Description» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Author» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Date» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«key» type=«xsd:long»/>
<xsd:attribute name=«name» type=«xsd:string» fixed=«Personnel»/>
<xsd:attribute name=«type» type=«xsd:string»/>
<xsd:element name=«Recipe» type=«RecipeType» substitutionGroup=«pps:Process»/>
<xsd:complexType name=«RecipeType»>
<xsd: restriction base=«pps:PrimitiveType»>
<xsd:element ref=«pps: Produce» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Consume» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Assign» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Spec» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Description» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Author» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Date» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«key» type=«xsd:long»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«type» type=«xsd:string» fixed=«Recipe»/>
<xsd:element name=«Work» type=«WorkType» substitutionGroup=«pps:Item»/>
<xsd:complexType name=«WorkType»>
<xsd: restriction base=«pps:PrimitiveType»>
<xsd:element ref=«pps: Produce» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Consume» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Spec» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Description» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Author» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Date» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«key» type=«xsd:long»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«parent» type=«xsd:string»/>
<xsd:attribute name=«type» type=«xsd:string» fixed=«Work»/>
<xsd:element name=«Execution» type=«ExecutionType» substitutionGroup=«pps:Operation»/>
<xsd:complexType name=«ExecutionType»>
<xsd: restriction base=«pps:PrimitiveType»>
<xsd:element ref=«pps: Produce» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Consume» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Assign» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps: Progress» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Spec» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Start» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:End» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Event» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Description» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Author» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Date» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«key» type=«xsd:long»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«type» type=«xsd:string» fixed=«Operation»/>
<xsd: attribute name=«status» type=«xsd:string»/>
<xsd:attribute name=«process» type=«xsd:string»/>
<xsd:element name=«AcceptedWork» type=«AcceptedWorkType»
substitutionGroup=«pps:Produce»/>
<xsd:complexType name=«AcceptedWorkType»>
<xsd: restriction base=«pps:RelationalType»>
<xsd:element ref=«pps:Qty» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«type» type=«xsd:string» fixed=«Accepted»/>
<xsd:attribute name=«lot» type=«xsd:string»/>
<xsd:element name=«DefectiveWork» type=«DefectiveWorkType»
substitutionGroup=«pps:Produce»/>
<xsd:complexType name=«DefectiveWorkType»>
<xsd:restriction base=«pps:RelationalType»>
<xsd:element ref=«pps:Qty» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«type» type=«xsd:string» fixed=«Defective»/>
<xsd:attribute name=«lot» type=«xsd:string»/>
<xsd: element name=«AssignedEquipment» type=«AssignedEquipmentType» substitutionGroup=«pps:Assign»/>
<xsd:complexType name=«AssignedEquipmentType»>
<xsd: restriction base=«pps:RelationalType»>
<xsd:element ref=«pps:Qty» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«type» type=«xsd:string» fixed=«Equipment»/>
<xsd:attribute name=«resource» type=«xsd:string»/>
<xsd:element name=«OrderName» type=«OrderNameType» substitutionGroup=«pps:Spec»/>
<xsd:complexType name=«OrderNameType»>
<xsd: restriction base=«pps:SpecificType»>
<xsd:element ref=«pps:Char» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«type» type=«xsd:string» fixed=«Order»/>
<xsd:element name=«Length» type=«LengthType» substitutionGroup=«pps:Spec»/>
<xsd:element name=«Qty» substitutionGroup=«pps:Qty»/>
<xsd:complexType name=«LengthType»>
<xsd: restriction base=«pps:SpecificType»>
<xsd:element ref=«pps:Qty» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:attribute name=«type» type=«xsd:string» fixed=«Length»/>
<xsd: element name=«LoadRecipeRequest»>
<xsd: extension base=«micx:MessageType»>
<xsd:element name=«RecipeRecord»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«ppst:Condition» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Item» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Process» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string» fixed=«Add»/>
<xsd:attribute name=«transaction» type=«xsd:string»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd: attribute name=«confirm» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:element name=«LoadRecipeResponse»>
<xsd: extension base=«micx:MessageType»>
<xsd:element name=«RecipeRecord»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst:Error» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«pps:Item» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Process» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string» fixed=«Confirm»/>
<xsd:attribute name=«transaction» type=«xsd:string»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd: element name=«ExecutionRequest»>
<xsd: extension base=«micx:MessageType»>
<xsd: element name=«ExecutionOrder»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«ppst:Condition» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Operation» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string» fixed=«Add»/>
<xsd:attribute name=«transaction» type=«xsd:string»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd: attribute name=«confirm» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd: element name=«ExecutionResponse»>
<xsd: extension base=«micx:MessageType»>
<xsd: element name=«ExecutionOrder»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst: Error» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«pps:Operation» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string» fixed=«Confirm»/>
<xsd:attribute name=«transaction» type=«xsd:string»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd: element name=«GetInformationRequest»>
<xsd: extension base=«micx:MessageType»>
<xsd: element name=«ExecutionOrder»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«ppst:Condition» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ppst:Selection» maxOccurs=«unbounded»/>
<xsd:element ref=«ppst:Header» minOccurs=«0»/>
<xsd:element ref=«pps:Operation» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string» fixed=«Get»/>
<xsd:attribute name=«transaction» type=«xsd:string»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:element name=«ResourceRecord»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«ppst:Condition» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps: Resource» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd: string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string»/>
<xsd:attribute name=«transaction» type=«xsd:string» fixed=«Get»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd: attribute name=«confirm» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:element name=«InventryRecord»>
<xsd:restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«ppst:Condition» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«pps:Item» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string»/>
<xsd:attribute name=«transaction» type=«xsd:string» fixed=«Get»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd: attribute name=«confirm» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:element name=«GetInformationResponse»>
<xsd: extension base=«micx:MessageType»>
<xsd: element name=«ExecutionOrder»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst:Error» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«ppst:Header» minOccurs=«0»/>
<xsd:element ref=«pps:Operation» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string» fixed=«Show»/>
<xsd:attribute name=«transaction» type=«xsd:string»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:element name=«ResourceRecord»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst: Error» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«ppst:Header» minOccurs=«0»/>
<xsd:element ref=«pps: Resource» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string»/>
<xsd:attribute name=«transaction» type=«xsd:string» fixed=«Show»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:element name=«InventryRecord»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst:Error» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«ppst:Header» minOccurs=«0»/>
<xsd:element ref=«pps:Item» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string»/>
<xsd:attribute name=«transaction» type=«xsd:string» fixed=«Show»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:element name=«NotifyEvent»>
<xsd: extension base=«micx:MessageType»>
<xsd: element name=«ExecutionOrder»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«ppst:Header» minOccurs=«0»/>
<xsd:element ref=«pps:Operation» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string» fixed=«Notify»/>
<xsd:attribute name=«transaction» type=«xsd:string»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
<xsd:element name=«ResourceRecord»>
<xsd: restriction base=«ppst:TransactionType»>
<xsd:element ref=«ppst:App» minOccurs=«0»/>
<xsd:element ref=«ppst: Header» minOccurs=«0»/>
<xsd:element ref=«pps: Resource» maxOccurs=«unbounded»/>
<xsd: attribute name=«id» type=«xsd:string» use=«required»/>
<xsd:attribute name=«action» type=«xsd:string»/>
<xsd:attribute name=«transaction» type=«xsd:string» fixed=«Notify»/>
<xsd: attribute name=«profile» type=«xsd:string»/>
<xsd:attribute name=«create» type=«xsd:dateTime»/>
<xsd:attribute name=«sender» type=«xsd:string»/>
<xsd:attribute name=«description» type=«xsd:string»/>
Файл CCDb.xsd содержит XML-схему примера CCD-описания, которая позволяет дополнять XML-схему для зависящего от выбираемой MICX-технологии DCPT-шаблона (см. B.4) в соответствии с возможностями согласующего устройства, импортирующего DCD-описание драйверов устройства.
B.6.2 XML-схема: Файл CCDb.xsd
<xsd: schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns=«http://www.mstc.or.jp/micx/ISO20242-4/b/Example»
xmlns:micx=«http://www.mstc.or.jp/micx/ISO20242-4/MICX»
targetNamespace=«http://www.mstc.or.jp/micx/ISO20242-4/b/Example»
elementFormDefault=«qualified»>
<xsd:appinfo source=«http://www.osi.ch/iso/ISO20242-4/DCPTHeader.xsd»>
<xsd: import namespace=«http://www. mstc.or.jp/micx/ISO20242-4/MICX»
schemaLocation=«MICXCommon.xsd»/>
<xsd: include schemaLocation=«DCDb.xsd»/>
<xsd:element name=«ISO15745Profile»>
<xsd: element ref=«ProfileHeader»/>
<xsd: element ref=«ProfileBody»/>
<xsd: element name=«ProfileHeader»>
<xsd:element name=«ProfileIdentification» type=«xsd:string»/>
<xsd:element name=«ProfileRevision» type=«xsd:string»/>
<xsd:element name=«ProfileName» type=«xsd:string»/>
<xsd:element name=«ProfileSource» type=«xsd:string»/>
<xsd:element name=«ProfileClassID» type=«ProfileClassID_DataType»
<xsd:element name=«ProfileDate» type=«xsd:date» minOccurs=«0»/>
<xsd:element name=«AdditionalInformation» type=«xsd:anyURI» minOccurs=«0»/>
<xsd:element name=«ISO15745Reference» type=«ISO15745Reference_DataType»/>
<xsd:element name=«IASInterfaceType» type=«IASInterface_DataType» fixed=«CSI»
minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:complexType name=«ISO15745Reference_DataType»>
<xsd:element name=«ISO15745Part» type=«xsd:string» fixed=«1»/>
<xsd:element name=«ISO15745Edition» type=«xsd:string» fixed=«1»/>
<xsd:element name=«ProfileTechnology» type=«xsd:string» fixed=«None»/>
<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=«Device»/>
<xsd: enumeration value=«CommunicationNetwork»/>
<xsd:enumeration value=«Material»/>
<xsd:simpleType name=«IASInterface_DataType»>
<xsd: restriction base=«xsd:string»>
<xsd:enumeration value=«CSI»/>
<xsd:enumeration value=«HCI»/>
<xsd:enumeration value=«ISI»/>
<xsd:enumeration value=«API»/>
<xsd:enumeration value=«CMI»/>
<xsd:enumeration value=«ESI»/>
<xsd:enumeration value=«FSI»/>
<xsd:enumeration value=«MTI»/>
<xsd:enumeration value=«SEI»/>
<xsd:enumeration value=«USI»/>
<xsd: restriction base=«xsd:string»>
<xsd: element name=«ProfileBody»>
<xsd:element name=«CCD» maxOccurs=«unbounded»>
<xsd:element name=«DCD1» type=«DCDType» minOccurs=«0» maxOccurs=«unbounded»/>
<xsd: attribute name=«name» type=«xsd:string»/>
<xsd:attribute name=«category» type=«micx:categoryType»
Файл SamplePIDb.xml содержит XML-данные для примера PID-описания, который в качестве XML-схемы использует файлы CCDb.xsd и DCDb.xsd. В нем описаны параметрические экземпляры класса из набора параметров загрузки в сетевой компьютер.
B.7.2 XML-схема: Файл SamplePIDb.xml
<ISO15745Profile xmlns=«http://www.mstc.or.jp/micx/ISO20242-4/b/Example»
xmlns:xsi=«http://www.w3.org/2001/XMLSchema-instance»
xsi:schemaLocation=«http://www.mstc.or.jp/micx/ISO20242-4/b/Example CCDb.xsd»>
http://www.mstc.or.jp/micx/ISO20242-4/PID
Открытый сетевой робототехнический интерфейс (OriN) является обобщенным интерфейсом устройств, используемым для различных приложений. Ниже приведено описание зависящего от ORiN-интерфейса шаблона профиля возможностей устройства (версия 2.1), а также приведены примеры DCD-, CCD- и PID-описаний.
C.2 Зависящая от ORiN-интерфейса модель профиля
Зависящая от выбираемого ORiN-интерфейса модель профиля содержит всю информацию, необходимую для описания возможностей устройств и их параметризации. На рисунке C.1 приведена диаграмма классов для зависящей от ORiN-интерфейса модели профиля шаблона (DCPT).
Generic DCPT — Обобщенный DCPT-шаблон.
Рисунок C.1 — Диаграмма классов для зависящей
от ORiN-интерфейса модели профиля шаблона (DCPT)
Класс ORiN_CCD характеризует возможности зависящего от ORiN-интерфейса согласующего устройства (координатора). Он наследует класс GenericCCD и является абстрактным классом. Его наследует зависящий от согласующего устройства класс ORiN_CCD и определяет возможности этого устройства.
Класс ORiN_DCD характеризует возможности зависящего от ORiN-интерфейса драйвера согласующего устройства (координатора). Он наследует этот зависящий от ORiN-интерфейса драйвер. Он наследует класс GenericDCD и является абстрактным классом. Его наследует зависящий от устройства класс ORiN_DCD и определяет возможности драйвера этого устройства.
Класс ORiN_Header содержит дополнительную информацию, которая используется для конкретизации драйвера устройства. Элементы этого класса указаны в таблице C.1. Определение класса ORiN_Header также приведено в ORiNcommon.xsd (см. A.6.2).
Класс ORiN_Module характеризует возможности зависящего от ORiN-интерфейса виртуального устройства. Он наследует класс VirtualDevice и является абстрактным классом. Зависящий от устройства класс ORiN_Module наследует его и определяет возможности конкретного виртуального устройства. Класс ORiN_Module может содержать параметр CreateParameter и идентифицироваться номером, содержащимся в дополнительном XML-атрибуте, называемом «moduleId» и принадлежащем типу «xsd:unsignedShort».
Класс ORiN_Object характеризует возможности функциональных объектов зависящего от ORiN-интерфейса виртуального устройства. Он наследует класс FunctionObject и является абстрактным классом. Зависящий от устройства класс ORiN_Object наследует его и определяет возможности зависящего от устройства функционального объекта. Класс ORiN_Object может содержать параметр CreateParameter и идентифицироваться номером, содержащимся в дополнительном XML-атрибуте, называемом «funcId» и принадлежащем типу «xsd:unsignedShort».
Класс Method описывает работу зависящего от ORiN-интерфейса виртуального устройства, наследует класс Operation и является абстрактным классом. Каждый зависящий от устройства класс Method наследует его и характеризует возможности операции. Каждый класс Method содержит один входной и один выходной операционный параметр, которые могут быть нулевыми или (иногда) XML-экземплярами реализации. Присвоение значения входному операционному параметру в XML-экземпляре (PID) указывает на то, что операция должна выполняться для конфигурации. Класс Method идентифицируется номером, содержащимся в дополнительном XML-атрибуте, называемом «operationIdId» и принадлежащем типу «xsd:unsignedShort».
Класс MethodInParameter отмечает выполнение операции и является абстрактным классом. Каждый зависящий от устройства класс MethodInParameter наследует его и определяет тип данных входного параметра.
C.2.9 Класс MethodOutParameter
Класс MethodOutParameter характеризует выходное значение для операции, является абстрактным классом и содержит значение выходного параметра. Каждый зависящий от устройства класс MethodOutParameter наследует его и определяет тип данных значения.
Класс PropertyReadOnly характеризует значение времени прогона функционального объекта, который можно только считывать. Он наследует класс CommunicationObject и является абстрактным классом. Каждый зависящий от устройства класс PropertyReadOnly наследует его и определяет возможности каждого значения времени прогона и его тип данных.
C.2.11 Класс PropertyReadWrite
Класс PropertyReadWrite характеризует значение времени прогона функционального объекта, который можно и считывать, и записывать. Он наследует класс CommunicationObject и является абстрактным классом. Каждый зависящий от устройства класс PropertyReadWrite наследует его и определяет возможности каждого значения времени прогона и его тип данных.
C.2.12 Идентификация коммуникационных объектов ORiN-интерфейса
Экземпляры классов PropertyReadOnly и PropertyReadWrite определяют по номеру, который является подсчетом этих экземпляров в FunctionObject, начинающимся с единицы.
C.3 Элементы типовых данных и сценариев конфигурирования
Элемент Value задается для облегчения наследования типов данных, не затрагивающего наследования структурных классов. С помощью данного метода определение типов данных для коммуникационных объектов и создание параметров само по себе не связано с этими объектами. Элемент Value не требуется в тех случаях, когда типы данных определены неявно по отношению к коммуникационному объекту.
Класс Value описывает элемент типа xsd:anyType, которым можно пренебречь для любого другого типа, и поэтому он будет лишь полем для заполнения для любого типа элемента, определенного в каком-либо другом месте описания возможностей устройства. Использование этого дополнительного элемента облегчает наследование при определении типов данных (см. рисунок C.2).
Рисунок C.2 — Элемент Value для несвязанных определений типа
C.4 Дополнительная идентификация типа обобщенного DCPT-шаблона
В таблицах C.2 - C.4 указаны зависящие от используемой технологии типы идентификаторов для коммуникационных объектов и операционных параметров.
| Элемент зависящего от технологии DCPT-шаблона | Содержимое XML-атрибута «category» | Содержимое XML-атрибута «readonly» a |
| AttributeReadWrite | ATTRIBUTE | ложное |
| AttributeReadOnly | ATTRIBUTE | истинное |
| Parameter | PARAMETER | (ложное) |
| a Дополнительный XML-атрибут «readonly» типа xsd:boolean является обязательным для элементов AttributeReadWrite и AttributeReadOnly. | ||
| Элемент зависящего от технологии DCPT-шаблона | Содержимое XML-атрибута «category» |
|---|---|
| OperationInParameter | IN |
| OperationOutParameter | OUT |
| Элемент зависящего от технологии DCPT-шаблона | Содержимое XML-атрибута «category» |
|---|---|
| CreateParameter | CREATEPARAMETER |
C.5 Дополнительные XML-атрибуты для обобщенного DCPT-шаблона
Коммуникационные объекты AttributeReadOnly и AttributeReadWrite можно использовать для передачи незапрашиваемых данных вместе с сервисами VDSIinfReport и VDSI_Accept. Запрос на использование этих сервисов во время прогона выполняется в процессе конфигурирования путем установки XML-атрибутов infReport и присвоения типу «xsd:boolean» истинного значения (см. таблицу C.5).
C.6 Зависящий от ORiN-интерфейса шаблон профиля возможностей устройства
ORiNcommon.xsd — это XML-схема (структура), содержащая базовые классы, которые можно использовать для описания этой структуры, содержащей всю информацию для описания функциональных возможностей устройства и параметризации. Задаваемые типы элемента AttributeReadWrite могут быть расширены элементами Value. В этом случае элементы Value могут иметь тип данных, определяемый в дополнительной XML-схеме. Кроме того, определяемые типы данных AttributeReadOnly и OperationOutParameter могут быть расширены элементами Value с внешне заданными типами данных.
Примечание - Если элементы Value не используются, а коммуникационные объекты содержат значения простого или комплексного типа данных, то из-за расширения числа типов данных XML-схема может измениться. В этом случае ORiNcommon.xsd можно использовать в качестве образца (модели) структуры получаемого XML-экземпляра и необходимых XML-атрибутов.
C.6.2 XML-схема: ORiNcommon.xsd
;=======================================================================
;ORiNcommon.xsd Edition: 27-Feb-2010
;=======================================================================
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema» elementFormDefault=«qualified»
attributeFormDefault=«unqualified»>
<xsd:appinfo source=«http://www.ORiN.jp/ISO20242-4/DCPTHeader.xsd»>
<xsd:simpleType name=«Category»>
<xsd: restriction base=«xsd:string»>
<xsd: enumeration value=«MODULE»/>
<xsd:enumeration value=«INTERFACE»/>
<xsd:enumeration value=«ATTRIBUTE»/>
<xsd:enumeration value=«OPERATION»/>
<xsd:enumeration value=«OUT»/>
<xsd:enumeration value=«DCD»/>
<xsd:enumeration value=«CCD»/>
<xsd:attributeGroup name=«TextAttributes»>
<xsd:attribute name=«areaMsg» type=«xsd:unsignedShort „use=“optional»/>
<xsd:attribute name=«infMsg» type=«xsd:unsignedShort» use=«optional»/>
<xsd:attribute name=«areaText» type=«xsd:unsignedShort» use=«optional»/>
<xsd:attribute name=«infText» type=«xsd:unsignedShort» use=«optional»/>
<xsd:complexType name=«TNamedDCDElement» abstract=«true»>
<xsd:attribute name=«helpstring» type=«xsd:string» use=«optional»/>
<xsd:attributeGroup ref=«TextAttributes»/>
<xsd:complexType name=«ORiN_Module» abstract=«true»>
<xsd: extension base=«TNamedDCDElement»>
<xsd:attribute name=«moduleId» type=«xsd:unsignedShort» use=«required»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«MODULE»/>
<xsd: attribute name=«provider» type=«xsd:string» use=«required»/>
<xsd:complexType name=«ORiN_Object» abstract=«true»>
<xsd: extension base=«TNamedDCDElement»>
<xsd:attribute name=«funcId» type=«xsd:unsignedShort» use=«required»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«INTERFACE»/>
<xsd:attribute name=«name» type=«xsd:string» use=«optional»/>
<xsd:attribute name=«option» type=«xsd:string» use=«optional»/>
<xsd:complexType name=«PropertyReadWrite» abstract=«true»>
<xsd: extension base=«TNamedDCDElement»>
<xsd:attribute name=«readonly» type=«xsd:boolean» fixed=«false»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«ATTRIBUTE»/>
<xsd: attribute name=«infReport» type=«xsd:boolean»/>
<xsd: attribute name=«accept» type=«xsd:boolean»/>
<xsd:complexType name=«PropertyReadOnly» abstract=«true»>
<xsd: extension base=«TNamedDCDElement»>
<xsd:attribute name=«readonly» type=«xsd:boolean» use=«required» fixed=«true»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«ATTRIBUTE»/>
<xsd: attribute name=«infReport» type=«xsd:boolean»/>
<xsd:complexType name=«Method» abstract=«true»>
<xsd: extension base=«TNamedDCDElement»>
<xsd:attribute name=«operationId» type=«xsd:unsignedShort» use=«required»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«OPERATION»/>
<xsd:complexType name=«MethodOutParameter» abstract=«true»>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«OUT»/>
<xsd:attributeGroup ref=«TextAttributes»/>
<xsd:complexType name=«MethodInParameter» abstract=«true»>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«IN»/>
<xsd:attributeGroup ref=«TextAttributes»/>
=======================================================================
=======================================================================
<xsd:complexType name=«ORiNVersionType»>
<xsd:element name=«Major» type=«xsd:unsignedByte» default=«2»/>
<xsd:element name=«Minor» type=«xsd:unsignedByte» default=«1»/>
<xsd:element name=«Revision» type=«xsd:unsignedByte» default=«0»/>
<xsd:complexType name=«HeaderType»>
<xsd:element name=«DCD_Version» type=«xsd:unsignedInt»/>
<xsd:element name=«DeviceVersion» type=«xsd:unsignedInt»/>
<xsd:element name=«ProviderName» type=«xsd:string»/>
<xsd:element name=«ProviderVersion» type=«xsd: unsigned Int»/>
<xsd:element name=«Factory» type=«xsd:string»/>
<xsd:element name=«DIT» type=«xsd:string»/>
<xsd:element name=«ORiN_Version» type=«ORiNVersionType»/>
<xsd:complexType name=«ORiN_DCD» abstract=«true»>
<xsd:element name=«ORiN_Header» type=«HeaderType» minOccurs=«0»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«DCD»/>
<xsd:attributeGroup ref=«TextAttributes»/>
<xsd:attribute name=«dllPath» type=«xsd:string» use=«required»/>
<xsd: attribute name=«ProviderVersion» type=«xsd:int» use=«required»/>
C.7 Примеры описания возможностей устройства
XML-схемы DCD1.xsd и DCD2.xsd являются примерами описания возможностей устройства, которые расширяют существующую XML-схему ORiNCommon.xsd в соответствии с возможностями драйверов устройств. Имена XML-элементов должны быть определены в соответствии с требованиями потребителей. Структурная информация об XML-элементах определена в содержании XML-атрибута «категория» (category).
<xsd: schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns=«http://www.ORiN.co.jp/ISO20242-4/DCD1»
targetNamespace=«http://www.ORiN.co.jp/ISO20242-4/DCD1» elementFormDefault=«qualified»>
<xsd:appinfo source=«http://www.ORiN.jp/ISO20242-4/DCPTHeader.xsd»>
<xsd: include schemaLocation=«ORiNcommon.xsd»/>
<!-- Main type is ORiN_DCD with contained Virtual Device Types.
There may be many different Virtual Device Types contained. -->
<xsd:element name=«DCD1» type=«DCDType»/>
<xsd:complexType name=«DCDType»>
<xsd:extension base=«ORiN_DCD»>
<xsd:element ref=«Provider» minOccurs=«0» maxOccurs=«unbounded»/>
<!-- Virtual Device Types have fixed numbers for identification in moduleID.
This is a restriction of type VDInstance. If You want to avoid
restriction, move attribute moduleId from type ORiN_Module with a fixed
number to type ProviderType below, which than is an extension of ORiN_Module
and type ProviderBaseType will be obsolete. -->
<xsd:complexType name=«ProviderBaseType»>
<xsd: restriction base=«ORiN_Module»>
<xsd:attribute name=«provider» type=«xsd:string» use=«required» fixed=«CaoProv.DCD1»/>
<xsd:attribute name=«moduleId» type=«xsd:unsignedShort» use=«required» fixed=«0»/>
<!-- This Virtual Device Type exemplary only contains one Function Object
type without restricting the number of instances. -->
<xsd:element name=«Provider» type=«ProviderType»/>
<xsd:complexType name=«ProviderType»>
<xsd: extension base=«ProviderBaseType»>
<xsd: element ref=«CaoProvController» maxOccurs=«unbounded»/>
<xsd:element ref=«CaoProvRobot» minOccurs=«0» maxOccurs=«unbounded»/>
<!-- Function Object Types have fixed numbers for identification in funcID.
This is a restriction of type ORiN_Object. If You want to avoid
restriction, move attribute funcId from type ORiN_Object with a fixed
number to type ControllerBaseType below, which than is an extension of
ORiN_Object and type ControllerBaseType will be obsolete. -->
<xsd:complexType name=«ControllerBaseType»>
<xsd: restriction base=«ORiN_Object»>
<xsd: attribute name=«funcId» type=«xsd:unsignedShort» use=«required» fixed=«101»/>
<xsd:complexType name=«RobotBaseType»>
<xsd: restriction base=«ORiN_Object»>
<xsd: attribute name=«funcId» type=«xsd:unsignedShort» use=«required» fixed=«104»/>
<xsd:element name=«CaoProvController» type=«ControllerType»/>
<xsd:complexType name=«ControllerType»>
<xsd:extension base=«ControllerBaseType»>
<xsd:element name=«Connect» type=«CtrlConnectType»/>
<xsd:element name=«Disconnect» type=«CtrlDisconnectType»/>
<xsd:element name=«GetRobot» type=«CtrlGetRobotType»/>
<xsd:element name=«CaoProvRobot» type=«RobotType»/>
<xsd:complexType name=«RobotType»>
<xsd: extension base=«RobotBaseType»>
<xsd:element name=«Move» type=«RobotMoveType» minOccurs=«0»/>
<xsd:complexType name=«CtrlConnectBaseType»>
<xsd: restriction base=«Method»>
<xsd: attribute name=«operationId» type=«xsd:unsignedShort» use=«required» fixed=«3»/>
<xsd:complexType name=«CtrlConnectType»>
<xsd: extension base=«CtrlConnectBaseType»>
<xsd:element name=«Parameter» type=«MethodInGetObjectType»/>
<xsd:element name=«Result» type=«MethodOutVoidType»/>
<xsd:complexType name=«CtrlDisconnectBaseType»>
<xsd: restriction base=«Method»>
<xsd:attribute name=«operationId» type=«xsd:unsignedShort» use=«required» fixed=«4»/>
<xsd:complexType name=«CtrlDisconnectType»>
<xsd:extension base=«CtrlDisconnectBaseType»>
<xsd:element name=«Parameter» type=«MethodInVoidType»/>
<xsd:element name=«Result» type=«MethodOutVoidType»/>
<xsd:complexType name=«CtrlGetRobotBaseType»>
<xsd: restriction base=«Method»>
<xsd:attribute name=«operationId» type=«xsd:unsignedShort» use=«required» fixed=«7»/>
<xsd:complexType name=«CtrlGetRobotType»>
<xsd: extension base=«CtrlGetRobotBaseType»>
<xsd:element name=«Parameter» type=«MethodInGetObjectType»/>
<xsd:element name=«Result» type=«MethodOUTGetObject»/>
<xsd:complexType name=«RobotMoveBaseType»>
<xsd: restriction base=«Method»>
<xsd:attribute name=«operationId» type=«xsd:unsignedShort» use=«required» fixed=«72»/>
<xsd:complexType name=«RobotMoveType»>
<xsd:extension base=«RobotMoveBaseType»>
<xsd:element name=«Parameter» type=«MethodInRobotMove»/>
<xsd:element name=«Result» type=«MethodOutVoidType»/>
<xsd:complexType name=«MethodInVoidType»>
<xsd: extension base=«MethodInParameter»>
<xsd:element name=«Value» type=«void»/>
<xsd:complexType name=«MethodInGetObjectType»>
<xsd: extension base=«MethodInParameter»>
<xsd:element name=«Name» type=«xsd:string»/>
<xsd:element name=«Option» type=«xsd:string»/>
<xsd:complexType name=«MethodInRobotMove»>
<xsd: extension base=«MethodInParameter»>
<xsd:element name=«Interpolation» type=«xsd:integer»/>
<xsd:element name=«Pose» type=«xsd:anyType»/>
<xsd:element name=«Option» type=«xsd:string»/>
<!-- The output parameters for this operation is a special type «void»,
which defines, that the accordingly XML element has to be empty. -->
<xsd:complexType name=«MethodOutVoidType»>
<xsd: extension base=«MethodOutParameter»>
<xsd:element name=«Value» type=«void»/>
<xsd:complexType name=«MethodOUTGetObject»>
<xsd: extension base=«MethodOutParameter»>
<xsd:element name=«Value» type=«xsd:unsignedInt»/>
<xsd:complexType name=«void»/>
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»
xmlns=«http://www.ORiN.co.jp/ISO20242-4/DCD2»
targetNamespace=«http://www.ORiN.co.jp/ISO20242-4/DCD2» elementFormDefault=«qualified»>
<xsd:appinfo source=«http://www.ORiN.jp/ISO20242-4/DCPTHeader.xsd»>
<xsd: include schemaLocation=«ORiNcommon.xsd»/>
<!-- Main type is ORiN_DCD with contained Virtual Device Types.
There may be many different Virtual Device Types contained. -->
<xsd:element name=«DCD2» type=«DCDType»/>
<xsd:complexType name=«DCDType»>
<xsd:extension base=«ORiN_DCD»>
<xsd:element ref=«Provider» minOccurs=«0» maxOccurs=«unbounded»/>
<!-- Virtual Device Types have fixed numbers for identification in moduleID.
This is a restriction of type ORiN_Module. If You want to avoid
restriction, move attribute moduleId from type ORiN_Module with a fixed
number to type ProviderType below, which than is an extension of ORiN_Module
and type ProviderBase Type will be obsolete. -->
<xsd:complexType name=«ProviderBaseType»>
<xsd: restriction base=«ORiN_Module»>
<xsd:attribute name=«moduleId» type=«xsd:unsignedShort» use=«required» fixed=«0»/>
<xsd:attribute name=«provider» type=«xsd:string» use=«required» fixed=«CaoProv.DCD2»/>
<!-- Virtual Device Types typically contain a Create Parameter of a specific
type and several Function Objects of different types.
This exemplary Function Object type describes an input channel and it is
possible to use up to 16 channels with each Virtual Device instance. -->
<xsd:element name=«Provider» type=«ProviderType»/>
<xsd:complexType name=«ProviderType»>
<xsd: extension base=«ProviderBaseType»>
<xsd: element ref=«CaoProvController» maxOccurs=«unbounded»/>
<xsd:element ref=«CaoProvVariable» minOccurs=«0» maxOccurs=«unbounded»/>
<!-- Function Object Types have fixed numbers for identification in moduleID.
This is a restriction of type ORiN_Object. If You want to avoid
restriction, move attribute funcId from type ORiN_Object with a fixed
number to type ControllerType below, which than is an extension of
ORiN_Object and type ControllerBase Type will be obsolete. -->
<xsd:complexType name=«ControllerBaseType»>
<xsd: restriction base=«ORiN_Object»>
<xsd: attribute name=«funcId» type=«xsd:unsignedShort» use=«required» fixed=«101»/>
<xsd:complexType name=«VariableBaseType»>
<xsd: restriction base=«ORiN_Object»>
<xsd: attribute name=«funcId» type=«xsd:unsignedShort» use=«required» fixed=«106»/>
<xsd:element name=«CaoProvController» type=«ControllerType»/>
<xsd:complexType name=«ControllerType»>
<xsd:extension base=«ControllerBaseType»>
<xsd:element name=«Connect» type=«CtrlConnectType» minOccurs=«0»/>
<xsd:element name=«Disconnect» type=«CtrlDisconnectType» minOccurs=«0»/>
<xsd:element name=«GetVariable» type=«CtrlGetVariableType» minOccurs=«0»/>
<xsd:element name=«CaoProvVariable» type=«VariableType»/>
<xsd:complexType name=«VariableType»>
<xsd: extension base=«VariableBaseType»>
<xsd:element name=«Attribute» type=«PropertyROIntType» minOccurs=«0»/>
<xsd:element name=«Value» type=«PropertyRWVariantType» minOccurs=«0»/>
<xsd:complexType name=«CtrlConnectType»>
<xsd: extension base=«CtrlConnectBaseType»>
<xsd:element name=«Parameter» type=«MethodInGetObjectType»/>
<xsd:element name=«Result» type=«MethodOutVoidType»/>
<xsd:complexType name=«CtrlConnectBaseType»>
<xsd: restriction base=«Method»>
<xsd: attribute name=«operationId» type=«xsd:unsignedShort» use=«required» fixed=«3»/>
<xsd:complexType name=«CtrlDisconnectType»>
<xsd:extension base=«CtrlDisconnectBaseType»>
<xsd:element name=«Parameter» type=«MethodInVoidType»/>
<xsd:element name=«Result» type=«MethodOutVoidType»/>
<xsd:complexType name=«CtrlDisconnectBaseType»>
<xsd: restriction base=«Method»>
<xsd:attribute name=«operationId» type=«xsd:unsignedShort» use=«required» fixed=«4»/>
<xsd:complexType name=«CtrlGetVariableType»>
<xsd: extension base=«CtrlGetVariableBaseType»>
<xsd:element name=«ParaiTieter» type=«MethodInGetObjectType»/>
<xsd:element name=«Result» type=«MethodOUTGetObject»/>
<xsd:complexType name=«CtrlGetVariableBaseType»>
<xsd: restriction base=«Method»>
<xsd:attribute name=«operationId» type=«xsd:unsignedShort»
<xsd:complexType name=«MethodInVoidType»>
<xsd: extension base=«MethodInParameter»>
<xsd:element name=«Value» type=«void»/>
<xsd:complexType name=«MethodInGetObjectType»>
<xsd: extension base=«MethodInParameter»>
<xsd:element name=«Name» type=«xsd:string»/>
<xsd:element name=«Option» type=«xsd:string»/>
<!-- The output parameters for this operation is a special type «void»,
which defines, that the accordingly XML element has to be empty. -->
<xsd:complexType name=«MethodOutVoidType»>
<xsd:extension base=«MethodOutParameter»>
<xsd:element name=«Value» type=«void»/>
<xsd:complexType name=«MethodOUTGetObject»>
<xsd: extension base=«MethodOutParameter»>
<xsd:element name=«Value» type=«xsd:unsignedInt»/>
<xsd:complexType name=«PropertyROIntType»>
<xsd:extension base=«PropertyReadOnly»>
<xsd:element name=«Value» type=«xsd:int»/>
<xsd:complexType name=«PropertyRWVariantType»>
<xsd: extension base=«PropertyReadWrite»>
<xsd:element name=«Value» type=«xsd:anyType»/>
<xsd:complexType name=«void»/>
C.8 Пример описания возможностей согласующего устройства
XML-схема CCD.xsd является примером описания возможностей согласующего устройства, которая описывает XML-схему параметризации двух драйверов устройств.
<xsd: schema xmlns:xsd=«http://www. w3.org/2001/XMLSchema»
xmlns:dcd1=«http://www.ORiN.co.jp/ISO20242-4/DCD1»
xmlns:dcd2=«http://www.ORiN.co.jp/ISO20242-4/DCD2» elementFormDefault=«qualified»
attributeFormDefault=«unqualified»>
<xsd:appinfo source=«http://www.ORiN.jp/ISO20242-4/DCPTHeader.xsd»>
<!-- A coordinator capability description contains the capability
descriptions of all devices, which will be usable -->
<xsd: include schemaLocation=«ORiNcommon.xsd»/>
<xsd:import namespace=«http://www.ORiN.co.jp/ISO20242-4/DCD1» schemaLocation=«DCD1.xsd»/>
<xsd: import namespace=«http://www. ORiN.co.jp/ISO20242-4/DCD2» schemaLocation=«DCD2.xsd»/>
<xsd:element name=«ISO15745Profile»>
<xsd: element ref=«ProfileHeader»/>
<xsd: element ref=«ProfileBody»/>
<xsd: element name=«ProfileHeader»>
<xsd:element name=«ProfileIdentification» type=«xsd:string»/>
<xsd:element name=«ProfileRevision» type=«xsd:string»/>
<xsd:element name=«ProfileName» type=«xsd:string»/>
<xsd:element name=«ProfileSource» type=«xsd:string»/>
<xsd: element name=«ProfileClassID» type=«ProfileClassID_DataType» fixed=«InformationExchange»/>
<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»
minOccurs=«0» maxOccurs=«unbounded»/>
<xsd:complexType name=«ISO15745Reference_DataType»>
<xsd:element name=«ISO15745Part» type=«xsd:string» fixed=«1»/>
<xsd:element name=«ISO15745Edition» type=«xsd:string» fixed=«1»/>
<xsd: element name=«ProfileTechnology» type=«xsd:string» fixed=«None»/>
<xsd:simpleType name=«ProfileClassID_DataType»>
<xsd: restriction base=«xsd:string»>
<xsd:enumeration value=«AIP»/>
<xsd: enumeration value=«InformationExchange»/>
<xsd:enumeration value=«Device»/>
<xsd: enumeration value=«CommunicationNetwork»/>
<xsd:enumeration value=«Material»/>
<xsd:simpleType name=«IASInterface_DataType»>
<xsd: restriction base=«xsd:string»>
<xsd:enumeration value=«CSI»/>
<xsd:enumeration value=«HCI»/>
<xsd:enumeration value=«ISI»/>
<xsd:enumeration value=«API»/>
<xsd:enumeration value=«CMI»/>
<xsd:enumeration value=«ESI»/>
<xsd:enumeration value=«FSI»/>
<xsd:enumeration value=«MTI»/>
<xsd:enumeration value=«SEI»/>
<xsd:enumeration value=«USI»/>
<xsd: restriction base=«xsd:string»>
<xsd: element name=«ProfileBody»>
<xsd:element name=«CCD» maxOccurs=«unbounded»>
<xsd:element ref=«dcd1:DCD1» minOccurs=«0»/>
<xsd:element ref=«dcd2:DCD2» minOccurs=«0»/>
<xsd:attribute name=«category» type=«Category» use=«required» fixed=«CCD»/>
C.9 Пример параметрического описания экземпляра класса
SamplePID.xml является примером параметрического описания экземпляра класса в XML-формате, который использует файл CCD.xsd в качестве XML-схемы и описывает параметрические экземпляры координатора и драйверов устройств.
<ISO15745Profilexmlns:xsi=«http://www.w3.org/2001/XMLSchema-instance»
xsi:noNamespaceSchemaLocation=»../Schema/CCD.xsd«>»
http://www.ORiN.jp/ISO20242-4/XPID
<DCD1 category=«DCD» dllPath=«CaoProvNetwoRC.dll» ProviderVersion=«1»
xmlns=«http://www.ORiN.co.jp/ISO20242-4/DCD1»>
<DCD2 category=«DCD» dllPath=«CaoProv.DataStore» ProviderVersion=«1»
xmlns=«http://www.ORiN.co.jp/ISO20242-4/DCD2»>
СВЕДЕНИЯ О СООТВЕТСТВИИ ССЫЛОЧНЫХ МЕЖДУНАРОДНЫХ
| Обозначение ссылочного международного стандарта | Степень соответствия | Обозначение и наименование соответствующего национального стандарта |
| ISO 15745-1 | IDT | ГОСТ Р ИСО 15745-1-2014 «Системы промышленной автоматизации и интеграция. Прикладная интеграционная среда открытых систем. Часть 1. Общее эталонное описание» |
| ISO 20242-1:2005 | IDT | ГОСТ Р ИСО 20242-1-2010 «Системы промышленной автоматизации и интеграция. Служебный интерфейс для испытательных прикладных программ. Часть 1. Общие положения» |
| ISO 20242-3 | IDT | ГОСТ Р ИСО 20242-3-2012 «Системы промышленной автоматизации и интеграция. Служебный интерфейс для испытательных прикладных программ. Часть 3. Служебный интерфейс виртуального устройства» |
| Примечание — В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов: - IDT — идентичные стандарты. | ||
БИБЛИОГРАФИЯ
| УДК 658.52.011.56:006.354 | ОКС 25.040.40 |
| Ключевые слова: автоматизированные промышленные системы, интеграция, жизненный цикл систем, управление производством | |










