python 需要安裝modbus_tk軟體包。
由於是測試,所以硬體都用程序虛擬了。串口用virtual serial port driver pro虛擬,modbus 從站用modbus slave虛擬。
1 虛擬串口
設備管理中出現兩個串口
2 建modbus slave
選擇虛擬串口,注意串口選的是com1->com2,在python中主站的串口應為com2.
對子站進行配置
修改保持寄存器內容
3 程序如下:
import serialimport modbus_tk.defines as cstfrom modbus_tk import modbus_rtu
def mod(PORT = "com2"): red = [] alarm = "" try: master = modbus_rtu.RtuMaster(serial.Serial(port=PORT, baudrate=9600, bytesize=8, parity='N', stopbits=1)) master.set_timeout(5.0) master.set_verbose(True)
red = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 10) alarm = "正常" return list(red), alarm
except Exception as exc: print(str(exc)) alarm = (str(exc))
return red, alarm if __name__ == "__main__": red, alarm = mod() if alarm == '正常': print(red)程序執行正常,讀出了保持寄存器中的值。
C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe D:/user/documents/railway/測力程序/modbus-test.py
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Process finished with exit code 0
modbus slave中通訊監視如下
4 結論
測試順利。