我正在用python创建一个虚拟canopenslave,以便与现有的master通信。当运行我的脚本时,我不断地得到这个错误";没有接收到sdo响应";。据我所知,我需要一个sdo服务器来向master发送响应,有可能创建一个虚拟sdo服务器吗?否则,有人知道如何解决这个问题吗?
是的,可以创建一个具有SDO服务器的虚拟CAN设备。在硬件可用之前,您可以将其与虚拟can总线(Linux上的vcan(一起使用,以测试您的can通信。
- 启用vcan:
$ modprobe vcan
$ sudo ip link add dev vcan0 type vcan
$ sudo ip link set up vcan0
- 使用SDO服务器启动虚拟CAN设备:
根据有问题的标签,我假设您使用python canopen。所以你可以用这个https://canopen.readthedocs.io/en/latest/sdo.html#canopen.sdo.SdoServer,将读取您的node.eds
或node.xdd
文件。在一个终端中运行这个Python脚本。请记住使用vcan0
接口。network.connect(channel='can0', bustype='socketcan')
- 运行您的"主";第二个终端中的SDO客户端脚本。它将从您的虚拟设备中读取SDO。记得使用
vcan0
接口