MODBUS TD-500: Difference between revisions
no edit summary
(Created page with " Русская версия Versión en español TEST") |
No edit summary |
||
| Line 1: | Line 1: | ||
[[RU:MODBUS_ТД-500| Русская версия]] | [[RU:MODBUS_ТД-500| Русская версия]] | ||
[[es:MODBUS_TD-500| Versión en español]] | [[es:MODBUS_TD-500| Versión en español]] | ||
Описание регистров MODBUS ТД-500 | |||
= '''Настройки порта''' = | |||
Baud rate: 19200 kbps | |||
Data size: 8 | |||
Stop-bits: 1 | |||
Parity: None | |||
= '''Структура запроса и ответа''' = | |||
'''ЗАПРОС''': | |||
* (u8) Сетевой номер | |||
* (u8) 0х03 --> Команда чтения | |||
* (u8) Младший байт рег. чтения (значение игнорируется) | |||
* (u8) Старший байт рег. чтения (значение игнорируется) | |||
* (u8) Младший байт количества -|-|-|-| | |||
* (u8) Старший байт количества -|-|-|-| | |||
* (u8) CRC16 - младший байт | |||
* (u8) CRC16 - старший байт | |||
'''ОТВЕТ''': | |||
* (u8) Сетевой номер | |||
* (u8) Подтверждение команды (всегда 0х03) | |||
* (u8) Количество выгружаемых байт (всегда 8) | |||
* s8 (s8) температура | |||
* (u8) Старший байт уровня | |||
* (u8) Младший байт уровня | |||
* (u8) Всегда 0 | |||
* (u8) Всегда 0 | |||
* (u8) Всегда 0 | |||
* (u8) Всегда 0 | |||
* (u8) Всегда 0 | |||
* (u8) младший байт CRC16 | |||
* (u8) Старший байт CRC16 | |||
s8 означает, что значение является знаковым целым, u8 - беззнаковое целое. | |||
Пронумерованные адреса байтов ответа: | |||
{| class="wikitable" | |||
|Порядковый номер байта | |||
|Порядковый номер байта начиная с 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 шт | |||
В запросе не важно какой указан сетевой номер, а также неважно количество запрашиваемых регистров. Главное, чтобы совпадала контрольная сумма. Расчет контрольной суммы приведен ниже. | |||
= '''Пример опроса датчика ТД-500 в программе Terminal''' = | |||
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 | |||
Если указать другой сетевой адрес, то нужно пересчитать контрольную сумму. Но менять сетевой адрес смысла нет, т.к. датчик будет отвечать на любой сетевой адрес. | |||
== '''Расчет контрольной суммы''' == | |||
Для того, чтобы посчитать контрольную сумму, вы можете перейти на сайт '''<nowiki>https://crccalc.com</nowiki>''' и ввести ваш запрос '''без знака''' '''$''', выбрать '''HEX''', '''CRC-16 ModBUS''' и нажать Calc CRC-16 | |||
Расчет контрольной суммы на сайте '''[https://crccalc.com crccalc]''' | |||
Полученной значение надо записать в отправляемую команду. При этом полученное при расчете значение 0C 44 следует записать в команду как 44 0C. Обратите внимание на раскладку вашей клавиатуры. Набирать команду следует латиницей. | |||
= '''Ответ от датчика:''' = | |||
'''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) | |||