Перейти к содержанию

Навигация

Modbus-client: различия между версиями

м
→‎Чтение сигнатуры устройства: Заменил команду чтения сигнатуры устройства
м (→‎Подготовка к работе: Заменил текст на включение)
м (→‎Чтение сигнатуры устройства: Заменил команду чтения сигнатуры устройства)
Строка 196: Строка 196:
Здесь не указано значение, которое нужно записать в регистр адреса, поэтому устройство получит неизвестное значение.
Здесь не указано значение, которое нужно записать в регистр адреса, поэтому устройство получит неизвестное значение.


===Чтение сигнатуры устройства===
===Чтение сигнатуру устройства===


Прочтем регистры релейного модуля WB-MR14 с адресом <code>0x01</code>, содержащие сигнатуру (модель) устройства: WBMR14. Известно, что сигнатура хранится по адресу 200 и занимает 6 регистров.
Прочтем регистры релейного модуля WB-MR14 с адресом <code>0x01</code>, содержащие сигнатуру (модель) устройства: WBMR14. Известно, что сигнатура хранится по адресу 200 и занимает 6 регистров.
Строка 215: Строка 215:
В ответе мы получили шесть 16-битных значений, в каждом из которых содержится код одного ASCII-символа. Преобразуем их, заменив начальные <code>0x00</code> на <code>/x</code> и удалив пробелы, к виду <code>\x57</code> и т.д., который понятен команде <code>echo</code>, и выведем на экран получившееся:
В ответе мы получили шесть 16-битных значений, в каждом из которых содержится код одного ASCII-символа. Преобразуем их, заменив начальные <code>0x00</code> на <code>/x</code> и удалив пробелы, к виду <code>\x57</code> и т.д., который понятен команде <code>echo</code>, и выведем на экран получившееся:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
echo -e `modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 \
echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x03 -r200 -c 6 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
-a1 -t0x03 -r200 -c 6 | \
grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'`| xxd -r -p
</syntaxhighlight>
</syntaxhighlight>
Ответ:
Ответ: