首页 > 解决方案 > Minimalmodbus - 树莓派的 RS485 屏蔽

问题描述

我正在尝试将 Seeed Studio 的用于 Raspberry Pi 的 RS485 屏蔽与 Raspberry Pi 2B 上的 Python Minimalmodbus库接口 -不工作!!!

屏蔽:https ://www.seeedstudio.com/RS-485-Shield-for-Raspberry-Pi.html

我在 Raspberry Pi 上测试了以下内容:

ser.write('\xff\x05\x00\x00\xff\x00\x99\xe4')

instrument.write_bit(0,1,5)

错误: minimalmodbus.NoResponseError:没有与仪器通信(无应答)

注意:我在同一个 RPi 上使用另一个 USB-to-RS485 转换器使用了相同的 Minimalmodbus python 代码,它运行良好。

皮顿代码:

import minimalmodbus

import time

import serial 

instrument = minimalmodbus.Instrument('/dev/ttyAMA0', 255)


instrument.serial.baudrate = 9600      
instrument.serial.bytesize = 8
instrument.serial.stopbits = 1
instrument.serial.timeout  = 1          
instrument.mode = minimalmodbus.MODE_RTU  
instrument.clear_buffers_before_each_transaction = True
instrument.debug = True

while 1:
    
    instrument.write_bit(0,1,5)

    time.sleep(5)

错误: minimalmodbus.NoResponseError:没有与仪器通信(无应答)

如果我可以将这个特定的 rs485-shield 与 Minimalmodbus 库一起使用,有人可以帮忙吗?先感谢您

问候,

标签: pythonraspberry-pimodbusrs485minimalmodbus

解决方案


write_bit函数在消息发送后读取响应。而 Seeed RS-485 Shield 需要拨动GPIO18引脚才能在读写之间切换。如文档https://wiki.seeedstudio.com/RS-485_Shield_for_Raspberry_Pi/#communication-test-code中的示例代码所示。

通过检查write_bit功能代码,我认为没有一种简单的方法可以在两者之间切换该引脚,serial.write并且serial.read这些没有地方可以注册自己的钩子并在那里切换 PIN(https://github.com/pyhys/minimalmodbus/blob /c08208523b729d178a9f662725a69195924f7c34/minimalmodbus.py#L1379)。


推荐阅读