Добрый день! На самом деле прошивка уже сейчас позволяет ответить на ваш запрос. Ниже подробное описание, как это сделать.
Настройка периода, в течение которого детектируются пики напряжений и токов. По умолчанию период равен 20 миллисекундам.
Прочитать текущее значение настройки (пример команды):
modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a130 -t3 -r0x1005
SUCCESS: read 1 of elements:
Data: 0x153f
Здесь смотрим только на старшие 8 бит ответа, 0x15, что равно 21 мс в десятичной системе.
Чтобы записать значение периода сначала разблокируем регистр для записи. После разблокировали регистров будьте внимательны, чтобы не допустить случайного изменения регистров, отличных от нужного вам 0x1005.
modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a130 -t6 -r100 0xABCD
Затем переведем желаемое значение периода в миллисекундах в HEX формат (возможные значения от 0 до 255 мс). И делаем конкатенацию полученного числа и числа 0x3F.
Например, мы хотим настроить период на 200 мс, это соответствует C8 в HEX. Итоговое значение будет равно 0xC83F. Запишем его в регистр.
root@wirenboard-AUWUJFBQ:~/map# modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a130 -t6 -r0x1005 0xC83F
SUCCESS: written 1 elements!
И проверим, что значение записалось:
root@wirenboard-AUWUJFBQ:~/map# modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a130 -t3 -r0x1005
SUCCESS: read 1 of elements:
Data: 0xc83f
Настройка периода не сохраняется после перезагрузки счетчика, а принимает значение по умолчанию (20 мс).
Прочитать пиковые значения напряжений L1-L3 (пример команды):
modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a130 -t4 -r6144 -c6
SUCCESS: read 6 of elements:
Data: 0x7be9 0x0000 0x0000 0x0000 0x0000 0x0000
Значение на каждую фазу занимает 2 байта в формате little endian. В данном случае значение для фазы L1 равно 0x00007be9. Его нужно перевести в DEC и умножить на 0.01. Таким образом, получаем 317.21 В.
Значения для других фаз равны нулю.
Аналогично прочитать пиковые значения токов L1-L3 (пример команды):
root@wirenboard-AUWUJFBQ:~/map# modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a130 -t4 -r6152 -c6
SUCCESS: read 6 of elements:
Data: 0x0012 0x0000 0x0000 0x0000 0x0000 0x0000
Значение для фазы L1 равно 0x00000012. Его нужно перевести в DEC и умножить на 0.016. Таким образом, получаем 0.288 A.