Биржевые курсы
00.00
00.00

Протокол обмена

Протокол обмена с приборами ОАО «Практик-НЦ» и ЗАО «Эксис»  
В этом разделе Вы можете найти информацию о протоколе обмена с приборами производства ОАО «Практик-НЦ» и ЗАО «Эксис». 

Внимание! Разработана новая библиотека обмена EksisExchange.dll. Поддержка старой прекращена. Ссылка на старую оставлена ради примеров использования. Документация внутри архивов. В архиве версии для x86 и x64 систем. 


Описание протокола обмена RS-232

Протокол обмена строится по принципу ведущий – ведомый в полудуплексном режиме. Прибор всегда является ведомым устройством. Ведущее устройство (компьютер, блок индикации или пр.) формирует команду – запрос, а прибор – ответ. Время ожидания ответа не более 300 мс. Обмен осуществляется 10-ти битными словами, каждое из которых состоит из: 1 старт – бит, 1 стоп – бит, 8 информационных бит. Восемь информационных бит слова составляют символ. Скорость обмена варьируется от 1200 до 115200 бит/с в зависимости от прибора. Для обмена используются ASCII символы: $,!, 0...9, A...F, I, R, <0D>. Форматы запросов и ответов стандартизованы и приведены ниже. Принцип обмена строится на чтение параметров по определенным адресам в измерительном устройстве. Команды записи и настройки устройств нами не предоставляются. 

Формат запроса:  {$}[Addr][Cmd]([DataAddr])([DataLen])([Data])[ch]<0D> 

Формат ответа:  {!}[Addr][Cmd]([Data])[ch]<0D> {?}[Addr][Cmd][ch]<0D> 

Условные обозначения: 

В скобках {} указазаны передаваемые символы в явном виде, в скобках <> указаны коды передаваемых символов, в скобках [] — условные обозначения параметров, в скобках () указаны параметры, которые присутствуют в зависимости от команды запроса. 

$ — зарезервированный символ начала посылки ведущего устройства; 

! — зарезервированный символ начала посылки ведомого устройства в случае верного выполнения команды; 

? — зарезервированный символ начала посылки ведомого устройства в случае ошибки выполнения команды; 

[Addr] — адрес устройства (4 символа), четырехразрядное шестнадцатеричное число, каждая цифра которого передается текстовым ASCII – символом, все приборы помимо основного адреса задаваемого пользователем имеют служебный — FFFF; 

[Cmd] — команда, 2 символа; 

[DataAddr] — адрес данных (4 символа), четырехразрядное шестнадцатеричное число, каждая цифра которого передается текстовым ASCII – символом; 

[DataLen] — длина данных (2 символа), двухразрядное шестнадцатеричное число, каждая цифра которого передается текстовым ASCII – символом; 

[Data] — данные, каждый байт передаётся 2-мя символами; 

[ch] — контрольная сумма (2 символа), двухразрядное шестнадцатеричное число, каждая цифра которого передается текстовым ASCII – символом. Контрольная сумма вычисляется сложением по модулю 256 всех предыдущих кодов ASCII – символов посылки; 

<0Dh> — зарезервированный символ окончания посылки (1 байт), имеющий шестнадцатеричный код 0Dh. Для ведущего и ведомого устройств символы конца посылки совпадают. 

Описание формата данных: 

Unsigned char — целое беззнаковое число, 1 байт, согласно ANSI Unsigned short char. Передается с помощью двух текстовых ASCII – символов. Байт числа разбивается на два нибла, каждый из которых передается шестнадцатеричной цифрой в кодировке текстовых ASCII – символов. Первым передается старший нибл. Порядок передачи байт обратный. Например, число 40h (64) передается ASCII - символами в следующем порядке: 4, 0; 

Unsigned int — целое беззнаковое число, 2 байта, согласно ANSI Unsigned short int. Передается с помощью четырех текстовых ASCII – символов. Каждый байт числа разбивается на два нибла, каждый из которых передается шестнадцатеричной цифрой в кодировке текстовых ASCII – символов. Первым передается старший нибл. Порядок передачи байт обратный. Например, число 1234h (4660) передается ASCII - символами в следующем порядке: 3, 4, 1, 2; 

