|
В этом разделе Вы можете найти информацию о протоколе обмена с приборами производства ОАО «Практик-НЦ» и ЗАО «Эксис». Вы также можете скачать библиотеку ExchangeLib.dll, которая написана на языке Delphi в среде Delphi5 и скомпилирована в операционной системе Windows XP Professional SP2 под 32-х битный процессор. Скачать библиотеку Описание протокола обмена Протокол обмена строится по принципу ведущий – ведомый в полудуплексном режиме. Прибор всегда является ведомым устройством. Ведущее устройство (компьютер, блок индикации или пр.) формирует команду – запрос, а прибор – ответ. Время ожидания ответа не более 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. | Прибор | Параметр | Адрес устройства | Команда | Адрес | Тип | Длина |
|---|
| ИВТМ-7Н | Температура | FFFF/**** | RR | 0000 | Float | 4 | | Влажность | FFFF/**** | RR | 0004 | Float | 4 | | ИВГ-1 МК-С-М (Р-МК-М), ИВТМ-7 МК-С-М (Р-МК-М) | Температура | FFFF/**** | RR | 0000 | Float | 4 | | Влажность | FFFF/**** | RR | 0004 | Float | 4 | ИВТМ-7 МК-С (Р-МК), ИВГ-1 МК-С (Р-МК) производства до 2009 г. | Температура | FFFF/**** | RR | 0A40 | Float | 4 | | Влажность | FFFF/**** | RR | 0A44 | Float | 4 | | ИВТМ-7М1(-2,-3,-6), ИВТМ-7К, ИВГ1-К-П | Температура | FFFF/**** | RR | 0000 | Float | 4 | | Влажность | FFFF/**** | RR | 0004 | Float | 4 | | Напряжение питания | FFFF/**** | RR | 0008 | Float | 4 | | ИВТМ-7М5 | Температура | FFFF/**** | RR | 0000 | Float | 4 | | Влажность | FFFF/**** | RR | 0004 | Float | 4 | | Напряжение питания | FFFF/**** | RR | 0008 | Float | 4 | | Давление | FFFF/**** | RR | 000D | Unsigned Int | 2 | | ИРТ-4 | Температура (I канал) | FFFF/**** | RR | 027E | Float | 4 | | Температура (II канал) | FFFF/**** | RR | 0282 | Float | 4 | | ... | FFFF/**** | RR | ... | ... | ... | | Температура (XVI канал) | FFFF/**** | RR | 02BA | Float | 4 | | ИРТ-4/2 | Температура (I канал) | FFFF/**** | RR | 0000 | Float | 4 | | Температура (II канал) | FFFF/**** | RR | 0004 | Float | 4 | | ИТ-17 | Температура | FFFF/**** | RR | 0000 | Float | 4 | | Температура холодного спая | FFFF/**** | RR | 0004 | Float | 4 | | Напряжение питания | FFFF/**** | RR | 0008 | Float | 4 | | ТТМ-2-01 (-02) | Скорость потока | FFFF/**** | RR | 0000 | Float | 4 | | Температура потока | FFFF/**** | RR | 0004 | Float | 4 | | Напряжение питания | FFFF/**** | RR | 0008 | Float | 4 | | ПКГ-4 К-В (К-Н, СО-В, СО-Н) | Текущее измерение концентрации | FFFF/**** | RR | 0000 | Float | 4 | | Температура | FFFF/**** | RR | 0004 | Float | 4 | | Напряжение питания | FFFF/**** | RR | 0008 | Float | 4 | | ПКГ-4К-МК-С (СО-МК-С) | Измеренное значение концентрации | FFFF/**** | RR | 0000 | Float | 4 | | ПКУ-4 В (К) | Концентрация | FFFF/**** | RR | 0000 | Float | 4 | | ИВТМ-7/X Р-МК, ИВГ-1/X Р-МК | Температура (I канал) | FFFF/**** | RR | 0000 | Float | 4 | | Влажность (I канал) | FFFF/**** | RR | 0004 | Float | 4 | | Температура (II канал) | FFFF/**** | RR | 0010 | Float | 4 | | Влажность (II канал) | FFFF/**** | RR | 0014 | Float | 4 | | ... | ... | ... | ... | ... | ... | | Температура (XVI канал) | FFFF/**** | RR | 00F0 | Float | 4 | | Влажность (XVI канал) | FFFF/**** | RR | 00F4 | Float | 4 | | ПКУ-4/X МК-С, ПКГ-4/X МК-С | Концентрация (I канал) | FFFF/**** | RR | 0000 | Float | 4 | | Концентрация (II канал) | FFFF/**** | RR | 0010 | Float | 4 | | ... | ... | ... | ... | ... | ... | | Концентрация (XVI канал) | FFFF/**** | RR | 00F0 | Float | 4 | | ТТМ-2/X МК-С | Скорость потока (I канал) | FFFF/**** | RR | 0000 | Float | 4 | | Температура потока (I канал) | FFFF/**** | RR | 0004 | Float | 4 | | Скорость потока (II канал) | FFFF/**** | RR | 0010 | Float | 4 | | Температура потока (II канал) | FFFF/**** | RR | 0014 | Float | 4 | | ... | ... | ... | ... | ... | ... | | Скорость потока (XVI канал) | FFFF/**** | RR | 00F0 | Float | 4 | | Температура потока (XVI канал) | FFFF/**** | RR | 00F4 | Float | 4 |
**** - установленный пользователем адрес. Примеры: Чтение температуры (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. |