Skip to main content

示例:CANopen

产品CODESYS CANopen Manager SL

此示例涉及 CANopen 主站和 CANopen 从站通信堆栈的编程接口。该项目包含 SDO、NMT、诊断和通信参数(波特率、网络 ID、节点 ID)动态配置等示例。

描述

该项目包含使用 CANopen 主站和 CANopen 从站堆栈编程接口的不同示例。处理的主题包括以下内容:

  • SDO(加速、分段、块),访问对象字典

  • 网络管理(NMT)

  • 诊断(CANopen 状态、EMCY)

  • 对象字典和 CANopen 管理器状态机的事件处理程序

  • 重新配置:动态更改波特率、网络 ID 和节点 ID

  • 通过设备诊断库访问 CAN 配置

附加信息

该项目包括一个 CANopen 主站和一个 CANopen 从站堆栈,它们通过 CANbus 相互通信。调试该项目需要两个互连的 CAN 接口。实现这一点的最简单方法是使用 CODESYS Control Win 控制器和一个 2 通道 USB-CAN 适配器,例如 PEAK PCAN-USB Pro 或两个 1 通道适配器。

为了使通信正常工作,必须在配置文件中输入相应的运行时系统组件。

有关更多信息,请参阅: 运行时配置

通过 PLC 的设备更新,该项目还可以在任何具有两个 CAN 接口的控制器上运行。该项目分为三个区域:

CANbus Examples

  • ChangeBaudrate:通过重新配置在运行模式下动态改变波特率

  • EnableDisableCANbus:通过重新配置在运行时模式下动态激活和停用 CANbus

  • GetCANbus:通过设备诊断库对工程 CANbus 实例进行一般搜索

CANopen Master examples

诊断

  • ReceiveEMCYFromAllDevicesExample:通过以下方式接收紧急消息 CiA405.RECV_EMCY

  • ReceiveEMCYFromOneDeviceExample:通过以下方式接收特定设备的紧急消息 CIA405.RECV_EMCY_DEV

  • GetCANopenKernelStateExample:通过以下方式检测 CANopen 内核状态 CIA405.GET_CANOPEN_KERNEL_STATE

  • GetStateExample:通过以下方式检测从站的 CANopen 状态 CIA405.GET_STATE

网络管理

  • GetCANopenManagerNodeIDExample:通过 CiA405 检测 CANopenManager 节点 ID。

  • GET_CANOPEN_KERNEL_STATE:通过CIA405.NMT发送NMT请求

SDO(非循环数据传输)

  • ExpeditedReadExample:通过 SDO(加速传输)读取 <= 4 字节的对象 CiA405.SDO_READ4

  • ExpeditedWriteExample:通过 SDO(加速传输)写入 <= 4 字节的对象 CIA405.SDO_WRITE4

  • SegmentedAndBlockReadExample:通过SDO(分段传输或块传输)读取任意长度的对象 CiA405.SDO_READ_DATA

  • SegmentedAndBlockWriteExample:通过SDO(分段传输或块传输)写入任意长度的对象 CiA405.SDO_WRITE_DATA

通用API函数

  • CANopenManagerAPI:演示CANopenManager实例所有方法和属性的使用

  • CANopenManagerEventHandler:CANopen 事件处理程序的示例实现

  • CANopenRemoteDeviceAPI:演示 CANopenRemoteDevice 实例的所有方法和属性的使用

CANopen Slave examples

诊断

  • GetLocalDeviceInfoExample:演示CANopen状态以及节点ID的读取

网络管理

  • ChangeNodeIDExample:运行时模式下节点ID的改变

  • NMTExample:改变本地CANopen状态

对象字典

  • ReadObjectExample1:从本地对象字典中读取对象

  • ReadObjectExample2: 的替代示例 ReadObjectExample1

  • WriteObjectExample1:将对象的值写入对象字典

  • WriteObjectExample2: 的替代示例 WriteObjectExample1

  • CountObjects:通过以下方式遍历对象字典的所有对象 _3SCSS.ObjectIterator

  • GetPDOInfo: 遍历对象字典的附加示例

  • ObjectDictionaryEventHandler:对象字典事件处理程序的示例实现

系统要求和限制

编程系统

CODESYS Development System (版本3.5.14.0或更高版本)

运行时系统

CODESYS Control Win (版本3.5.14.0)

附加组件

两个CAN接口

注意

_example_icon.png 下载 项目