Float — число с плавающей запятой, 4 байта, согласно ANSI Float. Передается с помощью восьми текстовых ASCII – символов. Каждый байт числа разбивается на два нибла, каждый из которых передается шестнадцатеричной цифрой в кодировке текстовых ASCII – символов. Первым передается старший нибл. Порядок передачи байт обратный. Например, число 1.23 (3F9D70A4h) передается ASCII - символами в следующем порядке: A, 4, 7, 0, 9, D, 3, F.


Примеры: 

Чтение температуры (Float) из ИВТМ-7Н 

Запрос: $ 0001 RR 0000 04 AD 0D [Addr] = 0001, [Cmd] = RR, [DataAddr] = 0000, [DataLen] = 04, [ch] = AD. 

Ответ: ! 0001 RR 0000 A041 B2 0D [Addr] = 0001, [Cmd] = RR, [Data] = 41 А0 00 00 (20,0 гр. Ц.), [ch] = B2. 


Описание протокола обмена USB

Измерители определяются операционной системой как HID-устройство. Обмен ведется по каналу Control Transfers посредством Feature Reports блоками до 64 байт со скоростью до 64000 байт в секунду.
Передаваемые данные защищены средствами USB протокола.
Данные передаются в неизменном бинарном виде. Логически обмен данными построен схожим с обменом по RS-232 способом: чтение и запись данных производится по определенным адресам в измерительном устройстве, а каждая модификация измерителя имеет свою карту адресов по которым осуществляется обмен, попытки доступа к адресам вне данной карты воспринимаются как ошибочные и соответствующим образом сигнализируются в ответах.

Формат запроса: [Addr][Cmd]([DataLen])([Data])[CheckSum]
Формат ответа: <0x00>([DataLen])([Data])[CheckSum] - успех, либо <0xFF>[Cmd][CheckSum] - ошибка

Условные обозначения:

В скобках <> указаны коды передаваемых символов, в скобках [] — условные обозначения параметров, в скобках () указаны параметры, которые присутствуют в зависимости от команды запроса.
0x00 — код начала посылки ведомого устройства в случае верного выполнения команды;
0xFF — код начала посылки ведомого устройства в случае ошибки выполнения команды;
[Addr] — адрес данных, 4 байта;
[Cmd] — команда, 1 байт;
[DataLen] — длина данных, 1 байт;
[Data] — двоичные данные;
[CheckSum] — контрольная сумма (1 байт), вычисляется сложением по модулю 256 всех байт пакета (начальное значение контрольной суммы 0xFF);

Для правильной отправки Feature Report требуется установка размера буфера в соответствии с HID device capabilities.

Команды и примеры построения запросов по USB:

Команды чтения (байт):
0х80 — команда чтения данных из ОЗУ (как правило для текущих значений измерений);
0х82 — команда чтения данных из ПЗУ настройки  (как правило для настроек прибора);
0х81 — команда чтения данных из ПЗУ статистики;

Команды записи (два символа):
0х00 — команда записи данных в ОЗУ;
0х02 — команда записи данных в ПЗУ настройки;
0х01 — команда записи данных в ПЗУ статистики;

Пример чтения влажности (данные в формате Float) из ИВТМ-7 Р-03-Д
Запрос:  00000000 80 04 83
[Addr] = 00000000, [Cmd] = 80, [DataLen] = 04, [CheckSum] = 83 (FF + 80 + 04 mod 100)
Ответ: 00 04 0000A041 E0
[Data] = 41 А0 00 00 (20,0 %)
Видео-избранное
Ваша корзина пуста, но ее можно наполнять даже без регистрации
В Зеленограде
Температура 22.1°C
Влажность 81.0%
Давление 740 мм.рт.ст.
В офисе «ЭКСИС»
Температура 24.8°C
Влажность 47.9%
очистить список
 
Чтобы добавить товар к сравнению, нажмите на ссылку "Сравнить"