Сайт потихоньку переезжает на http://casey.at.ua. Новые версии ПО будут выкладываться там.

Описание протокола HART

Полевой коммуникационный протокол HART широко применяется в промышленности как стандарт для цифровой коммуникации со "smart"-приборами. Его особенность в том, что он использует для передачи цифровых данных низкоуровневую модуляцию, наложенную на аналоговый сигнал 4-20 mA (токовая петля), который сейчас широко используется для таких измерений. Поскольку сигнал HART-протокола несущественный, и составлен из синусоидальных колебаний, то он оказывает минимальное влияние на точность несущего аналогового сигнала, который поэтому тоже может использоваться. Это свойство обеспечивает взаимозаменяемость с существующими системами, при расширении оных для возможности получения нескольких переменных процесса, для конфигурации, проверки статуса, диагностики устройств, и так далее.

Структура сообщений протокола, наборы команд.

Набор команд HART организован в три группы и обеспечивает доступ для чтения/записи широкого массива информации, доступной в полевых устройствах.

Универсальные команды обеспечивают доступ к основной информации, например, производитель, модель, порядковый номер, дескриптор(строка-описатель), пределы измерений, переменные процесса. Все устройства HART должны поддерживать универсальные команды.

Общие практичные команды обеспечивают доступ к функциям, которые могут поддерживаться многими устройствами, но не всеми.

Специфические команды устройства обеспечивают доступ к функциям, которые, возможно, уникальны и поддерживаются только данным устройством.

"Master-slave"

HART - протокол типа "Master-slave", это значит, что обмен инициируется только мастер-устройством, слэйв-устройства отвечают только тогда, когда получают на свой адрес запрос. Ответ слэйв-устройства означает, что команда успешно получена, и содержит данные, запрошенные мастером. Протокол HART позволяет иметь два активных master-устройства в системе - primary и secondary. Два master-устройства имеют различные адреса, таким образом они могут идентифицировать ответы на свои команды.

Монопольный режим (burst mode)

