Подключение sdm120

WB3.5
Подключил SDM120, выбрал шаблон, скорость 2400 (по паспорту) - через несколько секунд появились значения 3х параметров, остальные не появляются.
В логах сыплет ошибками:

Sep  3 20:46:46 wirenboard-AQY4Q7P2 user.notice serial: TModbusDevice::ReadRegisterRange(): failed to read 2 input(s) @ 30 of slave modbus:1
Sep  3 20:46:46 wirenboard-AQY4Q7P2 user.notice serial: TModbusDevice::ReadRegisterRange(): failed to read 2 input(s) @ 70 of slave modbus:1
Sep  3 20:46:46 wirenboard-AQY4Q7P2 user.notice serial: TModbusDevice::ReadRegisterRange(): failed to read 2 input(s) @ 342 of slave modbus:1
Sep  3 20:46:46 wirenboard-AQY4Q7P2 user.notice serial: TModbusDevice::ReadRegisterRange(): failed to read 2 input(s) @ 0 of slave modbus:1
Sep  3 20:46:46 wirenboard-AQY4Q7P2 user.notice serial: TModbusDevice::ReadRegisterRange(): failed to read 2 input(s) @ 6 of slave modbus:1
Sep  3 20:46:47 wirenboard-AQY4Q7P2 user.notice serial: TModbusDevice::ReadRegisterRange(): failed to read 2 input(s) @ 12 of slave modbus:1
Sep  3 20:46:47 wirenboard-AQY4Q7P2 user.notice serial: TModbusDevice::ReadRegisterRange(): failed to read 2 input(s) @ 18 of slave modbus:1
Sep  3 20:46:47 wirenboard-AQY4Q7P2 user.notice serial: TModbusDevice::ReadRegisterRange(): failed to read 2 input(s) @ 24 of slave modbus:1
Sep  3 20:46:47 wirenboard-AQY4Q7P2 user.notice serial: TModbusDevice::ReadRegisterRange(): failed to read 2 input(s) @ 30 of slave modbus:1

Со странички http://wb/#/settings

sdm120_1 	Active Power 	power (ro) 	/devices/sdm120_1/controls/Active Power 	0 	Error: r
sdm120_1 	Apparent Power 	power (ro) 	/devices/sdm120_1/controls/Apparent Power 	430.4 	Error: r
sdm120_1 	Current 	current (ro) 	/devices/sdm120_1/controls/Current 	238.6 	Error: r
sdm120_1 	Line Frequency 	value (ro) 	/devices/sdm120_1/controls/Line Frequency 	0 	Error: r
sdm120_1 	Power Factor 	value (ro) 	/devices/sdm120_1/controls/Power Factor 	0 	Error: r
sdm120_1 	Reactive Power 	power (ro) 	/devices/sdm120_1/controls/Reactive Power 	0 	Error: r
sdm120_1 	Total active energy 	value (ro) 	/devices/sdm120_1/controls/Total active energy 	0 	Error: r
sdm120_1 	Voltage 	voltage (ro) 	/devices/sdm120_1/controls/Voltage 	50 	Error: r 

Подскажите куда рыть.

Количество стоп битов в настройках порта (/etc/wb-mqtt-serial.conf, веб-интерейс Configs => Serial Devices …) проверьте.

Cтоп битов 2.
SDM120 подлючен ко второму порту.
Стали меняться значения, но так - одно поле меняется на реальное, другое на ошибку.
И названия полей не соответствуют значениям.
Что можно сделать?

У меня SDM120 успешно работает с 1 стоп-битом, правда я ещё и скорость поднял до 9600.

Как поднять скорость?

Я использовал https://github.com/gianfrdp/SDM120C (вот бинарник https://transfer.sh/9MEyw/sdm120c, если повезёт, то запустится), там понятная справка, а так я уже не подскажу, какие именно параметры использовал. Перед запуском нужно переключить счётчик в “режим настройки”, делается это 3-секундным нажатием на кнопку. Он автоматически выходит из этого режима спустя какое-то время.
Этой же утилиткой я менял адрес счётчика.

