CiA301: слой приложения и профиль коммуникации CANopen
Добавил(а) microsin
[6. Модель CANopen]
6.1. Эталонная модель
На рис. 1 показана общая модель концепции коммуникации CANopen, подобная эталонной модели сетей ISO-OSI (левая часть рисунка).
Примечание: это перевод стандарта CiA301 (DS301), оригинал см. в интернете или в архиве [4]. Есть также альтернативный перевод этого документа, который мне не очень нравится (см. файл doc-rus\CANopenDS301-rus.pdf в архиве [4]).
Рис. 1. Эталонная модель.
Application Layer (слой приложений, прикладной уровень): представляет концепцию конфигурирования и обмена данными реального времени, как и механизмы для синхронизации между устройствами (узлами) сети CANopen. Функциональность слоя приложения предоставляет возможность логически поделить приложения на отдельные сервисные объекты в этом слое. Сервисный объект предоставляет специфическую функциональность протокола и все связанные с этим службы. Эти службы описаны в спецификации на каждый сервисный объект.
Приложения взаимодействуют, вызывая службы сервисного объекта на прикладном уровне. Чтобы реализовать эти службы, этот объект обменивается данными через сеть CAN Network с сервисным объектом (объектами) другого узла по заданному протоколу. Этот протокол описан в спецификации сервисного объекта.
Service Primitives (примитивы службы): это способ, которым приложения взаимодействуют на прикладном уровне. Имеется 4 разных примитива:
• Запрос, выданный приложением в слой приложения для доступа к службе. • Индикация, которая была отправлена в приложение от слоя приложения, чтобы оповестить о внутреннем событии, детектированном слоем приложения, или чтобы показать, что служба запрошена. • Ответ, который выдало приложение слою приложений, чтобы ответить на ранее принятую индикацию. • Подтверждение, выданное слоем приложений для приложения, чтобы сообщить о результате ранее выданного запроса.
Рис. 2. Типы служб слоя приложений.
Типы служб определяют примитивы, с помощью которым осуществляется обмен между слоем приложений и взаимодействующими приложениями для определенного сервисного объекта.
• Локальная служба вовлекается только локальным сервисным объектом, т. е. без взаимодействия по сети. Приложение выдает запрос к своему локальному сервисному объекту, который выполняет запрошенную службу без обмена с сервисным объектом (объектами) другого узла (узлов) сети. • Неподтвержденная служба (unconfirmed service) это один или большее количество сервисных объектов других узлов сети. Приложение выдает запрос к своему локальному сервисному объекту. Этот запрос передается к сервисному объекту (объектам) других узлов сети, при этом к их приложению передается индикация. Результат не подтверждается обратно. • Подтвержденная служба (confirmed service) может вовлекать только один сервисный объект другого узла сети. Приложение выдает запрос к своему локальному сервисному объекту. Этот запрос передается к сервисному объекту (объектам) других узлов сети, при этом к их приложению передается индикация. Другое приложение выдает ответ, который передается к изначальному сервисному объекту как подтверждение для запрашивающего приложения. • Провайдер инициированной службы вовлекает только локальный сервисный объект. Сервисный объект (который будет поставщиком услуг) детектирует событие, не запрошенное требуемой службой. Тогда это событие показывается приложению.
Неподтвержденные и подтвержденные службы вместе называются удаленными (сетевыми) службами (remote-службами).
6.2. Модель устройства
6.2.1. Общее описание. Устройство (узел сети) CANopen структурируется следующим образом (см. рис. 3):
• Communication (обмен сообщениями, коммуникация) – этот функциональный узел предоставляет объекты коммуникации и соответствующую функциональность для транспорта элементов данных через нижележащую сетевую структуру (шину). • Object Dictionary (словарь объектов, сокращенно OD) – это база данных, коллекция всех элементов данных, которые влияют на поведение объектов приложения, объекты коммуникации и машину состояний, используемые в этом устройстве. • Application (приложение) – представляет функциональность устройства в контексте взаимодействия с рабочим окружением.
Рис. 3. Модель устройства.
Словарь объектов (OD) работает как интерфейс между обменом данными и приложением. Полное описание приложения устройства с соответствующими элементами данных в словаре объектов называется профилем устройства.
6.2.2. Словарь объектов (Object Dictionary, OD). Наиболее важная часть профиля устройства это описание OD. OD по существу это группировка объектов, доступных через сеть заранее упорядоченным, строго определенным способом. Каждый объект в OD адресуется с использованием 16-битного индекса (не путать идентификаторами сети CAN!). Также существует 8-битный sub-индекс OD, адресующий подчиненный элемент объекта. Общая структура стандартного OD показана ниже. Эта организация довольно полно удовлетворяет другим индустриальным концепциям систем последовательной шины:
Таблица 1. Общая структура OD.
Индекс (hex)
Объект
0000
Не используется
0001-001F
Static Data Types (статические типы данных)
0020-003F
Complex Data Types (сложные типы данных)
0040-005F
Manufacturer Specific Complex Data Types (сложные типы данных, специфические для производителя устройства)
0060-007F
Device Profile Specific Static Data Types (статические типы данных, специфические для профиля устройства)
0080-009F
Device Profile Specific Complex Data Types (сложные типы данных, специфические для профиля устройства)
00A0-0FFF
Зарезервировано для будущего использования
1000-1FFF
Communication Profile Area (область профиля коммуникации)
2000-5FFF
Manufacturer Specific Profile Area (область профиля, специфического для производителя)
6000-9FFF
Standardised Device Profile Area (область стандартизованного профиля устройства)
A000-BFFF
Standardised Interface Profile Area (область стандартизованного профиля интерфейса)
C000-FFFF
Зарезервировано для будущего использования
Примечание: в этом описании термин entry, обозначающий информационную единицу словаря OD, переводится как "элемент" словаря, и иногда как "запись" словаря.
OD может содержать максимум 65536 элементов, адресуемых по 16-битному индексу (существует 8-битный sub-индекс, позволяющий адресовать дополнительные подчиненные записи в пределах одного элемента).
Static Data Type. Статические типы данных с индексами от 0001h до 001Fh содержат определения для стандартных типов наподобие BOOLEAN, INTEGER, floating point (число с плавающей точкой), string (строка) и т. д. Эти элементы добавлены в словарь только для ссылки, они не могут быть прочитаны или записаны (короче говоря, в обычном OD они просто отсутствуют).
Complex Data Type. Сложные типы данных с индексами от 0020h до 003Fh это заранее предопределенные структуры, которые состоят из стандартных типов данных, и они являются общими для всех устройств. В OD простых устройств эти записи отсутствуют.
Manufacturer Specific Complex Data Type. Сложные типы данных, специфичные для производителя устройства с индексами от 0040h до 005Fh это структуры, составленные из стандартных типов данных. Они являются специфическими для определенного устройства.
Device Profile. Профили устройства, которые могут содержать дополнительные типы данных, специфичных для их типа устройства. Статические типы данных, определенные устройством, перечислены по индексам 0060h .. 007Fh, а сложные по индексам 0080h .. 009Fh.
Устройство может опционально предоставить структуры поддерживаемых сложных типов данных (индексы 0020h .. 005Fh и 0080h .. 009Fh) для доступа на чтение по соответствующему индексу. Тогда sub-индекс 0 предоставляет количество элементов (адресуемых sub-индексами) по этому индексу, и последующие sub-индексы содержат типы данных, закодированные как UNSIGNED16 в соответствии с таблицей 39.
Communication Profile Area. Область профиля коммуникации с индексами от 1000h до 1FFFh содержит параметры, относящиеся к обмену по сети CAN. Эти элементы являются общими для всех устройств.
Standardised Device Drofile Area. Область стандартизированного профиля устройства с индексами от 6000h до 9FFFh, содержит все объекты данных, общие для его класса устройств, которые можно прочитать или записать через сеть. Профили устройства могут использовать записи от 6000h до 9FFFh для описания параметров устройства и его функциональности.
С этим диапазоном можно описать 8 разных устройств. В таком случае устройство называется как Multiple Device Modules (устройство с несколькими модулями). Multiple Device Modules составлены из сегментов профиля устройства, которых может быть до 8 штук. С помощью этой функции можно построить устройства с многочисленной функциональностью. Отличающиеся профили устройства сдвинуты по индексу друг относительно друга на 800h. Таким образом, диапазон индексов для Multiple Device Modules распределен следующим образом:
Распространение PDO должно использоваться для каждого сегмента Multiple Device Module со смещением 64, например первый PDO второго сегмента получит номер 65. Таким способом поддерживается система максимум с 8 сегментами.
Концепция OD обслуживает дополнительные функции устройства. Это означает, что производитель не должен обеспечивать определенную расширенную функциональность на своих устройствах, но если он хочет сделать так, то это должно быть сделано заранее определенным в стандарте способом.
Оставшееся пространство OD с индексами от 2000h до 5FFFh полностью предназначено для поддержки функционала, специфического для производителя.
6.2.2.1. Использование индекса и sub-индекса. Для адресации всех элементов в словаре OD используется 16-битный индекс. В случае простой переменной индекс ссылается напрямую на её значение. Однако в случае сложных записей и массивов индекс адресует всю структуру данных.
Чтобы позволить получить доступ к отдельным полям структуры данных элемента словаря, определен sub-индекс. Для одиночных элементов OD, таких как UNSIGNED8, BOOLEAN, INTEGER32 и т. п. значение sub-индекса равно 0 (sub-индекс для таких простых элементов словаря присутствует неявно). Для сложных элементов словаря OD, таких как массивы или структуры с несколькими полями данных, sub-индексы ссылаются на поля этой структуры данных, на которую указывает главный индекс. К полям структуры осуществляется доступ через sub-индекс, поля могут представлять разные типы данных.
Эта модель задает различные объекты коммуникации и службы, и доступные режимы для срабатывания передачи сообщения. Модели задают способ, которым объекты обмениваются информацией.
Коммуникационная модель поддерживает передачу синхронных и асинхронных сообщений. Методом передачи синхронного сообщения становится возможным осуществление координированного по всей сети запуска сбора и обработки. Синхронная передача сообщений поддерживается заранее определенными в стандарте коммуникационными объектами: сообщение синхронизации (SYNC), сообщение метки времени (time stamp). Синхронные сообщения передается по заранее определенному сообщению синхронизации, асинхронное сообщение может быть передано в любой момент времени.
Из-за событийного характера нижележащего механизма коммуникации можно определить времена запрета коммуникации (inhibit time). Необходимость в таком времени понятна - если события в устройствах будут происходить слишком часто, то возможно "забитие" полосы сети слишком часто появляющимися сообщениями. Интервал запрета гарантирует, что забитие сети данными низкого приоритета не произойдет, для этого элементам данных может быть назначено время запрета (inhibit time). Время inhibit для объекта данных определяет минимальное время, которое должно пройти между двумя следующими друг за другом запусками службы передачи сообщения.
Времена запрета могут быть назначены приложением в зависимости от его функциональности. Из-за этого различают 3 типа взаимоотношений коммуникации:
• Master/Slave (взаимоотношение между главным и подчиненным устройством, рис. 4 и 5). • Client/Server (взаимоотношение клиент-сервер, рис. 6). • Producer/Consumer (взаимоотношение продюсер - потребитель, рис. 7 и 8).
6.3.1. Взаимодействие Master/Slave. В любой момент времени только одно устройство в сети играет роль главного (Master), поддерживая для этого специфическую функциональность. Все другие устройства сети считаются подчиненными (Slave). Master выдает запрос, и адресуемое (или адресуемые) устройство (устройства) отвечает, если протокол подразумевает такое поведение.
Рис. 4. Обмен данными Master - Slave без подтверждения (Unconfirmed Communication).
Рис. 5. Обмен данными Master - Slave с подтверждением (Confirmed Communication).
Взаимодействие Master/Slave применяется в протоколе NMT, где в сети присутствует один главный узел (Master), и остальные устройства являются подчиненными (Slave). Мастер сети управляет состоянием подчиненных устройств (описание протокола NMT см. далее).
6.3.2. Взаимодействие Client/Server. Это взаимосвязь между одиночным клиентом и одиночным сервером. Клиент выдает запрос выгрузки или загрузки (upload/download), что вызывает срабатывание сервера для выполнения определенной задачи. После завершения этой задачи сервер отвечает подтверждением на запрос.
Рис. 6. Обмен типа клиент - сервер.
Взаимодействие Client/Server применяется в протоколе SDO, через который мастер сети может прочитать словарь (OD) подчиненного узла сети и/или изменить его (если это предусмотрено словарем узла).
6.3.3. Взаимодействие Producer/Consumer - модель Pull/Push. Это взаимосвязь типа генератор/потребитель, что вовлекает один генератор (продюсер) и потребителей, которых может 0 или больше. Модель push (проталкивание) характеризуется не подтверждаемой службой, которая запрашивается продюсером. Модель pull (выборка) характеризуется подтверждаемой службой, запрашиваемой потребителем.
Рис. 7. Модель Push.
Рис. 8. Модель Pull.
Взаимодействие Producer/Consumer применяется при синхронизации узлов сети (передача объектов SYNC) и при обмене прикладными данными (объекты PDO).
Физический носитель данных для устройств представляет собой дифференциальную двухпроводную линию связи с общим проводом, соответствующую высокоскоростной спецификации передачи данных ISO 11898.
7.1. Трансивер. Используется высокоскоростной трансивер по стандарту ISO 11898, с уровнями VCAN_H и VCAN_L +16V. Гальваническая изоляция для узлов сети является опциональной. Рекомендуется использовать трансивер, которые может выдерживать неправильное подключение (или ошибочное отключение) любого из проводов шины, включая превышение напряжений V+ до 30V.
7.2. Скорость следования бит (bit rate) и интервалы времени. Рекомендуется использовать скорости и интервалы(4), перечисленные в таблице 2. Устройство CANopen должно поддерживать как минимум один вариант скорости из этой таблицы.
Таблица 2. Рекомендуемые скорости передачи данных и параметры времени бита.
Bit rate (скорость бит) Длина шины(1)
tb
tq
Ltq
SP
1 мегабит/сек 25 м
1 мкс
8
125 нс
6tq (750 нс)
800 кбит/сек 50 м
1.25 мкс
10
125 нс
8tq (1 мкс)
500 кбит/сек 100 м
2 мкс
16
125 нс
14tq (1.75 мкс)
250 кбит/сек 250 м(2)
4 мкс
16
250 нс
14tq (3.5 мкс)
125 кбит/сек 500 м(2)
8 мкс
16
500 нс
14tq (7 мкс)
50 кбит/сек 1000 м(3)
20 мкс
16
1.25 мкс
14tq (17.5 мкс)
20 кбит/сек 2500 м(3)
50 мкс
16
3.125 мкс
14tq (43.75 мкс)
10 кбит/сек 5000 м(3)
100 мкс
16
6.25 мкс
14tq (87.5 мкс)
Здесь:
tp номинальное время бита. tq количество квантов времени, приходящихся на бит. Ltq длина кванта времени. Sp место точки выборки (sample point).
Значения в таблице базируются на следующих предположениях:
Тактовая частота генератора 16 МГц ±0.1% (1000 ppm). Режим анализа уровней сигнала (Sampling mode): одиночная выборка, SAM = 0. Режим синхронизации: только по перепадам уровня от recessive к dominant, SYNC = 0. Ширина интервала синхронизации (Synchronisation jump width): 1 * tq, SJW = 0. Phase Segment 2: 2 * tq, TSEG2 = 1.
Примечания:
(1) Округленная оценка длины шины (худший случай) на основе задержки распространения 5 нс/м и общей эффективности работы устройства:
(2) Для шины длиной больше примерно 200 м рекомендуется использовать оптоизоляторы. Если оптоизоляторы размещаются между контроллером CAN и трансивером, то это влияет на максимальную длину шины - в зависимости от задержки распространения узлов оптической развязки. Например, отнимается 4 м от длины шины на 10 нс вводимой опторазвязкой задержки.
(3) Для шины, длина которой больше примерно 1 км, может потребоваться мост или репитер сигнала.
(4) Интервалы бит в таблице вычислены на базе тактовой частоты генератора 16 МГц. Если используется другой генератор, то количество квантов времени (tq) может быть другим. Тем не менее, расположение точки выборки сигнала (sample point) должно быть как можно ближе к рекомендуемой.
[8. Слой данных (DATA LINK LAYER)]
Описанные сети базируются на data link layer и его sub-слоях в соответствии с ISO 11898.
8.1. CAN Frame Type. Эта спецификация базируется на стандартных фреймах CAN (CAN Standard Frame) с шириной поля идентификатора 11 бит. Не требуется поддержка расширенного фрейма CAN (CAN Extended Frame) с шириной поля идентификатора 29 бит.
Однако определенные приложения могут потребовать использование расширенного фрейма с полем ID из 29 бит. Сеть CANopen может работать и в таком режиме, если он поддерживается всеми узлами сети.
9.1.1. Общее описание типов данных и кодирования. Чтобы можно было обмениваться значимыми данными по сети CAN, формат этих данных и их значение должны быть известны продюсеру данных и потребителю (потребителям) данных. Спецификация CANopen моделирует эту концепцию типами данных.
Правила кодирования определяют представление значений типов данных и синтаксис переноса данных по сети CAN для этих представлений. Значения представлены как последовательности бит. Последовательности бит передаются по сети как последовательности октетов бит (байтов). Для цифровых типов данных принят стиль кодирования little endian, как показано на рис. 9.
номер октета
1.
2.
k.
b7..b0
b15..b8
b8k-1..b8k-8
Рис. 9. Синтаксис передачи и последовательность бит.
Приложения частот требуют типы данных, основанные на базовых типах. С использованием механизма составного типа данных (compound data type mechanism) список доступных типов данных может быть расширен. Например, некоторые общие расширенные типы данных определены как "Visible String" (видимая строка) или "Time of Day" (время дня) (см. 9.1.6.2 и 9.1.6.4). Составные типы данных являются средством реализовать определяемые пользователем типы "DEFTYPES" в терминологии этой спецификации, и не "DEFSTRUCTS" (см. таблицу 37: Object Dictionary Object Definitions).
[9.1.2. Определения типа данных]
Тип данных определяет взаимосвязь между значениями и кодированием данных для этого типа. Типам данных назначаются имена в их определениях типа. Используется следующий синтаксис данных и определений типа данных (см. EN 61131-3):
Рекурсивные определения не разрешены. Тип данных определяется type_definition называется базовым, когда конструктор basic_constructor. Для составного типа соответственно используется compound_constructor или array_constructor, для структуры structure_constructor.
[9.1.3. Последовательности бит]
9.1.3.1. Определение последовательностей бит. Бит может принимать значения 0 или 1. Последовательность бит b это упорядоченный набор из 0 или большего количества бит. Если последовательность бит b содержит больше 0 бит, то она обозначается как bj, где j > 0. Предположим b0, ..., bn-1 будут битами, где n положительное число. Тогда
b = b0 b1 ... bn-1
называется последовательностью бит длиной |b| = n. Пустая последовательность бит длиной 0 обозначается буквой ε. Примеры последовательностей бит: 10110100, 1, 101.
Оператор инверсии (¬) на последовательности бит b = b0 b1 ... bn-1 дает последовательность бит
¬b = ¬b0 ¬b1 ... ¬bn-1
Здесь для бит ¬0 = 1 и ¬1 = 0.
Базовая операция на последовательностях бит - конкатенация (склеивание).
Предположим, у нас есть последовательности бит a = a0 ... am-1 и b = b0 ... bn-1. Тогда конкатенация a и b обозначается ab и будет равна
ab = a0 ... am-1 b0 ... bn-1
Пример: (10)(111) = 10111 является конкатенацией 10 и 111. Выполняется следующее равенство для произвольных последовательностей бит a и b:
|ab| = |a| + |b|
и
εa = aε = a
9.1.3.2. Синтаксис передачи последовательностей бит. Для передачи через сеть CAN последовательность бит реорганизуется в последовательность октетов. Для октетов используется шестнадцатеричная нотация. Предположим, b = b0 ... bn-1 будет последовательностью бит, где n ≤ 64. Обозначим k не отрицательного целого числа как 8(k - 1) < n < 8k. Тогда b преобразуется в k октетов, собранных как показано на рис. 9. Биты bi, где i ≥ n самых старших октетов содержат ничего не значащие биты. Октет 1 передается первым, и k передается последним. Таким образом, последовательность бит передается по сети CAN следующим образом:
b7, b6, ..., b0, b15, ..., b8, ...
Пример:
бит 9 ... бит 0 | | 10 0001 1100 2h 1h Ch = 21Ch
Последовательность бит b = b0 .. b9 = 0011 1000 01 представляет число UNSIGNED10 со значением 21Ch, и оно передается в 2 октетах: сначала 1Ch, и затем 02h.
[9.1.4. Базовые типы данных]
Для базовых типов данных "type_name" равно строке связанного конструктора (наподобие символического имени), например:
BOOLEAN BOOLEAN
это определение типа для типа данных BOOLEAN.
9.1.4.1. NIL. Данные базового типа NIL представлены буквой ?.
9.1.4.2. Boolean. Данные базового типа BOOLEAN получают значения TRUE (истина, 1) или FALSE (ложь, 0). Значения представлены последовательностями бит длиной 1.
9.1.4.3. Void. Базовый тип VOIDn представлен последовательностями бит длиной n. Значение типа данных VOIDn не определено. Биты в последовательности данных VOIDn должны быть либо явно указаны, либо помечены "do not care" (не имеет значения). Тип данных VOIDn полезен для зарезервированных полей и для выравнивания компонентов составных значений по границам октетов.
9.1.4.4. Unsigned Integer (целое число без знака). Базовый тип данных UNSIGNEDn принимает не отрицательные значения целых чисел. Диапазон значений 0, ..., 2n-1. Данные представлены последовательностями бит длиной n. Последовательность бит
b = b0 ...bn-1
назначается значению
UNSIGNEDn(b) = bn-1*2n-1+ ...+ b1*21 + b0*20
Обратите внимание, что последовательность бит начинается слева самым младшим значащим байтом. Например, значение 266 = 10Ah с типом данных UNSIGNED16 передается по шине двумя октетами, при этом сначала передается 0Ah, и затем 01h.
Различные типы UNSIGNEDn передаются следующим образом:
номер октета
1.
2.
3.
4.
5.
6.
7.
8.
UNSIGNED8
b7..b0
UNSIGNED16
b7..b0
b15..b8
UNSIGNED24
b7..b0
b15..b8
b23..b16
UNSIGNED32
b7..b0
b15..b8
b23..b16
b31..b24
UNSIGNED40
b7..b0
b15..b8
b23..b16
b31..b24
b39..b32
UNSIGNED48
b7..b0
b15..b8
b23..b16
b31..b24
b39..b32
b47..b40
UNSIGNED56
b7..b0
b15..b8
b23..b16
b31..b24
b39..b32
b47..b40
b55..b48
UNSIGNED64
b7..b0
b15..b8
b23..b16
b31..b24
b39..b32
b47..b40
b55..b48
b63..b56
Рис. 10. Примеры синтаксиса передачи типа данных UNSIGNEDn.
9.1.4.5. Signed Integer (целое число со знаком). Данные базового типа INTEGERn принимает целые значения, положительные и отрицательные, и 0. Диапазон значений составляет -2n-1, ..., 2n-1-1. Данные передается в последовательности бит длиной n. Последовательность бит
b = b0 .. bn-1
назначается значению
INTEGERn(b) = bn-2 * 2n-2 + ...+ b1 * 21 + b0 * 20 если bn-1 = 0 (положительное целое число), и с помощью арифметики дополнения до двух (two's complement arithmetic),
Обратите внимание, что последовательность бит начинается слева самым младшим значащим байтом. Например, значение -266 = FEF6h с типом данных INTEGER16 передается по шине двумя октетами, при этом сначала передается F6h, и затем FEh.
Различные типы INTEGERn передаются следующим образом:
номер октета
1.
2.
3.
4.
5.
6.
7.
8.
INTEGER8
b7..b0
INTEGER16
b7..b0
b15..b8
INTEGER24
b7..b0
b15..b8
b23..b16
INTEGER32
b7..b0
b15..b8
b23..b16
b31..b24
INTEGER40
b7..b0
b15..b8
b23..b16
b31..b24
b39..b32
INTEGER48
b7..b0
b15..b8
b23..b16
b31..b24
b39..b32
b47..b40
INTEGER56
b7..b0
b15..b8
b23..b16
b31..b24
b39..b32
b47..b40
b55..b48
INTEGER64
b7..b0
b15..b8
b23..b16
b31..b24
b39..b32
b47..b40
b55..b48
b63..b56
Рис. 11. Примеры синтаксиса передачи типа данных INTEGERn.
9.1.4.6. Числа с плавающей точкой. Данные базовых типов данных REAL32 и REAL64 получают значения реальных чисел. Тип данных REAL32 представлен последовательностью из 32 бит. Кодирование значений REAL32 соответствует стандарту IEEE 754-1985 для чисел с плавающей точкой одинарной точности (single precision floating-point). Тип данных REAL64 представлен последовательностью 64 бит. Кодирование REAL64 соответствует стандарту IEEE 754-1985 Standard для чисел с плавающей точкой двойной точности (double precision floating-point).
Последовательность бит длиной 32 имеет либо конкретное значение (конечное ненулевое реальное число, ±0, ±_) или NaN (not-a-number, не число). Последовательность бит
b = b0 ... b31
назначает значение (конечное ненулевое реальное число)
REAL32(b) = (-1)S * 2E-127 * (1 + F)
Здесь:
S = b31 это знак числа. E = b30 * 27 + … + b23 * 20, 0 < E < 255 это не смещенная экспонента числа (un-biased exponent). F = 2-23 (b22 * 222 + … + b1 * 21 + b0 * 20) это дробная часть числа.
E = 0 используется для представления is used to represent ±0. E=255 используется для представления бесконечности и NaN.
Обратите внимание, что последовательность бит начинается слева самым младшим значащим битом.
Пример числа 6.25 в типа REAL32:
6.25 = 2E-127 (1 + F)
здесь
E =129 =27 +20 и
F= 2-1 +2-4 = 2-23 (222+219), так что число представлено следующим образом:
[9.1.5. Составные типы данных (Compound Data Types)]
Определения составных типов данных расширяются до уникального списка определений типа, включающих только основные типы данных. Соответственно составной тип данных 'type_name' это упорядоченный список компонентов данных, поименованных 'component_name_i' базового типа 'basic_type_i'.
Конструкторами составного типа данных являются ARRAY и STRUCT OF. Синтаксис:
Последовательность бит, представляющая данные составного типа, получается конкатенацией последовательностей бит отдельных компонентов данных. Предположим, что компоненты 'component_name_i' представлены последовательностями бит b(i) для i = 1, ..., N. Тогда составной тип данных представлен склеенной последовательностью
b0(1) .. bn-1(1) .. bn-1(N).
Пример:
Рассмотрим тип данных
STRUCT OF
INTEGER10 x,
UNSIGNED5 u
NewData
Предположим, что x = -423 = 259h, и u = 30 = 1Eh. Пусть b(x) и b(u) обозначают последовательности бит, представляющие значения x и u. Тогда:
Значение этой структуры будет передано в 2 октетах, сначала 59h, и затем 7Ah.
[9.1.6. Расширенные типы данных (Extended Data Types)]
Эти типы состоят и данных базовых типов и составных типов данных, определенных в следующих подсекциях.
9.1.6.1. Строка октетов (Octet String). Тип данных OCTET_STRINGlength определен ниже; здесь length это длина строки октетов.
ARRAY [ length ] OF UNSIGNED8 OCTET_STRINGlength
9.1.6.2. Видимая строка (Visible String). Тип данных VISIBLE_STRINGlength определен ниже. Допустимые значения типа данных VISIBLE_CHAR: 0h и диапазон от 20h до 7Eh (7-битный код ASCII для видимых символов). Данные представлены по стандарту ISO 646-1973(E) как символы, кодируемые 7 битами. Здесь length это длина видимой строки.
UNSIGNED8 VISIBLE_CHAR
ARRAY [ length ] OF VISIBLE_CHAR VISIBLE_STRINGlength
Символ 0h необходим для завершения строки.
9.1.6.3. Строка Unicode (Unicode String). Тип данных UNICODE_STRINGlength определен ниже; здесь length это длина строки unicode.
ARRAY [ length ] OF UNSIGNED16 UNICODE_STRINGlength
9.1.6.4. Время дня (Time of Day). Тип данных TIME_OF_DAY представляет абсолютное время. Он следует правилам определения и кодирования TIME_OF_DAY таким образом, что представляется последовательностью бит длиной 48.
Компонент ms это время в миллисекундах после полуночи. Компонент days это количество дней, начиная от даты 1 января 1984 года.
STRUCT OF
UNSIGNED28 ms,
VOID4 reserved,
UNSIGNED16 days
TIME_OF_DAY
9.1.6.5. Time Difference (разница по времени). Тип данных TIME_DIFFERENCE представляет разницу (интервал) во времени. Он следует правилам кодирования таким образом, что TIME_DIFFERENCE представлен последовательностью бит длиной 48.
Разницы времени это суммы количества дней и миллисекунд. Компонент ms это количество миллисекунд. Компонент days это количество дней.
STRUCT OF
UNSIGNED28 ms,
VOID4 reserved,
UNSIGNED16 days
TIME_DIFFERENCE
Обратите внимание, что компонент VOID4 reserved применен для выравнивания полей бит по границе байта. Это сделано для удобства доступа к значениям данных, чтобы не нужно было делать лишние сдвиги и маскирования последовательностей бит.
9.1.6.6 Domain. Домены могут использоваться для передачи блока данных произвольного размера от клиента к серверу и наоборот. Содержимое блока данных специфично для приложения, что не относится к области рассмотрения этого документа.
[9.2. Объекты коммуникации (Communication Objects)]
Объекты коммуникации описываются службами и протоколами. Все службы описываются в табулярной форме, которая содержит параметры каждого примитива службы, который определен для этой службы. Примитивы, которые определены для определенной службы, определяют тип службы, например, неподтвержденный (unconfirmed), подтвержденный (confirmed), и т. д. Как интерпретировать табулярную форму и какие типы служб существуют, определено в 6.3 (Communication Model).
Все службы подразумевают, что отсутствуют ошибки на уровнях Data Link и Physical Layer сети CAN. Эти ошибки обрабатываются приложением, и как это происходит, выходит за рамки обсуждения в этом документе.
9.2.1. Process Data Object (PDO). Передача данных в реальном времени осуществляется способом "Process Data Objects (PDO)". Передача объектов PDO выполняется без дополнительной нагрузки на протокол.
Объекты PDO соответствуют записям в словаре объектов (Object Dictionary, OD) устройства, и они предоставляют интерфейс (доступ) к объектам приложения. Тип данных и отображение объектов приложения к объекту (объектам) PDO осуществляется с помощью соответствующей структуры отображения по умолчанию, также находящейся в OD. Если поддерживается изменяемое отображение PDO для некоторого количества объектов PDO, и отображение объектов приложения к PDO может передаваться во время процесса конфигурации устройства (см. раздел "Процедура инициализации"), с помощью наложения служб SDO на соответствующие записи OD.
Количество и длина объектов PDO устройства зависит от приложения, и должна быть описана профилем устройства.
Есть 2 вида использования для объектов PDO. Первый это передача данных и второй это прием данных. Эти виды определены в объектах Transmit-PDO (TPDO) и объектах Receive-PDO (RPDO). Устройства, поддерживающие объекты TPDO, называются продюсерами PDO, и устройства, у которых есть приемные PDO (RPDO) называются потребителями PDO. Объекты PDO описываются параметром коммуникации PDO (PDO communication parameter 20h) и параметром отображения PDO (PDO mapping parameter 21h). Структура этих типов данных объяснена в 9.5.4. PDO communication parameter описывает коммуникационные возможности PDO. PDO mapping parameter содержит информацию о содержимом объектов PDO (переменных устройства). Индексы соответствующих элементов словаря OD вычисляются по следующим формулам:
RPDO communication parameter index = 1400h + номер_RPDO - 1 TPDO communication parameter index = 1800h + номер_TPDO - 1 RPDO mapping parameter index = 1600h + номер_RPDO - 1 TPDO mapping parameter index = 1A00h + номер_TPDO - 1
Для каждого PDO обязательна пара параметров: параметр коммуникации и параметр отображения. Вышеупомянутые записи OD описаны в 9.5 (Object Dictionary).
9.2.1.1. Transmission Modes. Различают следующие режимы передачи PDO:
• Синхронная передача • Асинхронная передача
Чтобы синхронизировать устройства друг с другом, приложением синхронизации периодически передается объект синхронизации (объект SYNC). Объект SYNC представлен заранее определенным объектом коммуникации (см. 9.2.3). На рис. 13 показан принцип синхронной и асинхронной передачи. Синхронные PDO передаются в пределах заранее определенного окна времени, немедленно после объекта SYNC. Принцип синхронной передачи описан более подробно в 9.3.
Рис. 13. Синхронная и асинхронная передача объектов PDO.
Параметр типа передачи объекта PDO задает как режим передачи, так и триггерный режим (см. ниже 9.2.1.2).
TPDO. Для синхронных TPDO тип передачи также задается частотой следования передач в форме множителя интервала появления объекта SYNC. Тип передачи 0 означает, что сообщение должно быть передано после появления SYNC, но не периодически, только если перед появлением SYNC произошло необходимое для сообщения событие. Тип передачи 1 означает, что сообщение обязательно передается с каждым объектом SYNC. Тип передачи n означает, что сообщение передается каждое n-ое появление объекта SYNC. Асинхронные TPDO передаются без какой-либо взаимосвязи с SYNC.
RPDO. Данные синхронных RPDO принятые после поступления SYNC, передаются в приложение с наступлением следующего SYNC, независимо от частоты передачи, указанной типом передачи. Данные асинхронных RPDO передаются приложению непосредственно.
• По событию (Event Driven). Передача сообщения срабатывает при наступлении события, специфичного для объекта. Для синхронных PDO это будет истечение времени указанного периода передачи, синхронизированное по приему объекта SYNC.
Для не циклически передаваемых синхронный PDO и асинхронных PDO срабатывание передачи сообщения определяется зависящим от устройства событием, определяемым профилем устройства.
• По таймеру (Timer Driven). Передача сообщения срабатывает либо по наступлению специфического для устройства события, ли если истекло указанное время, если событие не наступило.
• По запросу другого узла (Remotely requested). Передача асинхронных PDO инициируется при приеме запроса remote (RTR), который был инициирован любым другим устройством (PDO consumer).
9.2.1.3. Службы PDO. Передачи PDO следуют взаимодействию producer/consumer, как это описано в 6.3.3.
Атрибуты:
- PDO number: номер PDO [1..512] для каждого пользовательского типа на локальном устройстве. - user type: тип пользователя, одно из значений {consumer, producer}. - data type: тип данных, в соответствии с отображением PDO. - inhibit-time: время запрета n*100 мкс, n ≥ 0
9.2.1.3.1. Write PDO. Для службы Write PDO (запись PDO) допустима модель push. Может быть 0 или большее количество потребителей (consumers) объекта PDO. У PDO всегда только один генератор (producer).
Через эту службу продюсер PDO отправляет данные отображенных объектов приложения к потребителю (потребителям) этих данных.
Таблица 3. Write PDO.
Параметр
Запрос/индикация
Argument Номер PDO Данные
Наличие обязательно Наличие обязательно Наличие обязательно
9.2.1.3.2. Read PDO. Для службы Read PDO (чтение PDO) допустима модель pull. Может быть один или большее количество потребителей (consumers) объекта PDO. У PDO всегда только один генератор (producer).
Через эту службу потребитель PDO запрашивает у продюсера предоставить данные, отображенные на объекты приложения. Эта служба работает как подтверждаемая (confirmed). Параметр remote result подтвердит значение.
Служба для запроса записи PDO является не подтверждаемой (unconfirmed). Продюсер PDO посылает данные процесса (process data) по сети в рамках PDO. Может быть 0..n потребителей PDO (consumers). На потребителе (потребителях) PDO будет показан прием допустимого PDO. На рис. 14 показан протокол Write PDO.
Рис. 14: Протокол Write PDO.
Process-Data: может быть до L байт данных приложения, в соответствии с отображением PDO. Если L превысит количество байт 'n', определенное реальной длиной отображения PDO, то только первые n байт будут использованы потребителем. Если L меньше n, то данные, принятые PDO, не обрабатываются, и будет выпущено сообщение аварии (Emergency message) с кодом ошибки 8210h, если поддерживается функционал Emergency.
Служба запроса чтения PDO является подтверждаемой (confirmed). Один или большее количество потребителей PDO передают фрейм remote (RTR) по сети. На приеме фрейма RTR продюсер PDO для запрашиваемого PDO передает этот PDO. Для всех потребителей PDO для этого PDO будет показан прием. Может быть 0..n потребителей PDO. Служба чтения является опциональной, и зависит от возможностей аппаратуры. Рис. 15 показывает протокол чтения PDO.
Рис. 15: Протокол Read PDO.
Process-Data: может быть до L байт данных приложения, в соответствии с отображением PDO. Если L превысит количество байт 'n', определенное реальной длиной отображения PDO, то только первые n байт будут использованы потребителем. Если L меньше n, то данные, принятые PDO, не обрабатываются, и будет выпущено сообщение аварии (Emergency message) с кодом ошибки 8210h, если поддерживается функционал Emergency.
С помощью сервисных объектов данных (SDO) предоставляется запись в OD устройства. Так как эти данные могут содержать данные произвольного размера, и тип данных SDO может быть использован для передачи нескольких наборов данных (каждый из которых может содержать произвольно большой блок данных) от клиента к серверу, и наоборот. Клиент может управлять через мультиплексор (индекс и sub-индекс словаря OD), какой набор данных должен передаваться. Содержимое набора данных определяется в OD.
Обычно SDO передается как последовательность сегментов. Перед передачей сегментов присутствует фаза инициализации, где клиент и сервер подготавливают самих себя к передаче сегментов. Для SDO также можно передавать набор данных до 4 байт включительно сразу на фазе инициализации. Этот механизм называется ускоренной передачей (expedited transfer).
Опционально SDO может быть передан как последовательность блоков, где каждый блок это последовательность до 127 сегментов, содержащих номер сегмента и данные. Перед передачей блоков здесь есть фаза инициализации, где клиент и сервер могут подготовить самих себя для передаче блоков, и обмениваются количеством сегментов в одном блоке. После передачи блоков присутствует фаза завершения, где клиент и сервер опционально проверяют корректность предыдущих передач данных путем сравнения контрольных сумм, вычисленных от набора данных. Вышеупомянутый тип передачи называется блоковой передачей, который осуществляется быстрее, чем сегментированная передача большого набора данных.
Возможна выгрузка блока SDO (SDO Block Upload), с которой размер набора данных не выровнен по передаче блока, потому что подразумевается дополнительная нагрузка на протокол. В этих случаях на фазе инициализации может быть реализована поддержка отступа для сегментированной или ускоренной передачи. Поскольку предположение о минимальном размере набора данных, для которого блочная передача выигрывает по сравнению с другими типами передачи, зависит от различных параметров, клиент на фазе инициализации показывает это пороговое значение в байтах для сервера. Для блочной передачи используется схема Go-Back-n ARQ (Automatic Repeat Request, автоматический запрос повтора) для подтверждения каждого блока.
После загрузки блока (download) сервер показывает клиенту последний успешно принятый сегмент этой блочной передачи путем подтверждения этого последовательного номера сегмента. Делая так, сервер неявно подтверждает все сегменты, которые предшествовали этому сегменту. Клиент должен начать передачу следующего блока с повторной передачей всех не подтвержденных данных. Дополнительно сервер должен показать количество сегментов на блок для следующей передачи блока.
После выгрузки блока (upload) клиент показывает серверу последний успешно принятый сегмент этого блока путем подтверждения последовательного номера сегмента. Делая так, клиент неявно подтверждает все сегменты, предшествующие этому сегменту. Сервер должен начать передачу следующего блока с повторной передачи всех не подтвержденных данных. Дополнительно клиент должен показать количество сегментов на блок для следующей передачи блока.
Для всех типов передач инициатива передачи находится на стороне клиента. Владельцем OD, к которому осуществляется доступ, является сервер SDO. Обе стороны - и клиент, и сервер могут взять инициативу по обрыву передачи SDO (abort).
С помощью SDO между устройствами устанавливается канал связи точка-точка (peer-to-peer). Устройство может поддерживать больше чем один объект SDO. В случае по умолчанию поддерживается один Server-SDO (SSDO), так называемый SDO по умолчанию (Default SDO).
Объекты SDO описываются записью параметра коммуникации SDO (SDO communication parameter record, 22h). Структура этого типа данных объясняется в 9.5.4. SDO communication parameter описывает возможности коммуникации для объектов Server-SDO и Client-SDOs (CSDO). Индексы соответствующих записей OD вычисляются по следующим формулам:
• SSDO communication parameter index = 1200h + номер_SSDO - 1 • CSDO communication parameter index = 1280h + номер_CSDO - 1
Для каждого SDO являются обязательными параметры коммуникации. Если существует только один SSDO, то параметры коммуникации могут быть опущены. Вышеописанные записи описаны в 9.5 (Object Dictionary).
9.2.2.1. Службы SDO. Для коммуникации SDO применяется модель клиент/сервер.
Атрибуты:
- SDO number: номер SDO [1..128] для каждого пользовательского типа локального устройства. - user type: один из типов {client, server}. - mux мультиплексор типа данных, содержащий индекс и sub-индекс типа: STRUCTURE OF UNSIGNED (16), UNSIGNED (8), с индексом, указывающим на запись в OD устройства, и sub-индексом, указывающим на компонент записи OD. - transfer type: зависит от длины данных для передачи: expedited (ускоренная передача) для количества данных до 4 байт, и segmented (сегментированная) или block (блочная) для количества байт данных больше 4. - data type: тип данных в соответствии со ссылающимся индексом и sub-индексом.
Следующие службы могут быть применены к SDO, в зависимости от требований приложения:
• SDO Download, что может быть разделено на - Initiate SDO Download (инициация загрузки SDO) - Download SDO Segment (загрузка сегмента SDO) • SDO Upload, что может быть разделено на - Initiate SDO Upload (инициация выгрузки SDO) - Upload SDO Segment (выгрузка сегмента SDO) • Abort SDO Transfer (обрыв передачи SDO)
Когда используются службы сегментированной загрузки и выгрузки SDO, коммуникационное программное обеспечение будет отвечать за передачу SDO в виде последовательности сегментов.
Должна поддерживаться ускоренная передача (expedited transfer). Должна поддерживаться сегментированная передача, если поддерживаются объекты размером больше 4 байт. Опционально могут быть реализованы следующие службы SDO для выполнения блочной передачи с более рациональным использованием полосы шины для больших наборов данных:
• SDO Block Download (блочная загрузка SDO), что может быть разделено на - Initiate Block Download (инициация загрузки блока) - Download Block (загрузка блока) - End Block Download (окончание загрузки блока) • SDO Block Upload (блочная выгрузка SDO), что может быть разделено на - Initiate Block Upload (инициация выгрузки блока) - Upload Block (выгрузка блока) - End Block Upload (окончание выгрузки блока)
Когда используются службы загрузки или выгрузки блока SDO, коммуникационное программное обеспечение будет отвечать за передачу данных в виде последовательности блоков.
В протоколе SDO Block Upload может быть реализована поддержка для переключения в протокол SDO Upload в 'Initiate SDO Block Upload', чтобы увеличить эффективность передачи для данных, размер которых не выравнивает использование нагрузки на протокол для протокола 'SDO Block Upload'.
Для обрыва блочной передачи SDO используется служба Abort SDO Transfer.
9.2.2.1.1. SDO Download. С помощью этой службы клиент SDO загружает данные на сервер (владелец OD). Для сервера показываются данные, мультиплексор (индекс и sub-индекс) набора данных, который загружается, и его размер (опционально только для сегментированной передачи).
Эта служба является подтверждаемой (confirmed). Параметр remote result будет показывать успех или ошибку запроса. В случае ошибки опционально подтверждается причина отказа.
Загрузка SDO состоит как минимум из службы Initiate SDO Download, и опционально службы Download SDO Segment (при длине данных > 4 байт).
Таблица 5. SDO Download.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Data Size Multiplexor
Remote Result Success Failure (ошибка) Причина ошибки
Наличие обязательно Обязательно Обязательно Не обязательно Обязательно
Наличие обязательно Выбор Выбор Не обязательно
9.2.2.1.2 Initiate SDO Download. Через эту службу клиент SDO запрашивает у сервера загрузку данных на сервер. Опционально серверу показывается размер данных для загрузки.
Серверу показывается мультиплексор набора данных, для которого инициируется загрузка, и тип передачи. В случает ускоренной загрузки (expedited download), данные набора идентифицируются по мультиплексору и размеру, которые показываются серверу.
Таблица 6. Initiate SDO Download.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Size Multiplexor Тип передачи Нормальная Ускоренная Данные
Remote Result Success
Наличие обязательно Обязательно Не обязательно Обязательно Обязательно Выбор Выбор Обязательно
Наличие обязательно Обязательно
Эта служба подтверждаемая (confirmed). Параметр remote result покажет успешность запроса. Случае отказа должен быть выполнен запрос Abort SDO Transfer. В случае успеха ускоренной (expedited) загрузки мультиплексированного DOMAIN, эта служба завершает загрузку набора данных, идентифицированного мультиплексором.
9.2.2.1.3. Download SDO Segment. Через эту службу клиент SDO предоставляет серверу данные следующего сегмента. Серверу показывается сегмент данных и опционально его размер. Параметр продолжения (continue parameter) показывает, будут ли еще загружены сегменты, или это был последний загруженный сегмент.
Таблица 7. Download SDO Segment.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Data Size Continue Есть еще сегменты Последний сегмент
Remote Result Success
Наличие обязательно Обязательно Обязательно Не обязательно Обязательно Выбор Выбор
Наличие обязательно Обязательно
Эта служба подтверждаемая (confirmed). Параметр remote result покажет успешность запроса. Случае отказа должен быть выполнен запрос Abort SDO Transfer. В случае успеха сервер принимает сегмент данных и готов принять следующий сегмент. Может быть самое большее одна служба Download SDO Segment, предназначенная для передачи SDO.
Перед этой службой должна быть успешно выполнена служба Initiate SDO Download с типом сегментированной передачи.
9.2.2.1.4. SDO Upload. Через эту службу клиент SDO выгружает данные из сервера. Серверу должен быть показан мультиплексор (индекс и sub-индекс) набора данных.
SDO upload состоит как минимум из службы Initiate SDO Upload и опционально из службы Upload SDO Segment (когда длина данных > 4 байт).
Таблица 8. SDO Upload.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Continue Multiplexor
Remote Result Success Data Size Failure (ошибка) Причина ошибки
Наличие обязательно Обязательно Обязательно
Наличие обязательно Выбор Обязательно Не обязательно Выбор Не обязательно
Эта служба подтверждаемая (confirmed). Параметр remote result покажет успешность или отказ запроса. В случае отказа опционально подтверждается причина ошибки. В случае успеха подтверждаются данные и их размер (опционально для сегментированной передачи).
9.2.2.1.5. Initiate SDO Upload. Через эту службу клиент SDO запрашивает у сервера подготовиться к выгрузке данных для клиента. Серверу показывается мультиплексор (индекс и sub-индекс) набора данных, выгрузка которых инициируется.
Эта служба подтверждаемая (confirmed). Параметр remote result покажет успешность запроса. Случае отказа должен быть выполнен запрос Abort SDO Transfer. В случае успеха (опционально для сегментированной передачи) подтверждается размер выгруженных данных. В случае успешной ускоренной (expedited) выгрузки эта служба завершает выгрузку набора данных, обозначенных мультиплексором, и соответствующие данные подтверждаются.
Таблица 9. Initiate SDO Upload.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Multiplexor
Remote Result Success Size Multiplexor Тип передачи Обычный Ускоренный Data
Наличие обязательно Обязательно Обязательно
Наличие обязательно Обязательно Не обязательно Обязательно Обязательно Выбор Выбор Обязательно
9.2.2.1.6. Upload SDO Segment. Через эту службу клиент SDO запрашивает сервер предоставить данные следующего сегмента. Параметром продолжения (continue parameter) клиент показывает, должны ли быть еще выгружены данные, или это был последний выгруженный сегмент. Может быть самое большее одна служба Upload SDO Segment, предоставленная для SDO.
Эта служба подтверждаемая (confirmed). Параметр remote result покажет успешность запроса. Случае отказа должен быть выполнен запрос Abort SDO Transfer. В случае успеха подтверждается сегмент данных и опционально подтверждается его размер.
Перед этой службой должна успешно выполниться служба Initiate SDO Upload с типом сегментированной передачи.
Таблица 10. Upload SDO Segment.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO
Remote Result Success Data Size Продолжить Есть еще сегменты Последний сегмент
Наличие обязательно Обязательно Обязательно
Наличие обязательно Обязательно Обязательно Не обязательно Обязательно Выбор Выбор
9.2.2.1.7. Abort SDO Transfer. Эта служба обрывает выгрузку или загрузку SDO, выбранную ссылкой на её номер. Опционально показывается причина обрыва. Эта служба является не подтверждаемой (unconfirmed). Служба может быть выполнена в любой момент времени обеими сторонами обмена, и клиентом, и сервером SDO. Если у клиента есть не не выполненная, подтвержденная служба SDO, для подтверждения этой службы показывается abort.
Таблица 11. Abort SDO Transfer.
Параметр
Запрос/индикация
Argument Номер SDO Multiplexor Причина
Наличие обязательно Обязательно Обязательно Обязательно
9.2.2.1.8. SDO Block Download. Через эту службу клиент SDO загружает данные на сервер SDO (владелец OD), используя протокол блочной передачи. Серверу показываются данные, мультиплексор (индекс и sub-индекс) набора данных, который загружается, и опционально их размер.
Эта служба подтверждаемая (confirmed). Параметр remote result покажет успешность или отказ запроса. В случае отказа опционально подтверждается причина ошибки.
Таблица 12. SDO Block Download.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Data Size Multiplexor
Remote Result Success Failure Причина ошибки
Наличие обязательно Обязательно Обязательно Не обязательно Обязательно
Наличие обязательно Выбор Выбор Не обязательно
9.2.2.1.9. Initiate SDO Block Download. Через эту службу клиент SDO запрашивает сервер SDO (владельца OD) подготовиться к загрузке данных на сервер. Серверу показывается мультиплексор набора данных, для которых выполняется инициация, и опционально размер загружаемых данных в байтах.
Клиент, как и сервер, показывают свою возможность и/или требование проверить целостность передачи с помощью контрольной суммы в момент окончания загрузки блока (End SDO Block Download).
Таблица 13. Initiate SDO Block Download.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Size Поддержка CRC да нет Multiplexor
Remote Result Success Поддержка CRC да нет Размер блока
Наличие обязательно Обязательно Не обязательно Обязательно Выбор Выбор Обязательно
Наличие обязательно Обязательно Обязательно Выбор Выбор Обязательно
Эта служба подтверждаемая (confirmed). Параметр Remote Result покажет успешность запроса, количество сегментов в блоке, которое сервер SDO в состоянии принять, и свою возможность и/или требование проверить целостность данных с помощью контрольной суммы. В случае отказа должен быть выполнен запрос Abort SDO Transfer.
9.2.2.1.10. Download SDO Block. С помощью этой службы клиент SDO предоставляет данные следующего блока для сервера SDO. Для сервера показываются данные блока с помощью последовательности сегментов. Каждый сегмент состоит из данных и последовательного номера, начиная с 1, который увеличивается на 1 с каждым сегментом, вплоть до blksize. Параметр blksize оговаривается между сервером и клиентом в протоколе 'Initiate Block Download', и он может быть изменен сервером на каждом подтверждении передачи блока. Параметр продолжения (continue parameter) показывает, должен ли сервер оставаться на фазе 'Download Block', или должен перейти к фазе 'End Download Block'.
Таблица 14. Download SDO Block.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Data Продолжить Есть еще сегменты Последний сегмент
Remote Result Success Ackseq Размер блока
Наличие обязательно Обязательно Обязательно Обязательно Выбор Выбор
Наличие обязательно Обязательно Обязательно Обязательно
Эта служба подтверждаемая (confirmed). Параметр Remote Result покажет успешность запроса. В случае успеха параметр ackseq покажет последовательный номер последнего сегмента, который успешно принял сервер. Если этот номер не соответствует последовательному номеру последнего сегмента, отправленного клиентом во время передачи этого блока, то клиент должен повторно передать все сегменты, отброшенные сервером в момент передачи следующего блока. В случае фатального отказа, должен быть выполнен запрос Abort SDO Transfer. В случае успеха сервер должен подтвердить все принятые данные сегментов и быть готовым к поступлению следующего блока. Для передачи SDO может быть самое большее одна служба Download SDO Block.
Перед этой службой должна быть успешно выполнена служба 'Initiate SDO Block Download'.
9.2.2.1.11. End SDO Block Download. Через эту службу завершается загрузка блока SDO (SDO Block Download). Серверу показывается количество байт, не содержащих допустимые данные в последних переданных сегментах.
Если сервер, как и клиент, показал свою возможность (или запросил её) проверки целостности данных контрольной суммой на фазе 'Initiate SDO Block Download' то клиент показывает серверу эту контрольную сумму. Сервер также должен сгенерировать контрольную сумму для сравнения с контрольной суммой, сгенерированной клиентом.
Таблица 15. End SDO Block Download.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Valid_data CRC
Remote Result Success
Наличие обязательно Обязательно Обязательно Обязательно, если объявлена поддержка
Наличие обязательно Обязательно
Эта служба подтверждаемая (confirmed). Параметр Remote Result покажет успешность запроса (с совпадением контрольных сумм, если о её проверке договорились клиент и сервер), и загрузка набора данных завершается. В случае отказа должен быть выполнен запрос Abort SDO Transfer.
9.2.2.1.12. SDO Block Upload. Через эту службу клиент SDO выгружает данные с сервера SDO (владельца OD) с помощью протокола выгрузки блока SDO (SDO block upload). Серверу показываются данные, мультиплексор (индекс и sub-индекс) набора данных, которые выгружаются на сервер, и опционально серверу показывается их размер.
Эта служба подтверждаемая (confirmed). Параметр Remote Result покажет успешность или отказ запроса. В случае отказа опционально подтверждается причина ошибки. В случае успеха подтверждаются данные и опционально их размер.
Таблица 16. SDO Block Upload.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Multiplexor
Remote Result Success Data Size Failure (ошибка) Причина ошибки
Наличие обязательно Обязательно Обязательно
Наличие обязательно Выбор Обязательно Не обязательно Выбор Не обязательно
9.2.2.1.13. Initiate SDO Block Upload. Через эту службу клиент SDO запрашивает сервер SDO (владелец OD) подготовиться к выгрузке данных для клиента. Серверу показывается мультиплексор данных, для которых инициируется выгрузка, и количество сегментов, которое клиент SDO может принять.
Серверу показывается значение порога переключения протокола (protocol switch threshold). Если количество байт, которое должно быть выгружено, меньше или равно этому значению, то сервер может опционально завершить эту передачу данных c 'SDO Upload Protocol', как это описано в 9.2.2.1.4.
Клиент, как и сервер, показывает свою возможность и/или запрашивает необходимость проверки целостности данных с помощью контрольной суммы на фазе 'End SDO Block Upload'.
Опционально для клиента показывается размер выгружаемых данных в байтах.
Таблица 17. Initiate SDO Block Upload.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Blksize Поддержка CRC да нет Multiplexor Порог
Remote Result Success Поддержка CRC да нет Size
Наличие обязательно Обязательно Обязательно Обязательно Выбор Выбор Обязательно Обязательно
Наличие обязательно Обязательно Обязательно Выбор Выбор Не обязательно
Эта служба подтверждаемая (confirmed). В случае отказа должен быть выполнен запрос Abort SDO Transfer. В случае успеха клиенту опционально показывается размер выгруженных данных в байтах. Если размер данных, которые выгружаются, меньше или равно порогу, то сервер может продолжить работу по протоколу SDO block upload. В этом случае параметр Remote Result и будущий протокол работают в соответствии с описанием в 9.2.2.2.14.
9.2.2.1.14. Upload SDO Block. Через эту службу клиент SDO выгружает данные следующего блока с сервера SDO. Клиенту показывается блок данных с помощью следующих друг за другом сегментов. Каждый сегмент состоит из данных сегмента и последовательного номера, начинающегося с 1, и увеличивающегося на 1 с каждым сегментом, вплоть до blksize. Параметр blksize оговаривается между сервером и клиентом в протоколе 'Initiate Block Upload', и он может быть изменен клиентом с каждым подтверждением передачи блока. Параметр continue показывает клиенту, должен ли он оставаться на фазе 'Upload Block', или следует перейти к фазе 'End Upload Block'.
Таблица 18. Upload SDO Block.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Data Продолжить Есть еще сегменты Последний сегмент
Remote Result Success Ackseq Blksize
Наличие обязательно Обязательно Обязательно Обязательно Выбор Выбор
Наличие обязательно Обязательно Обязательно Обязательно
Эта служба подтверждаемая (confirmed). Параметр Remote Result покажет успешность запроса. В случае успеха параметр ackseq покажет последовательный номер последнего сегмента, который успешно принял клиент. Если этот номер не соответствует последовательному номеру последнего сегмента, отправленного сервером во время передачи этого блока, то сервер должен повторно передать все сегменты, отброшенные клиентом в момент передачи следующего блока. В случае фатального отказа должен быть выполнен запрос Abort SDO Transfer. В случае успеха клиент должен подтвердить все принятые данные сегментов, и быть готовым к поступлению следующего блока. Для передачи SDO может быть самое большее одна служба Download SDO Block.
Перед этой службой должна быть успешно выполнена служба 'Initiate SDO Block Upload'.
9.2.2.1.15. End SDO Block Upload. Через эту службу завершается выгрузка блока (SDO Block Upload). Клиенту показывается количество байт, не содержащих допустимые данные в последних переданных сегментах.
Если сервер, как и клиент, показал свою возможность (или запросил её) проверки целостности данных контрольной суммой на фазе 'Initiate SDO Block Upload' то сервер показывает клиенту эту контрольную сумму. Клиент также должен сгенерировать эту контрольную сумму для сравнения с контрольной суммой, сгенерированной сервером.
Таблица 19. End SDO Block Upload.
Параметр
Запрос/индикация
Ответ/подтверждение
Argument Номер SDO Valid_data CRC
Remote Result Success
Наличие обязательно Обязательно Обязательно Обязательно, если объявлена поддержка
Наличие обязательно Обязательно
Эта служба подтверждаемая (confirmed). Параметр Remote Result покажет успешность запроса (с совпадением контрольных сумм клиента и сервера, если это запрашивалось), и загрузка набора данных завершается. В случае отказа должен быть выполнен запрос Abort SDO Transfer.
9.2.2.2. Протоколы SDO. Для SDO определены 6 подтверждаемых служб (SDO Download, SDO Upload, Initiate SDO Upload, Initiate SDO Download, Download SDO Segment и Upload SDO Segment), и одна не подтверждаемая служба (Abort SDO Transfer), которые осуществляют стандартную сегментированную/ускоренную (standard segmented/expedited) передачу. 8 подтверждаемых служб определены для SDO (SDO Block Download, SDO Block Upload, Initiate SDO Upload, Initiate SDO Block Download, Download SDO Segment, Upload SDO Segment, End SDO Upload и End SDO Block Download) и одна не подтверждаемая служба, которые осуществляют опциональную блочную передачу.
Этот протокол используется для реализации службы SDO Download. Объекты SDO загружаются как последовательность 0 или большего количества служб Download SDO Segment, перед которым была служба Initiate SDO Download. Эта последовательность завершается через:
• Запросом/индикацией Initiate SDO Download с e-битом, установленным 1, за которым идет ответ/подтверждение Initiate SDO Download, показывающее успешное завершение ускоренной (expedited) последовательности загрузки. • Запросом/подтверждением Download SDO Segment с c-битом, установленным в 1, показывающим успешное завершение обычной (не ускоренной) последовательности загрузки. • Запросом/индикацией Abort SDO Transfer, показывающим не успешное завершение последовательности загрузки. • Новым запросом/индикацией Initiate Domain Download, показывающим завершение по ошибке последовательности загрузки и запуск новой последовательности загрузки.
Если при загрузке следующих друг за другом сегментов бит toggle не изменился, то содержимое последнего сегмента игнорируется. Если о такой ошибке сообщено приложению, то приложение может принять решение оборвать загрузку (abort).
• scs: server command specifier (команда сервера) 3: initiate download response (инициировать ответ на загрузку)
• n: допустимо только если e = 1 и s = 1, иначе 0. Если допустимо, то это показывает количество байт в d, которое не содержит данных. Байты [8-n, 7] не содержат данных.
• e: тип передачи 0: normal transfer (нормальная передача) 1: expedited transfer (ускоренная передача)
• s: индикатор размера 0: размер набора данных не показан 1: указан размер набора данных
• m: multiplexor. Он представляет индекс/sub-индекс данных для передачи объектом SDO.
• d: data (данные) e = 0, s = 0: d зарезервирован для будущего использования. e = 0, s = 1: d содержит количество байт для загрузки. Байт 4 содержит младшие биты, и байт 7 содержит старшие биты. e = 1, s = 1: d содержит данные для загрузки, длина которых равна 4-n. Кодирование данных зависит от типа данных. К данным ссылаются по индексу и sub-индексу. e = 1, s = 0: d содержит не указанное количество байт для загрузки.
• X: не используется, всегда 0.
• reserved: зарезервировано для будущего использования, всегда 0.
• scs: server command specifier (команда сервера) 1: download segment response (ответ на загрузку сегмента)
• seg-data: здесь могут быть максимум 7 байт данных сегмента для загрузки. Кодирование этих байт зависит от данных, которые были запрошены индексом и sub-индексом.
• n: показывает количество байт в seg-data, которые не содержат данных сегмента. Байты [8-n, 7] не содержат данных сегмента. n = 0, если не показан размер сегмента.
• c: показывает, должны ли быть ещё сегменты для загрузки. 0: будут еще сегменты для загрузки 1: больше не будет сегментов для загрузки
• t: бит toggle. Этот бит должен переключаться с каждым последующим загружаемым сегментом. В первом сегменте бит toggle устанавливается в 0. Бит toggle будет совпадать для сообщения запроса и для сообщения ответа.
• X: не используется, здесь всегда 0.
• reserved: зарезервировано для будущего использования, всегда 0.
Этот протокол используется для реализации службы SDO Upload (выгрузка SDO). SDO выгружается как последовательность 0 или большего количества служб Upload SDO Segment, перед которыми предшествовала служба Initiate SDO Upload. Последовательность выгрузки прерывается следующим:
• Ответ/подтверждение на Initiate SDO Upload, где бит e установлен в 1, что показывает успешное завершение ускоренной (expedited) последовательности выгрузки. • Ответ/подтверждение на Upload SDO Segment, где бит c установлен в 1, показывая тем самым успешное завершение обычной (не ускоренной) последовательности выгрузки. • Запрос/индикация Abort SDO Transfer, что показывает не успешное завершение последовательности выгрузки. • Новый запрос/индикация Initiate SDO Upload, что показывает не успешное завершение текущей последовательности выгрузки и запуск новой последовательности.
Если при выгрузке следующих друг за другом сегментов бит toggle не поменялся, то содержимое последнего сегмента игнорируется. Если такая ошибка сообщена приложению, то приложение может принять решение прервать (abort) выгрузку.
• scs: server command specifier (команда сервера) 2: initiate upload response (ответ на команду инициировать выгрузку)
• n: допустимо только если e = 1 и s = 1, иначе 0. Если допустимо, то показывает количество байт, которое не содержит данные. Байты [8-n, 7] не содержат данные сегмента.
• e: тип передачи 0: normal transfer (обычная передача) 1: expedited transfer (ускоренная передача)
• s: индикатор размера 0: размер набора данных не показан 1: показан размер набора данных
• m: multiplexor. Он представляет индекс / sub-индекс данных для передачи объектом SDO.
• d: data (данные) e = 0, s = 0: d зарезервировано для использования в будущем. e = 0, s = 1: d содержит количество байт для выгрузки. Байт 4 содержит младшие биты, и байт 7 старшие биты. e = 1, s = 1: d содержит длину данных 4-n для выгрузки кодирование зависит от типа данных, к которым было обращение по индексу и sub-индексу. e = 1, s = 0: d содержит не указанное количество байт для выгрузки.
• X: не используется, здесь всегда 0.
• reserved: зарезервировано для будущего использования, всегда 0.
• scs: server command specifier (команда сервера) 3: download segment response (ответ на выгрузку сегмента)
• t: бит toggle. Этот бит должен переключаться с каждым последующим выгружаемым сегментом. В первом сегменте бит toggle устанавливается в 0. Бит toggle будет совпадать для сообщения запроса и для сообщения ответа.
• c: показывает, должны ли быть ещё сегменты для выгрузки. 0: будут еще сегменты для выгрузки 1: больше не будет сегментов для выгрузки
• seg-data: здесь могут быть максимум 7 байт данных сегмента для выгрузки. Кодирование этих байт зависит от данных, которые были запрошены индексом и sub-индексом.
• n: показывает количество байт в seg-data, которые не содержат данных сегмента. Байты [8-n, 7] не содержат данных сегмента. n = 0, если не показан размер сегмента.
• X: не используется, здесь всегда 0.
• reserved: зарезервировано для будущего использования, всегда 0.
Этот протокол используется для реализации службы SDO Block Download. Объекты SDO загружаются как последовательность служб Download SDO Block, перед которой запускается служба Initiate SDO Block Download. Последовательность SDO Download Block завершается:
• загруженным сегментом, где c-бит установлен в 1, показывая этим завершение последовательности загрузки блока, или
Вся служба SDO Block Download завершается службой End SDO Block Download. Если клиент, как и сервер, показал возможность генерировать CRC во время службы Initiate SDO Block Download, то сервер сгенерировал CRC на принятых данных. Если эта CRC отличается от CRC, которую сгенерировал клиент, то сервер покажет это индикацией Abort SDO Transfer.
• cc: поддержка CRC клиентом cc = 0: клиент не поддерживает генерацию CRC по данным cc = 1: клиент поддерживает генерацию CRC по данным
• sc: поддержка CRC сервером sc = 0: сервер не поддерживает генерацию CRC по данным sc = 1: сервер поддерживает генерацию CRC по данным
• m: multiplexor. Он представляет индекс/sub-индекс данных для передачи объектом SDO.
• size: загружаемый размер в байтах s = 0: size резервируется для использования в будущем, всегда 0 s = 1: size содержит количество байт для загрузки. Байт 4 содержит младший байт, и байт 7 старший байт.
• blksize: количество сегментов на блок, 0 < blksize < 128.
• X: не используется, всегда 0
• reserved: резервировано для использования в будущем, всегда 0
• ss: server subcommand (sub-команда сервера) 2: block download response (ответ на загрузку блока)
• c: показывает, есть ли еще сегменты для загрузки 0: есть еще сегменты для загрузки 1: больше нет сегментов для загрузки, вход в фазу загрузки End SDO block download (окончание загрузки блока)
• seqno: последовательный номер сегмента, 0 < seqno < 128.
• seg-data: как минимум 7 байт данных загружаемого сегмента.
• ackseq: последовательный номер последнего сегмента, который был принят во время последней загрузки блока. Если ackseq установлен в 0, то сервер показывает клиенту, что сегмент с последовательным номером 1 не был корректно принят, и все сегменты должны быть повторно переданы клиентом.
• blksize: количество сегментов на блок, которое должен использовать клиент при последующей загрузке блока, 0 < blksize < 128.
• X: не используется, всегда 0
• reserved: резервировано для использования в будущем, всегда 0
• ss: server subcommand (sub-команда сервера) 1: ответ на окончание загрузки блока
• n: показывает количество байт в последнем сегменте последнего блока, которое не содержит данных. Байты [8-n, 7] не содержат данные сегмента.
• crc: 16-битная контрольная сумма (Cyclic Redundancy Checksum, CRC) для всего набора данных. Алгоритм генерации CRC описан в 9.2.2.2.16. CRC допустима только если в протоколе Initiate Block Download поля cc и sc установлены в 1, иначе CRC должна быть установлена в 0.
• X: не используется, всегда 0
• reserved: резервировано для использования в будущем, всегда 0
Этот протокол используется для реализации службы SDO Block Upload, которая начинается со службы Initiate SDO Block Upload. Клиент может показать пороговое значение для сервера, которое минимальное значение в байтах для увеличения производительности передачи с помощью использования протокола SDO Block Upload вместо протокола SDO Upload. Если размер набора данных меньше или равен этому значению, то сервер может продолжить с нормальной или ускоренной (expedited) передачей протокол SDO Block Upload.
Иначе объекты SDOs выгружаются как последовательность Upload SDO Block служб. Последовательность SDO Upload Block завершается:
• выгруженным сегментом в блоке с c-битом, установленным в 1, показывая тем самым завершение последовательности выгрузки блока.
• запросом/индикацией Abort SDO Transfer, которые показывают не успешное завершение последовательности выгрузки.
Вся служба SDO Block Upload завершается службой End SDO Block Upload. Если клиент, как и сервер, показал возможность генерировать CRC во время службы Initiate SDO Block Upload, то клиент сгенерировал CRC на принятых данных. Если эта CRC отличается от CRC, которую сгенерировал сервер, то клиент покажет это индикацией Abort SDO Transfer.
Этот протокол используется для реализации службы Initiate SDO Block Upload. Если значение параметра порога переключения протокола (Protocol Switch Threshold), показанный клиентом в первом запросе, оказался меньше или равным размеру набора данных для выгрузки, то сервер может продолжить выгрузку с протоколом SDO Upload, как это описано в 9.2.2.2.4.
• ss: server subcommand (sub-команда сервера) 0: ответ на инициацию выгрузки
• m: multiplexor. Он представляет индекс/sub-индекс данных для передачи объектом SDO.
• cc: поддержка CRC клиентом cc = 0: клиент не поддерживает генерацию CRC по данным cc = 1: клиент поддерживает генерацию CRC по данным
• sc: поддержка CRC сервером sc = 0: сервер не поддерживает генерацию CRC по данным sc = 1: сервер поддерживает генерацию CRC по данным
• pst: Protocol Switch Threshold (порог переключения протокола) в байтах, чтобы поменять протокол передачи SDO. pst = 0: изменение протокола не разрешено. pst > 0: если размер данных в байтах для выгрузки меньше или равно pst, то сервер может опционально переключиться на протокол SDO Upload путем передачи сервером ответа 'SDO Upload Protocol', как это описано в 9.2.2.2.4.
• s: индикатор размера 0: размер набора данных не показан 1: показан размер набора данных
• size: выгружаемый размер в байтах s = 0: size резервирован для будущего использования, всегда 0 s = 1: size содержит количество байт для выгрузки. Байт 4 содержит младший байт, байт 7 содержит старший байт.
• blksize: количество сегментов на блок, 0 < blksize < 128.
• X: не используется, всегда 0
• reserved: резервировано для использования в будущем, всегда 0
• c: показывает, есть ли еще сегменты для выгрузки 0: есть еще сегменты для выгрузки 1: больше нет сегментов для выгрузки, вход в фазу End block upload
• seqno: последовательный номер сегмента, 0 < seqno < 128.
• seg-data: самое большее 7 байт данных сегмента для выгрузки.
• ackseq: последовательный номер последнего сегмента, который был успешно принят во время последней выгрузки блока. Если ackseq установлен в 0, то клиент показывает серверу, что сегмент с последовательным номером 1 не было принят корректно, и все сегменты должны быть повторно переданы сервером.
• blksize: количество сегментов на блок, которое должно использоваться сервером для следующей выгрузке блока, 0 < blksize < 128.
• X: не используется, всегда 0
• reserved: резервировано для использования в будущем, всегда 0
• ss: server subcommand (sub-команда сервера) 1: ответ на окончание выгрузки блока
• n: показывает количество байт в последнем сегменте, последнего блока, которое не содержит данных. Байты [8-n, 7] не содержат данные сегмента.
• crc: 16-битная контрольная сумма (Cyclic Redundancy Checksum, CRC) всего набора данных. Алгоритм для генерации CRC описан в 9.2.2.2.16. CRC допустима только если в службе Initiate Block Upload поля cc и sc установлены в 1, иначе CRC должна быть установлена в 0.
• X: не используется, всегда 0
• reserved: резервировано для использования в будущем, всегда 0
Чтобы проверить корректность выгрузки/загрузки блока SDO, клиент и сервер вычисляют контрольную сумму (CRC) значением которой обмениваются в протоколе End SDO Block Download/End SDO Block Upload. Накопление CRC происходит по полиному x^16 + x^12 + x^5 + 1, с начальным значением 0.
9.2.3. Объект синхронизации (SYNC). Объект синхронизации периодически и широковещательно передается SYNC-продюсером всем узлам сети. Этот SYNC предоставляет базовые такты для сети. Период времени между SYNC-ами указаны стандартным параметром периода цикла коммуникации (см. Object 1006h: Communication Cycle Period), который может быть записан инструментом конфигурирования в устройства приложения во время процесса их загрузки (boot-up process). Здесь может присутствовать джиттер (дрожание интервала) времени в передаче SYNC продюсером, соответствующий приблизительно латентности из-за того, что некоторые другие сообщения могут быть переданы перед SYNC.
Чтобы гарантировать достаточно точный доступ по времени к шине CAN, сообщению SYNC дается очень высокий идентификатор приоритета (1005h). Устройства, которые работают синхронно, могут использовать объект SYNC для синхронизации своих собственных процессов по сигналам продюсера синхронизации. Как именно будет осуществляться синхронизация зависит от самого устройства, и обсуждение этого вопроса выходит за рамки нашего обсуждения. Устройства, которые требуют более точной базы времени, могут использовать механизм синхронизации высокого разрешения, описанный в 9.3.2.
9.2.3.1. Службы SYNC. Передача SYNC следует push-модели producer/consumer, как это описано в 6.3.3. Эта служба является не подтверждаемой.
Атрибуты:
- user type: тип пользователя, одно из значений {consumer, producer} - data type: тип данных, nil
9.2.3.2. Протокол SYNC. Определена одна не подтверждаемая служба (Write SYNC).
Рис. 31. Протокол SYNC.
SYNC не переносит в себе никаких данных (L=0). Идентификатор объекта SYNC размещен по индексу объекта 1005h в словаре OD устройства.
9.2.4. Time Stamp Object (TIME). С помощью объекта метки времени (Time Stamp Object) для устройств предоставляется общий эталон времени. Он содержит значение типа TIME_OF_DAY. Идентификатор объекта TIME находится в OD по индексу 1012h.
9.2.4.1. Службы TIME. Передача объекта Time Stamp следует push-модели producer/consumer, как это описано в 6.3.3. Эта служба не подтверждаемая.
Атрибуты:
- user type: тип пользователя, одно из значений {consumer, producer} - data type: тип данных, TIME_OF_DAY
9.2.4.2. Протокол TIME. Определена одна не подтверждаемая служба (Write TIME).
9.2.5.1. Использование объекта EMCY. Объекты Emergency (авария) срабатывают при возникновении ошибки, обнаруженной устройством, и они передаются продюсером аварии (emergency producer) устройства. Объекты аварии подходят для оповещений об ошибках наподобие прерываний. Объект EMCY передается только один раз на событие ошибки (error event). Больше не должны передаваться объекты EMCY, пока не появятся новые ошибки устройства. Объект EMCY может быть не принят никем, либо одним или большим количеством потребителей. Реакция потребителя (потребителей) EMCY не задана, и не попадает в область рассмотрения этого документа. Заданы смысловые значения кодов ошибки аварии (таблица 21) и регистр ошибки (error register, таблица 48). Дополнительная специфическая информация устройства и условия возникновения аварии не попадают в область рассмотрения этой спецификации.
Error Reset or No Error (сброс ошибки или нет ошибки)
10xx
Generic Error (обычная ошибка)
20xx 21xx 22xx 23xx
Current (ток) на входе устройства внутри устройства на выходе устройства
30xx 31xx 32xx 33xx
Voltage (напряжение) Mains Voltage (главное напряжение) внутри устройства на выходе
40xx 41xx 42xx
Temperature (температура) Ambient Temperature (окружающего воздуха) Device Temperature (устройства)
50xx
Device Hardware (аппаратура устройства)
60xx 61xx 62xx 63xx
Device Software (программное обеспечение устройства) Internal Software (внутреннее) User Software (пользовательское) Data Set (набор данных)
70xx
Additional Modules (дополнительные модули)
80xx 81xx 8110 8120 8130 8140 8150 82xx 8210 8220
Monitoring (слежение) Communication (за обменом данными) CAN Overrun (переполнение данных, потеря объектов) CAN in Error Passive Mode (ошибка пассивного режима) Life Guard Error or Heartbeat Error (ошибка проверки узлов сети) Recovered from bus off (восстановление после отключения шины) Transmit COB-ID collision (коллизия идентификаторов передачи) Protocol Error (ошибка протокола) PDO not processed due to length error (PDO не обработан из-за ошибки длины) PDO length exceeded (превышена длина PDO)
90xx
External Error (внешняя ошибка)
F0xx
Additional Functions (дополнительные функции)
FFxx
Device specific (ошибка, специфическая для устройства)
Объект аварии не обязателен. Если устройство поддерживает объект аварии, то оно должно поддерживать как минимум 2 кода ошибки 00xx и 10xx. Все другие коды ошибки являются необязательными.
Устройство может иметь одно из двух состояний аварии (emergency states, рис. 33). В зависимости от переходов между состояниями будут отправляться объекты аварии. Связи между машиной состояний ошибок и машиной состояний NMT определена в профилях устройства.
0. После инициализации устройство входит в состояние без ошибки, если не было определено ни одной ошибки. Не будет отправлено сообщение об ошибке.
1. Устройство определило внутреннюю ошибку, которая показывается в первых 3 байтах сообщения аварии (error code и error register). Устройство входит в состояние ошибки (error state). Передается объект аварии с соответствующим кодом ошибки (error code) и регистром ошибки (error register). Код ошибки заполняется в объект 1003H (заранее определенное поле ошибки).
2. Одна, но не все причины ошибки были переданы. Может быть отправлено сообщение ошибки, содержащее код ошибки 0000 (Error reset) вместе с оставшимися ошибками в регистре ошибки и в специфическом для производителя поле ошибки.
3. Произошла новая ошибка на устройстве. Устройство остается в состоянии ошибки, и передает объект аварии с соответствующим кодом новой ошибки. Код новой ошибки заполняется на вершине массива кодов ошибок (1003H). Это дает гарантию, что коды ошибки будут сортированы по времени возникновения (самая старая ошибка получит самый большой sub-индекс, см. Object 1003H).
4. Все ошибки исправлены. Устройство входит в состояние без ошибок, и передает объект аварии с кодом ошибки (reset error / no error).
Рис. 33. Диаграмма перехода между состояниями аварии.
9.2.5.2. Emergency Object Data. Телеграмма аварии состоит из 8 байтов с данными, показанными на рис. 34.
Байт
0
1
2
3
4
5
6
7
Содержимое
Emergency Error Code (см. таблицу 21)
Регистр ошибки (объект 1001h)
Поле ошибки, специфическое для производителя
Рис. 34. Emergency Object Data (данные объекта аварии).
9.2.5.3. Emergency Object Services. Передача объекта аварии следует push-модели nbgf "producer – consumer", как описано в 6.3.3. Для объекта аварии заданы следующие атрибуты:
user type: notifying device: producer receiving devices: consumer
data type: STRUCTURE OF UNSIGNED(16) emergency_error_code, UNSIGNED(8) error_register, ARRAY (5) of UNSIGNED(8) manufacturer_specific_error_field
inhibit time: Application specific
9.2.5.4. Emergency Object Protocol. Определена одна не подтверждаемая служба (Write EMCY).
Рис. 35: Протокол Emergency Object.
Не допускается запрашивать объект аварии через запрос RTR.
Система управления сетью (Network Management, NMT) ориентирована на узлы сети, и следует модели master-slave. Объекты NMT используются для запуска служб NMT. Через службы NMT узлы инициализируются, запускаются, мониторятся, сбрасываются или останавливаются. Все узлы по отношению к NMT считаются подчиненными. NMT Slave уникально идентифицируется в сети по своему Node-ID (значение в диапазоне 1..127).
NMT требует, чтобы одно из устройств в сети выполняло функцию NMT.
9.2.6.1. Службы NMT
9.2.6.1.1. Module Control Services. С помощью службы управления модулями NMT master управляет состоянием устройств NMT slave. Атрибут состояния может быть одним из значений {STOPPED, PRE-OPERATIONAL, OPERATIONAL, INITIALISING}. Module Control Services могут быть выполнены над одним определенным узлом или над всеми узлами сети одновременно. NMT master управляет своей собственной машиной состояний NMT через локальные службы, зависящие от реализации. Module Control Services, кроме службы Start Remote Node, могут быть инициированы локальным приложением.
Start Remote Node
Через эту службу NMT Master устанавливает состояние выбранных узлов NMT Slaves в состояние OPERATIONAL.
Argument Node-ID (идентификатор узла) All (все узлы)
Наличие обязательно выбор выбор
Эта служба не подтверждаемая, и её наличие обязательно. После завершения службы состояние выбранных узлов сети (remote nodes) будет STOPPED.
Enter Pre-Operational
Через эту службу NMT устанавливает состояние выбранного узла NMT Slave (или узлов) в состояние PREOPERATIONAL.
Таблица 24. Enter Pre-Operational (вход в предварительное рабочее состояние).
Параметр
Запрос/индикация
Argument Node-ID (идентификатор узла) All (все узлы)
Наличие обязательно выбор выбор
Эта служба не подтверждаемая, и её наличие обязательно. После завершения службы состояние выбранных узлов сети (remote nodes) будет PRE-OPERATIONAL.
Reset Node
Через эту службу NMT переводит состояние выбранного узла NMT Slave (или узлов) из любого состояния в промежуточное состояние "сброс приложения".
Таблица 25. Reset Node (сброс узла).
Параметр
Запрос/индикация
Argument Node-ID (идентификатор узла) All (все узлы)
Наличие обязательно выбор выбор
Эта служба не подтверждаемая, и её наличие обязательно. После завершения службы состояние выбранных узлов сети (remote nodes) будет RESET APPLICATION.
Reset Communication
Через эту службу NMT переводит состояние выбранного узла NMT Slave (или узлов) из любого состояния в промежуточное состояние "сброс обмена данными". После завершения этой службы выбранные узлы сети будут в состоянии RESET COMMUNICATION.
Таблица 26. Reset Communication (сброс обмена данными).
Параметр
Запрос/индикация
Argument Node-ID (идентификатор узла) All (все узлы)
Наличие обязательно выбор выбор
Эта служба не подтверждаемая, и её наличие обязательно для всех устройств.
9.2.6.1.2. Error Control Services. Через службы контроля ошибок NMT определяет отказы в сети CAN. Локальные ошибки на узле могут, например, приводить к сбросу или изменению состояния узла. Определение локальных ошибок не попадает в область рассмотрения этой спецификации.
Службы Error Control реализованы по принципу периодической отправки сообщений устройством. Имеется 2 варианта выполнения Error Control.
Так называемая защита (guarding) достигается передачей запросов guarding (протокол Node guarding) от устройства NMT Master. Если устройство NMT Slave не отвечает в определенный интервал времени (node life time, время жизни узла), или если неожиданно поменялся статус коммуникации NMT Slave, то NMT Master информирует свое приложение об этом событии.
Если поддерживается Life guarding (устройство NMT slave защищает устройство NMT master), то slave-устройство использует время защиты (guard time) и множитель времени жизни (lifetime factor) из своего OD, чтобы определить время жизни узла. Если NMT Slave оказался не защищен за это время жизни, то NMT Slave оповещает свое локальное приложение об этом событии. Если параметры guard time и life time factor равны 0 (значения по умолчанию), то NMT Slave не защищает NMT Master.
Защита запускается для slave, когда принят первый запрос на передачу для его guarding-идентификатора. Это может произойти на фазе загрузки (boot-up) или позже.
Механизм heartbeat устанавливается через циклическую передачу сообщения от heartbeat-продюсера. Одно или большее количество устройств в сети знают об этом сообщении подтверждения работоспособности. Если цикл heartbeat был нарушен для heartbeat-продюсера, то локальное приложение heartbeat-потребителя будет оповещено об этом событии.
Реализация либо системы guarding, либо heartbeat является обязательной.
Node Guarding Event. Через эту службу провайдер службы NMT показывает, что произошла ошибка сетевого узла, ли она была разрешена для узла, идентифицированного по Node-ID.
Таблица 27. Node Guarding Event (событие защиты узла).
Наличие обязательно обязательно обязательно выбор выбор
Эта служба инициируется провайдером и является опциональной.
Life Guarding Event. Через эту службу провайдер службы NMT на устройстве NMT Slave показывает, что произошла ошибка сетевого узла, или она была исправлена.
Таблица 28. Life Guarding Event (событие охраны жизнеспособности узла).
Параметр
Индикация
Argument State (состояние узла) Occurred (произошло) Resolved (обработано)
Наличие обязательно обязательно выбор выбор
Эта служба инициируется провайдером и является опциональной.
Heartbeat Event. Через эту службу потребитель Heartbeat показывает, что произошла ошибка heartbeat, или эта ошибка была исправлена на узле, идентифицированном по Node-ID.
Протокол Reset Communication. Этот протокол используется для реализации службы Reset Communication.
Рис. 40. Протокол Reset Communication.
cs: NMT command specifier (команда NMT) 130: Reset Communication (сброс обмена данными)
9.2.6.2.2. Протоколы Error Control
Протокол Node Guarding. Этот протокол используется для определения сетевых ошибок (remote errors). Каждое устройство NMT Slave использует один remote COB-ID для протокола Node Guarding. Этот протокол реализует инициируемые провайдером службы Error Control.
Рис. 41. Протокол Node Guarding.
Примечание *: если произошла ошибка защиты (guarding error).
s: состояние NMT 4: STOPPED 5: OPERATIONAL 127: PRE-OPERATIONAL
t: toggle bit. Значение этого бита должно каждый раз меняться между двумя соседними ответами от NMT Slave. Значение бита toggle первого ответа после активизации протокола Guarding будет равно 0. Toggle Bit в протоколе guarding сбрасывается в 0 только когда передан reset_communication (никакие другие переходы между состояниями узла не сбрасывают бит toggle). Если принят ответ с тем же самым значением бита toggle, как и в предыдущем ответе, то тогда новый ответ обрабатывается как пропуск сообщения ответа.
NMT Master опрашивает каждый узел NMT Slave с регулярными интервалами времени. Этот интервал называется guard time, и он может отличаться для каждого NMT Slave. Ответ от NMT Slave содержит его состояние. Параметр времени жизни (node life time) узла дается как guard time, умноженное на life time factor. Время жизни узла может отличаться для каждого NMT Slave. Если NMT Slave не был опрошен в свой интервал времени life time, будет показана ошибка дальнего узла (remote node error) через службу Life Guarding Event. Ошибка remote node error показывается через службу Node guarding event, если:
• Запрос RTR не был подтвержден за время node life time. • Состояние, сообщенное NMT slave, не соответствует ожидаемому.
Если была индикация, что произошла ошибка remote error, и ошибки в протоколе guarding исчезли, то это будет показано как исправление remote error с помощью служб Node Guarding Event и Life Guarding Event.
Для интервала guard time и для life time factor имеются значения по умолчанию, заданные в соответствующих элементах OD.
Протокол Heartbeat. Этот протокол определяет службу контроля ошибок (Error Control Service) без необходимости посылать фреймы RTR. Продюсер Heartbeat циклически передает сообщение Heartbeat. Один или большее количество потребителей Heartbeat принимают эту индикацию. Взаимодействие между продюсером и потребителем конфигурируется через OD. Потребитель Heartbeat защищает прием Heartbeat в пределах интервала Heartbeat Consumer Time. Если сообщение Heartbeat не было принято в этом интервале, то генерируется Heartbeat Event, сообщающее об ошибке.
Если Heartbeat Producer Time сконфигурировано на устройстве, то протокол Heartbeat немедленно начинает работу. Если устройство запускается со значением для Heartbeat Producer Time, не равным 0, то протокол Heartbeat запускается в момент перехода из состояния INITIALISING в состояние PRE-OPERATIONAL. В этом случае сообщение Bootup считается как первое сообщение heartbeat. Не разрешено для одного устройства использовать оба механизма защиты одновременно, Guarding Protocol и Heartbeat Protocol. Если интервал Heartbeat Producer Time не равен 0, то для защиты используется протокол Heartbeat.
9.2.6.2.3. Протокол Bootup. Этот протокол используется для сигнала о том, что устройство NMT slave вошло в состояние узла PRE-OPERATIONAL перед тем, как оно было в состоянии INITIALISING. Протокол использует тот же идентификатор, что и протоколы контроля ошибок.
Рис. 43. Протокол Bootup.
Передается 1 байт данных со значением 0.
[9.3. Синхронизация потребителя SYNC]
9.3.1. Передача синхронных сообщений PDO. Синхронность передачи сообщения (полезной нагрузки протокола) означает, что передача сообщения фиксирована по времени относительно передачи специального сообщения синхронизации (SYNC). Синхронное сообщение передается в указанном окне времени относительно появления сообщения SYNC, и самое большее передается 1 раз за каждый период SYNC.
В целом фиксация времени передачи синхронных сообщений PDO вместе с периодической передачей SYNC гарантируют, что устройства сети могут расположить во времени свои процессы оцифровки (обработки) данных для переменных процесса, и применить запуск своих действий скоординированным способом. Устройство, потребляющее сообщения SYNC, будет также синхронно предоставлять свои сообщения PDO. Прием сообщения SYNC управляет моментом, когда приложение будет взаимодействовать со своим рабочим окружением процесса в контексте генерации содержимого для своих синхронных PDO. Механизм синхронизации предназначен для передачи командующих значений и действительных значений в фиксированной по времени базе.
Обычно синхронный PDO с командным значением будет принят перед SYNC. Потребляющее SYNC устройство будет активировано на базе этого синхронного PDO в момент следующего сообщения SYNC. Прием SYNC также запросит устройство, работающее в циклическом режиме, оцифровать свои данные обратной связи и передать впоследствии синхронное PDO с актуальным значением как можно скорее. В зависимости от своих возможностей, устройство также может быть параметризировано с периодом времени окна синхронизации после сообщения SYNC, в котором гарантируется, что поступило её управляющее значение. Таким образом, это может обеспечить любую обработку том на управляющем значении, которое требовалось, чтобы управление было применено на следующем сообщении SYNC.
Рис. 44. Синхронизация и активация шины.
Рис. 45. Синхронизация шины и оцифровка данных (Sampling).
9.3.2. Не обязательный протокол точной синхронизации (Optional High Resolution Synchronisation Protocol). Сообщение синхронизации не несет в себе данных, и его просто генерировать. Однако джиттер этого SYNC зависит от скорости шины, потому что даже очень высокоприоритетное сообщение SYNC будет ждать момента окончания передачи текущего сообщения на шине, чтобы получить к ней доступ.
Некоторые критичные по времени приложения, особенно в больших сетях с уменьшенными скоростями передачи, требуют более точную синхронизацию; для них может потребоваться синхронизировать локальные такты с точностью порядка микросекунд. Это достигается с помощью опционального протокола высокоточной синхронизации, который использует специальную форму сообщения метки времени (см. рис. 46), чтобы подстроить неизбежный дрейф локальных тактов.
SYNC-продюсер меток времени генерирует их прерыванием в момент t1 путем успешной передачи сообщения SYNC (это занимает время до t2). После этого (в момент t4) он сообщает сообщение метки времени, содержащее скорректированную метку времени (t1) для индикации успешной передачи SYNC. Потребитель SYNC, который берет локальные метки времени (t3) на приеме (t1) SYNC, теперь может сравнить свою скорректированную метку времени (t1) с принятой в сообщении метки времени, поступившем от SYNC-продюсера. Разница между этими значениями определяет величину времени, на которую нужно подстроить свою локальную тактовую частоту. С этим протоколом критичны по времени только локальные задержки (t2-t1 в продюсере SYNC и t3-t1 в потребителе SYNC). Эти задержки зависят от локальных параметров (таких как задержки обработки прерывания и задержки аппаратуры) на узлах, которые можно определить один раз заранее. Точность этого определения специфична для определенной реализации, она формирует ограничивающий фактор точности синхронизации (или подстройки тактов). Имейте в виду, что только каждый узел может знать свою собственную задержку, так как сообщение метки времени содержит скорректированное значение t1, а не t2.
Метка времени (time-stamp) закодирована как UNSIGNED32 с разрешающей способностью 1 микросекунда. Это означает, что счетчик времени перезапускается (начинает счет от нуля) через каждые 72 минуты. Это конфигурируется путем отображения на PDO метки времени высокого разрешения.
Имеет смысл повторить подстройку тактов только тогда, когда максимальный уход локальной тактовой частоты превысит точность синхронизации. Для большинства реализаций это означает, что достаточно добавить это сообщение метки времени к стандартному SYNC через каждую секунду.
Этот принцип позволяет достичь синхронизации лучше, чем можно достичь при синхронизации на основе шины, особенно когда реализованы контроллеры CAN, которые поддерживают метки времени. Обратите внимание, что точность описанной синхронизации почти не зависит от скорости передачи. Дальнейшее увеличение точности требует отдельной аппаратуры (например, дополнительных проводов).
Рис. 46. Не обязательный протокол High Resolution Synchronisation.
[9.4. Инициализация сети и загрузка системы (System Boot-Up)]
9.4.1. Процедура инициализации. На рис. 47 показан общий алгоритм процесса инициализации сети, управляемый приложением мастера NMT или конфигурирующим приложением.
Рис. 47. Диаграмма процесса инициализации сети.
На шаге A устройства находятся в состоянии узла PRE-OPERATIONAL, в которое они входят автоматически после включения питания. В этом состоянии устройства доступны через их Default-SDO при использовании идентификаторов, которые были назначены в соответствии с принципом Predefined Connection Set. На этом шаге конфигурация параметров устройства осуществляется на всех узлах, которые поддерживают конфигурацию параметра.
Это осуществляется специальным конфигурирующим приложением или инструментарием, которое находится на узле, являющемся клиентом для объектов SDO по умолчанию. Для устройств, которые поддерживают эти функции выбора и/или конфигурирования объектов PDO, отображение объектов приложения (PDO mapping), конфигурирование дополнительных SDO и опционально установку идентификаторов COB-ID, все это конфигурирование может быть осуществлено через объекты SDO по умолчанию.
Во многих случаях конфигурирования даже не требуется, поскольку достаточны значения по умолчанию и параметры коммуникации, заданные для всего приложения.
Если приложение требует синхронизации всех или некоторых узлов сети, то подходящие механизмы могут быть инициированы на опциональном шаге B. Это может использоваться для гарантии, что все узлы засинхронизированы объектом SYNC перед входом в состояние OPERATIONAL на шаге D. Первая передача объекта SYNC начинается в пределах 1 цикла синхронизации после входа в состояние PRE-OPERATIONAL. На шаге C может быть активирован механизм контролирования узлов Node guarding (если он поддерживается), с использованием параметров guarding, которые были сконфигурированы на шаге A.
С шагом D все узлы разрешены для обмена через свои объекты PDO.
9.4.2. Машина состояний NMT
9.4.2.1. Обзор. На рис. 48 показана диаграмма состояний устройства. Устройства входят в состояние PRE-OPERATIONAL сразу после завершения своей инициализации. Во время этого состояния возможна параметризация устройства и выделение ID через SDO (например, с помощью инструментария конфигурирования). Затем узлы могут быть сразу переключены в состояние OPERATIONAL.
Машина состояний NMT определяет поведение блока функции обмена данными (Communication function unit, см. 6.2). Машина состояний приложения вместе с машиной состояния NMT зависит от устройства, и попадает в область действия профилей устройства.
Минимальная процедура загрузки (Boot-Up) состоит из одной телеграммы CAN: широковещательного (broadcast) сообщения Start_Remote_Node.
Рис. 48. Диаграмма состояний устройства (узла сети CANopen).
Таблица 31. Условия перехода между состояниями с выдачей NMT-сообщений.
(1)
В состояние инициализации после включения питания / сброса устройство CANopen входит самостоятельно (без команды от Master).
(2)
Инициализация завершена - автоматический вход в состояние PRE-OPERATIONAL (без команды от Master).
(3), (6)
Индикация в сеть (NMT-сообщение) Start Remote Node ("сетевой узел запустился").
(4), (7)
Индикация в сеть Enter PRE-OPERATIONAL ("вход в предварительное рабочее состояние, готовность к работе").
(5), (8)
Индикация в сеть Stop Remote Node ("сетевой узел остановлен").
(9),(10),(11)
Индикация в сеть Reset Node ("сброс узла").
(12),(13),(14)
Индикация в сеть Reset Communication ("сброс коммуникаций").
Примечание: "Индикация в сеть" означает отправку устройством соответствующего NMT-сообщения, которое обычно регистрируется мастером сети CANopen.
Состояние "Инициализация" делится на три sub-состояния (см. рис. 49), чтобы позволить выполнить полный или частичный сброс узла.
1. Initialising: это первое sub-состояние устройство, в которое оно входит после включения питания или аппаратного сброса. После завершения базовой инициализации узла устройство само входит в состояние Reset_Application.
2. Reset_Application: в этом состоянии устанавливаются в свое состояние "после включения питания" параметры (power-on values), относящиеся либо к специальному профилю устройства производителя, либо к стандартизованному профилю устройства. После установки этих настроек устройство автоматически входит в состояние Reset_Communication.
3. Reset_Communication: в этом состоянии устанавливаются в параметры профиля коммуникации в свои значения "после включения питания" (power-on values). После этого состояние Инициализации завершается, и устройство запускает службу "write boot-up" (короче говоря, выдает в сеть NMT-сообщение boot-up) и входит в состояние PRE-OPERATIONAL.
Значения "после включения питания" это значения настроек, которые были сохранены последний раз (если устройство имеет энергонезависимую память для хранения настроек), или настройки, установленные перемычками. Если сохранение не поддерживается, или не было выполнено, или если сбросу предшествовала команда restore_default (объект OD 1011H), то the power-on values будут соответствовать настройкам по умолчанию в соответствии со спецификациями коммуникации и профиля устройства.
Рис. 49. Структура состояния инициализации.
(1)
В состояние инициализации после включения питания / сброса устройство CANopen входит самостоятельно (без команды от Master).
(2)
Инициализация завершена - автоматический вход в состояние PRE-OPERATIONAL (без команды от Master).
(9),(10),(11)
Индикация в сеть Reset Node ("сброс узла").
(12),(13),(14)
Индикация в сеть Reset Communication ("сброс коммуникаций").
(15)
Инициализация завершена, в состояние Reset Application (сброс приложения) узел входит самостоятельно.
(16)
Сброс приложения завершен, в состояние Reset Communication ("сброс коммуникаций") устройство входит самостоятельно.
В состоянии PRE-OPERATIONAL возможен обмен данными через объекты SDO. Объекты PDO не существуют, поэтому обмен PDO не разрешен. Конфигурирующим приложением (обычно это мастер сети CANopen) может быть выполнено конфигурирование объектов PDO, параметров устройства и также выделение в нем объектов приложения (отображение переменных приложения на объекты PDO, так называемое PDO-mapping). Узел сети устройства может быть переключен по NMT-команде в состояние Operational (запрос мастера сети Start Remote Node).
В состоянии OPERATIONAL активны все коммуникационные объекты устройства (SDO, PDO, TIME, SYNC). Переход в OPERATIONAL создает все объекты PDO; конструктор использует параметры, как это описано в OD. Возможен доступ к OD через SDO. Однако аспекты реализации машины состояний приложения могут потребовать ограничить доступ к определенным объектам во время рабочего состояния, потому что объект может содержать программу приложения, и его нельзя изменять во время выполнения.
После переключения устройства в состояние Stopped оно принудительно останавливает весь свой обмен (кроме протоколов защиты сети node guarding или heartbeat, в зависимости от того, что из этого активно). Кроме того, это состояние может использоваться для достижения определенного поведения приложения. Определение этого поведения попадает в область действия спецификации профилей устройства.
9.4.2.3. Взаимосвязь состояния и объекта коммуникации (Communication Object). Таблица 32 показывает взаимоотношение между состояниями коммуникации и объектами коммуникации. Службы на перечисленных объектах коммуникации могут быть выполнены только если устройства, вовлеченные в коммуникацию, находятся в подходящих состояниях коммуникации.
Таблица 32. Состояния и объекты коммуникации.
Объекты
Состояния:
INITIALISING
PRE-OPERATIONAL
OPERATIONAL
STOPPED
PDO
X
SDO
X
X
SYNC
X
X
TIMESTAMP
X
X
EMCY
X
X
Boot-Up
X
NMT
X
X
X
9.4.2.4. Переходы между состояниями могут быть вызваны:
• Приемом объекта NMT, используемого для служб управления модулем (Module Control Services). • Аппаратным сбросом. • Службы управления модулем инициированы локально событиями приложения, как это определено в профилях устройства.
9.4.3. Pre-Defined Connection Set (заранее определенный набор соединений). Чтобы уменьшить усилия по конфигурированию простых сетей определена обязательная схема распределения идентификаторов по умолчанию. Эти идентификаторы доступных в состоянии PRE-OPERATIONAL после инициализации (если не были сохранены модификации). Объекты SYNC, TIME STAMP, EMERGENCY и PDO могут быть удалены и заново созданы с новыми идентификаторами с помощью динамического распределения (dynamic distribution) под управлением мастера сети. Устройство должно предоставить соответствующие идентификаторы только для поддерживаемых объектов коммуникации. Схема выделения ID профиля по умолчанию (таблицы 33 и 34) содержит функциональную часть, которая определяет приоритет объекта и часть идентификатора узла (Node-ID), которые позволяют отделять друг от друга устройства с одинаковой функциональностью. Это дает возможность обмена peer-to-peer между одним мастером и до 127 подчиненными устройствами. Это также поддерживает широковещание (broadcasting) для не подтверждаемых объектов NMT, SYNC и TIME-STAMP. Широковещание показывается установкой Node-ID в значение 0. Заранее определенный набор соединения (pre-defined connection set) поддерживает один объект emergency, один SDO и максимум 4 объекта приема PDO (RPDO) и 4 передачи PDO (TPDO), и объекты NMT.
Рис. 50. Схема выделения идентификаторов для для заранее определенного набора соединений (pre-defined connection set).
Таблицы 33 и 34 показывают поддерживаемые объекты и их выделенные COB-ID.
Таблица 33. Объекты широковещания для Pre-defined Connection Set.
Объект
Код функции (BIN)
Результирующий COB-ID
Индекс параметров коммуникации в OD
NMT
0000
0
-
SYNC
0001
128 (80h)
1005h, 1006h, 1007h
TIME STAMP
0010
256 (100h)
1012h, 1013h
Таблица 34. Объекты точка-точка (Peer-to-Peer) для Pre-defined Connection Set.
Объект
Код функции (BIN)
Результирующий COB-ID
Индекс параметров коммуникации в OD
EMCY
0001
129 (81h) – 255 (FFh)
1014h, 1015h
TPDO1 (передача)
0011
385 (181h) – 511 (1FFh)
1800h
RPDO1 (прием)
0100
513 (201h) – 639 (27Fh)
1400h
TPDO2 (передача)
0101
641 (281h) – 767 (2FFh)
1801h
RPDO2 (прием)
0110
769 (301h) – 895 (37Fh)
1401h
TPDO3 (передача)
0111
897 (381h) – 1023 (3FFh)
1802h
RPDO3 (прием)
1000
1025 (401h) – 1151 (47Fh)
1402h
TPDO4 (передача)
1001
1153 (481h) – 1279 (4FFh)
1803h
RPDO4 (прием)
1010
1281 (501h) – 1407 (57Fh)
1403h
SDO (передача)
1011
1409 (581h) – 1535 (5FFh)
1200h
SDO (прием)
1100
1537 (601h) – 1663 (67Fh)
1200h
NMT Error Control
1110
1793 (701h) – 1919 (77Fh)
1016h, 1017h
Таблица 34 должна рассматриваться с точки зрения устройств. Pre-defined connection set всегда применим к стандартному фрейму CAN с 11-битным идентификатором, даже если в сети присутствуют расширенные (extended) фреймы CAN.
Запрещенные COB-ID. Любые COB-ID, перечисленные в таблице 35, запрещены для использования. Такие запрещенные идентификаторы объекта (restricted COB-ID) не должны использоваться в качестве COB-ID любым конфигурируемым объектом коммуникации, ни для SYNC, ни для TIME-STAMP, ни для EMCY, ни для PDO и SDO.
Таблица 35. Запрещенные (restricted) COB-ID.
COB-ID
Каким объектом используется
0 (000h)
NMT
1 (001h)
Зарезервировано
257 (101h) – 384 (180h)
Зарезервировано
1409 (581h) – 1535 (5FFh)
SDO по умолчанию (передача)
1537 (601h) – 1663 (67Fh)
SDO по умолчанию (прием)
1760 (6E0h)
Зарезервировано
1793 (701h) – 1919 (77Fh)
NMT Error Control
2020 (780h) – 2047 (7FFh)
Зарезервировано
[9.5. Object Dictionary (OD)]
9.5.1. Общая структура OD. В этой секции детализирована структура словаря объектов (OD) и записей, которые являются общими для всех устройств. Формат записей OD показан в таблице 36.
Таблица 36. Формат заголовков OD.
Индекс (hex)
Объект (символическое имя)
Имя
Тип
Атрибут
M/O
Полный OD состоит из 6 столбцов, показанных выше.
Индекс. Столбец Index обозначает позицию объекта внутри OD. Это работает как адрес для ссылки на нужное поле данных словаря OD. Здесь не указан sub-индекс. Этот sub-индекс используется для навигации к полям данных сложного объекта словаря, такого как массив (array) или запись (record).
Объект. Этот столбец содержит имя объекта (Object Name) в соответствии с таблицей 37 (см. ниже), и используется для обозначения, какой объект по какому определенному индексу находится в OD. Используются следующие определения:
Таблица 37. Определения объекта (Object Definitions) для OD.
Имя объекта
Комментарии
Код объекта
NULL
Элемент словаря без полей данных.
0
DOMAIN
Переменная большого размера, например код выполняемой программы.
2
DEFTYPE
Обозначает определение типа, такое так Boolean, UNSIGNED16, float и т. п.
5
DEFSTRUCT
Определяет новый тип записи, например структура PDOmapping в позиции 21h.
6
VAR
Одиночное значение, такое как UNSIGNED8, Boolean, float, Integer16, видимая строка и т. д.
7
ARRAY
Объект, состоящий из множества полей данных, где каждое поле это простая переменная, и все поля одинакового базового типа, например массив чисел UNSIGNED16 и т. п. Sub-индекс 0 имеет тип UNSIGNED8, так что он не является частью данных массива ARRAY.
8
RECORD
Объект, состоящий из нескольких полей данных, где поля данных могут быть любой комбинацией простых переменных (типы этих переменных отличаются). Sub-индекс 0 имеет тип UNSIGNED8, так что он не является частью данных RECORD.
9
Имя. Столбец имени предоставляет простое текстовое описание функции определенного объекта.
Тип. Столбец Тип дает информацию о типе объекта. Типы включают предопределенные типы: BOOLEAN, число с плавающей точкой, число без знака (UNSIGNED), число со знаком, видимую строку, октетную строку, время дня, интервал времени и DOMAIN (см. 9.1). Это также включает предопределенный сложный тип данных PDOMapping, и может также другие типы, определенные либо производителем, либо это могут быть типы, специфичные для устройства. Нельзя определить записи из записей, массивы из записей или записей с массивами в качестве полей этой записи. В случае, когда объект является массивом или записью, используется sub-индекс для ссылки на одно поле данных в объекте.
Атрибут. Столбец атрибута определяет права доступа к определенному объекту - с точки зрения от шины в устройство. Атрибуты могут быть:
Таблица 38. Атрибуты доступа (Access Attributes) для объектов данных (Data Objects).
Атрибут
Описание
rw
Доступ на чтение и запись (Read, Write).
wo
Доступ только на запись (Write Only).
ro
Доступ только на чтение (Read Only).
Const
Доступ только на чтение, значение является константой.
Не обязательные объекты, перечисленные в OD с атрибутом rw (чтение и запись) могут быть реализованы как read only (только чтение).
Исключения определены в подробной спецификации объекта.
M/O. Столбец M/O определяет, является ли объект обязательным (Mandatory) или опциональным, т. е. не обязательным (Optional). Обязательный объект должен быть реализован в устройстве. Опциональный объект не нужно реализовывать в устройстве. Однако поддержка определенных объектов или их функций может потребовать реализации связанных объектов. В этом случае подобные зависимости описаны в подробной спецификации объекта.
9.5.2. Компоненты словаря. Общая топология OD показана в таблице 39.
Индексы 01h - 1Fh содержат стандартные типы данных, индексы 20h - 23h содержат заранее определенные сложные типы данных. Диапазон индексов 24h - 3Fh пока не определен, однако он зарезервирован для будущих стандартных структур данных.
Диапазон индексов 40h - 5Fh свободен для производителей, чтобы определять собственные сложные типы данных. Диапазон 60h - 7Fh содержит стандартные типы данных, специфичные для профиля устройства. В диапазоне 80h – 9Fh определены сложные типы данных, специфичные для профиля устройства. Диапазон A0h – 25Fh зарезервирован для определений типов данных для устройств с несколькими модулями (Multiple Device Modules) подобно элементам 60h – 9Fh. Диапазон 360h – FFFh зарезервирован для будущих расширений. Диапазон 1000h - 1FFFh содержит элементы OD, относящиеся к коммуникации.
Эти параметры называются элементами коммуникации, их спецификация общая для всех типов устройств, независимо от профиля, который использует устройство. Объекты в диапазоне 1000h - 1FFFh, которые не определены в этом документе, зарезервированы для будущего использования. Диапазон 2000h - 5FFFh свободен для определения профиля, специфичного для производителя.
Диапазон 6000h - 9FFFh содержит параметры стандартизованного профиля устройства. Диапазон A000h - FFFFh зарезервирован для будущего использования.
9.5.3. Спецификация типа данных элемента словаря. Статические типы данных помещаются в OD только для цели определения. Однако индексы 0001h - 0007h могут быть отображены также, чтобы определить соответствующее пространств в RPDO как не используемое в этом устройстве (оно не имеет значения, do not care). Индексы 0009h - 000Bh, 000Fh не могут быть отображены в PDO.
Порядок типов данных следующий:
Таблица 39. Типы данных OD.
Индекс
Объект
Имя
0001
DEFTYPE
BOOLEAN
0002
DEFTYPE
INTEGER8
0003
DEFTYPE
INTEGER16
0004
DEFTYPE
INTEGER32
0005
DEFTYPE
UNSIGNED8
0006
DEFTYPE
UNSIGNED16
0007
DEFTYPE
UNSIGNED32
0008
DEFTYPE
REAL32
0009
DEFTYPE
VISIBLE_STRING
000A
DEFTYPE
OCTET_STRING
000B
DEFTYPE
UNICODE_STRING
000C
DEFTYPE
TIME_OF_DAY
000D
DEFTYPE
TIME_DIFFERENCE
000E
Зарезервировано
000F
DEFTYPE
DOMAIN
0010
DEFTYPE
INTEGER24
0011
DEFTYPE
INTEGER32
0012
DEFTYPE
REAL64
0013
DEFTYPE
INTEGER48
0014
DEFTYPE
INTEGER56
0015
DEFTYPE
INTEGER64
0016
DEFTYPE
UNSIGNED24
0017
Зарезервировано
0018
DEFTYPE
UNSIGNED40
0019
DEFTYPE
UNSIGNED48
001A
DEFTYPE
UNSIGNED56
001B
DEFTYPE
UNSIGNED64
001C-001F
Зарезервировано
0020
DEFSTRUCT
PDO_COMMUNICATION_PARAMETER
0021
DEFSTRUCT
PDO_MAPPING
0022
DEFSTRUCT
SDO_PARAMETER
0023
DEFSTRUCT
IDENTITY
0024-003F
Зарезервировано
0040-005F
DEFSTRUCT
Сложные типы данных, специфичные для производителя.
0060-007F
DEFTYPE
Стандартные типы данных, специфические для профиля устройства (0).
0080-009F
DEFSTRUCT
Сложные типы данных, специфические для профиля устройства (0).
00A0-00BF
DEFTYPE
Стандартные типы данных, специфические для профиля устройства (1).
00C0-00DF
DEFSTRUCT
Сложные типы данных, специфические для профиля устройства (1).
00E0-00FF
DEFTYPE
Стандартные типы данных, специфические для профиля устройства (2).
0100-011F
DEFSTRUCT
Сложные типы данных, специфические для профиля устройства (2).
0120-013F
DEFTYPE
Стандартные типы данных, специфические для профиля устройства (3).
0140-015F
DEFSTRUCT
Сложные типы данных, специфические для профиля устройства (3).
0160-017F
DEFTYPE
Стандартные типы данных, специфические для профиля устройства (4).
0180-019F
DEFSTRUCT
Сложные типы данных, специфические для профиля устройства (4).
01A0-01BF
DEFTYPE
Стандартные типы данных, специфические для профиля устройства (5).
01C0-01DF
DEFSTRUCT
Сложные типы данных, специфические для профиля устройства (5).
01E0-01FF
DEFTYPE
Стандартные типы данных, специфические для профиля устройства (6).
0200-021F
DEFSTRUCT
Сложные типы данных, специфические для профиля устройства (6).
0220-023F
DEFTYPE
Стандартные типы данных, специфические для профиля устройства (7).
0240-025F
DEFSTRUCT
Сложные типы данных, специфические для профиля устройства (7).
Представления типов данных описаны в 9.1. Каждому устройству не нужно поддерживать все определенные типы данных. Устройство должно поддерживать только типы данных, которые используются в объектах диапазона индексов 1000h - 9FFFh словаря OD.
Заранее определенные типы данных размещаются после стандартных типов данных. В настоящее время определено 4 типа: запись параметров коммуникации PDO (PDO CommPar record, PDO_COMMUNICATION_PARAMETER), запись отображения PDO (PDO Mapping record, PDO_MAPPING), запись параметра SDO (SDO Parameter record, SDO_PARAMETER) и запись идентичности (Identity record, IDENTITY). Они размещаются по индексам 20h, 21h, 22h и 23h.
Для устройств или профилей устройств, которые предоставляют Multiple Device Modules, например наподобие контроллеров нескольких осей, механизм DEFTYPE / DEFSTRUCT расширен для каждого виртуального устройства со смещением 40h для определения до 7 дополнительных виртуальных устройств.
Устройство может опционально предоставить длину стандартных тиров данных, закодированную как UNSIGNED32 с доступом на чтение по индексу, который относится к типу данных. Например индекс 000Ch (Time of Day, время дня) содержит значение 30h=48, так как тип данных "Time of Day" закодирован последовательностью из 48 бит. Если длина переменная (например 000Fh = Domain), то элемент содержит 0h.
Для поддерживаемых сложных типов данных устройство может опционально предоставить структуру такого типа данных с доступом на чтение по соответствующему индексу типа данных. Sub-индекс 0 тогда содержит количество элементов по этому индексу, не считая sub-индексов 0 и 255, и следующие sub-индексы, которые идут за нулевым sub-индексом, содержат тип данных в соответствии с таблицей 39 закодированный как UNSIGNED8. Элемент по индексу 20h, описывающий структуру коммуникационного параметра PDO (PDO Communication Parameter), тогда выглядит следующим образом (см. также объекты 1400h – 15FFh):
Таблица 40. Пример сложного типа данных.
Sub-индекс
Значение
Описание
0h
04h
4 sub-индекса, которые идут ниже
1h
07h
UNSIGNED32
2h
05h
UNSIGNED8
3h
06h
UNSIGNED16
4h
05h
UNSIGNED8
Стандартные (простые) и сложные типы данных, специфичные для производителя, можно попытаться отличить друг от друга чтением sub-индекса 1h: при сложном типе данных устройство вернет значение, и sub-индекс 0h содержит количество sub-индексов, которые идут за ним. При стандартном типе данных устройство оборвет передачу SDO, так как нет доступного sub-индекса 1h.
Обратите внимание, что некоторые элементы типа данных UNSIGNED32 должны иметь характер структуры (например элемент PDO COBID, см. рис. 65).
9.5.3.1. Организация структурированных записей OD. Если элемент OD (индекс) содержит несколько sub-индексов, тогда sub-индекс 0 этого элемента описывает самое большое значение доступного sub-индекса для sub-индексов, которые идут далее, не рассматривая FFh. Этот элемент закодирован как UNSIGNED8. Sub-индекс FFh описывает структуру элемента предоставлением типа данных и типа объекта элемента. Он закодирован как UNSIGNED32, и организован следующим образом:
Биты
31-16
15-8
7-0
Значение
Зарезервировано (значение: 0000h)
Тип данных (см. таблицу 39)
Объект (см. таблицу 37)
Закодировано как
-
UNSIGNED8
UNSIGNED8
Рис. 51. Структура sub-индекса FFh.
Поддержка sub-индекса FFh является необязательной. Если он поддерживается всюду в OD, и также предоставлена структура сложного типа данных, то это разрешает выгрузить всю структуру OD.
9.5.4. Спецификация заранее определенных сложных типов данных (Predefined Complex Data Types). Эта секция описывает структуру предопределенных сложных типов данных, используемых для коммуникации. Диапазон значений и их смысл объясняется в подробном описании объектов, использующих эти типы данных.
9.6.1. Подробная спецификация объекта. Структура элементов OD описана таким способом: все устройство, интерфейс и профили приложения, базирующиеся на этом профиле коммуникации, должны следовать этой структуре.
Таблица 45. Формат описания объекта.
ОПИСАНИЕ ОБЪЕКТА
Индекс
Индекс профиля
Name
Имя параметра
Object Code
Переменная классификация
Data Type
Тип данных классификации
Category
Опционально или обязательно
Object Code должен быть одним из определенных ранее в ОПИСАНИИ ОБЪЕКТА таблицы 45. Для лучшей читаемости описание объекта дополнительно содержит символическое имя объекта (Object Name).
Таблица 46. Формат описания значения объекта (Object Value).
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-Index
Количество описываемых sub-индексов. Поле используется только для массивов (Arrays), записей (Records) и структур (Structures).
Description
Описательное имя для sub-индекса. Поле используется только для массивов, записей и структур.
Data Type
Классификация типа данных. Поле используется только для записей и структур.
Entry Category
Указывает является элемент не обязательным (Optional) или обязательным (Mandatory), если объект присутствует.
Access
Доступ: Read Only (ro), или Read/Write (rw), или Write Only (wo), или Const. В состоянии OPERATIONAL доступ к элементам OD может быть ограничен, например установлен в ro.
PDO Mapping
Отображение PDO: Optional/Default/No - может ли этот объект быть отображен на PDO. Optional: объект может быть отображен на PDO. Default: объект является частью отображения по умолчанию (см. профиль устройства). No: объект не должен быть отображен на PDO.
Value Range
Диапазон возможных значений, или имя типа данных для полного диапазоне.
Default Value
No: не определено этой спецификацией. Value: значение по умолчанию объекта после инициализации устройства.
Для простых переменных это описание значения появляется один раз, без поля sub-индекса и категории элемента. Для сложных типов данных описание значения должно быть определено для каждого элемента (sub-индекса).
9.6.2. Обзор элементов OD для коммуникации. Таблица 47 дает обзор по элементам OD, определенным профилем коммуникации:
Таблица 47. Стандартные объекты.
Индекс
Объект
Имя
Тип
Acc.(1)
M/O
1000h
VAR
Device type (тип устройства).
UNSIGNED32
ro
M
1001h
VAR
Error register (регистр ошибки).
UNSIGNED8
ro
M
1002h
VAR
Manufacturer status register (регистр состояния производителя).
UNSIGNED32
ro
O
1003h
ARRAY
Pre-defined error field (предварительно определенное поле ошибки).
UNSIGNED32
ro
O
1004h
Зарезервировано по соображениям совместимости.
1005h
VAR
COB-ID SYNC (CAN-идентификатор объекта синхронизации).
UNSIGNED32
rw
O
1006h
VAR
Communication cycle period (период цикла коммуникации).
Manufacturer device name (имя устройства производителя).
VISIBLE-STRING
const
O
1009h
VAR
Manufacturer hardware version (версия аппаратуры производителя).
VISIBLE-STRING
const
O
100Ah
VAR
Manufacturer software version (версия ПО производителя).
VISIBLE-STRING
const
O
100Bh
Зарезервировано по соображениям совместимости.
100Ch
VAR
Guard time (интервал протокола защиты узла).
UNSIGNED16
rw
O
100Dh
VAR
Life time factor (множитель для вычисления времени жизни).
UNSIGNED8
rw
O
100Eh
Зарезервировано по соображениям совместимости.
100Fh
Зарезервировано по соображениям совместимости.
1010h
ARRAY
Store parameters (параметры хранилища).
UNSIGNED32
rw
O
1011h
ARRAY
Restore default parameters (восстановление параметров по умолчанию).
UNSIGNED32
rw
O
1012h
VAR
COB-ID TIME (идентификатор CAN объекта TIME).
UNSIGNED32
rw
O
1013h
VAR
High resolution time stamp (метка времени точного протокола синхронизации).
UNSIGNED32
rw
O
1014h
VAR
COB-ID EMCY (идентификатор CAN объекта аварии).
UNSIGNED32
rw
O
1015h
VAR
Inhibit Time EMCY (время запрета аварии).
UNSIGNED16
rw
O
1016h
ARRAY
Consumer heartbeat time (время протокола heartbeat потребителя).
UNSIGNED32
rw
O
1017h
VAR
Producer heartbeat time (время протокола heartbeat продюсера).
UNSIGNED16
rw
O
1018h
RECORD
Identity Object (объект идентификации).
Identity (23h)
ro
M
1019h
Зарезервировано
:::::
:::::
:::::
:::::
:::::
:::::
11FFh
Зарезервировано
Параметры сервера SDO
1200h
RECORD
1-й параметр сервера SDO
SDO Parameter (22h)
ro
O
1201h
RECORD
2-й параметр сервера SDO
SDO Parameter (22h)
rw
M/O**
:::::
:::::
:::::
:::::
:::::
:::::
127Fh
RECORD
128-й параметр сервера SDO
SDO Parameter (22h)
rw
M/O**
Параметры клиента SDO
1280h
RECORD
1-й параметр клиента SDO
SDO Parameter (22h)
ro
O
1281h
RECORD
2-й параметр клиента SDO
SDO Parameter (22h)
rw
M/O**
:::::
:::::
:::::
:::::
:::::
:::::
12FFh
RECORD
128-й параметр клиента SDO
SDO Parameter (22h)
rw
M/O**
1300h
Зарезервировано
:::::
:::::
:::::
:::::
:::::
:::::
13FFh
Зарезервировано
Параметр коммуникации RPDO (PDO приема)
1400h
RECORD
Параметр 1-го RPDO.
PDO CommPar (20h)
rw
M/O*
1401h
RECORD
Параметр 2-го RPDO.
PDO CommPar (20h)
rw
M/O*
:::::
:::::
:::::
:::::
:::::
:::::
15FFh
RECORD
Параметр 512-го RPDO.
PDO CommPar (20h)
rw
M/O*
Параметр отображения RPDO (PDO приема)
1600h
RECORD
Отображение 1-го RPDO.
PDO Mapping (21h)
rw
M/O*
1601h
RECORD
Отображение 2-го RPDO.
PDO Mapping (21h)
rw
M/O*
:::::
:::::
:::::
:::::
:::::
:::::
17FFh
RECORD
Отображение 512-го RPDO.
PDO Mapping (21h)
rw
M/O*
Параметр коммуникации TPDO (PDO передачи)
1800h
RECORD
Параметр 1-го TPDO.
PDO CommPar (20h)
rw
M/O*
1801h
RECORD
Параметр 2-го TPDO.
PDO CommPar (20h)
rw
M/O*
:::::
:::::
:::::
:::::
:::::
:::::
19FFh
RECORD
Параметр 512-го TPDO.
PDO CommPar (20h)
rw
M/O*
Параметр отображения TPDO (PDO передачи)
1A00h
RECORD
Отображение 1-го TPDO.
PDO Mapping (21h)
rw
M/O*
1A01h
RECORD
Отображение 2-го TPDO.
PDO Mapping (21h)
rw
M/O*
:::::
:::::
:::::
:::::
:::::
:::::
1BFFh
RECORD
Отображение 512-го TPDO.
PDO Mapping (21h)
rw
M/O*
Примечания:
M/O: столбец M/O означает обязательное наличие элемента OD (M, Mandatory) или не обязательное (O, Optional), либо может быть одно из двух в зависимости от некоторых условий. (1): Тип доступа (Access type), перечисленный здесь, может меняться для определенных sub-индексов. См. подробную спецификацию объекта. * Если устройство поддерживает PDO, то в OD обязательно наличие элементов соответствующего параметра коммуникации PDO (PDO communication parameter) и параметра отображения PDO (PDO mapping). Эти элементы могут быть только для чтения. ** Если устройство поддерживает SDO, то соответствующие параметры SDO в OD являются обязательными.
9.6.3. Подробная спецификация объектов, специфичных для профиля коммуникации (Communication Profile)
Содержит информацию о типе устройства. Объект с индексом 1000h описывает тип устройства и его функциональность. Он составлен из 16-битного поля, которое описывает используемый профиль устройства, и второго 16-битного поля, которое дает дополнительную информацию о функциональности устройства. Параметр Additional Information (дополнительная информация) зависит от профиля устройства. Её спецификация не попадает в рамки рассмотрения этого документа, она определена в стандарте соответствующего профиля устройства. Значение 0000h показывает, что устройство не следует стандартизированному профилю устройства. Для устройств с несколькими модулями (multiple device modules) параметр Additional Information содержит FFFFh, и номер профиля устройства, на который ссылается объект 1000h, это профиль устройства для первого из устройств в OD. Все другие устройства для многомодульных устройств идентифицируют свои профили в объектах 67FFh + x * 800h, где x = внутреннему номеру устройства (0 – 7). Эти элементы описывают тип устройства предшествующего устройства.
Этот объект является регистром ошибки для устройства. В этом байте устройство может отобразить внутренние ошибки. Этот элемент OD обязателен для всех устройств. Он является частью объекта аварии (Emergency object).
ОПИСАНИЕ ОБЪЕКТА
INDEX
1001h
Name
error register (регистр ошибки)
Object Code
VAR
Data Type
UNSIGNED8
Category
Mandatory (наличие обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Access (тип доступа)
ro
PDO Mapping
Optional (не обязательно)
Value Range
UNSIGNED8
Default Value
No
Таблица 48. Структура Error Register (M = Mandatory, O = Optional).
Бит
M/O
Что бит означает
0
M
generic error (общая ошибка)
1
O
current (ошибка тока)
2
O
voltage (ошибка напряжения)
3
O
temperature (ошибка температуры)
4
O
communication error (недогрузка/overrun, состояние ошибки/error state)
5
O
device profile specific (ошибка, относящаяся к профилю устройства)
6
O
зарезервировано (здесь всегда 0)
7
O
manufacturer specific (ошибка, специфичная для производителя)
Если установлен в лог. 1 определенный бит, то произошла соответствующая ошибка. Есть только один обязательный вид ошибки - общая ошибка (generic error), о ней можно сигнализировать в любой ошибочной ситуации.
Этот объект является общим регистром состояния, используемый для целей производителя устройства. В этом документе определены только размер и место расположения этого объекта.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1002h
Name
manufacturer status register (регистр состояния, предоставленный производителем)
Этот объект содержит ошибки, которые случились с устройством, и о которых сигнализирует объект аварии (Emergency Object). При этом обеспечивается история ошибок.
1. Элемент по индексу 0 содержит количество реальных ошибок, которые записаны в массиве, начиная с sub-индекса 1.
2. Каждая новая ошибка сохраняется по sub-индексу 1, и более старые смещаются вниз по списку.
3. Запись 0 в sub-индекс 0 удаляет всю историю ошибок (очищает массив). Нельзя записывать значения больше 0. Это должно привести к сообщению аварийного завершения (abort message, error code: 0609 0030h).
4. Номера ошибки имеют тип UNSIGNED32 (см. таблицу Таблица 7-18), и они составлены из 16-битного кода ошибки и 16-битного информационного поля, специфичного для производителя. Код ошибки содержится в младших 2 байтах (LSB), и дополнительная информация заключена в старших 2 байтах (MSB). Если этот объект поддерживается, то он должен состоять как минимум из 2 элементов: элемент длины по sub-индексу 0h и как минимум один элемент ошибки по sub-индексу 1h.
MSB LSB
Дополнительная информация
Код ошибки
Рис. 53. Структура предопределенного поля ошибки.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1003h
Name
pre-defined error field (предварительно определенное поле ошибки)
Индекс 1005h определяет COB-ID объекта синхронизации (Synchronisation Object, SYNC). Кроме того, он определяет, генерирует ли устройство сообщения SYNC. Структура этого объекта показана на рис. 54 и в таблице 49.
MSB LSB
Биты
31
30
29
28-11
10-0
11-битный CAN-ID
X
0/1
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11-битный ID
29-битный CAN-ID
X
0/1
1
29-битный ID
Рис. 54. Структура элемента SYNC COB-ID.
Таблица 49. Описание элемента SYNC COB-ID.
Бит
Значение
Что означает
31 (MSB)
X
Не имеет значения
30
0
Устройство не генерирует сообщение SYNC
1
Устройство генерирует сообщение SYNC
29
0
11-битный ID (CAN 2.0A)
1
29-битный ID (CAN 2.0B)
28 - 11
0
Тут все нули, если бит 29 == 0
X
Если бит 29 == 1, то здесь находятся биты 28..11 для 29-битного SYNC COB-ID
10 - 0 (LSB)
X
Биты 10..0 SYNC COB-ID
Биты 29, 30 могут быть статическими (не изменяемыми). Если устройство не может генерировать сообщения SYNC, то в ответ на попытку установить бит 30 будет выдан ответ сообщением abort (abort code: 0609 0030h). Устройства, поддерживающие только стандартный фрейм CAN, либо игнорируют попытки изменить бит 29, или отвечают сообщением abort message (abort code: 0609 0030h). Первая передача объекта SYNC начинается с 1 цикла синхронизации после установки бита 30 в 1. Не разрешено менять биты 0-29, в то время как объекты существуют (бит 30=1).
ОПИСАНИЕ ОБЪЕКТА
INDEX
1005h
Name
COB-ID SYNC (идентификатор CAN объекта/сообщения синхронизации)
Object Code
VAR
Data Type
UNSIGNED32
Category
Conditional (зависит от условия): Mandatory (обязательно), если поддерживается обмен PDO на основе синхронизации.
Этот объект определяет период цикла коммуникации в микросекундах. Этот период определяет интервал SYNC. Он равен 0, если не используется. Если период цикла коммуникации был изменен на новое значение, не равное 0, то передача объекта синхронизации возобновится в пределах 1 цикла синхронизации с новым значением.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1006h
Name
communication cycle period (период цикла коммуникации)
Object Code
VAR
Data Type
UNSIGNED32
Category
Conditional (зависит от условия): Mandatory (обязательно) для продюсеров сообщений SYNC.
Объекты с индексами 100Ch и 100Dh включают в себя защитное время (guard time) в миллисекундах, и множитель времени жизни (life time factor). Множитель времени жизни, умноженный на защитное время, дает время жизни (life time) для протокола Life Guarding. Этот параметр равен 0, если не используется.
ОПИСАНИЕ ОБЪЕКТА
INDEX
100Ch
Name
guard time (защитное время)
Object Code
VAR
Data Type
UNSIGNED16
Category
Conditional (зависит от условия): Mandatory (обязательно), если heartbeat не поддерживается.
Множитель времени жизни (Life Time Factor), умноженный на защитное время (Guard Time, см. объект 100Ch), дает время жизни (life time) для протокола Life Guarding. Этот параметр равен 0, если не используется.
ОПИСАНИЕ ОБЪЕКТА
INDEX
100Dh
Name
life time factor (множитель для вычисления времени жизни)
Object Code
VAR
Data Type
UNSIGNED8
Category
Conditional (зависит от условия): Mandatory (обязательно), если heartbeat не поддерживается.
Этот объект поддерживает сохранение параметров в энергонезависимой памяти. Путем доступа на чтение устройство предоставляет информацию по его возможностям сохранения. Разделяют несколько групп параметров:
Sub-индекс 0 содержит самый большой поддерживаемый sub-индекс. Sub-индекс 1 относится ко всем параметрам, которые можно сохранить в устройстве. Sub-индекс 2 относится к параметрам, которые связаны с обменом данными (диапазон индексов 1000h - 1FFFh параметров коммуникации, специфических для производителя). Sub-индекс 3 относится к параметрам, связанным с приложением (индексы 6000h - 9FFFh параметров, специфичных для приложения производителя). По sub-индексам 4 - 127 производители могут сохранять свой собственный индивидуальный выбор параметров. Sub-индексы 128 - 254 зарезервированы для будущего использования.
Чтобы избежать ошибки распознания параметров хранения, сохранение запускается только тогда, когда специальная сигнатура записана по соответствующему sub-индексу. Такой сигнатурой является слово "save".
MSB LSB
ISO 8859 (ASCII)
e
v
a
s
hex
65h
76h
61h
73h
Рис. 55. Сигнатура доступа на запись хранилища.
При приеме корректной сигнатуры в соответствующем sub-индексе устройство сохраняет параметр и подтверждает передачу SDO (инициирует ответ на загрузку). Если сохранение было неудачным, то устройство ответит сообщением Abort SDO Transfer (код abort: 0606 0000h).
Если записана ошибочная сигнатура, то устройство отклонит сохранение и ответит Abort SDO Transfer (код abort: 0800 002xh).
При доступе на чтение по соответствующему sub-индексу устройство предоставит информацию о своем функционале хранилища в следующем формате:
MSB LSB
Биты
31-2
1
0
Зарезервировано (==0)
0/1
0/1
Рис. 56. Сигнатура доступа на чтение хранилища.
Таблица 50. Структура доступа на чтение.
Бит
Значение
Что означает
31 - 2
0
Зарезервировано (==0)
1
0
Устройство не сохраняет параметры автономно
1
Устройство само сохраняет параметры
0
0
Устройство не сохраняет параметры по команде
1
Устройство сохраняет параметры по команде
Автономное сохранение означает, что устройство запишет сохраняемые параметры энергонезависимым способом без запроса пользователя.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1010h
Name
store parameters (сохранение параметров)
Object Code
ARRAY
Data Type
UNSIGNED32
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
largest subindex supported (самый большой поддерживаемый sub-индекс)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
1h – 7Fh
Default Value
No
Sub-индекс
1h
Description (описание)
save all parameters (сохранение всех параметров)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32 (рис. 55 для доступа на запись, рис. 56 на чтение)
Default Value
No
Sub-индекс
2h
Description (описание)
save communication parameters (сохранение параметров коммуникации)
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32 (рис. 55 для доступа на запись, рис. 56 на чтение)
Default Value
No
Sub-индекс
3h
Description (описание)
save application parameters (сохранение параметров приложения)
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32 (рис. 55 для доступа на запись, рис. 56 на чтение)
Default Value
No
Sub-индекс
4h - 7Fh
Description (описание)
сохранение параметров производителя
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32 (рис. 55 для доступа на запись, рис. 56 на чтение)
С этим объектом будут восстановлены значения по умолчанию, соответствующие обмену данными или профилю устройства. Путем доступа на чтение устройство предоставляет информацию о возможности восстановления этих значений. Различают несколько групп параметров:
Sub-индекс 0 содержит самый большой поддерживаемый sub-индекс. Sub-индекс 1 относится ко всем параметрам, которые можно восстановить. Sub-индекс 2 относится к параметрам, которые связаны с обменом данными (диапазон индексов 1000h - 1FFFh параметров коммуникации, специфических для производителя). Sub-индекс 3 относится к параметрам, связанным с приложением (индексы 6000h - 9FFFh параметров, специфичных для приложения производителя). По sub-индексам 4 - 127 производители могут восстанавливать свой собственный индивидуальный выбор параметров. Sub-индексы 128 - 254 зарезервированы для будущего использования.
Чтобы избежать ошибки восстановления параметров по умолчанию, восстановление выполняется только когда специфическая сигнатура записывается по соответствующему индексу. Этой сигнатурой является слово "load".
MSB LSB
ISO 8859 (ASCII)
d
a
o
l
hex
64h
61h
6Fh
6Ch
Рис. 57. Записываемая сигнатура восстановления параметров.
При приеме корректной сигнатуры в соответствующем sub-индексе устройство восстановит свои параметры по умолчанию и подтвердит передачу SDO (инициирует ответ на загрузку). Если восстановление прошло неудачно, устройство ответит Abort SDO Transfer (код abort: 0606 0000h). Если записана ошибочная сигнатура, устройство отклонит восстановление параметров по умолчанию и ответит Abort SDO Transfer (код abort: 0800 002xh).
Значения по умолчанию станут достоверными после сброса устройства(сброс узла для sub-индексов 1h – 7Fh, сброс коммуникации для sub-индекса 2h), или после выключения и последующего включения питания.
Рис. 58. Процедура восстановления.
При доступе на чтение по соответствующему sub-индексу устройство предоставит информацию по своей возможности восстановления параметров в следующем формате:
MSB LSB
Биты
31-1
0
Зарезервировано (==0)
0/1
Рис. 59. Структура доступа на чтение восстановления значений по умолчанию.
Таблица 51. Структура доступа на чтение восстановления.
Бит
Значение
Что означает
31 - 1
0
Зарезервировано (==0)
0
0
Устройство не восстанавливает параметры по умолчанию
1
Устройство восстанавливает параметры
ОПИСАНИЕ ОБЪЕКТА
INDEX
1011h
Name
restore default parameters (восстановление параметров по умолчанию)
Object Code
ARRAY
Data Type
UNSIGNED32
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
largest subindex supported (самый большой поддерживаемый sub-индекс)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
1h – 7Fh
Default Value
No
Sub-индекс
1h
Description (описание)
restore all parameters (восстановление всех параметров)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32 (рис. 57)
Default Value
No
Sub-индекс
2h
Description (описание)
восстановление параметров коммуникации по умолчанию
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32 (рис. 57)
Default Value
No
Sub-индекс
3h
Description (описание)
восстановление параметров приложения по умолчанию
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32 (рис. 57)
Default Value
No
Sub-индекс
4h - 7Fh
Description (описание)
восстановление параметров производителя по умолчанию
Индекс 1012h определяет COB-ID объекта метки времени (Time-Stamp Object, TIME). Кроме того, это определяет, является ли устройство потребителем TIME, или оно генерирует TIME. Структура этого объекта показана на рис. 60 и в таблице 52.
MSB LSB
Биты
31
30
29
28-11
10-0
11-битный CAN-ID
0/1
0/1
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11-битный ID
29-битный CAN-ID
0/1
0/1
1
29-битный ID
Рис. 60. Структура элемента TIME COB-ID.
Таблица 52. Описание элемента TIME COB-ID.
Бит
Значение
Что означает
31 (MSB)
0
Устройство не потребляет сообщение TIME
1
Устройство потребляет сообщение TIME
30
0
Устройство не генерирует сообщение TIME
1
Устройство генерирует сообщение TIME
29
0
11-битный ID (CAN 2.0A)
1
29-битный ID (CAN 2.0B)
28 - 11
0
Тут все нули, если бит 29 == 0
X
Если бит 29 == 1, то здесь находятся биты 28..11 для 29-битного TIME COB-ID
10 - 0 (LSB)
X
Биты 10..0 TIME COB-ID
Биты 29, 30 могут быть статическими (не изменяемыми). Если устройство не может генерировать сообщения TIME, то попытка установить бит 30 вызовет в ответ сообщение abort (код abort: 0609 0030h). Устройства, поддерживающие только стандартный тип фрейма CAN, в ответ на попытку установить бит 29 отвечают сообщением abort message (abort code: 0609 0030h). Не разрешено менять биты 0-29, хотя объект существует (бит 30=1).
ОПИСАНИЕ ОБЪЕКТА
INDEX
1012h
Name
COB-ID time stamp message (идентификатор CAN объекта/сообщения метки времени)
Этот объект содержит метку времени с разрешающей способностью 1 мкс (см. 9.3.2). Она может быть отображена на PDO, чтобы определить сообщение метки времени высокого разрешение (обратите внимание, тип данных стандартного сообщения метки времени TIME фиксирован). Для метки времени высокой точности должно быть специальное применение.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1013h
Name
high resolution time stamp (метка времени высокой точности)
Индекс 1014h задает COB-ID Emergency Object (EMCY, объект аварии). Структура этого объекта показана на рис. 61.
MSB LSB
Биты
31
30
29
28-11
10-0
11-битный CAN-ID
0/1
0
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11-битный ID
29-битный CAN-ID
0/1
0
1
29-битный ID
Рис. 61. Структура элемента идентификатора EMCY.
Таблица 53. Description of EMCY COB-ID entry.
Бит
Значение
Что означает
31 (MSB)
0
EMCY существует / допустим
1
EMCY не существует / недопустим
30
0
Зарезервировано (здесь всегда 0)
29
0
11-битный ID (CAN 2.0A)
1
29-битный ID (CAN 2.0B)
28 - 11
0
Тут все нули, если бит 29 == 0
X
Если бит 29 == 1, то здесь находятся биты 28..11 для 29-битного EMCY COB-ID
10 - 0 (LSB)
X
Биты 10..0 EMCY COB-ID
Устройства, поддерживающие только стандартный тип фрейма CAN, при попытке установить бит 29 ответят сообщением abort (abort code: 0609 0030h). Если объект EMCY существует (когда бит 31==0), не разрешается менять биты 0-29.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1014h
Name
COB-ID Emergency message (идентификатор CAN объекта/сообщения аварии)
Object Code
VAR
Data Type
UNSIGNED32
Category
Conditional (зависит от условия): Mandatory (обязательно), если поддерживается EMCY.
С помощью этого элемента можно настроить время запрета/подавления (inhibit time) для сообщения EMCY. Если этот элемент существует в OD, то он должен быть записываемым. Время задается в единицах 100 мкс.
Этот параметр определяет ожидаемое время цикла сердцебиения для потребителя (Heartbeat Time), поэтому оно должно быть больше, чем соответствующее время сердцебиения продюсера, который генерирует этот heartbeat. Мониторинг запускается после приема первого heartbeat. Если consumer heartbeat == 0, то соответствующий элемент не используется. Время должно быть числом, кратным 1 мс.
MSB LSB
Биты
31-24
23-16
15-0
Значение
зарезервировано (==0)
Node-ID
heartbeat time
Закодировано как
-
UNSIGNED8
UNSIGNED16
Рис. 62. Структура элемента Consumer Heartbeat Time.
При попытке сконфигурировать несколько времен consumer heartbeat, не равных 0 для одного и того же Node-ID, устройство оборвет загрузку SDO с выдачей abort code 0604 0043h.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1016h
Name
Consumer Heartbeat Time (время потребителя heartbeat)
Object Code
ARRAY
Data Type
UNSIGNED32
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
number entries (количество записей в массиве)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
1 – 127
Default Value
No
Sub-индекс
1h
Description (описание)
Consumer Heartbeat Time (время потребителя heartbeat)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32 (рис. 62)
Default Value
0
Sub-индекс
2h – 7Fh
Description (описание)
Consumer Heartbeat Time (время потребителя heartbeat)
Этот параметр определяет время цикла сердцебиения. Heartbeat time равно 0, если это не используется. Время должно быть указано значением, кратным 1 мс.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1017h
Name
Producer Heartbeat Time (время поставщика heartbeat)
Object Code
VAR
Data Type
UNSIGNED16
Category
Conditional (зависит от условия): Mandatory (обязательно, если не поддерживается node guarding)
Объект с индексом 1018h содержит общую информацию об устройстве. Vendor ID (sub-индекс 1h) содержит уникальное значение, выделенное каждому производителю. Код продукта Product code (sub-индекс 2h), зависящий от производителя, идентифицирует определенную версию устройства. Номер ревизии Revision number (sub-индекс 3h), зависящий от производителя, состоит из major-номера ревизии и minor-номера ревизии. Номер major идентифицирует определенное поведение в CANopen. Если функциональность CANopen расширена, то major revision инкрементируется. Номер minor revision идентифицирует разные версии с одинаковым поведением CANopen.
MSB LSB
major revision number (старший номер ревизии)
minor revision number (младший номер ревизии)
Рис. 63. Структура Revision number.
Серийный номер Serial number (sub-индекс 4h), зависящий от производителя, идентифицирует определенное устройство.
Чтобы описать используемые в устройстве объекты SDO, введен тип данных параметра SDO. Этот тип данных имеет индекс 22h в OD. Его структура описана в 9.5.4.
Примечание переводчика: обычно сервер SDO присутствует в подчиненных узлах CANopen (slave), чтобы можно было читать/записывать любые элементы OD. Таким образом, чаще всего сервер SDO используется в slave-устройствах для их конфигурирования, однако иногда SDO применяют для передачи прикладных данных или перепрошивки firmware устройства. В этой спецификации указано, что наличие сервера на подчиненном устройстве является обязательным, однако мне попадались устройства, у которых не было вообще поддержки сервера SDO. Логически это выглядит допустимым для простейших устройств CANopen, которые не позволяют менять свою конфигурацию и читать её. В таком случае для мастера сети CANopen должно быть предоставлено полное описание этого подчиненного устройства в виде соответствующего файла *.eds. Если выкинуть объекты SDO, то код устройства CANopen можно кардинально упростить.
Количество поддерживаемых элементов в записи объекта SDO указано по sub-индексу 0h. Значения по sub-индексам 1h и 2h задают COB-ID для этого SDO. Sub-индекс 3h предоставляет сервер SDO в случае, если запись описывает SDO для которого это устройство клиент, и дает клиенту SDO, если запись описывает SDO, для которого это устройство сервер.
MSB LSB
Биты
31
30
29
28-11
10-0
11-битный CAN-ID
0/1
0
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11-битный ID
29-битный CAN-ID
0/1
0
1
29-битный ID
Рис. 64: Структура элемента SDO COB-ID.
Таблица 54. Описание SDO COB-ID.
Бит
Значение
Что означает
31 (MSB)
0
SDO существует / допустим
1
SDO не существует / недопустим
30
0
Зарезервировано (здесь всегда 0)
29
0
11-битный ID (CAN 2.0A)
1
29-битный ID (CAN 2.0B)
28 - 11
0
Тут все нули, если бит 29 == 0
X
Если бит 29 == 1, то здесь находятся биты 28..11 для 29-битного SDO COB-ID
10 - 0 (LSB)
X
Биты 10..0 SDO COB-ID
SDO допустим, только если оба бита SDO-valid равны 0. Устройства, поддерживающие только стандартный тип фрейма, при попытке установить бит 29 ответят сообщением abort message (abort code: 0609 0030h). Эти объекты содержат параметры для объектов SDO, для которых это устройство является сервером. Если устройство поддерживает больше одного сервера SDO, то объект SDO по умолчанию должен находиться по индексу 1200h как первый сервер SDO. Этот элемент имеет доступ только для чтения2. Все дополнительные объекты сервера SDO по умолчанию недопустимы (invalid bit - см. таблицу 54), описание находится в последующих индексах. Не разрешено менять COB-ID, когда SDO существует.
Описание клиента SDO (sub-индекс 3h) является необязательным. Это не доступно для SDO по умолчанию (нет sub-индекса 3h по индексу 1200h), поскольку этот элемент только для чтения.
Примечание 2: должно гарантироваться, что идентификаторы COB-ID для SDO не могут быть изменены записью в OD.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1200h - 127Fh
Name
Server SDO parameter (параметр сервера SDO)
Object Code
RECORD
Data Type
SDO Parameter
Category
Conditional (зависит от условия): индекс 1200h: Optional (не обязательно) индексы 1201h - 127Fh: Mandatory (обязательно) для каждого дополнительно поддерживаемого сервера SDO
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
number entries (количество полей в записи)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
Индекс 1200h: 2 Индексы 1201h .. 127F: 2 - 3
Default Value
No
Sub-индекс
1h
Description (описание)
COB-ID Client->Server (прием)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
Индекс 1200h: ro, индексы 1201h .. 127Fh: rw
PDO Mapping
No
Value Range
UNSIGNED32 (таблица 54)
Default Value
Индекс 1200h: 600h+Node-ID, индексы 1201h .. 127Fh: запрещено
Sub-индекс
2h
Description (описание)
COB-ID Server -> Client (передача)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
Индекс 1200h: ro, индексы 1201h .. 127Fh: rw
PDO Mapping
No
Value Range
UNSIGNED32 (таблица 54)
Default Value
Индекс 1200h: 580h+Node-ID, индексы 1201h .. 127Fh: запрещено
Sub-индекс
2h
Description (описание)
Node-ID of the SDO client (идентификатор узла клиента SDO)
Эти объекты содержат параметры для объектов SDO, для которых это устройство является клиентом. Если этот элемент поддерживается, то должны быть в наличии и все sub-индексы. Элементы начинаются с индекса 1280h. Эти элементы описаны в описании Server SDO Parameter. Все объекты клиента SDO по умолчанию недопустимы (invalid bit – см. таблицу 54).
ОПИСАНИЕ ОБЪЕКТА
INDEX
1280h - 12FFh
Name
Client SDO parameter (параметр клиента SDO)
Object Code
RECORD
Data Type
SDO Parameter
Category
Conditional (зависит от условия): Mandatory (обязательно) для каждого поддерживаемого клиента SDO
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
number entries (количество полей в записи)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
3
Default Value
3
Sub-индекс
1h
Description (описание)
COB-ID Client->Server (передача)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32 (таблица 54)
Default Value
запрещено
Sub-индекс
2h
Description (описание)
COB-ID Server -> Client (прием)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32 (таблица 54)
Default Value
запрещено
Sub-индекс
3h
Description (описание)
Node-ID of the SDO server (идентификатор узла сервера SDO)
Здесь содержаться коммуникационные параметры для объектов PDO, которые устройство может принимать. Тип коммуникационного параметра PDO (PDO communication parameter, 20h) описан в 9.5.4. Sub-индекс 0h содержит количество достоверных элементов в записи коммуникации. Это значение равно как минимум 2. Если поддерживается время запрета (inhibit time), то значение будет 3. По sub-индексу 1h размещается COB-ID для PDO. Этот элемент должен быть определен как UNSIGNED32, чтобы обслужить как 11-битные идентификаторы CAN (CAN 2.0A), так и 29-битные идентификаторы CAN (CAN 2.0B). Элемент должен быть интерпретирован, как определено на рис. 65 и в таблице 55.
MSB LSB
Биты
31
30
29
28-11
10-0
11-битный CAN-ID
0/1
0/1
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11-битный ID
29-битный CAN-ID
0/1
0/1
1
29-битный ID
Рис. 65. Структура элемента PDO COB-ID.
Таблица 55. Описание записи PDO COB-ID.
Бит
Значение
Что означает
31 (MSB)
0
PDO существует / допустим
1
PDO не существует / недопустим
30
0
Для этого PDO разрешен RTR
1
Для этого PDO не разрешен RTR
29
0
11-битный ID (CAN 2.0A)
1
29-битный ID (CAN 2.0B)
28 - 11
0
Тут все нули, если бит 29 == 0
X
Если бит 29 == 1, то здесь находятся биты 28..11 для 29-битного PDO COB-ID
10 - 0 (LSB)
X
Биты 10..0 PDO COB-ID
Бит PDO valid/not valid (допустим/не допустим) позволяет выбрать, какие PDOs используются в рабочем состоянии (operational). Могут быть объекты PDO, полностью сконфигурированные (например по умолчанию), но не используемые, и тогда они устанавливаются в состояние "not valid" (удалены). Эта функция нужна для устройств, которые поддерживают больше чем 4 RPDO или 4 TPDO, потому что каждое устройство имеет только идентификаторы по умолчанию для первых четырех RPDO/TPDO. Устройства, поддерживающие только стандартный тип фрейма CAN, или которые не поддерживают фреймы Remote, при попытке установить бит 29 в 1 или бит 30 в 0 отвечает сообщением abort (abort code: 0609 0030h).
Не разрешено менять биты 0-29, в то время как PDO существует (бит 31=0). Тип передачи (sub-индекс 2) определяет характер передачи/приема PDO (см. 9.2.1.1). Таблица 56 описывает использование этой записи. При попытке поменять значение типа передачи на значение, которое не поддерживается устройством, будет сгенерировано сообщение abort (abort code: 0609 0030h).
Таблица 56. Описание типа передачи.
Тип передачи
Символ синхронизации передачи PDO
Циклический
Не циклический
Синхронный
Асинхронный
RTR
0
x
x
1..240
x
x
241..251
Зарезервировано
252
x
x
253
x
x
254
x
255
x
Синхронный тип (Synchronous, типы передач 0-240 и 252) означает, что передача PDO должна быть связана с объектом SYNC, как это описано в 9.3. Преимущественно устройства используют SYNC как триггер для вывода или активации на базе предыдущего синхронного RPDO, соответственно для обновления данных, передаваемых при следующем синхронном TPDO. Подробности этого механизма зависят от типа устройства, что определено в профиле устройства, если это применимо.
Асинхронный тип (Asynchronous) означает, что передача PDO не связана с объектом SYNC. Тип передачи 0 означает, что сообщение должно передаваться синхронно с объектом SYNC, но не периодически.
Значение между 1 и 240 означает, что PDO передается синхронно и циклически. Тип передачи показывает количество появлений SYNC, которое нужно для срабатывания передач PDO. RPDO всегда срабатывают по следующему SYNC при приема данных, независимо от типов передачи 0 - 240.
Типы передачи 252 и 253 означают, что PDO передается только в ответ на RTR (remote transmission request, запрос передачи от другого узла сети). При типе передачи 252 данные обновляются (но не отправляются) немедленно после приема объекта SYNC. При типе передачи 253 данные обновляются в момент приема RTR (могут накладываться аппаратные и программные ограничения). Эти значения допустимы только для объектов TPDO. Тип передачи 254 для объектов TPDO означает, что событие приложения зависит от производителя (той части OD, которая зависит от производителя устройства). Тип передачи 255 означает, что событие приложения определено в профиле устройства. Объекты RPDO с таким типом выполняют срабатывание обновления отображенных данных в момент приема. Sub-индекс 3h содержит время запрета inhibit (этот элемент может отсутствовать). Это время задает минимальный интервал между передачами PDO. Значение задается в единицах 100 мкс. Не разрешено менять это значение, когда PDO существует (бит 31 у sub-индекса 1 равен 0).
Sub-индекс 4h зарезервирован. Он не должен быть реализован, в этом случае доступы на чтение или запись приведут к выдаче Abort SDO Transfer (abort code: 0609 0011h).
В режиме 254/255 дополнительно может использоваться время события (event time) для TPDO. Если существует таймер события (event timer) для TPDO (значение не равно 0), то истечение таймера считается событием. Таймер события истекает на интервалах, нацело делящихся на 1 мс, как это определено в элементе по sub-индексуindex 5h для TPDO. Это событие будет приводить к передаче этого TPDO в дополнение к событиям, определенным другим способом. Момент наступления события устанавливает таймер. Независимый от типа передачи таймер события RPDO используется для распознавания истечения RPDO.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1400h - 15FFh
Name
receive PDO parameter (параметр PDO приема, RPDO)
Object Code
RECORD
Data Type
PDO CommPar
Category
Conditional (зависит от условия): Mandatory (обязательно) для каждого поддерживаемого PDO
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
largest sub-index supported (самый большой поддерживаемый sub-индекс)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
3
Default Value
2 – 5
Sub-индекс
1h
Description (описание)
COB-ID used by PDO (идентификатор CAN, используемый этим PDO)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro rw, если поддерживается изменяемый COB-ID
PDO Mapping
No
Value Range
UNSIGNED32 (таблица 55)
Default Value
Индекс 1400h: 200h + Node-ID, индекс 1401h: 300h + Node-ID, индекс 1402h: 400h + Node-ID, индекс 1403h: 500h + Node-ID, индекс 1404h – 15FFh: запрещено
Sub-индекс
2h
Description (описание)
transmission type (тип передачи)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro rw, если поддерживается изменяемый тип передачи
PDO Mapping
No
Value Range
UNSIGNED8 (таблица 56)
Default Value
Зависит от профиля устройства
Sub-индекс
3h
Description (описание)
inhibit time (время запрета. Не используется для RPDO)
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED16
Default Value
No
Sub-индекс
4h
Description (описание)
compatibility entry (элемент совместимости)
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED8
Default Value
No
Sub-индекс
5h
Description (описание)
event timer (таймер события)
Entry Category
Optional (наличие не обязательно). Не используется для RPDO
Содержит отображение для объектов PDO, которые устройство может принять. Тип параметра отображения PDO (PDO mapping parameter, 21h) описан в 9.5.4. Как обычно, sub-index 0h содержит количество допустимых элементов записи отображения. Это количество также равно количеству переменных приложения, которые должны быть переданы/приняты вместе с соответствующим PDO. The sub-indices from 1h to number of entries contain the information about the mapped application variables. Эти элементы описывают содержимое PDO их индексом, sub-индексом и длиной (рис. 66). Все 3 значения кодируются шестнадцатеричным числом. Элемент длины (length) содержит длину объекта в битах (1..40h). Этот параметр может использоваться для проверку общей длины отображения, он обязателен.
Структура элементов по sub-индексам 1h – 40h следующая:
MSB LSB
Индекс (16 бит)
sub-индекс (8 bit)
длина объекта (8 бит)
Рис. 66. Структура элемента PDO Mapping.
Если изменение PDO не может быть выполнено (например длина PDO превышена или клиент SDO попытался отобразить объект, который не может быть отображен), то устройство отвечает службой Abort SDO Transfer.
Sub-индекс 0 определяет допустимое количество объектов, которые имеют отображение. Для изменения отображения PDO сначала PDO должен быть удален, sub-индекс 0 должен быть установлен в 0 (отображение деактивировано). Затем объекты могут быть отображены заново. Когда отображается новый объект путем записи sub-индекса между 1 и 64, устройство может проверить, существует ли объект, указанный по индексу / sub-индексу. Если объект не существует, или объект не может быть отображен, то передача SDO должна быть оборвана службой Abort SDO Transfer с одним из кодов abort 0602 0000h или 0604 0041h.
После того, как все объекты отображены, sub-индекс 0 устанавливается в достоверное число отображенных объектов. В завершении будет создан PDO путем записи его коммуникационного параметра (communication parameter COB-ID). Когда sub-индекс 0 устанавливается в значение >0, устройство может проверить на допустимость новое отображение PDO перед тем, как передать ответ службе SDO. Если была определена ошибка, то устройство должно передать службу Abort SDO Transfer с одним из кодов abort 0602 0000h, 0604 0041h или 0604 0042h.
Когда читается sub-индекс 0, то будет возвращено актуальное количество отображенных объектов.
Если отображены типы данных (индексы 1h-7h), то они служат "фиктивными записями" (dummy entries). Соответствующие данные в PDO не оцениваются в устройстве. Эта опциональная функция полезна например для передачи данных для некоторых устройств, использующих один и тот же PDO, когда на каждом устройстве задействована своя часть от этого PDO. Невозможно создавать dummy mapping для TPDO.
Устройство, которое поддерживает динамическое отображение объектов PDO (dynamic mapping PDO), должно поддерживать это в состоянии PRE-OPERATIONAL. Если поддерживается динамическое отображение во время состояния OPERATIONAL, то клиент SDO отвечает за целостность данных.
Рис. 67. Принцип отображения PDO.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1600h – 17FFh
Name
receive PDO mapping (отображение на PDO приема, RPDO)
Object Code
RECORD
Data Type
PDO Mapping (отображение объектов на PDO)
Category
Conditional (зависит от условия): Mandatory (обязательно) для каждого поддерживаемого PDO
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество отображенных на PDO объектов приложения
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro rw, если поддерживается динамическое отображение
PDO Mapping
No
Value Range
0: деактивировано 1 – 64: активировано
Default Value
зависит от профиля устройства
Sub-индекс
1h – 40h
Description (описание)
отображение на PDO n-ного объекта приложения
Entry Category
Conditional, зависит от количества и размера привязанных к этому PDO объектов.
Содержит параметры коммуникации для объектов PDO, которые устройство может передать. Тип коммуникационного параметра PDO (PDO communication parameter, 20h) описан в 9.5.4. Подробное описание элементов сделано в секции для Receive PDO Communication Parameter (1400h – 15FFh).
Conditional (зависит от условия): Mandatory (обязательно) для каждого поддерживаемого PDO
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
largest sub-index supported (самый большой поддерживаемый sub-индекс)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
3
Default Value
2 – 5
Sub-индекс
1h
Description (описание)
COB-ID used by PDO (идентификатор CAN, используемый этим PDO)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro rw, если поддерживается изменяемый COB-ID
PDO Mapping
No
Value Range
UNSIGNED32 (таблица 65)
Default Value
Индекс 1800h: 180h + Node-ID, индекс 1801h: 280h + Node-ID, индекс 1802h: 380h + Node-ID, индекс 1803h: 480h + Node-ID, индекс 1804h – 18FFh: запрещено
Sub-индекс
2h
Description (описание)
transmission type (тип передачи)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro rw, если поддерживается изменяемый тип передачи
Содержит отображение для объектов PDO, которые устройство может передать. Тип параметра отображения PDO (PDO mapping parameter, 21h) описан в 9.5.4. Подробное описание элементов сделано в секции для Receive PDO Mapping Parameter (1600h – 17FFh).
ОПИСАНИЕ ОБЪЕКТА
INDEX
1A00h - 1BFFh
Name
transmit PDO mapping (отображение на PDO передачи, TPDO)
Object Code
RECORD
Data Type
PDO Mapping (отображение объектов на PDO)
Category
Conditional (зависит от условия): Mandatory (обязательно) для каждого поддерживаемого PDO
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество отображенных на PDO объектов приложения
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro rw, если поддерживается динамическое отображение
PDO Mapping
No
Value Range
0: деактивировано 1 – 64: активировано
Default Value
зависит от профиля устройства
Sub-индекс
1h – 40h
Description (описание)
отображение на PDO n-ного объекта приложения
Entry Category
Conditional, зависит от количества и размера привязанных к этому PDO объектов.
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32
Default Value
зависит от профиля устройства
[10. Рекомендации по реализации]
Когда реализуются протоколы, должны удовлетворяться следующие правила, чтобы гарантировать функциональную совместимость устройств разных производителей. Эти правила имеют дело со следующими аспектами реализации:
Недопустимые COB-ы. COB является недопустимым, если имеется COB-ID, используемый указанными протоколами, но он содержит недопустимые значения параметра, соответствующие спецификации протокола. Это может быть вызвано только ошибками на нижних слоях или ошибками в реализации. Недопустимые COB-ы должны обрабатываться локально зависящим от реализации способом, что не попадает в область обсуждения этой спецификации. Поскольку затрагивается протокол, недопустимый COB должен игнорироваться.
Таймауты. Так как COB-ы могут быть проигнорированы, может быть так, что ответ подтверждаемой службы никогда не поступит. Чтобы разобраться с этой ситуацией, реализация может после определенного количества времени показать на это пользователю службы (время вышло, time-out). Таймаут является не подтверждением этой службы. Таймаут показывает, что служба еще не завершена. Приложение должно обработать эту ситуацию. Значения таймаута считаются специфичными для реализации, и не попадают в обсуждение этой спецификации. Однако рекомендуется, чтобы реализация позволяла подстраивать эти значения таймаута, чтобы удовлетворить требованиям приложения.
[11. Приложение A (норматив)]
Здесь описана дополнительная функциональность подчиненных устройств NMT CANopen (версия 2.0.1, 13 февраля 2002). В этом нормативном приложении описана функциональность для ведомых устройств NMT CANopen, которая была первоначально определена в платформе CiA DSP-302 для программируемых устройств CANopen.
11.1. Дополнительные элементы OD. Дополнительные записи:
Индекс
Объект
Имя
0024h
DEFSTRUCT
Debugger Par
0025h
DEFSTRUCT
Command Par
Дополнительные объекты коммуникации:
Индекс
Объект
Имя
Тип
Acc.(3)
M/O
Конфигурация устройства
1020h
ARRAY
Проверка конфигурации
UNSIGNED32
rw
O
Хранилище EDS
1021h
VAR
Store EDS
DOMAIN
rw
O
1022h
VAR
Формат хранилища
UNSIGNED8
rw
O
Команда и приглашение OS
1023h
RECORD
OS Command
Command Par
rw
O
1024h
VAR
OS Command Mode
UNSIGNED8
wo
O
1025h
RECORD
OS Debugger Interface
Debugger Par
rw
O
1026h
ARRAY
OS Prompt
UNSIGNED8
rw
O
Модульные устройства
1027h
ARRAY
Список модулей
UNSIGNED16
ro
M/O*
Дополнительные объекты
1028h
ARRAY
Emergency Consumer
UNSIGNED32
rw
O
1029h
ARRAY
Поведение при ошибке
UNSIGNED8
rw
O
Мультиплексированный PDO
1FA0h - 1FCFh
RECORD
Object Scanner List
UNSIGNED32
rw
O
1FD0h - 1FFFh
RECORD
Object Dispatching List
UNSIGNED64
rw
O
Примечания:
M/O означает Mandatory/Optional (обязательно/не обязательно). * Mandatory (обязательно) для модульных устройств; иначе не обязательно. 3 Тип доступа, перечисленный здесь, может меняться для определенных sub-индексов. См. подробную спецификацию объекта.
11.2. Конфигурация устройства
11.2.1. Boot-up configuration process. Параметр в объекте 1010h для сохранения конфигурации slave-устройства недостаточна для того, чтобы CANopen Manager определил, что slave-устройство восстановилось в своей последней конфигурации после сброса, и смог немедленно ввести его в состояние Operational. Чтобы CANopen Manager мог определить, нужно ли переконфигурировать slave-устройство, должны использоваться следующие опциональные объекты:
Если устройство поддерживает сохранение параметров в энергонезависимой памяти, инструментарий конфигурирования сети или CANopen manager могут проверить (verify) конфигурацию после сброса устройств и определить, требуется ли повторное конфигурирование. Утилита конфигурации должна сохранить дату и время в этом объекте, и должна сохранить те же значения в DCF. Теперь утилита конфигурации позволит устройству сохранить свою конфигурацию путем записи по индексу 1010h и sub-индексу 1h сигнатуры "save". После сброса устройство должно восстановить последнюю конфигурацию и сигнатуру - автоматически или по запросу. Если любая другая команда изменит значения конфигурации загрузки (boot-up configuration values), устройство должно сбросить объект Verify Configuration в 0.
Configuration Manager сравнивает сигнатуру и конфигурацию со значением из DCF, и принимает решение - нужно или нет повторно конфигурировать устройство.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1020h
Name
Verify configuration (проверка конфигурации)
Object Code
ARRAY
Data Type
UNSIGNED32
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество поддерживаемых элементов
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
2
Default Value
2
Sub-индекс
1h
Description (описание)
Configuration date (дата конфигурации)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32
Default Value
No
Sub-индекс
2h
Description (описание)
Configuration time (время конфигурации)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32
Default Value
No
Значение Configuration date должно содержать количество дней от 1 января 1984 года. Configuration time должно содержать количество миллисекунд после полуночи.
Совет по применению: использование этого объекта позволяет значительно ускорить boot-up process. Если он используется, системный интегратор должен полагать, что пользователь мог поменять значение конфигурации и впоследствии активировать конфигурацию команды сохранения 1010h без изменения значения 1020h. Таким образом, системный интегратор должен гарантировать 100%-е последовательное использование этой функции.
11.2.2. Хранилище EDS. Для некоторых устройств можно хранить внутри себя EDS. Это дает некие преимущества:
• У производителя нет проблем с распространением EDS на дисках. • Обслуживание разных версий EDS для разных версий ПО меньше подвержено ошибкам, если они сохранены вместе. • Полные настройки сети могут быть сохранены в сетевом окружении. Это делает задачу анализа или переконфигурирования сети проще для инструментария и более прозрачной для пользователей.
EDS может быть сохранен в следующем объекте:
ОПИСАНИЕ ОБЪЕКТА
INDEX
1021h
Name
Store EDS (хранилище EDS)
Object Code
VAR
Data Type
DOMAIN
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
No
Default Value
No
Имя файла сохранять не нужно, поскольку каждый EDS содержит свое собственное имя файла.
Объект 1022h описывает формат хранилища. Это позволяет использовать сжатые форматы.
Value
Format
0
ASCII, без сжатия
1-255
Зарезервировано
Устройство всегда может сохранять файл сжатым внутри себя. Этот объект описывает внешнее поведение.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1022h
Name
Storage format (формат хранения)
Object Code
VAR
Data Type
UNSIGNED16
Category
Conditional (наличие зависит от условия): Mandatory (обязательно), если поддерживается Store EDS.
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED8
Default Value
No
11.3. Команда и приглашение OS. Многие операционные системы (OS) программируемых устройств поддерживают приглашение ввода команды в консоли (console prompt). Команды могут быть введены пользователем с клавиатуры или через любое другое пользовательское устройство ввода (например, с помощью программного обеспечения PC с командами, подаваемыми мышью в графическом интерфейсе). Чтобы позволить выполнять конфигурирование через сеть и отладку через сеть для такого узла, определены и введены в OD объекты "OS Command/Debugger Interface" (интерфейс команды и отладки операционной системы). Обрабатываемые устройством команды зависят от от производителя. Наиболее распространено использование 2 типов команд. Для многих PLC (программируемый логический контроллер) интерпретатор команд ожидает на входе двоичный поток данных, где закодирована команда и дополнительные бинарные данные наподобие CRC и т. п. Другая концепция - символьный ввод (один символ команды или текстовая строка команды).
См. также описание загрузки программы в CiA DSP-302.
11.3.1. OS command. Объект команды OS может использоваться как интерфейс команд для программируемых устройств. Содержимое команды может быть ASCII или двоичными данными, и это полностью зависит от производителя. Система хоста помещает команду в объект OS command, который должен иметь тип Command Par:
Индекс
sub-индекс
Поле в OS Command
Тип данных
0023h
0h
Количество поддерживаемых элементов
UNSIGNED8
1h
Команда
OCTET_STRING
2h
Статус: 0: последняя команда выполнена, нет ошибок, нет подтверждения. 1: последняя команда выполнена, нет ошибок, есть подтверждение. 2: последняя команда выполнена, ошибка, нет подтверждения. 3: последняя команда выполнена, ошибка, есть подтверждение. 4..254: не определено, зарезервировано. 255: в настоящий момент выполняется команда.
UNSIGNED8
03h
Подтверждение
OCTET_STRING
ОПИСАНИЕ ОБЪЕКТА
INDEX
1023h
Name
OS command (команда операционной системы)
Object Code
RECORD
Data Type
Command Par
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество поддерживаемых элементов
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
3
Default Value
3
Sub-индекс
1h
Description (описание)
Command (команда)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
No
Default Value
No
Sub-индекс
2h
Description (описание)
Status (статус, состояние команды)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
UNSIGNED8
Default Value
No
Sub-индекс
3h
Description (описание)
Reply (подтверждение, ответ на команду)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
No
Default Value
No
Если устройство реализовало эту функцию, то эти элементы являются обязательными, дополнительные элементы зависят от производителя. Может быть введена новая команда, если Status в диапазоне 0..3: команда и все параметры должны быть переданы в одном блоке по sub-индексу 1h. Выполнение команды должно начаться немедленно после завершения передачи. Хост опрашивает sub-индекс 2h, пока он не получит значение 0 .. 3. Может быть подтверждение на передачу, если Status 1 или 3. Устройство должно вернуть тот же самый ответ, если Reply запрошен больше одного раза, или может поменять Status с 1 на 0 или с 3 на 2, если оно не сохраняет в буфере подтверждение.
Следующий элемент OD управляет рабочим режимом OS command:
ОПИСАНИЕ ОБЪЕКТА
INDEX
1024h
Name
OS command mode (режим команды операционной системы)
Object Code
VAR
Data Type
UNSIGNED8
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Access (тип доступа)
wo
PDO Mapping
No
Value Range
UNSIGNED8 0: выполнить следующую команду немедленно. 1: сохранить следующую команду в буфере. 2: выполнить команду из буфера. 3: оборвать текущую команду и все команды в буфере. 4 .. 255: специфично для производителя.
Default Value
No
Установлено, что объект OD OS command представляет наиболее свежую информацию в очереди, и этот объект управляет выполнением команд из этой очереди.
11.3.2. OS debugger interface. Объект интерфейса отладчика это двоичный интерфейс команд для агентов отладки программируемых устройств. Содержимое команд зависит от производителя. Этот объект позволяет пользователю подключиться удаленным отладчиком. Тип данных этого объекта Debugger Par:
Индекс
sub-индекс
Поле в OS Debugger Interface
Тип данных
0025h
0h
Количество поддерживаемых элементов
UNSIGNED8
1h
Команда
OCTET_STRING
2h
Статус: 0: последняя команда выполнена, нет ошибок. 1: последняя команда выполнена, ошибка. 255: в настоящий момент выполняется команда.
UNSIGNED8
03h
Подтверждение
OCTET_STRING
ОПИСАНИЕ ОБЪЕКТА
INDEX
1025h
Name
OS debugger interface (режим отладчика операционной системы)
Object Code
RECORD
Data Type
Debugger Par
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество поддерживаемых элементов
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
3
Default Value
3
Sub-индекс
1h
Description (описание)
Command (команда)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
No
Default Value
No
Sub-индекс
2h
Description (описание)
Status (состояние)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
UNSIGNED8
Default Value
No
Sub-индекс
3h
Description (описание)
Reply (подтверждение, ответ)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
No
Default Value
No
Если в устройстве реализована эта функция, то элементы 00h-03h являются обязательными, наличие дополнительных элементов зависит от производителя. Для последовательности команд см. секцию OS Command.
11.3.3 OS prompt. Объект приглашения операционной системы это управляемый командами интерфейс программируемых устройств. Содержимое команд зависит от производителя. Этот объект позволяет пользователю осуществить удаленное управление с клавиатуры.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1026h
Name
OS prompt (приглашение командной строки операционной системы)
Object Code
ARRAY
Data Type
UNSIGNED8
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество поддерживаемых элементов
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
2 - 3
Default Value
No
Sub-индекс
1h
Description (описание)
StdIn (стандартный ввод)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
wo
PDO Mapping
Возможно
Value Range
UNSIGNED8
Default Value
No
Sub-индекс
1h
Description (описание)
StdIn (стандартный ввод)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
wo
PDO Mapping
Возможно
Value Range
UNSIGNED8
Default Value
No
Sub-индекс 1h StdIn можно использовать для передачи одного символа в устройство через SDO или PDO. Каждый новый символ добавляется к внутренней очереди ввода. Ответы от устройства выводятся через sub-индекс 2h StdOut. Этот объект может быть отображен на управляемый событиями (event-driven) PDO или опрашиваться через SDO. Sub-индекс 3h StdErr может использоваться для вывода ошибок. Этот объект также может быть отображен на event-driven PDO или опрашиваться через SDO.
Приложение отвечает за обработку очистки очередей (чтобы не было переполнений).
[11.4. Мультиплексированные объекты PDO]
11.4.1. Протокол MPDO. Этот протокол используется для реализации служб MPDO (Multiplexed PDO). Продюсер MPDO посылает данные, и мультиплексор показывает адрес источника или адрес назначения.
d должно содержать передаваемые данные. Это значение всегда должно быть заполнено до 32 бит*. m должно содержать мультиплексор (индекс и sub-индекс) переменной в OD.
Примечание *: ограничение, связанное с только 32-битных передач не будет на практике создавать проблем, поскольку все участвующие устройства знают типы данных (и их размеры) связанных с ними объектов.
MSB f первого байта должно содержать флаг формата, и addr должно содержать поле адреса, которое может использоваться в следующих комбинациях:
f
addr
Использование
0
0
Зарезервировано
0
1-127
Адресация источника. Поде addr это Node ID одиночного продюсера. Мультиплексором является индекс и sub-индекс OD продюсера.
1
0
Адресация места назначения. Потребитель (consumer) это группа.
1
1-127
Адресация места назначения. Поле addr это Node ID одиночного потребителя. Мультиплексором является index и sub-индекс OD потребителя.
11.4.1.1. Destination Address Mode (DAM). Поле addr и поле m MPDO относится к потребителю (consumer). Это позволяет получить доступ к OD потребителя через SDO. С addr = 0, это позволяет делать множественную адресацию (multicasting) и широковещание (broadcasting), чтобы записывать в OD больше чем одного узла одновременно, без того, чтобы на каждом одиночном объекте имелся PDO.
Инициация DAM-MPDO зависит от приложения, примерно так же, как это происходит для объектов SDO.
11.4.1.2. Source Address Mode (SAM). Поле addr и поле m MPDO относится к продюсеру. Для каждого узла разрешен только один продюсер MPDO такого типа.
Тип передачи должен быть 254 или 255.
Продюсер использует Object Scanner List чтобы знать, какие объекты отправлять.
Потребитель использует Object Dispatcher List в качестве справочника (cross reference).
11.4.2. Элементы OD
11.4.2.1. PDO Mapping Record. Sub-индекс 0 показывает количество отображенных расширенных объектов. Допустимый диапазон для не мультиплексированных PDO составляет от 0 до 64. Значение 255 показывает DAM-MPDO, значение 254 показывает SAM-MPDO.
Для SAM следующие элементы в MR не имеют значения.
Для DAM первый объект описывает локальный объект (здесь может быть отображен только один объект в MPDO).
Здесь разрешены дополнительные значения для объектов 1600h – 17FFh и 1A00h – 1BFFh sub-индекс 0h:
0 .. 64: допустимый диапазон для количества отображенных объектов. 254: форматировано как SAM-MPDO. 255: форматировано как DAM-MPDO.
11.4.2.2. Object Dispatching List. Потребитель SAM-MPDO использует Object Dispatching List как справочник/набор ссылок (cross reference) между сетевым объектом (remote object) продюсера и локальным OD.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1FD0h – 1FFFh
Name
Object dispatching list (список диспетчеризации объектов)
Object Code
ARRAY
Data Type
UNSIGNED64
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество элементов
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
1 – FEh
Default Value
No
Sub-индекс
1h
Description (описание)
Dispatch_1
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED64
Default Value
No
Sub-индекс
2h – FEh
Description (описание)
Dispatch_2 – Dispatch_254
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED64
Default Value
No
Поля должны иметь следующую структуру:
MSB LSB
Биты
63-56
55-40
39-32
31-16
15-8
7-0
поле
Размер блока
Локальный индекс
Локальный sub-индекс
Индекс отправителя
Sub-индекс отправителя
Node-ID отправителя
Каждый элемент в таблице описывает, как данные, принятые MPDO, переносятся в локальный OD. Если поле флага 0 и Node ID продюсера, индекс продюсера и sub-индекс продюсера соответствуют элементу, то данные должны быть записаны в локальный объект, адресованный по локальному индексу и локальному sub-индексу этого элемента.
Параметр размера блока позволяет использовать идущие друг за другом sub-индексы. Пример: если sub-индекс 1-9 отправителя должен быть отображен на sub-индекс 11-19 получателя, то этот диапазон определяется так:
Элементы таблицы, которые не сконфигурированы, должны содержать значение 0.
11.4.2.3. Object Scanner List. Продюсер SAM-MPDO использует Object Scanner List для конфигурирования, какие объекты должны передаваться. Тип передачи дается соответствующим полем используемого PDO.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1FA0h – 1FCFh
Name
Object scanner list
Object Code
ARRAY
Data Type
UNSIGNED32
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество элементов
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
1 – FEh
Default Value
No
Sub-индекс
1h
Description (описание)
Scan_1
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32
Default Value
No
Sub-индекс
2h – FEh
Description (описание)
Scan_2 – Scan_254
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32
Default Value
No
Поля должны иметь следующую структуру:
MSB LSB
Биты
31-24
23-8
7-0
поле
Размер блока
Индекс
Sub-индекс
Каждый элемент в таблице описывает объект, который может быть отправлен через MPDO. Можно описать идущие друг за другом sub-индексы установкой параметра размер блока в количество sub-индексов.
Элементы таблицы, которые не сконфигурированы, должны содержать значение 0.
11.4.3. Реализация объектов MPDO
Продюсер MPDO. Если на узле указано для передачи один или большее количество MPDO, то должны применяться следующие правила реализации:
• Если это SAM-MPDO, то используется Object Scanner List вместе с типом передачи, чтобы определить, какой объект отправлять (для передачи должен быть только один SAM-MPDO). • Если это DAM-MPDO, то обычно локальный объект может быть указан в объекте Mapping Parameter Set. Объект назначения (Destination Object) и Node ID могут быть заданы в зависимости от приложения.
MPDO Consumer. Если узел принимает MPDO (которые известны через объект Mapping Parameter Set), то должны применяться следующие правила реализации:
• Если это DAM-MPDO, то он записывает принятые данные в указанный элемент OD. • Если это SAM-MPDO, то он использует Object Dispatching List в качестве навигационного справочника (cross reference).
11.4.4. Группы, безопасность и инструментарий конфигурирования сети. Описанная схема группового обмена сообщениями очень эффективна, когда используется только один DAM-MPDO на группу. Узел, который является потребителем группы, должен только получить MPDO для той группы. Нет ограничений на количество групп, кроме ограничения, которое накладывается количеством свободных COB-ID для объектов PDO.
На уровне CANopen нет никакой попытки принять меры против неправильного употребления объекта PDO, используемого в целях рассылки групповых сообщений.
11.4.5. Как показываются в EDS возможности MPDO. Для прозрачного использования инструментария инструментария конфигурирования нужно знать, поддерживает ли устройство механизм группы. Это должно быть помечено в EDS внутри секции DeviceInfo, в boolean-элементе GroupMessaging.
11.5.1. Предпосылки. Актуальная спецификация EDS позволяет описать модульные устройства. С этой функцией можно выполнить тест совместимости (Conformance Test) для таких устройств, без необходимости писать псевдо-EDS для конкретно подключенных модулей. Кроме того, можно описать эти устройства для планирования или конфигурации в независимых от производителя утилитах конфигурирования.
На практике в работе возникает одна проблема: общая задача сканирования сети с отображением результатов в виде набора файлов DCF. Для этой цели сканирующее ПО будет реализовать некоторые алгоритмы для сканирования объектов устройства, и автоматического назначения соответствующего файла EDS, затем чтения содержимого объекта и создания DCF. С модульными устройствами это не всегда возможно.
Предположим устройство расширителя шины (bus coupler device) и 3 имеющиеся в наличии типа модулей: Module Type A с 8 цифровыми выходами, Module Type B с цифровыми входами и Module Type C с комбинацией 8 входов и 8 выходов. Предположим, что ПО конфигурирования сканирует такое устройство, и определяет, что оно состоит из 8 цифровых входов и 8 цифровых выходов. Тогда нет возможности определить, каким образом был получен этот функционал - либо подключен только Module Type C, либо подключено 2 модуля, один Module Type A и еще один Module Type B.
Эта неоднозначность может создавать проблемы для пользователей. Такие случаи требуют дополнительных усилий по внедрению со стороны производителей устройств и поставщиков инструментария. Пользователи будут чувствовать, что CANopen слишком сложен для применения. Небольшое дополнение OD для устройств расширителя шины решит эту проблему.
Идея состоит в том, что расширитель шины содержит объект, в котором есть список подключенных модулей. ПО сканирует это устройство, прочитает это список и получит полную информацию о том, какие конкретно модули подключены к устройству.
11.5.2. Modular Devices (модульные устройства). Общий метод предоставить модульные устройства - использование устройства расширителя шины, которое позволяет подключать к себе несколько комбинаций модулей. Объект 1027h Module List описывает, какие конкретно модули подключены, и их количество.
ОПИСАНИЕ ОБЪЕКТА
INDEX
027h
Name
Module list (список модулей)
Object Code
ARRAY
Data Type
UNSIGNED16
Category
Conditional (зависит от условия): обязательно, если поддерживаются модульные устройства.
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество подключенных модулей
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
1 – FEh
Default Value
No
Sub-индекс
1h – FEh
Description (описание)
Module_2 – Module_254
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED16
Default Value
No
Идущие подряд друг за другом sub-индексы (1 ≤ N ≤ 254) описывают соответствующие модули в том порядке, в котором они были подключены к устройству. Каждый элемент OD содержит число, которое идентифицирует модуль. Для этого число должно быть уникальным в пределах всех типов модулей, которые могут быть подключены к устройству типа расширителя шины.
В EDS (см. стандарт DSP-306) объект 1027h появляется в списке SubExtension каждого модуля. Элемент DefaultValue должен содержать идентификационный номер.
11.6.1. Объект Emergency Consumer. Эти объекты определяют идентификаторы Emergency COB-ID, которые потребляет подчиненное устройство NMT. Структура этого объекта следующая:
MSB LSB
Биты
31
30
29
28-11
10-0
11-битный CAN-ID
0/1
0
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11-битный ID
29-битный CAN-ID
0/1
0
1
29-битный ID
Бит
Значение
Что означает
31 (MSB)
0
EMCY существует / допустим
1
EMCY не существует / недопустим
30
0
Зарезервировано (здесь всегда 0)
29
0
11-битный ID (CAN 2.0A)
1
29-битный ID (CAN 2.0B)
28 - 11
0
Тут все нули, если бит 29 == 0
X
Если бит 29 == 1, то здесь находятся биты 28..11 для 29-битного EMCY COB-ID
10 - 0 (LSB)
X
Биты 10..0 EMCY COB-ID
Устройства, поддерживающие только стандартный тип фрейма, при попытке установить бит 29 ответят сообщением abort message (abort code: 0609 0030h). Не разрешено менять биты 0-29, когда объект существует (бит 31=0).
Sub-индекс относятся к соответствующему Node-ID.
ОПИСАНИЕ ОБЪЕКТА
INDEX
1028h
Name
Emergency Consumer (потребитель сообщений аварии)
Object Code
ARRAY
Data Type
UNSIGNED32
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество Emergency Consumer
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
1 – 127
Default Value
No
Sub-индекс
1h
Description (описание)
Emergency Consumer 1
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32
Default Value
No
Sub-индекс
2h – 7Fh
Description (описание)
Emergency Consumer от 2 до 127
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED32
Default Value
No
11.6.2. Объект Error Behaviour. Если в состоянии Operational была определена серьезная ошибка, то модуль должен автономно войти в состояние предварительной готовности (Pre-Operational). Если реализован объект 1029h (Error Behaviour) то устройство может быть сконфигурировано для альтернативного входа в состояние Stopped, или оставаться в текущем состоянии, когда произошел отказ в устройстве. Отказы (ошибки) устройства должны включать следующие ошибки коммуникации:
• Условия отключения шины (Bus-off conditions) интерфейса CAN • Событие Life guarding с состоянием 'occurred' (событие произошло) • Событие Heartbeat с состоянием 'occurred' (событие произошло)
Некоторые ошибки устройства могут быть вызваны его внутренними проблемами.
Значение поля Error Classes может быть следующим:
0 pre-operational (только если текущее состояние operational) 1 состояние не поменяется 2 stopped 3 .. 127 зарезервировано
ОПИСАНИЕ ОБЪЕКТА
INDEX
1029h
Name
Error Behaviour (поведение при ошибке)
Object Code
ARRAY
Data Type
UNSIGNED8
Category
Optional (наличие не обязательно)
ОПИСАНИЕ ЭЛЕМЕНТА (записи OD)
Sub-индекс
0h
Description (описание)
количество классов ошибок (Error Classes)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
ro
PDO Mapping
No
Value Range
1h - FEh
Default Value
No
Sub-индекс
1h
Description (описание)
Communication Error (ошибка коммуникации)
Entry Category
Mandatory (наличие обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED8
Default Value
0
Sub-индекс
2h - FEh
Description (описание)
Ошибка профиля устройства или ошибка, специфическая для производителя.
Entry Category
Optional (наличие не обязательно)
Access (тип доступа)
rw
PDO Mapping
No
Value Range
UNSIGNED8
Default Value
No
[Словарик]
Приведена расшифровка некоторых аббревиатур и терминов, появляющихся в статье. Другие аббревиатуры и термины см. разделе "Словарик" статьи [2].
CAN Controller Area Network, внутренний стандарт на специальную шину передачи данных.
COB Communication Object, объект коммуникации. Информационная единица переноса данных в сети CAN. Данные должны передаваться по сети CAN внутри COB. Имеется 2048 разных COB в сети CAN. COB может содержать может содержать самое большее 8 байтов данных.
COB-ID каждый COB уникально идентифицируется в сети числом, который называется идентификатором COB (COB-ID). Его значение определяет приоритет COB на sub-слое MAC.
Remote COB объект COB, передача которого запрошена другим устройством (узлом сети) с помощью запроса RTR.
CRC Cyclic Redundancy Check, контрольная сумма.
CSDO Client SDO, клиентский объект SDO.
LLC Logical Link Control, управление логическим соединением. Один из sub-слоев Data Link Layer (слоя переноса данных) в эталонной модели CAN Reference Model, который дает пользователю интерфейс, который не зависит от ниже лежащего слоя MAC.
MAC Medium Access Control, управление доступом к носителю данных. Один из sub-слоев Data Link Layer (слоя переноса данных) в эталонной модели CAN, который управляет доступом к среде для передачи сообщения.
MDI Medium Dependent Interface. Один из sub-слоев физического уровня передачи данных в эталонной модели CAN, который описывает механический и электрический интерфейс между носителем данных и модулем.
NMT Network Management, управление сетью. Один из сервисных элементов слоя приложения в эталонной модели CANopen. NMT обслуживает конфигурирование, инициализацию и обработку ошибок в сети CANopen.
Node-ID идентификатор узла, который для подчиненного узла (NMT Slave) должен назначаться уникально, либо Node-ID должен быть равен 0. Если Node-ID равен 0, то протокол адресует все подчиненные устройства NMT.
OSI Open Systems Interconnection, специальное название системы слоев сетей.
PDO Process Data Object, объект обрабатываемых данных, т. е. тех прикладных данных, для передачи которых служит сеть CANopen.
PLS Physical Layer Signalling, сигнализация физического слоя. Один из sub-слоев физического слоя эталонной модели CAN, который описывает представление бит, их интервалы времени и синхронизацию.
PMA Physical Medium Attachment. Один из sub-слоев физического слоя эталонной модели CAN, который описывает функциональные схемы для передачи/приема сигналов по линии связи шины, и может предоставить способ детектирования отказов (ошибок).
RPDO Receive PDO, объект PDO приема.
RTR Remote Transmit Request, специальный запрос узлу от другого узла сети CAN на передачу данных. Узел, который получил запрос RTR, должен в ответ автоматически передать свои данные.
SDO Service Data Object, объект сервисных данных.
SSDO Server SDO.
SYNC Synchronisation Object, объект синхронизации.