HART_0 - чтение идентификационных данных
Назначение.
Функциональный блок HART_0 применяется для получения идентификационных данных HART-устройства на основании его короткого адреса.
Состав структурной переменной.
Переменная со структурным типом HART_0 будет добавлена в локальный словарь автоматически при добавлении блока в редактор.
Описание алгоритма.
Для связи с HART-устройством необходимо указать адрес модуля-мультиплексора на шине ST_BUS (параметр ADDR_MOD), номер канала модуля HART-мультиплексора в диапазоне 0..63, через который подключено HART-устройство (параметр CHN_MOD), и короткий адрес HART-устройства (параметр ADDR_HART_SHORT).
После запуска блока (RUN=TRUE), в адрес HART-устройства будет направлен запрос на получение его идентификационных данных. До получения ответа выход OK=FALSE, после получения OK=TRUE.
При отсутствии ошибок (выход FAULT=0), полученные данные передаются в выходные параметры. При наличии ошибки на выход FAULT передается ее номер, а остальные выходные параметры сохраняют последние выведенные значения.
При RUN=FALSE значения выходных параметров блока сбрасываются, им присваиваются значения по умолчанию.
Пример синтаксиса на языке ST.
| //вызов функционального блока HART_0
Block.HART_0(RUN, ADDR_MOD, CHN_MOD, ADDR_HART_SHORT);
//чтение части выходных параметров
OK := Block.OK;
FAULT := Block.FAULT;
STA := Block.STA;
OEM := Block.OEM;
DTYPE := Block.DTYPE;
PREAMB := Block.PREAMB;
|
| | Кодирование статуса.
В выходной параметр STA передается целое число (4 байта), в битовой маске которого закодирован текущий статус HART-устройства. В первом (младшем) байте содержится информация об ошибках коммуникации (передачи данных), а оставшиеся байты равны нулю. При отсутствии ошибок коммуникации младший байт может содержать информацию о статусе полученной HART-устройством команды, а второй байт информацию о текущем состоянии устройства, оставшиеся два байта равны нулю. При нормальной работе HART-устройства все байты устанавливаются в логический ноль.
Кодирование ошибок коммуникации через битовую маску:
|
Байт
|
Бит
|
Значение и описание
|
|
1 байт
(младший)
|
7
|
1 - ошибка коммуникации, детальное описание ошибки указывается в оставшейся части первого байта (битовая маска)
|
|
6
|
1 - ошибка по четности
|
|
5
|
1 - перегрузка по скорости обмена
|
|
4
|
1 - ошибка синхронизации
|
|
3
|
1 - ошибка контрольной суммы
|
|
2
|
1 - модуль зарезервирован
|
|
1
|
1 - переполнение буфера приемника
|
|
0
|
1 - неизвестная ошибка
|
|
Все биты 2 байта равны нулю
|
Кодирование ошибок команд и текущего состояния через битовую маску:
|
Байт
|
Бит
|
Значение и описание
|
|
1 байт
(младший)
|
0-7
|
Если отсутствуют коммуникационные ошибки (7 бит=0), первый байт статуса представляет целое число от 1 до 127, соответствующее статусу выполнения отправленной команды на HART-устройстве. Коды выполнения команд и их описание приведено в следующей таблице.
При этом второй байт статусного поля кодируется битовой маской и отражает состояние HART-устройства.
|
|
2 байт
|
7
|
1 - неисправность
|
|
6
|
1- конфигурация изменена
|
|
5
|
1 - холодный старт, пропадало питание
|
|
4
|
1 - доступна дополнительная статусная информация
|
|
3
|
1 - значение аналогового выхода фиксировано
|
|
2
|
1 - значение тока аналогового выхода вышло за предел ограничения
|
|
1
|
1 - не первичная переменная вышла за предел ограничения
|
|
0
|
1 - первичная переменная вышла за предел ограничения
|
Коды выполнения команд на HART-устройстве и их описание (целочисленное значение 1 байта статуса при отсутствии ошибок коммуникации):
|
Код
|
Описание
|
|
0
|
Нет ошибок, команда выполнена успешно
|
|
2
|
Недопустимый выбор
|
|
3
|
Переданный параметр слишком велик
|
|
4
|
Переданный параметр слишком мал
|
|
5
|
Принятое количество байт данных не соответствует ожидаемому
|
|
6
|
Команда не выполнена
|
|
7
|
HART-устройство находится в защищенном от записи режиме
|
|
8
|
Неверно выбран тип входного сигнала
|
|
9
|
-
Нижний предел больше максимально допустимого значения;
-
Значение температуры выше допустимого предела;
-
Установлено неверное значение фиксированного выходного тока;
-
Несоответствие счетчика изменений конфигурации;
-
Количество знаков после запятой слишком велико.
|
|
10
|
-
Нижний предел меньше минимально допустимого значения;
-
значение температуры ниже допустимого предела.
|
|
11
|
-
Верхний предел больше максимально допустимого значения;
-
токовый выход выключен (датчик в многоточечном режиме).
|
|
12
|
-
Неверный выбор режима функционирования токового выхода;
-
Верхний предел меньше минимально допустимого;
-
Ошибка восстановления заводских настроек или отсутствуют сохраненные заводские настройки.
|
|
13
|
Верхний и нижний пределы вне допустимых величин.
|
|
14
|
Минимальный диапазон слишком мал (точность может быть нарушена)
|
|
16
|
Доступ ограничен (некоторые параметры доступны только для чтения)
|
|
18
|
Неверный код единиц измерения.
|
|
29
|
Недопустимый диапазон
|
|
64
|
Команда не реализована (не задействована)
|
|
| | Коды ошибок на выходе FAULT и их описание.
|
Код
|
Описание
|
|
0
|
Нет ошибок
|
|
1
|
Устройство не отвечает (количество повторных запросов превысило допустимое значение),
для модулей S240H/M541HR - ошибка обмена с драйвером
|
|
2
|
Ошибка интерфейса (ошибка фрейма),
для модулей S240H/M541HR - нет ответа (отработан таймаут)
|
|
3
|
Ошибка контрольной суммы,
для модулей S240H/M541HR - ошибка системы
|
|
4
|
Ошибка ответного пакета,
для модулей S240H/M541HR - ошибка драйвера
|
|
5
|
Мезонин не найден,
для модулей S240H/M541HR - операция выполняется (при асинхронном режиме обмена)
|
|
6
|
Аппаратная ошибка мезонина,
для модулей S240H/M541HR - некорректные данные (нарушение формата, протокола и т.п.)
|
|
7
|
Обрыв линии,
для модулей S240H/M541HR - операция прервана
|
|
8
|
Некорректный запрос к модулю S240H/M541HR (превышение допустимой длины)
|
|
9
|
Некорректный адрес модуля S240H/M541HR
|
|
10
|
Ошибка выделения памяти
|
|
11
|
Некорректный описатель модуля S240H/M541HR
|
|
12
|
Некорректный формат ответа
|
|
13
|
Некорректная контрольная сумма ответа
|
|
14
|
Некорректная длина ответа
|
|
15
|
Некорректная команда в ответе
|
|
16
|
Модуль S240H/M541HR диагностировал ошибку (байт 0 = 16, байт [1..2] - статус модуля)
|
|
17
|
Модуль S240H/M541HR не в рабочем режиме
|
|
18
|
Обмен запрещен
|
|
19
|
Получен ответ-исключение от HART устройства
|
|
20
|
Время ожидания ответа от датчика истекло
|
|
21
|
Ошибка формата пакета на отправку по HART
|
|
22
|
Ошибка формата принятого пакета по HART
|
|
23
|
Ошибка контрольной суммы принятого по HART пакета
|
|
24
|
Ошибка физического интерфейса HART
|
|