Чтобы достичь высокой скорости передачи данных, некоторые устройства позволяют переход в так называемый монопольный режим, или burst mode. При этом устройство начинает посылать запрошенные данные непрерывно, с некоторым интервалом (необходимым для возможности посылки команды, отключающей монопольный режим - команды #107,#108,#109). В общем случае монопольный режим может быть полезен только при подключении одного устройства к паре проводов - только одно устройство на токовой петле может быть в монопольном режиме.

Кодировка символов и скорость передачи

HART-сообщения кодируются сериями 8-битных символов, или байтов. Они передаются последовательно, согласно конвенции UART (Universal Asynchronous Receiver/Transmitter), с добавлением стартового бита, бита контроля нечетности (parity = odd) и стопового бита. Скорость передачи данных определяется стандартом Bell 202 и равна 1200 bps. Т.е. настройки порта - 1200 bps, 8 bits, odd, 1 stop.

Формат сообщений HART

Преамбула состоит из 5-20 байт FF (все еденицы). Это позволяет приемнику синхронизировать частоту сигнала и входящий поток байт.

Стартовый байт в HART-сообщениях может принимать несколько возможных значений, определяющих формат используемого фрейма, источник сообщения, и режим передачи (нормальный или монопольный). Ниже приведены возможные значения:

Message type Short frame Long frame
Master to slave 02 82
Slave to master 06 86
Burst message from slave 01 81

При ожидании сообщения устройства-приемники слушают линию до прихода одного из этих байт после как минимум двух байт FF. Это означает начало сообщения.

Поле адреса включает оба адреса master- и slave-устройств. Они могут состоять из 1 байта (короткий фрейм - short frame format) или из 5 байт (длинный фрейм - long frame format). В обоих фреймах адрес master-устройства занимает 1 первый бит (primary - 1; secondary - 0). Адрес slave-устройства занимает остальные биты. В коротком фрейме адрес slave-устройства - от 0 до 15 - так называемый polling address. В длинном фрейме polling address не используется, вместо него остающиеся биты заполняет уникальный идентификатор slave-устройства, используемый как адрес. Если эти биты запонить нулями, получится широковещательный адрес, такое сообщение получат все устройства. Это возможно только в случае если данные в сообщении однозначно определяют какое устройство должно ответить.

Командный байт - целое число в диапазоне от 0 до 253 (0xFD), представляет собой одну из HART-команд. Полученный командный код передается и обратно при ответе slave-устройства.

Счетчик байт - количество байт в данном сообщении (статус и данные, контрольная сумма не включается). Приемник использует его для идентификации байта контрольной суммы и того, что все сообщение получено. Рассчитывается как сумма количества байт полей статуса и данных. Из-за лимита поля данных в 25 байт счетчик байт может принимать значения от 0 до 27.

Поле статуса включается только в сообщения-ответы от slave-устройства. Оно состоит из 2 байт, сообщающих о ошибках коммуникации, статусе полученного сообщения (такие как устройство занято или не распознало команду) и оперативном состоянии slave-устройства.

Поле данных. Не все команды и ответы содержат поле данных. Максимальная длина поля - 25 байт (хотя это жестко и не оговаривается в спецификации HART). Данные могут быть в форме целых чисел без знака, чисел с плавающей точкой (IEEE754) или строк символов ASCII. Число байт и формата данных, используемых для каждого элемента, указывается для каждой команды.

Байт контрольной суммы рассчитывается как продольная четность байт ("longitudinal parity"), предшествующих ему начиная со стартового байта включительно. Используется для проверки целостности передачи.

Формат поля статуса

Байт 1 - статус полевых устройств
Бит #7 Неисправность Полевого Устройства Устройство обнаружило аппаратную ошибку или сбой. Дополнительная информация может быть доступна через команду Чтение Дополнительного Статуса Датчика, #48.
Бит #6 Конфигурация Изменена Сигнализирует, что с датчиком были произведены команды записи или изменения параметров.
Бит #5 Холодный Старт С прибора было снято питание, которое затем было восстановлено, что привело к сбросу параметров настройки. Первая команда системы при обнаружении этой ситуации – сбросить этот флаг. Этот флаг может быть также взведен после Основного Сброса или Самотестировании.
Бит #4 Больше Статусов Доступно Больше информации статуса доступно, чем может быть возвращено в Статусе Полевого Устройства. Команда #48, Чтение Информации Дополнительного Статуса, может обеспечить эту дополнительную информацию.
Бит #3 Аналоговый Выход по Первичной Переменной Зафиксирован Выходной сигнал по Первичной Переменной зафиксирован на требуемом значении и не отражает измеренное прибором значение.
Бит #2 Аналоговый Выход по Первичной Переменной Превышен Выходной сигнал по Первичной Переменной достиг насыщения, то есть пределов шкалы, и больше и не отражает измеренное прибором значение.
Бит #1 Вторичная Переменная вышла за пределы. Вторичный параметр процесса, измеряемый датчиком, вышел за пределы, допустимые для датчика. Может потребоваться Команда #48, чтение Дополнительного Статуса Датчика, для идентификации переменной.
Бит #0 Первичная переменная вышла за пределы Основной параметр процесса, измеряемый датчиком, вышел за пределы, допустимые для датчика..

Байт 2 - ошибки соединения

Бит #7 = 1 Этот байт содержит информацию, связанную с приемом сообщения устройством. Эти флаги показывают, что во время передачи возникли ошибки и сообщения не были приняты. Прибор не возвращает данные в ответе, когда обнаруживает ошибки коммуникации.
Бит #6 Ошибка вертикальной четности Четность одного или более байтов полученных устройством была неправильна.
Бит #5 Перезапись данных Ошибка — по меньшей мере один байт данных в приемном буфере микросхемы UART был перезаписан до того как он был прочтен.
Бит #4 Ошибка Кадра Стоповый бит одного или более байтов полученных устройством не были обнаружены UART.
Бит #3 Ошибка Четности по длине Четность по длине, вычисленная устройством, не такая как Байт Четности по длине в конце сообщения.
Бит #2 Зарезервировано, всегда равен нулю.
Бит #1 Переполнение Буфера Сообщение было слишком длинным для буфера принимающего устройства.
Бит #0 Не определен — Нет определения этого бита на сегодня.

Описание универсальных команд HART

КОМАНДА #0 ЧТЕНИЕ УНИКАЛЬНОГО ИДЕНТИФИКАТОРА Это команда из категории управления канального уровня. Возвращает расширенный код типа устройства, номера версий и идентификационный номер устройства.

КОМАНДА #1 ЧТЕНИЕ ПЕРВИЧНОЙ ПЕРЕМЕННОЙ Чтение Первичной Переменной (ПП). ПП возвращается в формате с плавающей запятой.

КОМАНДА #2 ЧТЕНИЕ ПП КАК ВЕЛИЧИНЫ ТОКА И В ПРОЦЕНТАХ ОТ ДИАПАЗОНА Чтение Первичной Переменной как величины тока в миллиамперах и в процентах от диапазона. Величина ПП в миллиамперах всегда равна текущему значению Аналогового Выхода устройства включая состояние алармов и другие настройки. Величина ПП в процентах от диапазона всегда идет следом, даже если токовое значение ПП находится в состоянии аларма или зафиксировано на определенном значении. Кроме того, величина в процентах от диапазона не ограничена пределами между 0% и 100%, а отслеживает значение ПП за пределами заданной шкалы но в пределах границ измерения сенсора, если они заданы.

КОМАНДА #3 ЧТЕНИЕ ДИНАМИЧЕСКИХ ПЕРЕМЕННЫХ И ТОКОВОГО ЗНАЧЕНИЯ ПП Чтение величины тока, отражающего значение ПП, и до четырех предопределенных Динамических Переменных. Токовое значение ПП всегда отражает величину Аналогового Выхода устройства включая состояние алармов и другие настройки. Содержание Вторичной, Третьей и Четвертой Переменных зависит от типа устройства (например, Вторичная Переменная для датчика давления 3051 показывает температуру измерительной ячейки датчика).

КОМАНДА #4 ЗАРЕЗЕРВИРОВАНО

КОМАНДА #5 ЗАРЕЗЕРВИРОВАНО

КОМАНДА #6 ЗАПИСЬ АДРЕСА УСТРОЙСТВА Это команда из категории управления канального уровня. Записывает адрес в полевое устройство. Адрес используется для управления Аналоговым Выходом Первичной Переменной и является средством идентификации при работе нескольких устройств на одной шине.

КОМАНДА #11 ЧТЕНИЕ УНИКАЛЬНОГО ИДЕНТИФИКАТОРА АССОЦИИРОВАННОГО С ТЭГОМ Это команда из категории управления канального уровня. Возвращает Расширенный код типа устройства, номера версий, и идентификационный номер устройства содержащий заданный тэг. Она будет выполнена, когда будут получены Расширенный адрес или Широковещательный адрес. Расширенный адрес в ответном сообщении это тоже самое что и запрос.

КОМАНДА #12 ЧТЕНИЕ СООБЩЕНИЯ Читает Сообщение, содержащееся в устройстве.

КОМАНДА #13 ЧТЕНИЕ ТЭГА, ОПИСАТЕЛЯ, ДАТЫ Читает Тэг, Описатель и Дату, содержащиеся в устройстве.

КОМАНДА #14 ЧТЕНИЕ ИНФОРМАЦИИ СЕНСОРА ПЕРВИЧНОЙ ПЕРЕМЕННОЙ Читает Серийный Номер Сенсора Первичной Переменной Процесса, минимальную и максимальную шкалу измерения сенсора, и код единиц измерения для этих величин.

КОМАНДА #15 ЧТЕНИЕ ИНФОРМАЦИИ О ВЫХОДНОМ СИГНАЛЕ ПО ПЕРВИЧНОЙ ПЕРЕМЕННОЙ Читает код аларма ПП, код функции преобразования ПП, код единиц диапазона ПП, верхнюю границу диапазона ПП, нижнюю границу диапазона ПП, величину демпфирования ПП, код защиты от записи, и код метки продавца, ассоциированный с устройством или Первичной Переменной.

КОМАНДА #16 ЧТЕНИЕ СБОРОЧНОГО НОМЕРА УСТРОЙСТВА Читает Сборочный Номер, принадлежащий этому устройством.

КОМАНДА #17 ЗАПИСЬ СООБЩЕНИЯ Записывает Сообщение в устройство.

КОМАНДА #18 ЗАПИСЬ ТЭГА, ОПИСАТЕЛЯ, ДАТЫ Записывает Тэг, Описатель и Дату в устройство.

КОМАНДА #19 ЗАПИСЬ СБОРОЧНОГО НОМЕРА УСТРОЙСТВА Записывает Сборочный Номер в устройство.

Описание других часто используемых команд HART

Формат универсальных команд HART (HART Revision 5)

Типы данных в таблице:


A	ASCII string (packed 4 characters per 3 bytes)

B	Bit-mapped flags

D	Date (3 bytes: day, month, year-1900)

F	Floating point (4 bytes IEEE 754)

H	Integers xxxxx yyy (xxxxx = hardware revision, yyy = physical signalling code)



Unmarked items are 8-, 16- or 24-bit integers (including enumerated code values).

Command number and function Data in command (type) Data in reply (type)
0 Read unique identifier none Byte 0 "254" (expansion)
Byte 1 manufacturer identification code
Byte 2 manufacturer's device type code
Byte 3 number of preambles required
Byte 4 universal command revision
Byte 5 device-specific command revision
Byte 6 software revision
Byte 7 hardware revision (H)
Byte 8 device function flags(B)*
Byte 9-11 device ID number
Byte 12 ** common-practice command revision
Byte 13 ** common tables revision
Byte 14 ** data link revision
Byte 15 ** device family code

* Bit 0 = multisensor device; bit 1 = EEPROM control required; bit 2 = protocol bridge device.
** Proposed for a future HART revision S not in 5.3.

1 Read primary variable none Byte 0 PV units code
Byte 1-4 primary variable(F)
2 Read current and percent of range none Byte 0-3 current (mA) (F)
Byte 4-7 percent of range(F)
3 Read current and four (predefined) dynamic variables none Byte 0-3 current (mA) (F)
Byte 4 PV units code
Byte 5-8 primary variable(F)
Byte 9 SV units code
Byte 10-13 secondary variable(F)
Byte 14 TV units code
Byte 15-18 third variable(F)
Byte 19 FV units code
Byte 20-23 fourth variable(F)

(truncated after last supported variable)

6 Write polling address Byte 0 polling address as in command
11 Read unique identifier associated with tag Byte 0-5 tag Byte 0-11 as Command #0
12 Read message none Byte 0-23 message (32 characters) (A)
13 Read tag, descriptor, date none Byte 0-5 tag (8 characters) (A)
Byte 6-17 descriptor (16 characters) (A)
Byte 18-20 date(D)
14 Read PV sensor information none Byte 0-2 sensor serial number
Byte 3 units code for sensor limits & min. span
Byte 4-7 upper sensor limit(F)
Byte 8-11 lower sensor limit(F)
Byte 12-15 minimum span(F)
15 Read output information none Byte 0 alarm select code
Byte 1 transfer function code
Byte 2 PV/range units code
Byte 3-6 upper range value(F)
Byte 7-10 lower range value(F)
Byte 11-14 damping value(seconds(F))
Byte 15 write-protect code
Byte 16 private-label distributor code
16 Read final assembly number none Byte 0-2 final assembly number
17 Write message Byte 0-23 message (32 chars) (A) as in command
18 Write tag, descriptor, date Byte 0-5 tag (8 characters) (A)
Byte 6-17 descriptor (16 chars) (A)
Byte 18-20 date(D)
as in command
19 Write final assembly number Byte 0-2 final assembly number as in command

Скачать формат других команд HART (Universal commands HART Revisions 2,3,4,5 ; Common-practice commands)



Hosted by uCoz