1. 程式人生 > >按圖學樹莓派3 B modbus-tk

按圖學樹莓派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