按圖學樹莓派3 B modbus-tk
1. 安裝modbus-tk, sudo pip3 install modbus-tk
解除安裝掉pyserial、serial
sudo pip3 uninstall pyserial
sudo pip3 uninstall serial
重新安裝pyserial
# -*- coding: utf_8 -*- import sys import logging import serial import modbus_tk import modbus_tk.defines as cst import modbus_tk.modbus_rtu as modbus_rtu logger = modbus_tk.utils.create_logger("console")
#PORT = 1 PORT = "/dev/ttyAMA0"
if __name__ == "__main__": try: # 連線MODBUS TCP從機 master = modbus_rtu.RtuMaster(serial.Serial(port=PORT, baudrate=9600, bytesize=8, parity='N', stopbits=1, xonxoff=0)) master.set_timeout(5.0) master.set_verbose(True) logger.info("connected") logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 10)) #logger.info(master.execute(1, cst.WRITE_SINGLE_REGISTER, 0, output_value=21)) #send some queries #logger.info(master.execute(1, cst.READ_COILS, 0, 10)) #logger.info(master.execute(1, cst.READ_DISCRETE_INPUTS, 0, 8)) #logger.info(master.execute(1, cst.READ_INPUT_REGISTERS, 100, 3)) #logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 100, 12)) #logger.info(master.execute(1, cst.WRITE_SINGLE_COIL, 7, output_value=1)) #logger.info(master.execute(1, cst.WRITE_SINGLE_REGISTER, 0, output_value=54)) #logger.info(master.execute(1, cst.WRITE_MULTIPLE_COILS, 0, output_value=[1, 1, 0, 1, 1, 0, 1, 1])) #logger.info(master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 100, output_value=xrange(12)))
except modbus_tk.modbus.ModbusError as exc: logger.error("%s- Code=%d", exc, exc.get_exception_code())
3. 測試
電腦端使用Modbus Slave