按图学树莓派3 B modbus-tk

首先,非常感谢@SamWorld。看了他的博文,https://blog.csdn.net/baidu_26678247/article/details/65629434,实现了在树莓派下输入中文,本博文在树莓派上完成编辑。

1. 安装modbus-tk,   sudo pip3 install modbus-tk

按图学树莓派3 B modbus-tk_第1张图片

卸载掉pyserial、serial

sudo pip3 uninstall pyserial

sudo pip3 uninstall serial

重新安装pyserial

2. 编写代码(参考自https://blog.csdn.net/fan0520/article/details/51459057、

https://blog.csdn.net/xukai871105/article/details/21884065)

# -*- 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

按图学树莓派3 B modbus-tk_第2张图片

 

你可能感兴趣的:(树莓派)