НАУЧНО-ПРОИЗВОДСТВЕННАЯ  КОМПАНИЯ  "ОТЕЛ"
г. Харьков, пер. Донбассовский, 17/61;
т.раб. +38 (057) 373-33-67, 372-83-04;
т.моб. +38-066-705-28-23, +38-067-834-57-27;
E-mail: info@otel.kh.ua;
www.otel.kh.ua

 

 

ПРОТОКОЛ ОБМЕНА ИНФОРМАЦИЕЙ С ПК ДЛЯ РАСХОДОМЕРА ВР-1 (MODBUS)

 

      Расходомер - счетчик ВР-1 обеспечивает вывод текущих и архивных значений параметров измерения на внешние устройства в виде сигналов последовательного интерфейса RS485. Протоколом связи по интерфейсу RS485 является протокол Modbus, скорость обмена - 4800 бит / С.

 

 1 Формат каждого байта,  который принимается и передается контроллерами следующий:

 

1 start bit, 8data bits, 1 stop bit (No Parity bit).

LSB (Least Significant bit) младший бит передается первым.

Кадр Modbus сообщения следующий:

 

Таблица 1

DEVICE

ADDRESS

FUNCTION

CODE

DATA

FILD

CRC CHECK

8 bits

8 bits

K* 8 bits

16 bits

 

а)  Device address. Адрес устройства

Адрес контроллера (slave - устройства) в сети (1 - 99), по которому обращается  master - устройство со своим запросом. Когда slave - устройство посылает свой ответ, оно размещает этот же (собственный) адрес в этом поле, чтобы master - устройство «знало», какое slave -устройство отвечает на запрос.

 

б)  Function code.  Функциональный код  операции

 

Счетчик-расходомер поддерживает следующие функции:

Таблица  2

FUNCTION CODE

Функция

67 (пользовательский)

Чтение часового архива

68 (пользовательский)

Чтение суточного архива

69 (пользовательский)

Чтение месячного архива

70 (пользовательский)

Чтение текущих значений параметров

 

в)  Data Fild.   Поле передаваемых данных

Поле данных сообщения, посылаемого master - устройством удаленном контроллеру содержит добавочную информацию, которая необходима  slave - устройству для детализации функции. Она включает:

 

Поле данных сообщения, посылаемого master - устройством удаленном контроллеру содержит добавочную информацию, которая необходима  slave - устройству для детализации функции. Она включает:

-         Начальный адрес (час, число, месяц) и количество регистров для функции  67;

-         Начальный адрес (число, месяц, год) и количество регистров для функции  68;

-         Начальный адрес (месяц, год, 0x00) и количество регистров для функции  69;

-         Начальный адрес и количество регистров для функции  70;

 

Поле данных сообщения, посылаемого в ответ  удаленным контроллером содержит:

-         Количество байт  ответа на функции 67-70 и содержимое запрашиваемых регистров. Содержимое запрашиваемых регистров  представлено в коде ASCII.

 

г)  CRC Check. Поле значения контрольной суммы

 

Значение этого поля - результат контроля с помощью циклического избыточного кода (Сyclical Redundancy Check - CRC).

После формирования сообщения (address, fuction code, data) передающее устройство подсчитывает CRC код и помещает его в конец сообщения.  Приемное устройство рассчитывает  CRC код принятого сообщения и сравнивает его с переданным CRC кодом. Если CRC код не совпадает, это означает, что имеет место коммуникационная ошибка. Устройство не выполняет действий и не дает ответ в случае обнаружения CRC ошибки.

 

Последовательность CRC  расчетов:

-         Загрузка CRC регистра (16 бит) единицами  FFFF;

-         Исключающее ИЛИ с первыми 8 бит  байта сообщения с содержимым CRC регистра;

-         Сдвиг результата на один бит вправо;

-         Если сдвигаемый бит =1, исключающее ИЛИ содержимого регистра с 0хА001 значением;

-         Если сдвигаемый бит нуль,  повторить шаг 3;

-         Повторить шаги 3,4 и 5 пока 8 сдвигов не будут иметь место;

-         Исключающее ИЛИ со следующими 8 бит байта сообщения с содержимым CRC регистра;

-         Повторить шаги от 3 до 7 пока все байты сообщения не обработаются;

-         Конечное содержимое регистра и будет значением контрольной суммы.

Когда CRC размещается в конце сообщения, младший байт CRC передается первым.

Пример расчета контрольной суммы на языке СИ.

 

unsigned int crc_calculation (unsigned char *buff, unsigned char number_byte)

{

unsigned int crc;

unsigned char bit_counter;

crc = 0xffff;                                           // initialize crc

while (number_byte > 0)

  {

  crc ^ = *buff++;                                  // crc XOR with data

  bit_counter = 0;                                   // reset counter

  while (bit_counter < 8)

  {

                if (crc & 0x0001)

                          {

                            crc >> = 1;   // shift to the right 1 pozition

                            crc ^ = 0xa001;  // crc XOR with 0xa001

                          }

              else

                          {

                            crc >> = 1;   // shift to the right 1 pozition

                          }

                bit_counter++;                       // increase counter

              }

number_byte--;                                 

}

return (crc);

}

 

