@KzLIFE

Как считать данные по протоколу modbus?

Есть счетчик Элемтро-Фломак который работает по протоколу Modbus документация

Есть библиотека для работы с протоколом Modbus на NODEJS мне нужно вытащить значение сумматоров:

Как запрос мне отправить и как получить данные?

в первый раз работаю с ModBus

4. Блок «СУММАТОРЫ»
Блок «Сумматоры» состоит из 4 сумматоров: «Сумматор 1», «Сумматор 2», «Сумматор 3» и
«Сумматор 4». Параметры конфигурации сумматоров полностью идентичны. Для определения
поведения сумматоров при возникновении аварийной ситуации используется параметр
SumFailsafeMode.
SumFailsafeMode
MODBUS register: 700
Data type: Integer
Access: Read/Write
Определяет специфическое поведение сумматоров при
возникновении аварийной ситуации.
Параметры:
0 = STOP Сумматор прекращает накопление пока не устранится ошибка.
1 = HOLD VALUE Сумматор продолжает накопление, но в качестве приращения используется
последнее «правильное значение».
2 = ACTUAL VALUE Сумматор продолжает накопление на основе фактической текущей
величины потока. Ошибочное событие игнорируется.
Factory setting: 0 = STOP
4.1 Группа «СУММАТОР 1»
4.2 Группа «СУММАТОР 2»
4.3 Группа «СУММАТОР 3»
4.4 Группа «СУММАТОР 4»
Описание функции
СУММАТОРЫ → СУММАТОР 1 → КОНФИГУРАЦИЯ
СУММАТОРЫ → СУММАТОР 2→ КОНФИГУРАЦИЯ
СУММАТОРЫ → СУММАТОР 3→ КОНФИГУРАЦИЯ
СУММАТОРЫ → СУММАТОР 4→ КОНФИГУРАЦИЯ
Замечание: ниже определяются параметры конфигурации для сумматорa 1
Сумматоры №3 и №4 введены в ПО МП подревизии 10.
SumAssign1
SumAssign2
SumAssign3
SumAssign4
MODBUS register: 701, 800,
750, 850
Data type: Integer
Access: Read/Write
Назначение сумматора.
Параметры:
0 = OFF не используется
1 = MASS FLOW массовый расход
2 = VOLUME FLOW объемный расход
3 = CORRECTED VOLUME FLOW приведенный объемный расход
4 = TARGET MASS FLOW массовый расход целевой среды
5 = CARRIER MASS FLOW массовый расход среды-носителя
6 = TARGET VOLUME FLOW объемный расход целевой среды
7 = CARRIER VOLUME FLOW объемный расход среды-носителя
Factory setting: 0 = OFF
Если предполагается эксплуатация расходомера в режиме карты регистров
«MMI», по умолчанию назначение сумматоров устанавливается в соответствии
с инструкцией, представленной в разделе 13.
SumUnit1
SumUnit2
SumUnit3
SumUnit4
MODBUS register: 702, 801,
751, 851
Data type: Integer
Access: Read/Write
Единицы измерения массы при SumAssign = 1,4,5
Параметры:
Metric:
0 to 2 = g; kg; t
Factory setting: kg
Единицы измерения объема при SumAssign = 2,6,7
Параметры:
Metric:
0 to 2 = cm3
; l; m3
Factory setting: m
3
Единицы измерения объема при SumAssign = 3
Параметры:
Metric:
22
0 to 2 = Ncm3
; Nl; Nm3
Factory setting: Nm3
SumMode1
SumMode2
SumMode3
SumMode4
MODBUS register: 704, 803,
753, 853
Data type: Integer
Access: Read/Write
Режим работы сумматора.
Параметры:
0 = BIDIRECTIONAL используются как положительные, так и отрицательные компоненты
измеряемого потока (складываются как положительные так и отрицательные компоненты потока)
1 = FORWARD только положительные компоненты потока накапливаются сумматором
2 = REVERSE только отрицательные компоненты потока накапливаются сумматором
Factory setting: 1 = FORWARD
SumState1
SumState2
SumState3
SumState4
MODBUS register: 703, 802,
752, 852
Data type: Integer
Access: Read/Write
Состояние сумматора. Параметр указывает, работает сумматор в
данный момент или остановлен. При остановке сумматора
накопленное значение остается без изменения.
Параметры:
0 = Активен
1 = Остановлен
Factory setting: 1 = Остановлен
Если предполагается эксплуатация расходомера в режиме карты регистров
«MMI», по умолчанию состояние сумматоров устанавливается в соответствии с
инструкцией, представленной в разделе 13.
SumReset1
SumReset2
SumReset3
SumReset4
MODBUS register: 705, 804,
754, 854
Data type: Integer
Access: Read/Write
Обнуление сумматора (включая величину переполнения
сумматора).
Если дискретный вход настроен на функцию сброса сумматора, то
данный параметр может быть определен в значение START с
помощью данного входа.
Параметры:
0 = CANCEL Не обнулять
1 = START Обнулить
Примечание!
Ответственность за обнуление сумматора полностью возложена на
оператора.
Описание функции
СУММАТОРЫ → СУММАТОР1 → ПАРАМЕТРЫ
СУММАТОРЫ → СУММАТОР2 → ПАРАМЕТРЫ
СУММАТОРЫ → СУММАТОР3 → ПАРАМЕТРЫ
СУММАТОРЫ → СУММАТОР4 → ПАРАМЕТРЫ
Sum1, Sum2
Sum3, Sum4
MODBUS register: 708, 807,
757, 857
Data type: Float
Access: Read
Значение сумматора (∑).
Примечание!
При изменении SumAssign, SumUnit, SumMode значение
сумматора не изменяется! Ответственность за обнуление
сумматора полностью возложена на оператора.
SumOverflow1
SumOverflow2
SumOverflow3
SumOverflow4
MODBUS register: 706, 805,
755, 855
Data type: Float
Access: Read
Демонстрирует переполнение сумматора при превышении
SumX > 107 (в текущих единицах измерения).
Накопленная величина Q (с учетом переполнения) будет
представлена:
Q = SumOverflow * 107
+ Sum
Примечание!
При изменении SumAssign, SumUnit, SumMode значение
SumOverflow не изменяется! Ответственность за обнуление
сумматора полностью возложена на оператора.
SumTime1
SumTime2
SumTime3
Время накопления в секундах, включая и промежутки в которых
величина не суммировалась в связи с ошибками.
23
SumTime4
MODBUS register: 710, 809,
759, 859
  • Вопрос задан
  • 861 просмотр
Решения вопроса 1
Ocelot
@Ocelot
Из всей инструкции самое главное - строчки вида
MODBUS register: 702, 801,
751, 851
Это адреса регистров, которые вам нужно читать/писать.

Пример как это делать, есть в описании библиотеки modbus-serial:
var ModbusRTU = require("modbus-serial");
var client = new ModbusRTU();

// open connection to a serial port
client.connectRTU("/dev/ttyUSB0", {baudrate: 9600}, write);

function write() {
client.setID(1);

// write the values 0, 0xffff to registers starting at address 5
// on device number 1.
client.writeRegisters(5, [0 , 0xffff])
.then(read);
}

function read() {
// read the 2 registers starting at address 5
// on device number 1.
client.readHoldingRegisters(5, 2)
.then(console.log);
}
Вместо address 5 подставьте нужный вам адрес. Можно читать/писать несколько регистров с последовательными адресами за раз. На каком этапе возникают трудности?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vilgeforce
Раздолбай и программист
Для начала надо подключить устройство к компу...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы