没有收到 sdo 响应

问题描述

我正在使用 python 创建一个虚拟的 canopen 从站,以便与现有的主站进行通信。 运行我的脚本时,我不断收到此错误“未收到 sdo 响应”。 据我所知,我需要一个 sdo 服务器来向主服务器发送响应,是否可以创建一个虚拟的 sdo 服务器来完成这项工作?否则,有人知道如何解决这个问题吗?

解决方法

是的,可以创建具有 SDO 服务器的虚拟 CAN 设备。您可以将它与虚拟 CAN 总线(Linux 上的 vcan)一起使用,以在硬件可用之前测试您的 CAN 通信。

  1. 启用 vcan:
 $ modprobe vcan
 $ sudo ip link add dev vcan0 type vcan
 $ sudo ip link set up vcan0
  1. 使用 SDO 服务器启动虚拟 CAN 设备:

根据相关标签,我假设您使用的是 python-canopen。因此,您可以使用这个 https://canopen.readthedocs.io/en/latest/sdo.html#canopen.sdo.SdoServer,它将读取您的 node.edsnode.xdd 文件。在一个终端中运行此 Python 脚本。记得使用 vcan0 接口。 network.connect(channel='can0',bustype='socketcan')

  1. 在第二个终端中运行您的“主”SDO 客户端脚本。它将从您的虚拟设备读取 SDO。记得使用 vcan0 接口。