CAN 网络上具有 CANOpen 接口的设备

问题描述 投票:0回答:1

我有一个带有 CANOpen 接口的传感器,需要将数据发送到 ECU。目前,网络上没有其他传感器、非 CANOpen、CANOpen 设备。

我可以在不使用任何特殊库的情况下与 CANOpen 设备进行通信吗,因为它是网络上唯一的设备?

我应该如何解决这个问题?

我发现我应该使用 CANOpen 库(CanFestival、CanOpenNode)。

我使用 PEAK Can View 软件配置了节点 ID 和其他参数,并从传感器获取了值。

还可在以下文档中找到:text

在非 CANOpen 网络中使用 CANOpen 设备:

- 非 CANopen 网络不得使用标识符值 0 (CANopen NMT)。 − 非 CANopen 网络不得使用 SDO 和 NMT-EC 服务的标识符。

目前,我的方法是使用linux CAN Socket并尝试发送和接收来自传感器的数据,而不使用任何外部库。

can-bus canopen
1个回答
1
投票

是的,在你的简单情况下你应该能够做到这一点。我认为您已经了解如何为传感器设备设置 CAN 比特率和 CANopen 节点 ID。现在查看传感器的数据表或 EDS 文件,找出PDO 映射,它定义了哪些 TPDO(传输 PDO)用于发送传感器数据以及采用哪种格式。第一个 TPDO(TPDO1)的 CAN 消息 ID 将为 180h+节点 ID,TPDO2 使用 280h+节点 ID,TPDO3/4 使用 380h/480h+节点 ID,但我怀疑您的设备会使用那么多。

然后,为了使传感器开始发送 TPDO,您只需在总线上发送一个 NMT 命令,即可将设备从预操作模式切换到操作模式。 NMT 命令使用 CAN 消息 ID 0 和两个数据字节的有效负载,第一个字节是命令说明符,第二个字节是节点 ID,或 0 表示“所有节点”,在您的情况下可以正常工作。命令说明符值为:

01h - switch to operational
80h - switch to pre-operational
02h - switch to stopped
81h - device reset
82h - device communication reset
© www.soinside.com 2019 - 2024. All rights reserved.