MODBUS TD-500: Difference between revisions
| Line 26: | Line 26: | ||
'''RESPONSE''': | '''RESPONSE''': | ||
* (u8) | * (u8) Network address | ||
* (u8) Подтверждение команды (всегда 0х03) | * (u8) Подтверждение команды (всегда 0х03) | ||
* (u8) Количество выгружаемых байт (всегда 8) | * (u8) Количество выгружаемых байт (всегда 8) | ||
* | * (s8) Temperature | ||
* (u8) | * (u8) High byte of Level | ||
* (u8) | * (u8) Low byte of Level | ||
* (u8) | * (u8) Always 0 | ||
* (u8) | * (u8) Always 0 | ||
* (u8) | * (u8) Always 0 | ||
* (u8) | * (u8) Always 0 | ||
* (u8) | * (u8) Always 0 | ||
* (u8) | * (u8) CRC16 - low byte | ||
* (u8) | * (u8) CRC16 - high byte | ||
s8 означает, что значение является знаковым целым, u8 - беззнаковое целое. | s8 означает, что значение является знаковым целым, u8 - беззнаковое целое. | ||
Revision as of 09:59, 9 December 2024
Description of MODBUS registers for TD-500
Port settings
Baud rate: 19200 kbps
Data size: 8
Stop-bits: 1
Parity: None
Request and response structure
REQUEST :
- (u8) Network address
- (u8) 0х03 --> Read command
- (u8) Low byte of read reg. (value is ignored)
- (u8) High byte of read reg. (value is ignored)
- (u8) Low byte of the quantity -|-|-|-|
- (u8) High byte of quantity -|-|-|-|
- (u8) CRC16 - low byte
- (u8) CRC16 - high byte
RESPONSE:
- (u8) Network address
- (u8) Подтверждение команды (всегда 0х03)
- (u8) Количество выгружаемых байт (всегда 8)
- (s8) Temperature
- (u8) High byte of Level
- (u8) Low byte of Level
- (u8) Always 0
- (u8) Always 0
- (u8) Always 0
- (u8) Always 0
- (u8) Always 0
- (u8) CRC16 - low byte
- (u8) CRC16 - high byte
s8 означает, что значение является знаковым целым, u8 - беззнаковое целое.
Пронумерованные адреса байтов ответа:
| Порядковый номер байта | Порядковый номер байта начиная с 0 | Значение |
| 1 | 0 | Температура |
| 2 | 1 | Старший (первый) байт уровня |
| 3 | 2 | Младший (последний) байт уровня |
| 4 | 3 | Всегда 0 |
| 5 | 4 | Всегда 0 |
| 6 | 5 | Всегда 0 |
| 7 | 6 | Всегда 0 |
| 8 | 7 | Всегда 0 |
Baudrate не изменяется.
19200, 8, n, 1
Количество бит в посылке 12х8 т.е около 96 шт
В запросе не важно какой указан сетевой номер, а также неважно количество запрашиваемых регистров. Главное, чтобы совпадала контрольная сумма. Расчет контрольной суммы приведен ниже.
Example of TD-500 sensor polling in Terminal program
1 ответ (желтый) - ответ на запрос по протоколу LLS
2 ответ (красный) - ответ на запрос по протоколу ModBUS RTU
Опрос ТД-500 в программе Terminal
$01$03$00$00$00$04$44$09 Команда на опрос датчика по протоколу Modbus RTU (в красной рамке)
- 01 Сетевой адрес датчика
- 03 запрашиваемая команда на чтение регистров
- 00 00 регистр, начиная с которого запрашиваются данные
- 00 04 количество запрашиваемых регистров
- 44 09 контрольная сумма CRC-16 MODBUS
Если указать другой сетевой адрес, то нужно пересчитать контрольную сумму. Но менять сетевой адрес смысла нет, т.к. датчик будет отвечать на любой сетевой адрес.
Checksum calculation
Для того, чтобы посчитать контрольную сумму, вы можете перейти на сайт https://crccalc.com и ввести ваш запрос без знака $, выбрать HEX, CRC-16 ModBUS и нажать Calc CRC-16
Расчет контрольной суммы на сайте crccalc
Полученной значение надо записать в отправляемую команду. При этом полученное при расчете значение 0C 44 следует записать в команду как 44 0C. Обратите внимание на раскладку вашей клавиатуры. Набирать команду следует латиницей.
Response from the sensor:
01 03 08 14 04 67 00 00 00 00 00 D8 FF
- 01 - сетевой адрес
- 03 - команда, на которую датчик отвечает
- 08 - количество байтов в ответе
- 14 - температура HEX (20°C в DEC)
- 04 67 - байты уровня Big Endian HEX (в прямом порядке) (или 1127 единиц в DEC)
- 00 00 00 00 00 - резерв 5 байтов, не используется
- D8 FF - CRC-16 ModBUS контрольная сумма Little Endian HEX (Обратный порядок, т.е. FF D8)