Я работаю над автоматическим тестовым примером для системы и мне требуется автоматическое устройство ввода Modbus.
Мой пример использования здесь - реализация подчиненного устройства Modbus RTU на основе Raspberry pi и подключения к ведущему устройству Modbus.
Я хочу, чтобы это ведомое устройство на основе raspberry pi заполняло и отправляло ответ мастеру, когда мастер запрашивает значение регистра.
Я новичок в этом протоколе и среде, я не могу найти ни одного скрипта или библиотеки Python, где у нас есть ведомый клиент Modbus.
Я столкнулся с приведенным ниже кодом последовательного Python и смог успешно декодировать запросы Modbus от Мастера,
import serial
import time
receiver = serial.Serial(
port='/dev/ttyUSB0',
baudrate = 115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
while 1:
x = receiver.readline()
print x
Проблема, с которой я сталкиваюсь, заключается в том, что этот блок кода просто печатает серию последовательных битов, и я не уверен, как декодировать пакеты Modbus из этих ...
ВЫВОД:
b '\ x1e \ x03 \ x00 \ x19 \ x00 \ x01W \ xa2 \ x1e \ x10 \ x00 \ x0f \ x00 \ x01 \ x02 \ x03 + \ xb7 \ x1e \ x03 \ x00 \ n'
б '\ x00 \ x02 \ xe6f \ x1e \ x03 \ x00 \ т \ x00 \ x01Vg \ x1e \ x10 \ x00 \ x10 \ x00 \ x01 \ x02 \ x01, (\ XBD \ x1e \ x03 \ x00 \ п'
b '\ x00 \ x02 \ xe6f \ x1e \ x03 \ x00 \ t \ x00 \ x01Vg \ x1e \ x10 \ x00 \ x11 \ x00 \ x01 \ x02 \ x03 (\ t \ x1e \ x03 \ x00 \ n'
Ь '\ x00 \ x02 \ xe6f \ x1e \ x03 \ x00 \ т \ x00 \ x01Vg \ x1e \ x10 \ x00 \ x12 \ x00 \ x01 \ x02 \ x01,) _ \ x1e \ x03 \ x00 \ п'
Ь '\ x00 \ x02 \ xe6f \ x1e \ x03 \ x00 \ т \ x00 \ x01Vg \ x1e \ x03 \ x00 \ п'
Ь '\ x00 \ x02 \ xe6f \ x1e \ x03 \ x00 \ т \ x00 \ x01Vg \ x1e \ x03 \ x00 \ п'
Может ли кто-нибудь указать мне правильное направление на то, что искать, или реализован похожий сценарий.
Заранее спасибо.