0x1302 input s32 big endian (power) 0.00512 P L1 Активная мощность для фазы L1 Вт
Этот регистр нет.
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 01 3d 65 >
← < 9a 03 02 ff ff dc 28 > 7 bytes
← [65535]
4866: 65535 0xffff
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4867
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 03 00 01 6c a5 >
← < 9a 03 02 01 d6 5d 96 > 7 bytes
← [470]
4867: 470 0x1d6
Почему нет? Отрицательное же значение.
Покажите, куда стралка на трансформаторе.
Наверно, не то скопировал
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 01 3d 65 >
← < 9a 03 02 00 00 dd 98 > 7 bytes
← [0]
4866: 0 0x0
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4867
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 03 00 01 6c a5 >
← < 9a 03 02 01 d0 dd 94 > 7 bytes
← [464]
4867: 464 0x1d0
0.00512*0x1d0~2.4вт. при токе в 0.26А . А полная (кажущаяся) мощность?
Кажущаяся мощность для фазы L1
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4882
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 12 00 01 3c a0 >
← < 9a 03 02 00 00 dd 98 > 7 bytes
← [0]
4882: 0 0x0
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4883
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 13 00 01 6d 60 >
← < 9a 03 02 01 ce 5d 9c > 7 bytes
← [462]
4883: 462 0x1ce
EvgenyBoger:
Прочитайте регистры напряжения по всем трём фазам.
Отключите два неиспользуемых трансформатора.
Сделайте новую серию фотографий, на которых чётко видно какие провода куда идут. Сейчас они не помешаются в кадр, уходят под стол и т.д.
Сфотографируйте или напишите серийный номер устройства.
Прочитайте регистры 0x14a0, 0x14a1, 0x14a2
1. Регистры напряжения по всем трём фазам
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5136
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 10 00 01 9c 14 >
← < 9a 03 02 57 63 a3 81 > 7 bytes
← [22371]
5136: 22371 0x5763
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5138
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 12 00 01 3d d4 >
← < 9a 03 02 1f cf 95 fc > 7 bytes
← [8143]
5138: 8143 0x1fcf
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5140
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 14 00 01 dd d5 >
← < 9a 03 02 1f c6 55 fa > 7 bytes
← [8134]
5140: 8134 0x1fc6
Готово.
3-4. Новые фото и серийный номер
5 Регистры 0x14a0, 0x14a1, 0x14a2
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5280
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 a0 00 01 9d f3 >
← < 9a 03 02 00 01 1c 58 > 7 bytes
← [1]
5280: 1 0x1
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5281
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 a1 00 01 cc 33 >
← < 9a 03 02 00 02 5c 59 > 7 bytes
← [2]
5281: 2 0x2
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5282
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 a2 00 01 3c 33 >
← < 9a 03 02 00 03 9d 99 > 7 bytes
← [3]
5282: 3 0x3
С виду - все верно. Ошибок явных не вижу.
Отвлеченно : а почему не пользуетесь преобразованием сразу , неужели удобно считать каждый раз?
Вот так например, для активной мощности:
export DEV_PORT=/dev/ttyUSB0; export DEV_ADDR=154; HEXSTRING=$(modbus_client -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x03 -r0x1302 -c2| grep Data | sed -e 's/0x//g' -e 's/Data://' -e 's/s//g' -e 's/ *//g' -e 's/\t//g'); echo $(( $((16#$HEXSTRING))*0,00512))
BrainRoot:
Вот так например, для активной мощности:
export DEV_PORT=/dev/ttyUSB0; export DEV_ADDR=154; HEXSTRING=$(modbus_client -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x03 -r0x1302 -c2| grep Data | sed -e 's/0x//g' -e 's/Data://' -e 's/s//g' -e 's/ *//g' -e 's/\t//g'); echo $(( $((16#$HEXSTRING))*0,00512))
Этой утилиты у меня нет, собрать из исходников не получается, пользуюсь тем что есть. На вики у вас нет пакета для arm архитектуры.
@Djstrayk а ваша утилита умеет читать два регистра за раз?
Если да, то прочитайте пожалуйста ещё раз оба регистра активной мощности (т.е. 2 штуки начиная с 0x1302) за один запрос.
Умеет…
root@home-assistant:~/modbus-utils# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866 4867
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 02 7d 64 >
← < 9a 03 04 00 00 00 02 51 3b > 9 bytes
← [0, 2]
4866: 0 0x0
4867: 2 0x2
Так?
root@home-assistant:~# HEXSTRING=$(modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866 4867 | grep Data | sed -e 's/0x//g' -e 's/Data://' -e 's/s//g' -e 's/ *//g' -e 's/\t//g'); echo $(( $((16#$HEXSTRING))*0,00512))
330
лучше вот так, без sed-а, чтобы посылки было видно. Это с включенной лампочкой?
Это все выключено. Работает только сам счётчик.
интересно всё-таки на включенном. Ожидаю там настоящие 60 Вт
Вот с лампочкой.
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866 4867 Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 02 7d 64 >
← < 9a 03 04 00 00 2e 49 0c ac > 9 bytes
← [0, 11849]
4866: 0 0x0
4867: 11849 0x2e49
root@home-assistant:~# HEXSTRING=$(modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866 4867 | grep Data | sed -e 's/0x//g' -e 's/Data://' -e 's/s//g' -e 's/ *//g' -e 's/\t//g'); echo $(( $((16#$HEXSTRING))*0,00512))
330
Данные регистра по току, при работающей лампочке.
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5142
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 16 00 01 7c 15 >
← < 9a 03 02 00 10 dc 54 > 7 bytes
← [16]
5142: 16 0x10
Djstrayk:
11849
это 60.66 Вт
echo $(( $((16#$HEXSTRING))*0,00512))
баш не умеет в дробные числа
1 Like
Добрый день. Данные плучаются верные?
Собственно проблема видимо была из-за того, что есть разница в значениях если спрашивать один регистр или два. Ниже пример.
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866 4867
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 02 7d 64 >
← < 9a 03 04 00 00 4c d9 25 a0 > 9 bytes
← [0, 19673]
4866: 0 0x0
4867: 19673 0x4cd9
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 01 3d 65 >
← < 9a 03 02 00 00 dd 98 > 7 bytes
← [0]
4866: 0 0x0
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4867
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 03 00 01 6c a5 >
← < 9a 03 02 02 0b 9d 3f > 7 bytes
← [523]
4867: 523 0x20b