当前位置:   article > 正文

LabVIEW中CANopen 读取程序解读

LabVIEW中CANopen 读取程序解读

这段程序用于创建 CANopen 接口,并读取 CANopen CAN 帧消息。以下是详细的解读:

左侧部分

  1. node-ID (U8): 指定节点 ID,用于标识 CANopen 网络中的设备。
  2. CANopen interface (U32): 指定 CANopen 接口。
  3. baud rate (U32): 设置波特率,用于 CAN 通信的速率。

创建 CANopen 接口

  1. Interface Create:
    • 创建一个 CANopen 接口,并使远程设备进入 NMT 预操作状态(Pre-operational state)。
    • 输入参数包括 node-IDCANopen interfacebaud rate
    • 这一步完成后,CANopen 网络已经初始化,设备处于预操作状态,可以开始通信。

读取 CAN 帧消息

  1. CAN Frame Read Create:

    • 创建一个 CAN 帧读取对象。
    • buffer size (U16) 设置为 0,表示默认的缓冲区大小。
  2. CAN Frame Read Start:

    • 启动 CAN 帧读取。
    • 如果不使用这个 VI,CAN 帧读取对象会自动启动。但第一次读取操作可能不是实时安全的,因为启动 CAN 帧读取对象需要一些时间。

读取 CANopen CAN 帧消息(右侧部分)

  1. Loop (While Loop):

    • 使用一个定时器控制循环的执行间隔(period (ms)),确保定时读取 CAN 消息。
  2. CAN Frame Read:

    • 读取 CANopen CAN 帧消息。
    • 输出包括 CAN message data(CAN 消息数据)、RTR?(远程传输请求标志)、COB-ID(通信对象标识符)、New Data?(新数据标志)和 timestamp(时间戳)。
  3. 状态判断:

    • 判断是否有新数据(New Data?),如果有新数据,则更新状态(status)。
  4. 停止条件:

    • 判断是否满足停止条件(stop),如果满足则退出循环。

关闭 CANopen 接口

  1. stop remote node:

    • 关闭远程节点。
  2. Interface Close:

    • 关闭 CANopen 接口,完成所有通信操作。

提示信息

  • 将 CANopen CAN frame Read VI 放入循环
    • National Instruments 建议将 CANopen CAN frame Read VI 放入循环中,并设置超时为 0。
    • 当超时为 0 时,CANopen CAN frame Read VI 会立即返回最新的状态或紧急消息。
    • 这种设置可以最大化资源利用率和减少抖动。

总结

这段程序首先创建并初始化一个 CANopen 接口,使得 CANopen 网络中的设备进入预操作状态。然后,它启动一个 CAN 帧读取对象,并在循环中不断读取 CANopen CAN 帧消息。如果有新数据,则更新状态。当满足停止条件时,关闭远程节点并关闭 CANopen 接口。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/957910
推荐阅读
相关标签
  

闽ICP备14008679号