1 测试背景
最近在研究树莓派的过程中,尝试用它来做一个Slave返回终端的数据状态。参照modbus_tk中的例子建立起了Master 和 Slave 的测试环境。Master 建立在win10 virtualbox的树莓派x86虚拟机中,Slave用的是树莓派3B。两者都是终端模式下在参照例子的基础上简单修改了一下便开始了测试。串口设备用的是FDTI的USB转串口。
2 Master例子
#!/usr/bin/env python
# -*- coding: utf_8 -*-
"""
Modbus TestKit: Implementation of Modbus protocol in python
(C)2009 - Luc Jean - luc.jean@gmail.com
(C)2009 - Apidev - http://www.apidev.fr
This is distributed under GNU LGPL license, see license.txt
"""
import serial
import time
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
PORT = “/dev/ttyUSB0"
#PORT = '/dev/ttyp5'
def main():
"""main"""
logger = modbus_tk.utils.create_logger("console")
try:
#Connect to the slave
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")
for i in range(20):
logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 10))
time.sleep(0.5)
logger.info(master.execute(1, cst.WRITE_M