Чтение и запись modbus значений

добрый день. подскажите как изменить значение четности у пид регулятора политех.


на бес проверки четности.
из командной строки контроллера.

а то у меня уже висит пара устройств без проверки

Добрый день.
Вопрос не очень понятен, в чем нужна помощь?

Как составить команда что бы записать в регистр 1502 “0”

Если имеется в виду - в holding, используя 0x06 функцию - то так

modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-2 -o40 -a10 -t0x06 -r1502 0

Параметры описаны в статье

ошибку вываливает
root@wirenboard-AKBOVBJY:~# modbus_client --debug -mrtu -b9600 -peven -s1 /dev/ttyRS485-2 -o40 -a10 -t0x06 -r1502 0
Data to write: 0x0
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[0A][06][05][DE][00][00][E8][47]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!

чуть менял параметры подключения. по вашей команде идентично, ошибка.
вроде все так же дедал жо этого. правда пытался читать с него, ошибку ваваливает тоже.
хотя в устройсвах с него все данные идут и изменения в параметрах меняется. если настройки порта такое как выше скидывал

А адрес устройства точно 10?

При работе с портом (перед работой) с помощью modbus_client нужно остановить wb-mqtt-serial.
Иначе он продолжит занимать порт и будет в шине каша.
То есть - сначала остановите драйвер, затем проверьте чтением что устройство отвечает (скорректируйте адрес) ну и измените параметры.

остановил сервис. по той команде что вы написали с ключом -о40 не работает. без него работает. но непонятно по какой причине не записывается параметр.
root@wirenboard-AKBOVBJY:~# modbus_client --debug -mrtu -b9600 -peven -s1 /dev/ttyRS485-2 -o40 -a10 -t0x03 -r1502
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[0A][03][05][DE][00][01][E5][87]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-AKBOVBJY:~# modbus_client --debug -mrtu -b9600 -peven -s1 /dev/ttyRS485-2 -a10 -t0x03 -r1502
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[0A][03][05][DE][00][01][E5][87]
Waiting for a confirmation…
<0A><03><02><00><01><45>
SUCCESS: read 1 of elements:
Data: 0x0001
root@wirenboard-AKBOVBJY:~# modbus_client --debug -mrtu -b9600 -peven -s1 /dev/ttyRS485-2 -a10 -t0x06 -r1502 0
Data to write: 0x0
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[0A][06][05][DE][00][00][E8][47]
Waiting for a confirmation…
<0A><06><05><00><00><47>
SUCCESS: written 1 elements!
root@wirenboard-AKBOVBJY:~# modbus_client --debug -mrtu -b9600 -peven -s1 /dev/ttyRS485-2 -a10 -t0x03 -r1502
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[0A][03][05][DE][00][01][E5][87]
Waiting for a confirmation…
<0A><03><02><00><01><45>
SUCCESS: read 1 of elements:
Data: 0x0001
root@wirenboard-AKBOVBJY:~#

хотя в выдаче пишет что записал. датчик перегружал программно, думал что применение параметров почсле перезагрузки. но тоже самое после перезагрузки, стоит “1” в вадаче. патылся послать в шестнадцатеричной системе, тоже самое, запись проходит но не сохраняется

Значение читается без ошибок.

Ну и запись - соотествивенно проходит тоже без них.

А если перезапустить снятием питания? Именно каких-либо ошибок я не вижу. Попробуйте еще использовать для записи функцию 0x10.

дернуть питание могу только вечером, поеду на объект. с функцией 0x10 картина аналогичная. а регистре остается старое значение, хотя запись вроде подтверждается. перезапуск программно из вебморды WB новые значения не применяются

Думаю целесообразно в поддержку самого устройства написать. Возможно оно для некоторых версий прошивки не может быть перенастроено.

Понял, спасибо.