CANOPEN 转 Modbus

一、概述

1.1 功能

本网关可通过自带的配置软件设置成两种不同的通信网关:

1CANopen 做主站/Modbus 做从站网关:CANopen 主站协议与 Modbus 从站协议之间的转换,可实现单个 CANopen 从站设备与 Modbus 主站之间的数

据通信,典型应用拓扑如下:

2CANopen 做从站/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 主站之间的数据通信;

3CANopen 支持 CANopen DS301;支持 NMTHeartbeat64  8 字节 TPDO  64  8 字节 RPDO 、快速 Download SDO 和快速 Upload SDO 总共可配置 80

个;

4)支持 CAN 波特率:5K~ 1Mbps ,默认 20K

5Modbus 从站支持功能码: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-3word

TPDO2

301h

1801h

1A01h

2001h

05h-08h

4-7word

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-3word

RPDO2

281h

1401h

1601h

2003h

4-7word

05h-08h

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

00000h

16Bit

2001h 01h

TPDO1

0001h

10001h

16Bit

2001h 02h

TPDO1

0002h

20002h

16Bit

2001h 03h

TPDO1

......

......

......

......

......

007Fh

127007Fh

16Bit

2001h 80h

TPDO32

0080h

1280080h

16Bit

2002h 01h

TPDO33

0081h

1290081h

16Bit

2002h 02h

TPDO33

0082h

1300082h

16Bit

2002h 03h

TPDO33

......

......

......

......

......

00FFh

25500FFh

16Bit

2002h 80h

TPDO64

网关将 64  RPDO 映射到了 512 字节的输入缓冲区,每个 RPDO 可传输 8

个字节,即 4 个输入寄存器数据。

Modbus 输入寄存器数据存放在 512 字节的输入缓冲区,如下表所示:

输入寄存器地址

输入缓冲区映射地址

数据长度

索引

RPDO

0000h

00000h

16Bit

2003h 01h

RPDO1

0001h

10001h

16Bit

2003h 02h

RPDO1

0002h

20002h

16Bit

2003h 03h

RPDO1

......

......

......

......

......

007Fh

127007Fh

16Bit

2003h 80h

RPDO32

0080h

1280080h

16Bit

2004h 01h

RPDO33

0081h

1290081h

16Bit

2004h 02h

RPDO33

0082h

1300082h

16Bit

2004h 03h

RPDO33

......

......

......

......

00FFh

25500FFh

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 从站状态输入缓冲区的地址映射如下表所示:

状态输入缓冲区映射地址

(寄存器地址)

从站状态

2560100h

节点地址为 1 的从站的状态

2570101h

节点地址为 2 的从站的状态

2580102h

节点地址为 3 的从站的状态

......

......

381017Dh

节点地址为 126 的从站的状态

382017Eh

节点地址为 127 的从站的状态

节点状态说明见下表:

节点状态值

说明

00hInitialisation

初始化状态

01hDisconnected

断开连接状态

04hStopped

停止状态

05hOperational

操作状态

7FhPre_operational

预操作状态

0FhUnknown_state

未知状态

说明:节点状态默认为 01h(断开连接状态)。

CANopen 从站控制命令输出缓冲区的地址映射如下表所示:

控制命令输出缓冲区映射地址

(寄存器地址)

控制命令输出缓冲区

2560100h

对节点地址为 1 的从站的控制命令

2570101h

对节点地址为 2 的从站的控制命令

2580102h

对节点地址为 3 的从站的控制命令

......

381017Dh

对节点地址为 126 的从站的控制命令

382017Eh

对节点地址为 127 的从站的控制命令

控制命令说明见下表:

控制命令

说明

01h

启动命令(让节点进入操作状态)

02h

停止命令(让节点进入停止状态)

80h

让节点进入预操作状态

81h

复位节点应用层(让节点的应用恢复初始状态)

82h

复位节点通讯(让节点的 CAN  CANopen通讯重新初始化,一般

用于总线受到干扰,导致节点总线错误被动,或者总线关闭时)

2.3  软件配置

双击配置软件图标

 ,打开的窗体如下所示:

如上图所示,配置参数主要包括 3 部分,每一部分参数说明如下:

1 、第 1 部分是通信参数设置区,可设置的参数及说明如下:

网关工作方式:选择 CANOPEN 主站/Modbus 从站。

CANOPEN 参数

从站起始 IDCANopen 从站的起始节点 ID。如果从站 ID 与网关的 ID 一样,

 SYS 灯会快闪,此时需要修改网关的 ID ,并重启网关。

从站个数:CANOPEN 从站的个数。网关支持连接最多 127 个地址连续的

CANOPEN 从站。

节点守护:0 表示使用心跳模式,非零值表示使用节点守护模式,节点守护

时间单位为 ms ,范围为 100~60000ms

CAN 波特率:有效范围是 5Kbps~ 1Mbps ,默认 20K

Modbus 参数

轮询间隔:无需配置。

节点 IDModbus 从站地址,默认 1

波特率:485 串口波特率,1200240048009600 14400 1920038400

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~4FFhTPDO  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 从站的索引、子索引,均要填写十六进制数,字母

要大写。

数据长度:124 字节可选,可根据 CANopen从站指定索引、子索引的数

据类型来选择。

网关映射区起始地址:想要网关通过 SDO Upload 命令将 CANopen从站的指 定索引、子索引中的数据读到输入缓冲区中的哪个位置或想要网关通过 SDO  Download 命令将输出缓冲区中哪个位置的数据写到 CANopen从站的指定索引、

子索引中,请填写十进制数。

网关最多可配置 80  SDO 命令,包括 SDO UploadSDO 读命令)、SDO DownloadSDO 写命令),只要网关上电,就会按照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 DownloadSDO 写)命令,数据长度选择

2bytes ,网关映射区起始地址为 0

说明:如果接收或发送的寄存器数据超过 4 个,则需配置不止一个 PDO  SDO ,因为每个 PDO 最多可传送 4 个寄存器数据,而每个 SDO 只能传送 2

寄存器数据。

三、CANopen 做从站/Modbus 做主站

3.1 功能特点

1)自带网关配置软件,配置信息可通过 PC  USB 口下载进网关设备,设备

自动保存最新配置信息,设备断电再上电后无需加载配置;

2)网关在 CANopen 网络上是 CANopen 从站,在 Modbus 网络上是 Modbus

主站,可实现 CANopen 主站与多个 Modbus 从站之间的数据通信;

3CANopen 支持 CANopen DS301;支持 Heartbeat64  8 字节 TPDO  64

 8 字节 RPDO 、支持 SDO 对输入输出缓冲区的访问;

4)支持 CAN 波特率:5K~ 1Mbps ,默认 20K

5Modbus 从站支持功能码: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 欧姆终端电阻。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值