一、概述
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 |
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.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 |
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通讯重新初始化,一般 用于总线受到干扰,导致节点总线错误被动,或者总线关闭时) |
2.3 软件配置
双击配置软件图标
,打开的窗体如下所示:
如上图所示,配置参数主要包括 3 部分,每一部分参数说明如下:
1 、第 1 部分是通信参数设置区,可设置的参数及说明如下:
网关工作方式:选择 CANOPEN 主站/Modbus 从站。
CANOPEN 参数
从站起始 ID:CANopen 从站的起始节点 ID。如果从站 ID 与网关的 ID 一样,
则 SYS 灯会快闪,此时需要修改网关的 ID ,并重启网关。
从站个数:CANOPEN 从站的个数。网关支持连接最多 127 个地址连续的
CANOPEN 从站。
节点守护:0 表示使用心跳模式,非零值表示使用节点守护模式,节点守护
时间单位为 ms ,范围为 100~60000ms。
CAN 波特率:有效范围是 5Kbps~ 1Mbps ,默认 20K。
‚Modbus 参数
轮询间隔:无需配置。
节点 ID:Modbus 从站地址,默认 1。
波特率:485 串口波特率,1200、2400、4800、9600 、14400 、19200、38400、
56000 、57600 、115200 可选,默认 9600。
数据位:8bits。
校验位:None 、Odd 、Even 可选,默认 None。
停止位:1 、2 可选,默认 1。
配置
串口配置:选择可用的串口。
刷新串口:若配置串口下拉菜单中没显示可用串口,可单击刷新串口。
打开串口:下载配置时需打开串口,下载配置前须先将拨码开关的值设为 0。
配置网关:配置完 3 个部分的参数后,点击配置网关,可将配置信息下载至
网关,之后会提示是否配置成功,如果配置成功,可关闭串口。
保存配置:保存配置信息。
读取配置:加载保存的配置信息。
2 、第 2 部分是 PDO 对象配置区,可配置的参数及说明如下:
根 据 需 要 来 配 置 TPDO 和 RPDO 。 RPDO 的 COB-ID 的 有 效 范 围 是 181h~ 1FFh 、281h~2FFh 、381h~3FFh 、481h~4FFh;TPDO 的 COB-ID 的有效范 围是 201h~27Fh 、301h~37Fh 、401h~47Fh 、501h~57Fh 。网关 TPDO 的 COB-ID 须与 CANopen 从站的 RPDO 保持一致,网关 RPDO 的 COB-ID 须与 CANopen
从站的 TPDO 保持一致。Modbus 主站设备可通过 6 和 16 号指令将数据发送到
网关的 TPDO 对应的数据映射区中并发送给 CANopen 从站设备。Modbus 主站
设备可通过 4 号指令读取网关的 RPDO 对应的数据映射区。
3 、第 3 部分是 SDO 命令配置区
从站地址:CANopen 从站的节点地址,只读, 自动用第 1 部分 CANOPEN
参数的从站 ID 来填充,不需手动填写。
索引、子索引:CANopen 从站的索引、子索引,均要填写十六进制数,字母
要大写。
数据长度:1、2、4 字节可选,可根据 CANopen从站指定索引、子索引的数
据类型来选择。
网关映射区起始地址:想要网关通过 SDO Upload 命令将 CANopen从站的指 定索引、子索引中的数据读到输入缓冲区中的哪个位置或想要网关通过 SDO Download 命令将输出缓冲区中哪个位置的数据写到 CANopen从站的指定索引、
子索引中,请填写十进制数。
网关最多可配置 80 条 SDO 命令,包括 SDO Upload(SDO 读命令)、SDO Download(SDO 写命令),只要网关上电,就会按照2s 的轮询间隔来轮询 SDO 读命令,SDO 写命令则只在对应的网关映射区的数据发生变化时才会执行。如 果 SDO 读写失败,网关的 SYS 灯会快闪3下。网关映射区起始地址可参照第 2 部分的映射地址。SDO 读命令用以将 CANopen 从站的指定索引、子索引的数据 读到输入寄存器映射区的以网关映射区起始地址开始的一个或若干个地址中。 SDO 写命令用以将以网关映射区起始地址开始的一个或若干个地址中的数据写
到 CANopen 从站的指定索引、子索引中区。
例如:Modbus 主站想通过网关获取 CANopen 从站的第 0~第 3 个输入寄存 器的值,则可以配置 RPDO1 的 COB-ID 为有效值,比如 200h ,当 CANopen 从 站将 4 个输入寄存器的值通过 COB-ID 为 200h 的报文发给网关时,网关会将寄 存器的值保存在对应的网关映射区中(输入寄存器 0-3word),Modbus 主站可
以通过 4 号功能码(读输入寄存器)读取,且 Modbus 报文中的起始地址应为 0。
例如:Modbus 主站想设置第 0 个保持寄存器的值给 CANopen 从站,且对可
靠性要求比较高,则可以配置 SDO Download(SDO 写)命令,数据长度选择
2bytes ,网关映射区起始地址为 0。
说明:如果接收或发送的寄存器数据超过 4 个,则需配置不止一个 PDO 或 SDO ,因为每个 PDO 最多可传送 4 个寄存器数据,而每个 SDO 只能传送 2 个
寄存器数据。
三、CANopen 做从站/Modbus 做主站
3.1 功能特点
(1)自带网关配置软件,配置信息可通过 PC 的 USB 口下载进网关设备,设备
自动保存最新配置信息,设备断电再上电后无需加载配置;
(2)网关在 CANopen 网络上是 CANopen 从站,在 Modbus 网络上是 Modbus
主站,可实现 CANopen 主站与多个 Modbus 从站之间的数据通信;
(3)CANopen 支持 CANopen DS301;支持 Heartbeat、64 个 8 字节 TPDO 和 64
个 8 字节 RPDO 、支持 SDO 对输入输出缓冲区的访问;
(4)支持 CAN 波特率:5K~ 1Mbps ,默认 20K;
(5)Modbus 从站支持功能码:1 、2 、3 、4 、5 、6 、15 、16 号功能码,Modbus
命令最大支持 64 条;
(6)支持串口波特率 1200~ 115200bps ,默认 9600bps;
(7)支持 RTU 通讯格式;8 位数据位,无校验、奇校验、偶校验可选,默认无
校验,1 停止位、2 停止位可选,默认 1 停止位;
(8)数据交换缓存区包括 512 字节的输入缓冲区和 512 字节的输出缓冲区;
(9)内置 120 欧姆终端电阻。