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

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

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.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通讯重新初始化,一般

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值