我在具有以下操作系统规范的基于 linux 的设备上运行 python 代码:
NAME=Buildroot
VERSION=2020.11.1
该设备使用三线接口(CAN_H、CAN_L、GND)连接到 PLC。
我编写了一个代码,它使用 CAN 总线协议向 PLC 发送消息。这是通过python-can
包完成的。
我有以下代码:
import can
def send():
#USB interface
#bus = can.interface.Bus(bustype='pcan', channel='PCAN_USBBUS1', bitrate=500000)
#on linux
bus = can.interface.Bus(bustype='socketcan', channel='vcan0', bitrate=500000)
#on windows
#bus = can.interface.Bus(bustype='serial', channel='COM1', bitrate=500000)
msg = can.Message(arbitration_id=0x68005,data=[0x10,0x11,0x12],is_extended_id=True)
try:
bus.send(msg)
print("Message sent on {}".format(bus.channel_info))
except can.CanError:
print("Message NOT sent")
if __name__ == '__main__':
send()
面临的问题是设备没有向 PLC 发送任何数据。这可能是由于为bustype
和设置了不正确的选项channel
。
任何人都可以建议使用三根 CAN 线提供什么bustype
以及为这个物理接口提供什么?channel