Бинарник не находит по ссылке

Там не сразу на скачивание, нужно браузером открыть

Запустился, но не видит счетчик. Странно, wb-mqtt-serial получает хоть что-то.
Или надо жать кнопку на счетчике?

root@wirenboard-AQY4Q7P2:~# ./sdm120c -d3 -x /dev/ttyNSC1
20170904-09:45:16.134632: ./sdm120c(28833) cmdline="./sdm120c -d3 -x /dev/ttyNSC1"
20170904-09:45:16.139002: ./sdm120c(28833) szttyDevice: /dev/ttyNSC1
20170904-09:45:16.141860: ./sdm120c(28833) devLCKfile: </var/lock/LCK..ttyNSC1>
20170904-09:45:16.143688: ./sdm120c(28833) devLCKfileNew: </var/lock/LCK..ttyNSC1.28833>
20170904-09:45:16.144340: ./sdm120c(28833) PID: 28833
20170904-09:45:16.146853: ./sdm120c(28833) Attempting to get lock on Serial Port /dev/ttyNSC1...
20170904-09:45:16.149150: ./sdm120c(28833) Acquiring shared lock on /var/lock/LCK..ttyNSC1...
20170904-09:45:16.151147: ./sdm120c(28833) Shared lock on /var/lock/LCK..ttyNSC1 acquired...
20170904-09:45:16.153074: ./sdm120c(28833) Checking for lock
20170904-09:45:16.155427: ./sdm120c(28833) errno=0, bRead=2 PID=28833 LckPID=28833
20170904-09:45:16.159609: ./sdm120c(28833) Checking process 28833 (./sdm120c) for lock
20170904-09:45:16.161347: ./sdm120c(28833) PID: 28833 COMMAND: "./sdm120c" LckPID: 28833 LckCOMMAND: "./sdm120c" LckPIDcommand "./sdm120c" = me
20170904-09:45:16.163720: ./sdm120c(28833) Appears we got the lock.
20170904-09:45:16.165298: ./sdm120c(28833) resp_timeout=200000us
20170904-09:45:16.166058: ./sdm120c(28833) Libmodbus context open (2400E1)
20170904-09:45:16.167557: ./sdm120c(28833) Byte timeout disabled.
20170904-09:45:16.169192: ./sdm120c(28833) New response timeout: 0s, 200000us
Opening /dev/ttyNSC1 at 2400 bauds (E, 8, 1)
20170904-09:45:16.228360: ./sdm120c(28833) 1/1. Register Address 30001 [0000]
[01][04][00][00][00][02][71][CB]
Waiting for a confirmation...
ERROR Connection timed out: select
./sdm120c: ERROR (110) Connection timed out, 1/1
20170904-09:45:16.437496: ./sdm120c(28833) ERROR (110) Connection timed out, 1/1, Address 30001 [0000]
20170904-09:45:16.442821: ./sdm120c(28833) Response timeout gave up after 204053us
20170904-09:45:16.471637: ./sdm120c(28833) devLCKfile: </var/lock/LCK..ttyNSC1>
20170904-09:45:16.475444: ./sdm120c(28833) devLCKfileNew: </var/lock/LCK..ttyNSC1.28833>
20170904-09:45:16.478770: ./sdm120c(28833) Clearing Serial Port Lock (28833)...
20170904-09:45:16.481826: ./sdm120c(28833) Acquiring exclusive lock on /var/lock/LCK..ttyNSC1...
20170904-09:45:16.483769: ./sdm120c(28833) Exclusive lock on /var/lock/LCK..ttyNSC1 acquired (0) Success...
20170904-09:45:16.484957: ./sdm120c(28833) cmdLen=9
20170904-09:45:16.486865: ./sdm120c(28833) cmdLen=9 COMMAND is not null
20170904-09:45:16.488771: ./sdm120c(28833) errno=0, bRead=2 LckPID=28833 PID=28833 COMMAND='./sdm120c'
20170904-09:45:16.490777: ./sdm120c(28833) errno=0, bRead=-1 LckPID=28833 PID=0 COMMAND=''
20170904-09:45:16.492018: ./sdm120c(28833) Clearing Serial Port Lock done
<00>NOK
20170904-09:45:16.495270: ./sdm120c(28833) NOK


