76 lines
2.1 KiB
Markdown
76 lines
2.1 KiB
Markdown
# Gidrolock Modbus Scanner
|
||
|
||
RU | [EN](https://github.com/nikzori/modbus-scanner/blob/main/README_en.md)
|
||
|
||
Сканнер Modbus с функцией автоопроса устройства с помощью файлов конфигурации. Подходит для любых устройств, подключенных через Modbus RTU. Конфиги для продукции Gidrolock в комплекте.
|
||
|
||
Позволяет формировать простые сообщения для отправки на устройство.
|
||
|
||
Modbus TCP пока в разработке.
|
||
|
||
## Конфигурации и автоопрос
|
||
Конфигурация — это `.json` файл с описанием команд чтения для конкретных моделей устройств.
|
||
Запись `checkEntry` в конфигурации позволяет перебирать файлы в папке для определения подходящей конфигурации.
|
||
|
||
Поля и возможные значения:
|
||
|
||
```js
|
||
{
|
||
// имя шаблона/устройства
|
||
"name" : "Gidrolock Standard Wi-Fi RS-485",
|
||
|
||
// Описание устройства
|
||
"description" : "Smart valve controller unit with wired and wireless leak sensor support",
|
||
|
||
// список данных, получаемых с устройства
|
||
// каждая запись является отдельным полем данных
|
||
// и поддерживает опрос нескольких регистров,
|
||
// а также парсинг в стандартные типы данных (UTF-8, int и т.д.)
|
||
"entries" : [
|
||
{
|
||
// имя записи
|
||
"name": "Modbus ID",
|
||
|
||
// тип опрашиваемых регистров:
|
||
// "coil", "discrete", "input", "holding"
|
||
"registerType": "holding",
|
||
|
||
// адрес стартового регистра
|
||
// отсчет с 0
|
||
"address": 128,
|
||
|
||
// количество опрашиваемых регистров
|
||
// значение по-умолчанию: 1
|
||
"length": 1,
|
||
|
||
// тип данных для парсинга
|
||
// поддерживаемые типы: bool, uint16, uint32, utf8
|
||
// значение по умолчанию: uint16
|
||
"dataType": "uint16",
|
||
|
||
// опрашивать ли эти регистры повторно
|
||
// при `false` опрашивается только в первый раз
|
||
"readOnce": true
|
||
}
|
||
],
|
||
|
||
// Уникальное для устройства значение: модель устройства, версия прошивки, etc.
|
||
"checkEntry": {
|
||
"registerType": "input",
|
||
"address": 200,
|
||
"length": 6,
|
||
"dataType": "string",
|
||
|
||
// ожидаемое значение при опросе этих регистров
|
||
"expectedValue": "SWT485"
|
||
}
|
||
}
|
||
```
|
||
|
||
|
||
### To-Do
|
||
1. Закончить парсинг во время автоперебора конфигураций для значений типа `bool`
|
||
2. Настраиваемый цикличный опрос регистров
|
||
3. Поддержка Modbus TCP
|
||
|