Элемент, расположенный в позиции номер 1 таблицы 4.1, "Имя модуля" соответствует имени, представляющем модуль. Далее вместо выражения "элемент, расположенный в позиции номер N таблицы 4.1" используется сокращенное выражение "элемент N".
Элемент 2 "Описание" соответствует общему описанию модуля, т.е. что он собой представляет, что он делает и как он используется.
Элемент 3 "Изготовитель" соответствует контактной информации проектировщика, разработчика или изготовителя модуля.
Элемент 4 "Примеры" соответствует типичным вариантам применения модуля.
Элемент 5 "Версия информационной модели" соответствует номеру версии информационной модели, которую определяет настоящий стандарт.
Элемент 6 "Идентификатор модуля" должен соответствовать уникальному идентификатору модуля в системе, как описано в приложении B. Идентификатор модуля содержит информацию о типе модуля (аппаратно-программный, аппаратный или программный) и является ли он базовым или составным модулем.
Элементы 7 "Аппаратные свойства" и 8 "Программные свойства" относятся только к составным модулям. Если модуль состоит из двух или более аппаратно-программных модулей, программных модулей и/или аппаратных модулей, то идентификаторы модулей указаны в элементе "Аппаратные свойства", если они являются аппаратными или аппаратно-программными модулями, иначе (если они являются программными модулями) идентификаторы модулей указаны в элементе "Программные свойства".
Элемент 9 "Характеристики модуля" соответствует значениям, обычно используемым при инициализации модулей. Характеристики модулей разделяют на обязательные и факультативные, и это должно быть отмечено. Взаимосвязь между модулями представлена данным элементом, подробное содержание которого будет определено в последующих стандартах, таких как ИСО 22166-202.
Примечание 3 - Информация о взаимосвязи между модулями может быть предоставлена по-разному в зависимости от типа модуля.
Примечание 4 - Ограничения внешней среды также считаются характеристиками, примерами которых являются рабочая температура, рабочая влажность и максимально допустимый механический удар. Параметры, связанные с поведением модуля, могут быть указаны в характеристиках. Например, каждый коэффициент, используемый в алгоритме ПИД (пропорциональный, интегральный, дифференциальный) регулятора, используется один раз при инициализации и изменяется и используется несколько раз в процессе выполнения соответствующих программных модулей.
Элементы 10 и 11 "Входы" и "Выходы" соответствуют именам переменных при передаче данных в модуль и/или из модуля.
Пример 1 - Входами и выходами программного модуля управления сервоприводами являются показания датчика положения и значения управляющих воздействий на двигатель соответственно.
Примечание 5 - Характеристики являются разновидностями входных значений с точки зрения модулей, но их отличие состоит в том, что входные значения относятся к внешней среде модуля, а характеристики связаны с параметрами самого модуля. Например, входами программного модуля управления сервоприводами являются показания датчика положения, а характеристиками являются коэффициенты P, I и D, соответствующие пропорциональной, интегральной и дифференциальной составляющим.
Элемент 12 "Состояние" соответствует состоянию модуля в процессе работы.
Примечание 6 - Состояние не используют на этапах проектирования и разработки.
Элемент 13 "Сервисы (возможности)" соответствует интерфейсам, которые модуль предоставляет и использует для сервисов робота.
Примечание 7 - Сервис означает выполнение одной или нескольких функций модуля для других модулей с помощью заранее определенного интерфейса.
Пример 2 - Примеры формата функции для программных свойств приведены в таблице 4.2. Типы данных, такие как int16 и uint8, для данного примера определены в приложении C, таблица C.5.
Таблица 4.2
Пример 3 - Пример формата функции для электрических/электронных свойств приведен в таблице 4.3, в которой аргументы "connType", "keying" и "busProtocol" означают тип соединителя, исполнение соединителя и тип протокола, который использует модуль. Данная функция используется для проверки того, что равноправный модуль использует надлежащие электрические свойства модуля. Значениями типа соединителя могут быть USB-A, RJ45, DB-9 и т.д. Значениями исполнения являются "штекер" или "гнездо". Значениями аргумента "busProtocol" могут быть USB, Ethernet, EtherCAT, RS232 и т.д.
Таблица 4.3
электрической/электронной применимости
Пример 4 - Пример формата функции для механических свойств приведен в таблице 4.4. Как и для электрических/электронных свойств, данная функция используется для проверки того, что равноправный модуль использует надлежащие механические свойства модуля. Однако в отличие от предыдущего примера формат функции для механических свойств может быть более сложным из-за большого разнообразия их использования на практике. Поэтому в данном примере использованы только две упрощенные категории - шарнир и звено.
Таблица 4.4
применимости
Элемент 14 "Инфраструктура" соответствует перечню аппаратного и/или программного обеспечения, которое модули обычно используют или с которыми соединяются.
Пример 5 - Примерами инфраструктуры являются тип энергоснабжения, тип межплатформенного программного обеспечения, тип шины данных и тип базы данных.
Элемент 15 "Безопасность/защищенность" соответствует связанному с безопасностью уровню эффективности защиты и информации о защищенности, обеспечиваемой модулем. В элементе "Безопасность/защищенность" обычного сервисного робота используется связанный с безопасностью уровень эффективности защиты, определенный в ИСО 13849-1, и указывается уровень, связанный с защищенностью, значение которого находится в диапазоне от 0 до 4. Уровень защищенности 0 означает, что в модуле вообще не предусмотрены меры по обеспечению защищенности. Уровни защищенности от 1 до 4 определены в МЭК 62443-4-2:2019. Однако для специфических типов роботов, таких как медицинские роботы и роботы для оказания физической помощи, следует использовать другие стандарты, связанные с безопасностью и защищенностью. Уровень эффективности защиты обычно определяют для каждой отдельной функции безопасности. Если у модуля есть несколько функций безопасности, то такой модуль должен обеспечить уровень эффективности защиты, используя комбинацию уровней эффективности защиты всех функций безопасности модуля, либо с помощью верификации и валидации общей связанной с безопасностью функции модуля. Более подробные сведения приведены в 4.3.8.
Элемент 16 "Моделирование" соответствует разным типам моделей, предназначенных для имитационного моделирования и разработки.
Элемент 17 "Исполняемая форма" соответствует программным кодам, исполнение которых обеспечивает достижение или поддержку назначения модуля.
Классы, представленные в настоящем стандарте, могут быть описаны с помощью табличного формата, приведенного в приложении E.
Общую информационную модель модулей необходимо использовать в информационных моделях всех типов модулей, к которым относятся аппаратно-программные модули, программные модули и аппаратные модули. Взаимосвязи между информационными моделями модулей представлены на рисунке 4.1. Аппаратно-программные модули обладают как аппаратными, так и программными свойствами. Пример взаимосвязей между информационными моделями аппаратных модулей, программных модулей и аппаратно-программных модулей представлен на рисунке 4.2.
![]() моделями модулей
![]() моделями модулей
Общая информационная модель должна быть сформирована из 9 внутренних классов, представленных на рисунке 4.3, где 8 классов взяты из таблицы 4.1, а дополнительный класс Status представляет информацию о состоянии модуля. Данный класс в основном используется во время работы модуля. Четыре элемента группы GenInfo из таблицы 4.1, которыми являются Имя модуля, Описание, Изготовитель и Примеры, становятся атрибутами класса Common Information Model (CIM).
![]() Класс CIM (Общая информационная модель) должен иметь атрибуты, представленные на рисунке 4.4 и в таблице 4.5, которые основаны на ИСО 22166-1:2021, разделы 4 - 7. Значения атрибутов ModuleName, Description, Manufacture и Examples определены в приложении A. Классы IDnType, Properties, IOVariables, Status, Services, Infrastructure, SafeSecure, Modelling и ExecutableForm определены в 4.3.2 - 4.3.10.
Примечание 1 - Атрибуты могут быть объявлены принадлежащими к одному из следующих типов: конфиденциальный (-), защищенный (*) или публичный (+). Сначала указывают имя атрибута, а затем определяют его тип данных. Символом, разделяющим имя атрибута и его тип данных, является двоеточие (:). Если атрибуты объявлены публичными, то нет необходимости определять функции доступа к ним.
Примечание 2 - Четыре элемента: имя модуля, описание, изготовитель и примеры - являются атрибутами класса CIM.
Таблица 4.5
Информация об идентификаторе модуля должна быть определена в классе IDnType, который должен иметь атрибуты, представленные на рисунке 4.5 и в таблице 4.6. Значения атрибута moduleID и других атрибутов из таблицы 4.6 определены в приложениях B и C. Если в составном модуле присутствуют модули одного и того же типа, то такие модули должны быть идентифицированы индивидуально. Это обеспечивает элемент Instance ID (или IID). Для программных модулей IID присваивается динамически менеджером модулей. Для модулей с аппаратными свойствами IID присваивается статически изготовителем модулей. Если IID используется, то он должен быть уникальным. Версия информационной модели является номером версии информационной модели, использованной при определении модуля. Версия информационной модели изменяется при изменении атрибутов классов, представленных в настоящем стандарте.
Примечание 1 - Под модулем с аппаратными свойствами понимается аппаратный модуль или модуль с аппаратными и программными свойствами.
Таблица 4.6
Атрибуты hwAspects и swAspects представляют списки идентификаторов модулей с аппаратными свойствами и с программными свойствами соответственно.
При создании экземпляра данного класса должен быть задан атрибут instanceID с использованием атрибута moduleID. Если какой-либо модуль добавляется к составному модулю, то данный составной модуль должен проверить, не произойдет ли дублирование атрибута moduleID в данном составном модуле. Если дублирование имеет место (т.е. такой же модуль уже существует в составном модуле), то менеджер модулей или изготовитель составного модуля должен присвоить данному модулю новый атрибут instanceID.
Примечание 2 - Элемент Module ID задает изготовитель модуля.
Примечание 3 - Атрибут moduleID, включая IID, используется для доступа к модулю. Значением IID по умолчанию является "0".
Примечание 4 - Значение атрибута informationModelVersion равно "1.0", если используется информационная модель, определенная в настоящем стандарте.
Информация о характеристиках модуля должна быть определена в классе Properties, который должен представлять характеристики модуля в соответствии с рисунком 4.6 и таблицами 4.7 - 4.9, содержащими информацию, необходимую для исполнения модуля, и информацию об операционной среде или состоянии модуля. На рисунке 4.6 приведена диаграмма классов для класса Properties и представлена взаимосвязь между классами, представленными в таблицах 4.7 - 4.9. Конкретные значения атрибутов, таких как имя и тип данных, должны быть определены с использованием значений, указанных для элемента Property в приложении C.
![]() Таблица 4.7
Таблица 4.8
Таблица 4.9
Приведенные далее примеры на языке XML должны быть преобразованы, как представлено на рисунке 4.6:
<!-example for hardware-software module -->
<Property name="maxRatedCurrent" value=15 type="float32" unit="ampere" description =
"maximum of rated current for motor" />
<Property name="angleResolution" value=1 type="float32" unit="degree" description =
"Angle Resolution of Lidar Sensor" />
<Property name="minOpRange" value=0.05 type="float32" unit="meter" description =
"minimum operation range of Lidar Sensor" />
<Property name="maxOpRange" value=10 type="float32" unit="meter" description =
"maximum operation range of Lidar Sensor" />
<Property name="commModule" value="Ethernet microUSB" type="array of string"
unit="null" description = "communication protocol type of Lidar Sensor" />
<!-example for software module -->
<Property name="Weight" value=150 type="float32" unit="gram" description =
"weight of Lidar Sensor" /> <-- example for hardware-software module -->
<Property name="maxRadius" value=2 type="float32" unit="meter" description =
"maximum radius for Obstacle Avoidance" />
<Property name="minRadius" value=0.5 type="float32" unit="meter" description =
"minimum radius for Obstacle Avoidance" />
<!-- example for hardware module -->
<Property name="origin" type="array of float32" unit="cm", "radian" description =
"pose of the inertial reference frame, relative to the link reference frame including
xyz and rpy" value=[0 0 0 0 0 0]/>
<Property name="mass" type="float32" unit="gram" description = "mass of a link" value =15 />
< Property name="inertia" type="array of float32"
description ="inertial properties of the link, 3x3 matrix" value =[1 0 0; 0 1 0; 0 0 1] />
<Property name="shape" type="string" unit="" description = "shape of the visual
object" value =cylinder />
<Property name="size" type="3x1 array of float32" unit="cm" description = "three
side lengths of the box" value =[100; 200; 100] />
Информация о входных и выходных переменных модуля должна быть определена в классе IOVariables, представленном на рисунке 4.7 и в таблицах 4.10 - 4.15. Класс IOVariables должен определять используемые в модуле переменные, которые содержат информацию, необходимую для выполнения модуля. Эти переменные должны быть определены с помощью класса Variable, представленного в таблице 4.12. Класс Variable наследует от класса VariableProfile, представленного в таблице 4.11, который в свою очередь наследует от класса DataProfile, представленного в таблице 4.7. Для хранения дополнительной информации в качестве контейнера может быть использован класс NVList, представленный в таблице 4.14. NVList содержит объекты класса NameValue, определенного в таблице 4.15. Значения IN, OUT и INOUT определены в таблице 4.10 как перечислимые типы данных. Конкретные значения атрибутов, таких как имя и тип данных, должны быть определены с использованием значений, указанных для элемента IOVariables в приложении C. На рисунке 4.7 представлена взаимосвязь между классами для класса IOVariables.
![]() IOVariables
Таблица 4.10
Таблица 4.11
Таблица 4.12
Таблица 4.13
Класс IOVariables
Таблица 4.14
Таблица 4.15
Приведенные далее примеры на языке XML должны быть преобразованы, как представлено на рисунке 4.7:
<IOVariables>
<Input name="controlValue" type="float32" unit="ampere" description="current
control to motor" /> <!-- IOType=IN -->
<Output name="encoder" value= 0 type ="uint32" unit = "none" description = "absolute
encoder's value" /> <!-- IOType=OUT -->
<Inout name="state" type="uint8" value= 0 unit = "none" description = "status
of motor"/> <!-- IOType=INOUT -->
</IOVariables>
Из этих примеров генерируются следующие переменные и типы данных:
+ controlValue : float32 // or public float32 controlValue; current control command
to motor, input
+ encoder=0 : uint32 // or public uint32 encoder=0; value of absolute encoder, output
+ state=0 : uint8 // or public uint8 state=0; reset or read status of motor, input
and output
Информация о состоянии и работоспособности модуля должна быть определена в классе Status, представленном на рисунке 4.8 и в таблице 4.17. Класс Status представляет текущее состояние модуля, которое определяет состояние работоспособности модуля, если существует информационная модель аппаратного обеспечения, состояние жизненного цикла выполнения модуля, если существует информационная модель программного обеспечения, а также тип ошибки, которая может возникнуть в процессе работы модуля.
Следует использовать номера, присвоенные ошибкам в IEEE/Open Group 1003.1-2017. Для каждого программного модуля могут быть определены дополнительные номера ошибок, но которые не должны конфликтовать с номерами ошибок в POSIX.1003.1.
Примечание 1 - Примерами значений атрибута HealthCond являются: GH (полная работоспособность), H1 (состояние 1), H2 (состояние 2), Fa (неисправность).
Примечание 2 - Примерами ошибок, указываемых в атрибуте ErrorType, являются: "Operation not permitted (Работа не разрешена)", "Authentication Error (Ошибка авторизации)", "Bad Parameter (Неправильный параметр)", "Unsupported Service (Неподдерживаемый сервис)", "out of Range (Вне диапазона) и "Precondition not met (Заданные условия не соблюдены)". Значения атрибута ErrorType будут точно определены в ИСО 22166-202 и других стандартах.
Примечание 3 - Значение атрибута ExeStatus определено в ИСО 22166-1 и должно быть одним из следующих: CREATED (Создан), IDLE (Ожидает), EXECUTING (Выполняется), DESTRUCTED (Удален) и ERROR (Ошибка). Эти значения определены в таблице 4.16 как перечислимые типы данных.
Таблица 4.16
Таблица 4.17
Информация о сервисах модуля должна быть определена в классе Services, который представляет методы (или функции), реализуемые данным модулем, как показано на рисунке 4.9 и в таблице 4.18. Атрибуты и методы, представленные в таблице 4.18, должны быть получены с помощью CIMServicePackage, представленного ниже на языке IDL, либо определены из классов, определенных в таблицах 4.19 - 4.24. На рисунке 4.9 представлена взаимосвязь между классами для класса Services, которые представлены в таблицах 4.18 - 4.24.
Примечание - В данном пункте сервисы определены с использованием ИСО/МЭК 19516:2020.
![]() Таблица 4.18
Таблица 4.19
Таблица 4.20
Таблица 4.21
Таблица 4.22
Таблица 4.23
Таблица 4.24
CIMServicePackage written in IDL:
Module CIMServicePackage {
interface CIMService;// abstract declaration
struct NameValue
{
string name;
any value; // "any" means any data type
};
// Mandatory/Optional enum type
enum MOType
{
MANDATORY,
OPTIONAL
};
struct ArgSpec {
string type; // argument type
string valueName; // argument name
InOut inout; // enumeration {IN, OUT, INOUT}
NVList additionalInfo; // additional information
} ;
typedef sequence<ArgSpec> ArgSpecList; //sequence means a list or vector of
// given data
struct ServiceMethod
{
string methodName;
ArgSpecList argType;
string retType;
MOType moType; // enumeration {"MANDATORY", "OPTIONAL"}
ReqProvType reqProvType; // Provided or required method.
NVList additionalInfo; // additional information
};
typedef sequence<NameValue> NVList;
typedef sequence<ServiceMethod> MethodList;
enumeration PhysicalVirtual
{
PHYSICAL,
VIRTUAL
};
// ServiceProfile
struct ServiceProfile
{
string id;
PhysicalVirtual pvType; // Enumeration PHYSICAL, VIRTUAL
MethodList methodList; // mandatory/optional method defined in CIMService
MOType moType; // MOType: {MANDATORY, OPTIONAL}.
NVList additionalInfo; // additional information
};
interface CIMService
{
// define here for prototypes of methods for CIM Service
// format: <type_spec | void> <method_identifier> ( <parameter decls> )
// <parameter decls> ::= <para_dcl>
// <param_dcl> ::= <"in"|"out"|"inout"> <type_spec> <parameter_name>
// example:
// uint8 initialize(in int16 val1, in float64 val2);
// boolean checkElecConnectivity(string connType, string keying,
// string busProtocol)
// boolean linkConnectivity(array origin, float mass, array inertia,
// string shape, array size,array axis,string connection,array collision)
};
};
Информация об инфраструктуре модуля должна быть определена в классе Infrastructure, который представляет типы инфраструктур, поддерживаемых данным модулем, как показано на рисунке 4.10 и в таблице 4.27. В данном пункте определены следующие инфраструктурные модули: Electric Power, Data Bus, Database и Ingress Protection.
Примечание 1 - Если дополнительный инфраструктурный модуль существует, то он может быть определен в связанной с ним информационной модели.
Классы DataBus и Power, использованные в классе Infrastructure, представлены в таблицах 4.25 и 4.26 соответственно.
Примечание 2 - Значения аргументов typePhyMac и typeApp в таблице 4.25 и аргумента dbType в таблице 4.27 определены в ИСО 22166-202.
![]() для класса Infrastructure
Таблица 4.25
Таблица 4.26
Таблица 4.27
Класс SafeSecure должен представлять уровень безопасности и уровень защищенности, предоставляемые модулем, как показано на рисунке 4.11 и в таблице 4.38. На рисунке 4.11 приведена взаимосвязь между классами для класса SafeSecure, представленными в таблицах 4.28 - 4.38.
Меры по обеспечению конкретной функции безопасности должны быть определены с помощью типа данной функции безопасности, а также уровня эффективности защиты (отсутствие или a - e) или уровня полноты безопасности (0, 1 - 3) для данного типа функции безопасности. У модуля могут отсутствовать функции безопасности или их может быть даже несколько. Функция безопасности должна быть определена с помощью класса SafetyFunction, представленного в таблице 4.34. Разные типы функций безопасности представлены в таблице 4.28. Уровень безопасности, обеспечиваемый функциями безопасности, должен быть определен с помощью УЭЗ или УПБ. Уровень защищенности должен быть определен для функций защищенности.
Меры по обеспечению конкретной киберзащищенности должны быть определены с помощью установления типа защищенности и уровня защищенности (0 - 4) для данного типа. Разные типы мер по обеспечению защищенности представлены в таблице 4.29. У модуля могут отсутствовать меры по обеспечению защищенности или их может быть даже несколько. Мера по конкретной киберзащищенности должна быть определена с помощью класса CyberSecurity, представленного в таблице 4.37. Если модуль реализует две или более меры по обеспечению защищенности, то такой модуль должен иметь общий уровень защищенности модуля, определяемый комбинацией уровней защищенности предоставляемых мер обеспечения защищенности либо посредством верификации и валидации всех мер обеспечения защищенности модуля.
Уровень безопасности модуля предоставляется только в качестве информации при оценке безопасности системы. Даже если уровень безопасности для функции безопасности модуля задан, составной модуль должен быть независимо оценен в отношении своей функции безопасности в соответствии с методами оценивания безопасности на системном уровне.
Примечание 1 - Определение уровня безопасности для функции безопасности основано на ИСО 13482:2014, а определение уровня защищенности для функции защищенности основано на МЭК 62443-4-2:2019.
Примечание 2 - Предоставляемые изготовителем значения атрибутов в таблицах 4.34 и 4.37 являются неизменяемыми.
Примечание 3 - Уровень эффективности защиты при отсутствии функции безопасности обозначается как "none" или "n".
Примечание 4 - Функции, связанные с безопасностью, и/или функции, связанные с защищенностью, представлены в классе Services, который может быть использован для управления безопасностью/защищенностью.
![]() для класса SafeSecure
Таблица 4.28
Примечание 5 - Функции безопасности, не представленные в таблице 4.28, могут быть добавлены при необходимости.
Таблица 4.29
Таблица 4.30
Таблица 4.31
Таблица 4.32
Таблица 4.33
Таблица 4.34
Таблица 4.35
Таблица 4.36
Таблица 4.37
Таблица 4.38
Класс Modelling должен представлять поддерживаемую модулем информацию, относящуюся к моделированию, как показано на рисунке 4.12 и в таблицах 4.39 и 4.40. На рисунке 4.12 представлена взаимосвязь между классами для класса Modelling.
Информация по моделированию должна содержать информацию, предоставляемую модулем для моделирования, состоящую из информации для геометрического моделирования и информации для динамического или поведенческого моделирования с физическими и/или логическими характеристиками. Примерами первой являются трехмерные модели и файлы в универсальном формате описания роботов (URDF). Примерами второй являются запускающие и/или управляющие программы для модуля. Данная информация должна быть представлена в соответствии с приложением C. Изготовители модулей могут предоставить несколько файлов для моделирования. При отсутствии URDF-файлов или файлов с трехмерными моделями соответствующий элемент должен быть помечен как "N/A" (не применимо).
![]() Modelling
Таблица 4.39
Таблица 4.40
Класс ExecutableForm должен представлять информацию, связанную с программой, исполняемой для достижения или поддержки назначения модуля, как показано на рисунке 4.13 и в таблице 4.41. На рисунке 4.13 представлена взаимосвязь между классами для класса ExecutableForm, который представлен в таблицах 4.41 и 4.42. Класс ExecutableForm представляет пути к файлам, которые необходимы при исполнении модуля или когда другие модули исполняют программу из данного модуля. Все эти файлы подразделяются на два типа: файлы, которые должны быть исполнены непосредственно, представлены классом ExeForm в таблице 4.42 и библиотечные файлы, которые загружаются в оперативную память. Путь к файлам должен быть определен в формате URL, который представляется только профилем. Это означает, что пользователь может модифицировать URL, изменяя содержимое профиля.
![]() ExecutableForm
Таблица 4.41
Таблица 4.42
Класс ExeForm представляет информацию, необходимую при выполнении исполняемой формы модуля, которая включает URL для исполняемой формы, программную оболочку и свойства. Программная оболочка содержит информацию, используемую в качестве входных аргументов при выполнении связанной с ней исполняемой формы. Свойства содержат информацию, необходимую при выполнении исполняемой формы, к которой они относятся.
(обязательное)
A.1 Общие положения
Правила присвоения имен выведены на основе руководств и принципов, описанных в ИСО 11179-5:2015. Данные правила были приспособлены для конкретного применения в информационной модели. Они разработаны для обеспечения единообразного и адекватного именования как базовых, так и агрегированных информационных объектов.
Базовый информационный объект используется для представления информации и построения информационных моделей, а его примерами являются класс объекта, атрибут класса объекта, элемент тега и элемент свойства. Он определен как Name (Имя элемента), являющееся именем объекта, полученным с помощью правил присвоения имен.
Агрегированный информационный объект определен как имя, состоящее из имен базовых информационных объектов.
A.2 Правила присвоения имен
Правило 1: Имя элемента должно быть уникальным в логической группировке данных, к которой принадлежит данный элемент.
Правило 2: Имя класса допускается начинать с прописной буквы. Имя члена класса рекомендуется начинать со строчной буквы.
Правило 3: Имя класса не должно содержать последовательных дублирующих слов.
Правило 4: Рекомендуется, чтобы имя элемента содержало менее 10 символов при максимальной длине менее 256 символов. При необходимости сокращение имени элемента может быть определено и использовано.
Правило 5: Имя элемента должно разделяться точкой (.).
Правило 6: В имени элемента могут быть использованы буквенно-цифровые символы, если они не определены особо.
Правило 7: Имя элемента должно быть представлено в единственном числе, если только его смысл не предполагает множественного числа (например, goods).
Правило 8: Имя элемента может состоять из двух или более слов (например, aggregate.information).
Некоторые примеры применения правил присвоения имен представлены на рисунке A.1.
на каждом уровне
(обязательное)
Идентификатор модуля должен состоять из 6 элементов, которые представлены на рисунке B.1, а их типы представлены в таблице B.1.
![]() Таблица B.1
Первым элементом является идентификатор изготовителя или VID, который имеет длину 16 байтов и должен быть назначен с помощью Универсально Уникального Идентификатора (UUID) в соответствии с IETF RFC 4122. Остальные 5 элементов должны быть заданы изготовителем.
Вторым элементом является идентификатор изделия или PID, который имеет длину 4 байта и должен содержать важную информацию о модуле (1 байт), и идентификатор изделия (3 байта). Первый байт должен отображать следующие 5 типов информации, представленные на рисунке B.1: является ли модуль базовым или составным, имеет ли модуль программные свойства, имеет ли модуль аппаратные свойства, выполняет ли модуль функцию, связанную с безопасностью, и выполняет ли модуль функцию, связанную с защищенностью. Значения каждого из этих полей представлены в таблице B.2. Последние 3 байта должны содержать фактический идентификатор изделия, состоящий из алфавитно-цифровых символов.
Третьим элементом должен быть номер версии (Rev) длиной 4 байта.
Четвертым элементом должен быть серийный номер (SerialNo) длиной 4 байта.
Пятым элементом должен быть идентификатор категории (CategoryID) модуля длиной 3 байта.
Шестым элементом должен быть идентификатор экземпляра (IID) длиной 1 байт, представленный числовыми символами в диапазоне от 0 до 255. Значением по умолчанию идентификатора экземпляра является 0. Если модуль имеет два или более модулей одного типа, то эти модули должны иметь разные идентификаторы экземпляра.
Все данные в идентификаторе модуля представляют в шестнадцатеричном и/или алфавитно-цифровом коде.
Таблица B.2
Значения всех полей элемента Тип на рисунке B.1
Идентификатор категории должен состоять из 5 элементов, представленных на рисунке B.2. Нулевой уровень, представленный на рисунке B.2, является верхним уровнем и классифицируется по 4 категориям, представленным в таблице B.3. Категории с первого уровня по четвертый уровень будут определены в последующих стандартах, таких как ИСО 22166-202.
![]() Таблица B.3
на рисунке B.2
(обязательное)
C.1 Общие положения
В данном приложении представлена информация, которую следует использовать при создании объекта для класса, определенного в разделе 4. Данная информация может быть представлена на языках XML или JSON. В настоящем стандарте использовано представление на языке XML. Для представления информации об ОИМ классе следует использовать приведенную ниже XML-схему, после которой приведен пример представления информации для ОИМ модуля на основе данной XML-схемы. Описания имен элементов представлены в таблице C.1. Суб-элементы представлены в таблицах C.2 - C.8.
XML-схема для ОИМ модуля:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xs:element name="GenInfo" type="xs:string"/>
<xs:element name="IDnType" type="xs:string"/>
<xs:element name="Properties" type="xs:string"/>
<xs:element name="IOVariables" type="xs:string"/>
<xs:element name="Services" type="xs:string"/>
<xs:element name="Infra" type="xs:string"/>
<xs:element name="SafeSecure" type="xs:string"/>
<xs:element name="Modelling" type="xs:string"/>
<xs:element name="Module">
<xs:annotation>
<xs:documentation>version = "1.1" </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="GenInfo"/>
<xs:element ref="IDnType"/>
<xs:element ref="Properties"/>
<xs:element ref="IOVariables"/>
<xs:element ref="Services"/>
<xs:element ref="Infra"/>
<xs:element ref="SafeSecure"/>
<xs:element ref="Modelling"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример представления информации для ОИМ модуля на основе XML-схемы для ОИМ модуля:
<?xml version="1.0" encoding="windows-1251" ?> <!-- version = "1.1" OK -->
<Module>
<GenInfo> </GenInfo> <!-- See C.2 -->
<IDnType> </IDnType> <!-- See C.3 -->
<Properties> </Properties> <!-- See C.4 -->
<IOVariables> </IOVariables> <!-- See C.4 -->
<Services> </Services> <!-- See C.6 -->
<Infra> </Infra> <!-- See C.7 -->
<SafeSecure> </SafeSecure> <!-- See C.8 -->
<Modelling> </Modelling> <!-- See C.9 -->
</Module>
Таблица C.1
XML-элементы, содержащие информацию для GenInfo, должны соответствовать таблице C.2. Для представления информации об элементах из таблицы C.2 следует использовать приведенную ниже XML-схему, после которой приведены примеры информации для GenInfo на языке XML.
Таблица C.2
XML-схема для GenInfo:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xs:element name="ModuleName" type="xs:string"/>
<xs:element name="Description" type="xs:string"/>
<xs:element name="Manufacturer" type="xs:string"/>
<xs:element name="Examples" type="xs:string"/>
<xs:element name="GenInfo">
<xs:annotation>
<xs:documentation>version = "1.1" OK</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="ModuleName"/>
<xs:element ref="Description"/>
<xs:element ref="Manufacturer"/>
<xs:element ref="Examples"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример представления информации для GenInfo на основе на XML-схемы для GenInfo:
<?xml version="1.0" encoding="windows-1251" ?> <!-- version = "1.1" OK -->
<GenInfo>
<ModuleName> Module Name </ModuleName> <!-- string -->
<Description> Description of module </Description> <!-- string -->
<Manufacturer> manufacturer </Manufacturer> <!-- string -->
<Examples> list of use case </Examples> <!-- string -->
</GenInfo>
XML-элементы, содержащие информацию о классе IDnType, должны соответствовать таблице C.3. Для представления информации об элементах из таблицы C.3 следует использовать приведенную ниже XML-схему, после которой приведены примеры информации для класса IDnType. Первый пример является примером базового модуля, а второй пример - примером составного модуля, обладающего как аппаратными, так и программными свойствами. Если существует только элемент HWList, то данный составной модуль является разновидностью аппаратного модуля. Если существует только элемент SWList, то данный составной модуль является разновидностью программного модуля. Если оба элемента, HWList и SWList, существуют одновременно, то данный составной модуль является разновидностью аппаратно-программного модуля.
Таблица C.3
XML-схема для идентификатора модуля:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xs:element name="ModuleID" type="xs:string"/>
<xs:element name="ID" type="xs:string"/>
<xs:element name="InformationModelVersion" type="xs:float"/>
<xs:element name="HWlist">
<xs:complexType>
<xs:sequence>
<xs:element ref="ModuleID" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SWlist">
<xs:complexType>
<xs:sequence>
<xs:element ref="ModuleID" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="IDnType">
<xs:complexType>
<xs:sequence>
<xs:element ref="ID"/>
<xs:element ref="InformationModelVersion"/>
<xs:element ref="HWlist"/>
<xs:element ref="SWlist"/>
</xs:sequence>
<xs:attribute type="xs:string" name="type"/>
</xs:complexType>
</xs:element>
</xs:schema>
Пример представления информации для идентификатора базового модуля на основе XML-схемы для идентификатора модуля:
<?xml version="1.0" encoding="windows-1251" ?>
<IDnType type="Bas"> <!-- example of basic module -->
<ID> moduleId </ID> <!-- provided by manufacturer and defined in Annex B-->
<InformationModelVersion> 1.0 </InformationModelVersion> <!-- string -->
</IDnType>
Пример представления информации для идентификатора составного модуля на основе XML-схемы для идентификатора модуля:
<?xml version="1.0" encoding="windows-1251" ?>
<IDnType type="Com"> <!-- example of a composite module -->
<ID> moduleId </ID><!-- ID for the composite module -->
<InformationModelVersion> 1.0 </InformationModelVersion> <!-- string -->
<HWlist> <!-- in the list, IIDs of modules are not defined -->
<ModuleID>hwModuleID1 </ModuleID>
<ModuleID>hwModuleID2 </ModuleID>
<ModuleID>hwModuleID3 </ModuleID>
<ModuleID>hwModuleID4 </ModuleID>
</HWlist>
<SWlist>
<ModuleID>swModuleID1 </ModuleID>
<ModuleID>swModuleID2 </ModuleID>
<ModuleID>swModuleID3 </ModuleID>
<ModuleID>swModuleID4 </ModuleID>
</SWlist>
</IDnType>
Большая часть информации в классах Properties и IOVariables относится к исполнению модулей и используется в качестве параметров и/или переменных в программных свойствах. Для аппаратных свойств необходимо показать некоторые типичные применения и привести примеры информации о входных и выходных переменных.
В отношении информации для класса Properties, определенного в 4.3.3, обязательно должны быть указаны имя и значение характеристики, а также ее тип данных. Единицы измерения данного значения и относящееся к нему описание могут быть включены для пояснения использования.
Информация для класса IOVariables, определенного в 4.3.4, включает имя, значение и тип данных переменной, а также тип входных и выходных данных. Единицы измерения данного значения и относящееся к нему описание могут быть включены для пояснения использования. Следует обратить внимание на то, что переменные, которые одновременно могут быть использованы в качестве входной и выходной переменной, должны быть помечены как "входная/выходная".
XML-элементы, содержащие информацию об элементах Properties, Inputs и Outputs, должны соответствовать таблице C.4. Для представления информации об элементах из таблицы C.4 следует использовать приведенные ниже XML-схемы для классов Properties и IOVariables, после которых приведен пример информации для классов Properties и IOVariables.
Таблица C.4
В таблице C.5 представлен абстрактный тип данных, используемый в определении классов, и типы данных как ключевые слова языка XML, которые должны быть использованы в настоящем стандарте. Если типом данных элемента является перечислимый тип данных, то следует использовать новый атрибут "enumeration". Элемент "unit" означает размерную характеристику физической величины, примерами которой являются метр, обороты в минуту, секунда, бит в секунду, ампер, вольт, ватт и Цельсий. В частности, элемент "unit" имеет специальную единицу "none", которая означает отсутствие физической величины.
Таблица C.5
как ключевые слова языка XML
XML-схема для класса Properties:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xs:element name="value">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="Item" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Item" type="xs:float"/>
<xs:element name="Property">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="value" minOccurs="0"/>
<xs:element ref="Property" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="value" use="optional"/>
<xs:attribute type="xs:string" name="unit" use="optional"/>
<xs:attribute type="xs:string" name="description" use="optional"/>
<xs:attribute type="xs:string" name="complex" use="optional"/>
<xs:attribute type="xs:string" name="complexName" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Properties">
<xs:annotation>
<xs:documentation>example of class type property</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Property" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML-схема для класса IOVariables:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xs:element name="Name" type="xs:string"/>
<xs:element name="Value" type="xs:float"/>
<xs:element name="Item">
<xs:complexType>
<xs:sequence>
<xs:element ref="Name"/>
<xs:element ref="Value"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="name" type="xs:string"/>
<xs:element name="type" type="xs:string"/>
<xs:element name="value" type="xs:float"/>
<xs:element name="unit" type="xs:string"/>
<xs:element name="description" type="xs:string"/>
<xs:element name="additionalInfo">
<xs:complexType>
<xs:sequence>
<xs:element ref="Item" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Input">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="name" minOccurs="0"/>
<xs:element ref="type" minOccurs="0"/>
<xs:element ref="value" minOccurs="0"/>
<xs:element ref="unit" minOccurs="0"/>
<xs:element ref="description" minOccurs="0"/>
<xs:element ref="additionalInfo" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:float" name="value" use="optional"/>
<xs:attribute type="xs:string" name="unit" use="optional"/>
<xs:attribute type="xs:string" name="description" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Output">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="name" minOccurs="0"/>
<xs:element ref="type" minOccurs="0"/>
<xs:element ref="unit" minOccurs="0"/>
<xs:element ref="description" minOccurs="0"/>
<xs:element ref="additionalInfo" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="unit" use="optional"/>
<xs:attribute type="xs:string" name="description" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Inout">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="name" minOccurs="0"/>
<xs:element ref="type" minOccurs="0"/>
<xs:element ref="unit" minOccurs="0"/>
<xs:element ref="description" minOccurs="0"/>
<xs:element ref="additionalInfo" minOccurs="0"/>
<xs:element ref="Inout" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="unit" use="optional"/>
<xs:attribute type="xs:string" name="description" use="optional"/>
<xs:attribute type="xs:string" name="className" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Inputs">
<xs:complexType>
<xs:sequence>
<xs:element ref="Input" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Outputs">
<xs:complexType>
<xs:sequence>
<xs:element ref="Output" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InOuts">
<xs:complexType>
<xs:sequence>
<xs:element ref="Inout"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="IOVariables">
<xs:complexType>
<xs:sequence>
<xs:element ref="Inputs"/>
<xs:element ref="Outputs"/>
<xs:element ref="InOuts"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример представления информации для классов Properties и IOVariables на основе XML-схем для классов Properties и IOVariables:
<?xml version="1.0" encoding="windows-1251" ?>
<Properties> <!-- properties -->
<Property name="maxRatedCurrent" type="float32" unit="ampere" description = "maximum of
rated current for motor" value ="15" /> <!-- example of single property -->
<Property name="maxRatedVoltage" type="float32" unit="volt" description =
"maximum of rated voltage for motor">
<value> 5 </value>
</Property> <!-- example of single property -->
<Property name="StatusEmerg" type="boolean" unit="none" description =
"existence of emergency stop button" value ="True" />
<Property name="SizeBd" type="uint8" unit="mm" description = "size of board" value ="30"
/>
<Property name="Weight" type="uint16" unit="gram" description = "weight of product"
value ="450000" />
<Property name="NoPixelDisplay" type="uint32" unit="none" description = "pixel number"
value ="345600" />
<Property name="NoPixelCamera" type="uint64" unit="none" description = "pixel number"
value ="8294400" />
<!-- following is example of array: float32 [6] initPos -->
<Property name="initPose" complex ="array" type="float32" unit="none"
description="initial pose, x,y,z, yaw,roll,pitch, in order. Unit of yaw, roll, and pitch = degree " >
<value>
<Item> 0 </Item>
<Item> 0 </Item>
<Item> 0 </Item>
<Item> 10 </Item>
<Item> 20 </Item>
<Item> 10 </Item>
</value>
</Property> <!-- example of array type property -->
<!-- following is example of class: -->
<!-- class cylinderType { -->
<!-- float32 length; -->
<!-- float32 radius -->
<!-- } cylinder; -->
<Property name="cylinder" complex = "class" complexName="cylinderType">
<Property name="length" type="float32" value = "100.0" unit="millimetre"
description = "length of cylinder" />
<Property name="radius" type="float32" value = "3.0" unit="millimetre"
description = "radius of cylinder" />
</Property> <!-- example of class type property -->
</Properties>
<IOVariables>
<Inputs>
<Input name="controlvalue1" type="float32" value="5.0" unit="ampere"
description = "current control command to motor" />
<Input>
<name> controlvalue2 </name>
<type> float32 </type>
<value> 5.0 </value>
<unit> voltage </unit>
<description> voltage control of motor </description>
<additionalInfo>
<Item>
<Name> min Voltage </Name>
<Value> -5.0 </Value>
</Item>
<Item>
<Name> max voltage </Name>
<Value> 5.0 </Value>
</Item>
</additionalInfo>
</Input>
</Inputs>
<Outputs>
<Output name="encoder" type ="uint32" unit = "none" description = "state of motor" />
<Output>
<name> Status </name>
<type> uint8 </type>
<unit> None </unit>
<description> Status </description>
<additionalInfo>
<Item>
<Name> IDLE </Name>
<Value> 0 </Value>
</Item>
<Item>
<Name> WORKING </Name>
<Value> 1 </Value>
</Item>
<Item>
<Name> ERROR </Name>
<Value> 2 </Value>
</Item>
</additionalInfo>
</Output>
</Outputs>
<InOuts>
<Inout name="pose" type = "" className="poseType">
<Inout name="x" type="float32" unit="none" description = "position x" />
<Inout name="y" type="float32" unit="none" description = "position y" />
<Inout name="z" type="float32" unit="none" description = "position z" />
<Inout name="yaw" type="float32" unit="degree" description = "yaw" />
<Inout name="roll" type="float32" unit="degree" description = " roll" />
<Inout>
<name> pitch </name>
<type> float32 </type>
<unit> degree </unit>
<description> pitch </description>
<additionalInfo>
<Item>
<Name> min </Name>
<Value> -100 </Value>
</Item>
<Item>
<Name> max </Name>
<Value> 100 </Value>
</Item>
</additionalInfo>
</Inout>
</Inout>
</InOuts>
</IOVariables>
C.5 Информация о сервисах модуля
XML-элементы, содержащие информацию о классе Services, должны соответствовать таблице C.6. Для представления информации о классе Services на основе таблицы C.6 следует использовать приведенную ниже XML-схему, после которой приведены два примера информации для класса Services (или Functions/Capabilities), один из которых представлен на языке IDL, а второй - на языке XML.
Данная информация обычно используется в программах, написанных на таких языках, как C/C++, Java и Python. Поэтому важно определить порядок аргументов и получить дополнительные возвращаемые через аргументы значения. Типом данных аргументов, используемых в качестве дополнительных возвращаемых значений, является pointer (указатель) в языке C/C++ или reference type (ссылочный тип) в языках Java и Python.
Таблица C.6
XML-схема для класса Services:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xs:element name="Name" type="xs:string"/>
<xs:element name="Value" type="xs:string"/>
<xs:element name="Item">
<xs:complexType>
<xs:sequence>
<xs:element ref="Name"/>
<xs:element ref="Value"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MethodName">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="value" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ArgSpec">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="Type" minOccurs="0"/>
<xs:element ref="Name" minOccurs="0"/>
<xs:element ref="IOType" minOccurs="0"/>
<xs:element ref="additionalInfo" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="Type" use="optional"/>
<xs:attribute type="xs:string" name="Name" use="optional"/>
<xs:attribute type="xs:string" name="IOType" use="optional"/>
<xs:attribute type="xs:string" name="inDataType" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="RetType">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="value" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="MOType">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="value" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ReqProvType">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="value" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="additionalInfo">
<xs:complexType>
<xs:sequence>
<xs:element ref="Item"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Type" type="xs:string"/>
<xs:element name="IOType" type="xs:string"/>
<xs:element name="Method">
<xs:complexType>
<xs:sequence>
<xs:element ref="MethodName"/>
<xs:element ref="ArgSpec" maxOccurs="unbounded" minOccurs="0"/>
<xs:element ref="RetType" minOccurs="0"/>
<xs:element ref="MOType"/>
<xs:element ref="ReqProvType"/>
<xs:element ref="additionalInfo" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ID" type="xs:string"/>
<xs:element name="PVType">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="value" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Methods">
<xs:complexType>
<xs:sequence>
<xs:element ref="Method" maxOccurs="unbounded" minOccurs="0"/>
<xs:element ref="additionalInfo" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Properties">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="Name" use="optional"/>
<xs:attribute type="xs:string" name="Value" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Service">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="ID" minOccurs="0"/>
<xs:element ref="PVType" minOccurs="0"/>
<xs:element ref="MOType" minOccurs="0"/>
<xs:element ref="Properties" maxOccurs="unbounded" minOccurs="0"/>
<xs:element ref="Methods" minOccurs="0"/>
<xs:element ref="additionalInfo" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Services">
<xs:complexType>
<xs:sequence>
<xs:element ref="Service" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример информации для класса Services на основе CIMServicePackage, определенного на языке IDL в 4.3.6.
interface Service: CIMService
{
uint8 initialize(int64 val1, float32 val2); //services provided by module
uint8 finalize(int32 val1, float32 val2, int32 val3);
uint8 read(int fd, uint8[] buf, uint16 nbytes);
}
Пример информации для класса Services на основе XML-схемы для класса Services:
<?xml version="1.0" encoding="windows-1251" ?>
<Services>
<Service type = "IDL">
./IDL/AppLayer/sdo.idl
</Service>
<Service type = "IDL">
./IDL/AppLayer/sync.idl
</Service>
<Service type = "IDL">
./IDL/DeviceDriver/CAN.idl
</Service>
<Service type = "XML">
<ID> NMT </ID>ID>
<PVType> Virtual </PVType>
<MOType> MANDATORY </MOType>
<Methods>
<Method>
<MethodName value = "NMT_SearchNode" />
<ArgSpec Type="int8" Name="iNodeID" IOType="IN" />
<RetType value="bool" />
<MOType value = "MANDATORY" />
<ReqProvType value="REQUIRED" />
<additionalInfo>
<Item>
<Name> initialValue </Name>
<Value> 0 </Value>
</Item>
</additionalInfo>
</Method>
<Method>
<MethodName value = "NMT_AddNode" />
<ArgSpec>
<Type> int8 </Type>
<Name> iNodeID </Name>
<IOType> IN </IOType>
<additionalInfo>
<Item>
<Name> minValue </Name>
<Value> 20 </Value>
</Item>
</additionalInfo>
</ArgSpec>
<ArgSpec Type="int8" Name="iType" IOType="IN" />
<ArgSpec Type="int" Name="iLifeTime" IOType="IN" />
<RetType value="bool" />
<MOType value = "MANDATORY" />
<ReqProvType value="REQUIRED" />
</Method>
<Method>
<MethodName value = "NMT_GetNodeInfo" />
<ArgSpec Type="int8" Name="iNodeID" IOType="IN" />
<ArgSpec Type="pointer" inDataType="int" Name="iType" IOType="OUT" />
<ArgSpec Type="pointer" inDataType="int" Name="pTime" IOType="OUT" />
<ArgSpec Type="pointer" inDataType="uint8" Name="pLifeTime" IOType="OUT" />
<RetType value="bool" />
<MOType value = "MANDATORY" />
<ReqProvType value="REQUIRED" />
</Method>
<additionalInfo>
<Item>
<Name> InvokeFirstService </Name>
<Value> NMT_SearchNode </Value>
</Item>
</additionalInfo>
</Methods>
<additionalInfo>
<Item>
<Name> CANID </Name>
<Value> OFF </Value>
</Item>
</additionalInfo>
</Service>
<Service type = "XML">
<ID> RS485Driver </ID>
<PVType value="Virtual" />
<MOType> OPTIONAL </MOType>
<Properties Name = "Baud" Value ="9600" />
<Properties Name = "STOPBit" Value ="No" />
<Methods>
<Method>
<MethodName value = "initialize" />
<ArgSpec Type="int64" Name="val1" IOType="IN" />
<ArgSpec Type="float32" Name="val2" IOType="IN" />
<RetType value="uint8" />
<MOType value = "MANDATORY" />
<ReqProvType value="PROVIDED" />
</Method>
<Method>
<MethodName value = "initialize" />
<ArgSpec Type="int64" Name="val1" IOType="IN" />
<ArgSpec Type="float32" Name="val2" IOType="IN" />
<ArgSpec Type="float32" Name="val3" IOType="IN" />
<RetType value="uint8" />
<MOType value = "OPTIONAL" />
<ReqProvType value="PROVIDED" />
</Method>
<Method>
<MethodName value = "finalize" />
<ArgSpec Type="int32" Name="val1" IOType="IN" />
<ArgSpec Type="float32" Name="val2" IOType="IN" />
<ArgSpec Type="int32" Name="val3" IOType="IN" />
<RetType value="uint8" />
<MOType value = "MANDATORY" />
<ReqProvType value="PROVIDED" />
</Method>
<Method>
<MethodName value = "read" />
<ArgSpec Type="int" Name="fd" IOType="IN" />
<ArgSpec Type="pointer" inDataType ="uint8" Name="val2" IOType="INOUT" />
<ArgSpec Type="uint16" Name="nbytes" IOType="IN" />
<MOType value = "MANDATORY" />
<ReqProvType value="PROVIDED" />
<additionalInfo>
<Item>
<Name> minValue </Name>
<Value> 0 </Value>
</Item>
</additionalInfo>
</Method>
</Methods>
</Service>
</Services>
Данная информация определяет тип инфраструктурной поддержки и/или защиты от неблагоприятного воздействия окружающей среды, например источники питания, шину данных и степень защиты (код IP). Шины питания зависят от вида энергии, подаваемой на модуль, включая потребляемую мощность, и от вида энергии поставляемой модулем, если это имеет место. Шина данных зависит от типа связи, подключенной к модулю (например, Ethernet, EtherCAT, CAN, USB и RS422). Степень защиты определяет код IP, соответствующий данному модулю в соответствии с МЭК 60529. XML-элементы, содержащие информацию о классе Infrastructure, должны соответствовать таблице C.7. Для представления информации о классе Infrastructure на основе таблицы C.7 следует использовать приведенную ниже XML-схему, после которой приведен пример информации для класса Infrastructure.
Примечание - Шина данных в классе Infrastructure является шиной, которую модули совместно используют в системе.
Информация об элементе Databuses включает тип протокола, скорость передачи данных и поддерживаемый API, а примерами типа протокола являются CAN2.0, EtherCAT, Ethernet и RS485.
Таблица C.7
XML-схема для класса Infrastructure:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xs:element name="Name" type="xs:string"/>
<xs:element name="Value" type="xs:float"/>
<xs:element name="Item">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="Name" minOccurs="0"/>
<xs:element ref="Value" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RatedPower">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:byte" name="value"/>
<xs:attribute type="xs:string" name="unit"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="MaxPower">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:float" name="value"/>
<xs:attribute type="xs:string" name="unit"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="additionalInfo">
<xs:complexType>
<xs:sequence>
<xs:element ref="Item"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ElecPower">
<xs:complexType>
<xs:sequence>
<xs:element ref="RatedPower"/>
<xs:element ref="MaxPower"/>
<xs:element ref="additionalInfo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ConnectorType" type="xs:string"/>
<xs:element name="TypePhyMac" type="xs:string"/>
<xs:element name="TypeNetTrans" type="xs:string"/>
<xs:element name="TypeApp">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="Item" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Speed">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:short" name="value" use="optional"/>
<xs:attribute type="xs:string" name="unit" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Databus">
<xs:complexType>
<xs:sequence>
<xs:element ref="ConnectorType"/>
<xs:element ref="TypePhyMac"/>
<xs:element ref="TypeNetTrans"/>
<xs:element ref="TypeApp"/>
<xs:element ref="Speed"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Powers">
<xs:complexType>
<xs:sequence>
<xs:element ref="ElecPower"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DataBuses">
<xs:complexType>
<xs:sequence>
<xs:element ref="Databus" maxOccurs="unbounded" minOccurs="0"/>
<xs:element ref="additionalInfo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DBType" type="xs:string"/>
<xs:element name="IP" type="xs:string"/>
<xs:element name="Infra">
<xs:complexType>
<xs:sequence>
<xs:element ref="Powers"/>
<xs:element ref="DataBuses"/>
<xs:element ref="DBType"/>
<xs:element ref="IP"/>
<xs:element ref="additionalInfo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример информации для класса Infrastructure на основе XML-схемы для класса Infrastructure:
<?xml version="1.0" encoding="windows-1251" ?>
<Infra>
<Powers>
<ElecPower>
<RatedPower value= "43" unit = "watt" />
<MaxPower value= "54.2" unit = "watt" />
<additionalInfo>
<Item>
<Name> Max Current (unit:Ampere) </Name>
<Value> 1 </Value>
</Item>
</additionalInfo>
</ElecPower>
</Powers>
<DataBuses> <!-- list of data buses used in Module -->
<Databus>
<ConnectorType> DB9 </ConnectorType> <!-- D-Sub 9-->
<TypePhyMac> CAN </TypePhyMac>
<TypeNetTrans> CANopen </TypeNetTrans>
<TypeApp> <!-- list for app. Layer of CANopen -->
<Item> OBD </Item>
<Item> NMT </Item>
<Item> SDO </Item>
<Item> PDO </Item>
<Item> SYNC </Item>
</TypeApp>
<Speed value = "1000" unit="kbps" /> <!-- 1 Mbps, unit Kbps -->
</Databus>
<Databus>
<ConnectorType> RJ45 </ConnectorType> <!-- Jack for EtherNet -->
<TypePhyMac> EtherCAT </TypePhyMac>
<TypeNetTrans> IPTCP </TypeNetTrans>
<TypeApp> Modbus </TypeApp>
<Speed value = "10000" unit="kbps" /> <!-- 10 Mbps, unit Kbps -->
</Databus>
<additionalInfo>
<Item>
<Name> Maximum speed of EtherCAT </Name>
<Value> 100000 </Value>
</Item>
</additionalInfo>
</DataBuses>
<DBType> SQL DBMS </DBType> <!-- DBMS type -->
<IP> IP23CH </IP><!-- Ingress Protection IEC 60529-->
<additionalInfo>
<Item>
<Name> Minimum IP Code </Name>
<Value> 32 </Value>
</Item>
</additionalInfo>
</Infra>
Класс SafeSecure обеспечивает информацию об уровне эффективности защиты для каждой функции безопасности и информацию, связанную с защищенностью, для каждой функции защищенности, поддерживаемой модулем. XML-элементы, содержащие информацию о классе SafeSecure, должны соответствовать таблице C.8. Для представления информации о классе SafeSecure на основе таблицы C.8 следует использовать приведенную ниже XML-схему, после которой приведен пример информации для класса SafeSecure.
Атрибут "PL" (УЭЗ) должен иметь следующие значения: {n, a, b, c, d, e}, где "n" обозначает отсутствие уровня эффективности защиты, а "a" - "e" обозначают PLa - PLe (см. ИСО 13849-1). Киберзащищенность имеет следующие значения: {0, 1, 2, 3, 4}, где "0" обозначает отсутствие мер по обеспечению защищенности, а "1" - "4" обозначают уровень защищенности "SL1" - "SL4" (см. МЭК 62443-4-2:2019). Меры по обеспечению физической защищенности определены в ИСО 22166-1, 5.6. Уровень безопасности для каждой функции безопасности должен быть представлен с использованием УЭЗ или УПБ.
Таблица C.8
XML-схема для класса SafeSecure:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xs:element name="Overall">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="mode" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="SafetyType">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="mode" use="optional"/>
<xs:attribute type="xs:byte" name="value" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="SecType">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:byte" name="value" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="PhysicalSecurity" type="xs:string"/>
<xs:element name="CyberSecurity">
<xs:complexType>
<xs:sequence>
<xs:element ref="Overall"/>
<xs:element ref="SecType" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Value" type="xs:float"/>
<xs:element name="Item">
<xs:complexType>
<xs:sequence>
<xs:element ref="Name"/>
<xs:element ref="Value"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Safety">
<xs:complexType>
<xs:sequence>
<xs:element ref="Overall" maxOccurs="unbounded" minOccurs="0"/>
<xs:element ref="SafetyType" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Security">
<xs:complexType>
<xs:sequence>
<xs:element ref="PhysicalSecurity"/>
<xs:element ref="CyberSecurity"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="additionalInfo">
<xs:complexType>
<xs:sequence>
<xs:element ref="Item" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SafeSecure">
<xs:complexType>
<xs:sequence>
<xs:element ref="Safety"/>
<xs:element ref="Security"/>
<xs:element ref="additionalInfo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример информации для класса SafeSecure на основе XML-схемы для класса SafeSecure:
<?xml version="1.0" encoding="windows-1251" ?>
<SafeSecure>
<Safety>
<Overall mode="PL"> d </Overall> <!-- choose one PL from a, b, c, d, e, and none. -->
<Overall mode="SIL"> 3 </Overall> <!-- choose one SIL from 0, 1, 2, and 3. -->
<!-- individual safety measure. see Table 4.5 -->
<SafetyType type = "ESTOP" mode="PL"> d </SafetyType>
<SafetyType type = "ESTOP" mode="SIL" value="3" />
<SafetyType type = "SRSC" mode="SIL" value = "2" />
</Safety>
<Security>
<!-- None,LatchSensor,LockwithKey,LockwithActuator, see sub-clause 5.6 in ISO 22166-1 -->
<PhysicalSecurity> None </PhysicalSecurity>
<CyberSecurity> <!-- list security functions provided by module -->
<Overall> 2 </Overall> <!-- overall security level of a module -->
<SecType type = "HU_IA"> 3 </SecType > <!-- individual security fct. see Table 4.10 -->
<SecType type = "ACNT_MGT" value = "2" /> <!-- see Table 4.10 -->
</CyberSecurity>
</Security>
<additionalInfo>
<Item>
<Name> Minimum overall PL </Name>
<Value> 2 </Value>
</Item>
<Item>
<Name> Minimum overall security </Name>
<Value> 1 </Value>
</Item>
</additionalInfo>
</SafeSecure>
Класс Modelling обеспечивает информацию, которую модуль предоставляет для моделирования, например, тип симулятора, 3D модель и формат описания 3D модели, такой как файлы универсального формата описания роботов (URDF). XML-элементы, содержащие информацию о классе Modelling, должны соответствовать таблице C.9. Для представления информации о классе Modelling на основе таблицы C.9 следует использовать приведенную ниже XML-схему, после которой приведен пример информации для класса Modelling.
Таблица C.9
XML-схема для класса Modelling:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xs:element name="Item">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="Name" minOccurs="0"/>
<xs:element ref="Value" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Property">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="unit" use="optional"/>
<xs:attribute type="xs:string" name="description" use="optional"/>
<xs:attribute type="xs:byte" name="value" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ExeFileURL" type="xs:string"/>
<xs:element name="ShellCmd" type="xs:string"/>
<xs:element name="Properties">
<xs:complexType>
<xs:sequence>
<xs:element ref="Property" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Value" type="xs:string"/>
<xs:element name="Simulator" type="xs:string"/>
<xs:element name="ModelFile">
<xs:complexType>
<xs:sequence>
<xs:element ref="Item" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="DynamicSW">
<xs:complexType>
<xs:sequence>
<xs:element ref="ExeFileURL"/>
<xs:element ref="ShellCmd"/>
<xs:element ref="Properties"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="additionalInfo">
<xs:complexType>
<xs:sequence>
<xs:element ref="Item" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SimulationModel">
<xs:complexType>
<xs:sequence>
<xs:element ref="Simulator"/>
<xs:element ref="ModelFile" maxOccurs="unbounded" minOccurs="0"/>
<xs:element ref="DynamicSW"/>
<xs:element ref="additionalInfo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Modelling">
<xs:complexType>
<xs:sequence>
<xs:element ref="SimulationModel"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример информации для класса Modelling на основе XML-схемы для класса Modelling:
<?xml version="1.0" encoding="windows-1251" ?>
<Modelling>
<SimulationModel> <!-- the 1-st simulation model to be used -->
<Simulator> Gazebo </Simulator> <!-- Simulation programs. optional -->
<ModelFile type="URDF"> <!-- model description file type and its file path for model
of module -->
<Item> ../../modelDescriptionFileName1 </Item> <!-- the 1st path of model description file-->
<Item> ../../modelDescriptionFilePath2 </Item> <!-- the 2nd path of model description file -->
</ModelFile>
<ModelFile type="STL"> <!-- 3D graphic model type and its file path for model of
module -->
<Item> ../../module3DGraphicFileName1 </Item> <!--the 1st path of 3Dgraphic file
model file -->
<Item> ../../module3DGraphicFilePath2 </Item> <!--the 2nd path of 3Dgraphic file
model file -->
</ModelFile>
<DynamicSW>
<ExeFileURL> ../../sim.exe </ExeFileURL>
<ShellCmd> ../../sim.exe -r </ShellCmd> <!--example of shell command -->
<Properties>
<Property name="Shell cmd Arg1" type="int8" unit="none" description = "verbose"
value ="0" />
<Property name="Shell cmd Arg2" type="uint8" unit="none" description = "Warning
level" value ="2" />
</Properties>
</DynamicSW>
<additionalInfo>
<Item>
<Name> kinematics model(Axis) </Name>
<Value> 6 Axis </Value>
</Item>
<Item>
<Name> additional info </Name>
<Value> added </Value>
</Item>
</additionalInfo>
</SimulationModel>
</Modelling>
Класс ExecutableForm представляет исполняемую форму, связанную с информацией, необходимой модулю при его выполнении. XML-элементы, содержащие информацию о классе ExecutableForm, должны соответствовать таблице C.10. Для представления информации о классе ExecutableForm на основе таблицы C.10 следует использовать приведенную ниже XML-схему, после которой приведен пример информации для класса ExecutableForm.
Таблица C.10
XML-схема для класса ExecutableForm:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xs:element name="Item">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="Name" minOccurs="0"/>
<xs:element ref="Value" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Property">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="unit" use="optional"/>
<xs:attribute type="xs:string" name="description" use="optional"/>
<xs:attribute type="xs:byte" name="value" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ExeFileURL" type="xs:string"/>
<xs:element name="ShellCmd" type="xs:string"/>
<xs:element name="Properties">
<xs:complexType>
<xs:sequence>
<xs:element ref="Property" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Value" type="xs:string"/>
<xs:element name="LibURLs">
<xs:complexType>
<xs:sequence>
<xs:element ref="Item" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ExeForm">
<xs:complexType>
<xs:sequence>
<xs:element ref="ExeFileURL"/>
<xs:element ref="ShellCmd"/>
<xs:element ref="Properties"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="additionalInfo">
<xs:complexType>
<xs:sequence>
<xs:element ref="Item" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ExecutableForm">
<xs:complexType>
<xs:sequence>
<xs:element ref="LibURLs"/>
<xs:element ref="ExeForm"/>
<xs:element ref="additionalInfo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример информации для класса ExecutableForm на основе XML-схемы для класса ExecutableForm:
<?xml version="1.0" encoding="windows-1251" ?>
<ExecutableForm>
<LibURLs>
<Item> ../lib/windows/modulelib.dll </Item>
<Item> www.module/org/windows/lib/modulelib.dll </Item>
</LibURLs>
<ExeForm>
<ExeFileURL> www.module.org/windows/exe/module1.exe</ExeFileURL>
<ShellCmd> ./module1.exe -r </ShellCmd> <!--this is example of shell command -->
<Properties>
<Property name="Shell cmd Arg1" type="integer" unit="none" description = "verbose"
value ="0" />
<Property name="Shell cmd Arg2" type="uint8" unit="none" description = "Warning
level" value ="2" />
</Properties>
</ExeForm>
<additionalInfo>
<Item>
<Name> update date </Name>
<Value> Jun. 24, 2023 </Value>
</Item>
<Item>
<Name> additional info </Name>
<Value> added </Value>
</Item>
</additionalInfo>
</ExecutableForm>
(справочное)
Информационные модели модулей обеспечивают разные виды информации, которая может помочь проектировщикам, разработчикам или интеграторам при создании нового модуля или составного модуля. Часть этой информации может быть использована на ранней стадии создания, часть - на стадиях проектирования и разработки, а часть - на стадии эксплуатации.
Примечание - ОИМ является абстрактной моделью, не предназначенной для непосредственной реализации. Пользователям необходимо использовать конкретные информационные модели программных модулей, аппаратных модулей и модулей с аппаратными и программными свойствами.
На рисунке D.1 представлены взаимосвязи между информацией о модуле и заинтересованными в ней лицами, когда информация о модуле представлена на основе общей информационной модели.
![]() и заинтересованными в ней лицами
Информационные модели структурированы в виде нескольких субмоделей, как описано в 4.2. Пользователи в первую очередь могут получить сведения об идентификаторах и общую информацию, которая включает описание, сведения об изготовителе, примеры, идентификатор, типы модулей и аппаратно-программные свойства модуля. Если начальная информация о модуле соответствует требованиям пользователей, то они могут ознакомиться с более подробной информацией о модуле с помощью информации, хранящейся во внутренних классах. Если необходимо, они могут разработать дополнительную информацию о модуле, включая его модификацию и расширение его функций или сервисов.
В частности, интеграторы модулей, как пользователи, имеют возможность разрабатывать информацию для новых программных и аппаратных модулей, которые необходимы для построения нового сочетания модулей.
Информация, содержащаяся в общей информационной модели, может быть использована на разных стадиях жизненного цикла модуля. В таблицах D.1 - D.3 представлена информация, предназначенная для использования на каждой из четырех стадий жизненного цикла: проектирование, разработка, эксплуатация и техническое обслуживание.
Таблица D.1
(включая составные модули)
Таблица D.2
Использование информации о модулях с аппаратными
и программными свойствами (включая составные модули)
Таблица D.3
модулях, включая программные модули и/или модули
с аппаратными и программными свойствами
Информацию, предназначенную для стадий проектирования, разработки и технического обслуживания, используют главным образом пользователи при выполнении их задач.
Информацию, предназначенную для стадии эксплуатации, используют главным образом автоматизированные процессы, включая информацию о других модулях в системе, состоящей из нескольких модулей. Информация, отмеченная как "обязательная" в таблицах D.1 - D.3, должна быть предоставлена разработчиком модуля. Автоматические средства, работающие с подобными моделями, должны отказаться от выполнения или отклонить модель как недопустимую, если в ней отсутствует информация, помеченная как "обязательная". Однако никаких дополнительных требований не предъявляется к пользователю модуля в отношении использования какой-либо информации из модели. Информация, помеченная как "не используется", не должна присутствовать в модели любого модуля соответствующего типа, однако в явном виде не определено, как автоматические средства должны действовать в данной ситуации.
В таблицах D.1 - D.3 представлены информационные модели трех типов модулей: аппаратных модулей, модулей с аппаратными и программными свойствами и программных модулей соответственно. Таблица D.3 также соответствует составным модулям, состоящим из программных модулей и модулей с аппаратными и программными свойствами, причем последние могут включать и аппаратные модули.
(справочное)
Классы определены в настоящем стандарте с использованием табличного формата, представленного в таблице E.1.
Таблица E.1
Атрибутами перечислимого типа данных являются перечислимые значения или константы.
Пример представления класса MyClass приведен в таблице E.2.
Таблица E.2
(справочное)
НАЦИОНАЛЬНЫМ И МЕЖГОСУДАРСТВЕННЫМ СТАНДАРТАМ
Таблица ДА.1
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/gost-r_gosudarstvennyj-standart/16/gost_25768.html
На правах рекламы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||