2  Формат команд

 

2.1  Чтение часового архива данных (67).

Используется следующий формат для передачи запросов от компьютера и ответов от удаленного контроллера.

 

Запрос устройству.  SENT TO DEVICE:

Таблица  3

DEVICE

ADDRESS

FUNCTION

CODE  (67)

DATA

CRC

HOURS

DATE

MONTH

NUMBER

 OF REGISTERS

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

LB HB

 

ПРИМЕЧАНИЕ:  NUMBER OF REGISTERS для ВР-1 при чтении часового архива всегда равно 20.

 

Ответ устройства.  RETURNED FROM DEVICE.

 

Таблица 4

CRC

2 byte (LB HB)

DATA

CODE  EVENT

2 byte (HB LB)

MINUT

2 byte (HB LB)

CODE  EVENT

2 byte (HB LB)

MINUT

2 byte (HB LB)

CODE  EVENT

2 byte (HB LB)

MINUT

2 byte (HB LB)

CODE  EVENT

2 byte (HB LB)

MINUT

2 byte (HB LB)

YEAR

2 byte (HB LB)

MONTH

2 byte (HB LB)

DATE

2 byte (HB LB)

HOUR

2 byte (HB LB)

TIME WORK  (час)

8 byte (HB LB)

SUMMARY VOLUME (м3)

8 byte (HB LB)

NUMBER  OF BYTE

1 byte

FUNCTION  CODE

1 byte

DEVICE  ADDRESS

1 byte

 

 

2.2 Чтение суточного архива данных (68).

 

Используется следующий формат для передачи запросов от компьютера и ответов от удаленного контроллера.

Запрос устройству.  SENT TO DEVICE:

 

Таблица  5

DEVICE

ADDRESS

FUNCTION

CODE  (68)

DATA

CRC

DATE

MONTH

YEAR

NUMBER

 OF REGISTERS

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

LB HB

 

ПРИМЕЧАНИЕ:  NUMBER OF REGISTERS для ВР-1 при чтении суточного архива всегда равно 12.

 

Ответ устройства.  RETURNED FROM DEVICE.

 

Таблица 6

CRC

2 byte (LB HB)

DATA

YEAR

2 byte (HB LB)

MONTH

2 byte (HB LB)

DATE

2 byte (HB LB)

HOUR

2 byte (HB LB)

TIME WORK  (час)

8 byte (HB LB)

SUMMARY VOLUME (м3)

8 byte (HB LB)

NUMBER OF BYTE

1 byte

FUNCTION  CODE

1 byte

DEVICE  ADDRESS

1 byte

 

2.3  Чтение месячного архива данных (69).

 

Используется следующий формат для передачи запросов от компьютера и ответов от удаленного контроллера.

 

Запрос устройству.  SENT TO DEVICE:

 

Таблица  7

DEVICE

ADDRESS

FUNCTION

CODE  (68)

DATA

CRC

MONTH

YEAR

0x00

NUMBER OF REGISTERS

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

LB HB

 

ПРИМЕЧАНИЕ: для ВР-1 при чтении месячного архива NUMBER OF REGISTERS всегда равно 12.

 

Ответ устройства (RETURNED FROM DEVICE) соответствует таблице 6.

 

2.4  Чтение текущих данных (70).

 

Используется следующий формат для передачи запросов от компьютера и ответов от удаленного контроллера.

Запрос устройству.  SENT TO DEVICE:

 

Таблица  8

DEVICE

ADDRESS

FUNCTION

CODE (70)

DATA

CRC

STARTING REGISTERS

NUMBER OF REGISTERS

1 BYTE

1 BYTE

HB LB

HB LB

LB HB

 

ПРИМЕЧАНИЕ: для ВР-1 при чтении текущих данных STARTING REGISTERS равно 10,  а NUMBER OF REGISTERS равно 20.

 

Ответ устройства.  RETURNED FROM DEVICE.

 

Таблица 9

CRC

2 byte (LB HB)

DATA

DOZE TASK (м3)

8 byte (HB LB)

DOZE CURRENT (м3)

8 byte (HB LB)

EXPENDITURE (м3/час)

8 byte (HB LB)

TIME WORK  (час)

8 byte (HB LB)

SUMMARY VOLUME (м3)

8 byte (HB LB)

NUMBER  OF BYTE

1 byte

FUNCTION  CODE

1 byte

DEVICE  ADDRESS

1 byte

 

ПРИМЕЧАНИЕ:

1  Тайм-аут ожидания ответа устройства  не менее 600 мС.

2  Точность представления значений параметров - см. п.1.2.3 Руководство по эксплуатации ВР-1.

3. Частота запроса текущих и архивных данных задается пользователем.

 

 
При использовании материалов сайта обязательно ссылайтесь на сайт-первоисточник: http://www.otel.kh.ua
ГЛАВНАЯ | ОБОРУДОВАНИЕ | ПРИЛОЖЕНИЯ | НОВОСТИ
© Компания "ОТЕЛ"