Opening /dev/ttyNSC1 at 2400 bauds (E, 8, 1)

Попробуйте parity выставить в None.

Для чтения данных кнопку жать не надо, читать можно в режиме по умолчанию. Для изменения настроек нужно перевести счётчик в режим конфигурирования (как раз длинным нажатием, пока на экране не загорится надпись set, или как-то так).

С повтором 3 раза -z3 отсеивает ошибки (2 уже не все читает).

-z num_retries Try to read max num_retries times on bus before exiting
                   with error. Default: 1 (no retry)
root@wirenboard-AQY4Q7P2:~# ./sdm120c  -PN -S1 -p -v -c -f  -t  -z3 /dev/ttyNSC1
Voltage: 1386.23 V
Current: 1.69 A
Power: 321.60 W
Frequency: 50.00 Hz
Total Active Energy: 1386236 Wh
OK
root@wirenboard-AQY4Q7P2:~#

WB также читает, раз через раз, чего покрутить?

Тут я уже не подскажу: единственное, что я менял на счётчиках — увеличил скорость обмена до 9600. Ну и в шаблонах удалил всякие поля, которые мне не нужны.
У меня на линии стоит 2 SDM120, 2 Пульсара и Милур 105 — работает всё достаточно стабильно, разве что примерно раз в 10 минут пара регистров не читается, но в целом норм.

Поменял скорость на 9600, теперь не читает ничего, пишет
в ответ на:

 ./sdm120c  -b9600 -PN -S1  -d3 -x -a001 /dev/ttyNSC1

Opening /dev/ttyNSC1 at 9600 bauds (N, 8, 1)
20170916-09:40:21.719099: ./sdm120c(1757) 1/1. Register Address 30001 [0000]
[01][04][00][00][00][02][71][CB]
Waiting for a confirmation...
<00><01><04><04><43><60><CC><CD><7A>
ERROR CRC received CD7A != CRC calculated 33A0
./sdm120c: ERROR (112345690) Invalid CRC, 1/1
20170916-09:40:21.832431: ./sdm120c(1757) ERROR (112345690) Invalid CRC, 1/1, Address 30001 [0000]

Грешил на длинный провод - вынул из щитка, подключил на столе. Не помогло.
Помогите разобраться.


Переподключил через USB-rs485 - прекрасно всё читает.

Оказалось всё дело было в том, что на плате Wirenboard 3.5 была запаяна перемычка (!) у портов RS-485.
Распаял - и SDM120 заработал.

Так это терминатор и это задокументировано. Терминатор на конце линии стоять должен, так что всё звучит так, как будто SDM120 нарушает стандарт.

На WB5 терминатор так же установлен по умолчанию? У меня SDM120 завёлся без особых проблем, ничего менять в WB не пришлось.

Джамперы справа от ряда антенн в левом нижнем углу корпуса

добрый день
подскажите пожалуйста как поменять baud rate на 9600 и адрес счетчика SDM120M?

Держите кнопку SET в течение 3 сек. и войдете в режим изменения настроек.
Или через Wirenboard:
Узнайте какой сейчас адрес и baudrate нажимая кнопку SET до нужных мест.
Затем запишите нужные значения командой modbus_client в соответствующие регистры:

удерживал кнопку - устройство переходит в в режим “set” на экране
адрес 001 baudrate 2400
командой modbus_client:
modbus_client --debug -mrtu -b2400 -pnone -s2 /dev/ttyRS485-2 -a0x001 -t0x06 -r110 96
выдает ошибку
подскажите правильность написания пожалуйста