一、概述
1.1 功能
本网关可通过自带的配置软件设置成两种不同的通信网关:
(1)CANopen 做主站/Modbus 做从站网关:CANopen 主站协议与 Modbus 从站协议之间的转换,可实现单个 CANopen 从站设备与 Modbus 主站之间的数
据通信,典型应用拓扑如下:
2)CANopen 做从站/Modbus 做主站网关:Modbus 主站协议与 CANopen 从站协议之间的转换,可实现多个 Modbus 从站设备与 CANopen主站之间的数
据通信,典型应用拓扑如下:
1.2 硬件说明
1.2.1 指示灯说明
指示灯如下图所示:
设备共有 6 个指示灯,其功能如下图所示:
符号 | 定义 | 状态 | 说明 |
POW | 电源指示灯 | 熄灭 | 电源未接通 |
常亮 | 电源接通 | ||
SYS | 系统指示灯 | 熄灭 | 配置模式 |
nodeID 设置错误 | |||
单闪 | 预操作状态 | ||
常亮 | 操作状态 | ||
CT | CAN 发送指示灯 | 熄灭 | CAN 总线未发送数据 |
常亮 | CAN 总线在发送数据 | ||
CR | CAN 接收指示灯 | 熄灭 | CAN 总线未接收数据 |
常亮 | CAN 总线在接收数据 | ||
MT | 串口发送指示灯 | 熄灭 | 串口未发送数据 |
常亮 | 串口在发送数据 | ||
MR | 串口接收指示灯 | 熄灭 | 串口未接收数据 |
常亮 | 串口在接收数据 |
1.2.2 接线端子说明
接线端子如下图所示
符号定义如下表所示:
符号 | 定义 |
A | RS485+ |
B | RS485- |
E | 接屏蔽层 |
H | CAN_H 信号线 |
L | CAN_L 信号线 |
1.2.3 拨码开关说明
拨码开关用于设置网关 CANopen侧的节点 ID,即 nodeID,有效范围为 1~ 127 (01h~7Fh),如下图所示,nodeID = 16*0 + 1*2= 2;如果在网关运行过程中改
变拨码开关的值,网关会在 3S 后自动重启,用户也可手动重启。
如果想通过配置软件给网关下载配置信息,需将 nodeID 设置为 0,此时 SYS 灯熄灭,然后可下载配置,待弹出“配置成功” 的窗口时,可关闭串口,并将 nodeID
设置为想要的值即可。
如果 128<= nodeID <=255 ,SYS 灯会快闪,指示 nodeID 设置错误,此时需
将 nodeID 设置为有效值,方可继续使用。
1.2.4 电源
符号 | 定义 |
DC | DC 插座,电压范围 9~24V |
V1 、V2 | 设备支持双电源冗余,接电源正,电压范围 9~24V |
G | 接电源负 |
E | 接大地 |
二、 CANopen 做主站/Modbus 做从站
2.1 功能特点
(1)自带网关配置软件,配置信息可通过 PC 的 USB 口下载进网关设备,设备
自动保存最新配置信息,设备断电再上电后无需加载配置;
(2)网关在 CANopen 网络上是 CANopen 主站,在 Modbus 网络上是 Modbus
从站,可以实现单个 CANopen 从站与 Modbus 主站之间的数据通信;
(3)CANopen 支持 CANopen DS301;支持 NMT、Heartbeat、64 个 8 字节 TPDO 和 64 个 8 字节 RPDO 、快速 Download SDO 和快速 Upload SDO 总共可配置 80
个;
(4)支持 CAN 波特率:5K~ 1Mbps ,默认 20K;
(5)Modbus 从站支持功能码:3 、4 、6 、16 号功能码;
(6)支持串口波特率 1200~ 115200bps ,默认 9600;
(7)支持 RTU 通讯格式;8 位数据位,无校验、奇校验、偶校验可选,默认无
校验,1 停止位、2 停止位可选,默认 1 停止位;
(8)数据交换缓存区包括 512 字节的输入缓冲区和 512 字节的输出缓冲区;
(9)内置 120 欧姆终端电阻。
2.2 工作原理
网关数据交换图如下图所示:
输入输出缓冲区地址范围均为 0~255Word。
512 字节输入缓冲区用于存放输入寄存器数据 ,输入缓冲区被映射到 CANopen 的 RPDO 中,网关可通过 RPDO 和 SDO 读命令获取 CANopen 从站发 来的数据,并将数据保存在输入缓冲区中,Modbus 主站可通过 4 号功能码来读
取输入缓冲区中缓存的最新数据。
512 字节输出缓冲区用于存放保持寄存器数据 ,输出缓冲区被映射到 CANopen 的 TPDO 中,当 Modbus 主站通过 6 和 16 号功能码向网关的输出缓冲 区写数据且写的数据与缓冲区原来的数据不一样时,会触发 TPDO 和 SDO 写命 令,将数据发送给 Canopen从站。Modbus 主站也可通过 3 号功能码来读取网关
的输出缓冲区中的数据。
PDO 采用生产者/消费者模式来传输数据,只有请求没有应答,响应快,适 合对响应速度要求高的场合。SDO 采用客户机/服务器模式进行数据传输,有请 求也有应答,响应速度慢,但可靠性高。所以对可靠性要求比较高的数据可配置
SDO 命令来传输数据,否则就配置 PDO 来传输数据。
2.2.1 输入输出缓冲区在对象字典中的映射
输入输出缓冲区在对象字典里的映射如下表所示:
通信对象 | 默认 COB-ID | 通信参 数 | 映射参数 | 映射对象 | 输入缓冲区 |
TPDO1 | 201h | 1800h | 1A00h | 2001h 01h-04h | (0-3)word |
TPDO2 | 301h | 1801h | 1A01h | 2001h 05h-08h | (4-7)word |
TPDO3 | 401h | 1802h | 1A02h | 2001h 09h-0Ch | (8- 11) word |
TPDO4 | 501h | 1803h | 1A03h | 2001h 0Dh- 10h | (12- 15) word |
TPDO5 | 0xC0000000 | 1804h | 1A04h | 2001h 11h- 14h | (16- 19) word |
...... | ...... | ...... | ...... | ...... | ...... |
TPDO32 | 0xC0000000 | 181Fh | 1A1Fh | 2001h 7Dh-80h | (124- 127) word |
TPDO33 | 0xC0000000 | 1820h | 1A20h | 2002h 01h-04h | (128- 131) word |
TPDO34 | 0xC0000000 | 1821h | 1A21h | 2002h 7Dh-80h | (132- 135) word |
...... | ...... | ...... | ...... | ...... | ...... |
TPDO64 | 0xC0000000 | 183Fh | 1A3Fh | 2002h 7Dh-80h | (252-255) word |
通信对象 | 默认 COB-ID | 通信参 数 | 映射参数 | 映射对象 | 输出缓冲区 |
RPDO1 | 181h | 1400h | 1600h | 2003h 01h-04h | (0-3)word |
RPDO2 | 281h | 1401h | 1601h | 2003h | (4-7)word |
2.2.2 Modbus 数据在输入输出缓冲区中的存储位置
网关工作在 CANopen/Modbus 做从站模式时,支持 3(读保持寄存器)、4 (读输入寄存器)、6(写单个寄存器)、16(写多个寄存器)号功能码,相应 的 Modbus 数据有 2 种:输入寄存器(16 位模拟量输入 AI)和保持寄存器(16
位模拟量输出 AO)。
网关将 64 个 TPDO 映射到了 512 字节的输出缓冲区,每个 TPDO 可传输 8
个字节,即 4 个保持寄存器数据。
Modbus 保持寄存器数据存放在 512 字节的输出缓冲区,如下表所示:
保持寄存器地址 | 输出缓冲区映射地址 | 数据长度 | 索引 | TPDO |
0000h | 0(0000h) | 16Bit | 2001h 01h | TPDO1 |
0001h | 1(0001h) | 16Bit | 2001h 02h | TPDO1 |
0002h | 2(0002h) | 16Bit | 2001h 03h | TPDO1 |
...... | ...... | ...... | ...... | ...... |
007Fh | 127(007Fh) | 16Bit | 2001h 80h | TPDO32 |
0080h | 128(0080h) | 16Bit | 2002h 01h | TPDO33 |
0081h | 129(0081h) | 16Bit | 2002h 02h | TPDO33 |
0082h | 130(0082h) | 16Bit | 2002h 03h | TPDO33 |
...... | ...... | ...... | ...... | ...... |
00FFh | 255(00FFh) | 16Bit | 2002h 80h | TPDO64 |
网关将 64 个 RPDO 映射到了 512 字节的输入缓冲区,每个 RPDO 可传输 8
个字节,即 4 个输入寄存器数据。
Modbus 输入寄存器数据存放在 512 字节的输入缓冲区,如下表所示:
输入寄存器地址 | 输入缓冲区映射地址 | 数据长度 | 索引 | RPDO |
0000h | 0(0000h) | 16Bit | 2003h 01h | RPDO1 |
0001h | 1(0001h) | 16Bit | 2003h 02h | RPDO1 |
0002h | 2(0002h) | 16Bit | 2003h 03h | RPDO1 |
...... | ...... | ...... | ...... | ...... |
007Fh | 127(007Fh) | 16Bit | 2003h 80h | RPDO32 |
0080h | 128(0080h) | 16Bit | 2004h 01h | RPDO33 |
0081h | 129(0081h) | 16Bit | 2004h 02h | RPDO33 |
0082h | 130(0082h) | 16Bit | 2004h 03h | RPDO33 |
...... | ...... | ...... | ||
00FFh | 255(00FFh) | 16Bit | 004h 80h | RPDO64 |
RPDO3 | 381h | 1402h | 1602h | 2003h 09h-0Ch | (8- 11) word |
RPDO4 | 481h | 1403h | 1603h | 2003h 0Dh- 10h | (12- 15) word |
RPDO5 | 0xC0000000 | 1404h | 1604h | 2003h 11h- 14h | (16- 19) word |
...... | ...... | ...... | ...... | ...... | ...... |
RPDO32 | 0xC0000000 | 141Fh | 161Fh | 2003h 7Dh-80h | (124- 127) word |
RPDO33 | 0xC0000000 | 1420h | 1620h | 2004h 01h-04h | (128- 131) word |
RPDO34 | 0xC0000000 | 1421h | 1621h | 2004h 05h-08h | (132- 135) word |
...... | ...... | ...... | ...... | ...... | ...... |
RPDO64 | 0xC0000000 | 143Fh | 163Fh | 2004h 7Dh-80h | (252-255) word |
2.2.3 Modbus 主站控制 CANopen 从站状态的原理
为了使 Modbus 主站控制和获取 CANopen 从站的状态,网关另外分配了状 态输入缓冲区和控制命令输出缓冲区,且状态输入缓冲区与 512 字节的输入缓冲 区是一个连续的数据存储区,控制命令输出缓冲区与 512 字节的输出缓冲区是一 个连续的数据存储区,所以 2 个状态缓冲区起始地址均为 256 ,每个地址可以存
放 2 个字节的数据。
Modbus 主站通过网关获取和设置 CANopen从站状态的原理图如下:
Modbus总线 CANopen总线
CANopen 网关
|
如上图所示,Modbus 主站可通过 4 号功能码来读取 CANopen从站的状态、 通过 6 和 16 号功能码将控制命令写入输出缓冲区,网关收到控制命令后会通过
NMT 命令控制 CANopen从站的状态。
CANopen 从站状态输入缓冲区的地址映射如下表所示:
状态输入缓冲区映射地址 (寄存器地址) | 从站状态 |
256(0100h) | 节点地址为 1 的从站的状态 |
257(0101h) | 节点地址为 2 的从站的状态 |
258(0102h) | 节点地址为 3 的从站的状态 |
...... | ...... |
381(017Dh) | 节点地址为 126 的从站的状态 |
382(017Eh) | 节点地址为 127 的从站的状态 |
节点状态说明见下表:
节点状态值 | 说明 |
00h(Initialisation) | 初始化状态 |
01h(Disconnected) | 断开连接状态 |
04h(Stopped) | 停止状态 |
05h(Operational) | 操作状态 |
7Fh(Pre_operational) | 预操作状态 |
0Fh(Unknown_state) | 未知状态 |
说明:节点状态默认为 01h(断开连接状态)。
CANopen 从站控制命令输出缓冲区的地址映射如下表所示:
控制命令输出缓冲区映射地址 (寄存器地址) | 控制命令输出缓冲区 |
256(0100h) | 对节点地址为 1 的从站的控制命令 |
257(0101h) | 对节点地址为 2 的从站的控制命令 |
258(0102h) | 对节点地址为 3 的从站的控制命令 |
...... | |
381(017Dh) | 对节点地址为 126 的从站的控制命令 |
382(017Eh) | 对节点地址为 127 的从站的控制命令 |
控制命令说明见下表:
说明 | |
01h | 启动命令(让节点进入操作状态) |
02h | 停止命令(让节点进入停止状态) |
80h | 让节点进入预操作状态 |
81h | 复位节点应用层(让节点的应用恢复初始状态) |
82h | 复位节点通讯(让节点的 CAN 和 CANopen通讯重新初始化,一般 用于总线受到干扰,导致节点总线错误被动,或者总线关闭时) |