专题介绍:配置CANOpen子站


基本信息

CANOpen是一种基于CAN总线的高级通讯协议。目前KQD平台集成的CANOpen协议栈实现了完整的SDO、PDO通讯。并且支持节点保护和心跳等安全功能。用户可以在KQD Application Editor中进行对象字典的编辑,导入或导出标准的EDS文件给其他CANOpen主站使用。基于CANOpen协议栈,用户无需关心通讯实现的细节,编辑好对象字典并下载到设备,导出EDS文件给CANOpen主站,即可实现主站和从站之间的通讯。

这里以开发板DK60-STM32F412RE为例,介绍如何使用向导配置CANOpen,建立与CANOpen主站的通讯。开发板的详细信息可以参考介绍:STM32F412开发板DK60-STM32F412RE

因为KQD的CANOpen协议栈还不支持主站功能,这里我们使用汇川的H3U-1616MT-XP来做CANOpen主站:

向导配置

首先,需要参考开发板DK60-STM32F412RE的硬件电路完成基础硬件配置,可以参考:专题介绍:使用向导来生成蓝图

按照专题介绍中步骤完成向导配置或者直接导入向导配置文件:DK60-STM32F412RE-Wizard.bin

选择CAN通讯选项卡,列表中选择CAN1,下面将CANOpen协议配置勾选“此硬件端口可以支持CANOpen通讯协议”。

点击确定即可生成蓝图。蓝图上传到服务器;完成开发板的烧录;PLC类型部署到本地后,即可开始进行CANOpen配置。

CANOpen配置

添加节点

在KQD Application Editor中选择Designer最新部署的PLC类型后,即可在项目的系统扩展中,添加CANOpen配置信息:

配置条目的名称没有特殊要求,这里输入“E0”后确定:

此时出现CANOpen配置界面:

点击“新建”菜单,弹出的对话框中:

  • 节点名称:此名称会影响EDS文件中的设备名称,因为是开发板DK60,有4个输入按键,4个输出按键,这里我们取名DK60I4Q4,方便后面识别。
  • ID:节点ID,用于识别CANOpen网络中不同节点。
  • 类型:因为是从站,这里选择“slave”。
  • 规范:因为DS-401中有标准的I/O设备的定义,这里我门选择DS-401标准。
对话框中其他项目保持不变即可,点击确定创建对象字典。

对象字典中添加标准I/O输入

在对象字典中,选择类别“0x6000-0x9FFF Standardized Device Profile”,选择索引“0x6000 Read Inputs 8 Bit”,点击“添加”按钮,在对象字典中添加标准设备数字量输入:

在最右侧选择“0x6000 Read Inputs 8 Bit”,下面的表格中会出现索引的描述表格。此索引默认为字节数组,数组长度默认为1。假设我们需要传递4个字节数据到CANOpen主站,则可以点击右键,继续添加3个新的子索引:

添加完成后,数组长度变为4,表格长度也相应增加:

对象字典中添加标准I/O输出

在对象字典中,选择类别“0x6000-0x9FFF Standardized Device Profile”,选择索引“0x6200 Write Outputs 8 Bit”,点击“添加”按钮,在对象字典中添加标准设备数字量输入:

在最右侧选择“0x6200 Write Outputs 8 Bit”,下面的表格中会出现索引的描述表格。此索引默认为字节数组,数组长度默认为1。假设我们需要传递4个字节数据到CANOpen主站,则可以点击右键,继续添加3个新的子索引:

添加完成后,数组长度变为4,表格长度也相应增加:

配置PDO发送

在对象字典中,选择类别“0x1A00-0x1BFF Transmit PDO Mapping”,选择索引“0x1A00 Transmit PDO 1 Maping”,下面的表格中会出现索引的描述表格。在表格中选择“PDO 1 Mapping for a process data variable 1”,修改其值为:“Read Inputs 0x1 to 0x8 (0x6000)”。

类似的,将剩余的3个输入字节都分配到发送PDO中去:

在对象字典中,选择类别“0x1800-0x19FF”,选择索引“0x1800 Transmit PDO 1 Parameter”,下面的表格中会出现索引的描述表格:

  • 修改传输类型“Transmission Type”的值为0xFF,表示通过事件来驱动。
  • 修改事件定时器“Evnet Timer”的值为0x000A,表示每10ms产生一次事件。

配置PDO接收

在对象字典中,选择类别“0x1600-0x17FF Recieve PDO Mapping”,选择索引“0x1600 Receive PDO 1 Maping”,下面的表格中会出现索引的描述表格。在表格中选择“PDO 1 Mapping for an application object 1”,修改其值为:“Write Outputs 0x1 to 0x8 (0x6200)”。

类似的,将剩余的3个输出字节都分配到接收PDO中去:

导出EDS文件

最后,点击菜单中的“导出EDS”命令,将配置信息导出到EDS文件:

汇川H3U-1616MT-XP导入EDS文件且简单编程

打开汇川的编程软件,新建一个项目CANOpenTest,在“工程管理”中找到CAN,点击右键,选择“打开”命令:

协议类型修改为“CANOpen”;站号选择为“后台设置”,手动指定为63;波特率选择为“后台设置”,手动指定为500K;最后点击确定:

在“工程管理”中找到CAN,点击右键,选择“添加CAN配置”命令:

双击新生成的“CANOpen配置”,在配置界面的最右侧找到“CANopen设备列表”,点击右键,选择“导入EDS”命令:

选在开始在KQD Application Editor中导入的EDS文件,设备列表中出现DK60I4Q4,将此设备拖拽到中间的配置图中去:

双击设备DK60I4Q4,修改设备ID为4:

选择“I/O映射”选项卡,查看软件为PDO数据分配的PLC变量:

双击H3U:

使能主机的同步帧(SYNC)发送:

在MAIN中写一小段梯形图,将CANOpen节点的输入,写入到CANOpen节点的输出上去:

保存汇川H3U的PLC程序,并将此程序下载到H3U中去。

开发板DK60-STM32F412RE的简单编程

在KQD Application Editor中,编写如下梯形图程序:

此程序通过CANOpen_ODSet指令将开发板的按键输入数据,写入对象字典,并通过PDO传送到汇川H3U。从汇川H3U接收到的PDO数据,存入对象字典后,通过CANOpen_ODGet指令获取到PLC,用于驱动LED灯的输出。

将此程序和开始的对象字典配置通过KQD Application Editor一起下载到开发板。

通讯验证

将开发板DK60-STM32F412RE的CAN1端子和汇川H3U的CAN端子相连接,分别按下开发板的4个按键,即可看到开发板的4个对应输出指示灯发光。

相关文件