CANOPEN转Modbus说明书
型号:SG-CN_MOD-110
天津滨海新区三格电子科技有限公司
MCO-241可通过自带的配置软件设置成两种不同的通信网关:
(1)CANopen做主站/Modbus做从站网关:CANopen主站协议与Modbus从站协议之间的转换,可实现单个CANopen从站设备与Modbus主站之间的数据通信,典型应用拓扑如下:
word/media/image2.gif
word/media/image3.gifword/media/image3.gif
(2)CANopen做从站/Modbus做主站网关:Modbus主站协议与 CANopen从站协议之间的转换,可实现多个 Modbus从站设备与CANopen主站之间的数据通信,典型应用拓扑如下:
word/media/image4.gifword/media/image5.gif
word/media/image6.gif
word/media/image7.gifword/media/image8.gif
指示灯如下图所示:
设备共有6个指示灯,其功能如下图所示:
接线端子如下图所示:
符号定义如下表所示:
拨码开关用于设置网关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)自带网关配置软件,配置信息可通过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~500Kbps,默认20K;
(5)Modbus从站支持功能码:3、4、6、16号功能码;
(6)支持串口波特率1200~115200bps,默认9600;
(7)支持RTU通讯格式;8位数据位,无校验、奇校验、偶校验可选,默认无校验,1停止位、2停止位可选,默认1停止位;
(8)数据交换缓存区包括512字节的输入缓冲区和512字节的输出缓冲区;
(9)内置120欧姆终端电阻。
网关数据交换图如下图所示:
word/media/image13.gif
输入输出缓冲区地址范围均为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来传输数据。
输入输出缓冲区在对象字典里的映射如下表所示:
网关工作在CANopen/Modbus做从站模式时,支持3(读保持寄存器)、4(读输入寄存器)、6(写单个寄存器)、16(写多个寄存器)号功能码,相应的Modbus数据有2种:输入寄存器(16位模拟量输入AI)和保持寄存器(16位模拟量输出AO)。
网关将64个TPDO映射到了512字节的输出缓冲区,每个TPDO可传输8个字节,即4个保持寄存器数据。
Modbus保持寄存器数据存放在512字节的输出缓冲区,如下表所示:
网关将64个RPDO映射到了512字节的输入缓冲区,每个RPDO可传输8个字节,即4个输入寄存器数据。
Modbus输入寄存器数据存放在512字节的输入缓冲区,如下表所示:
为了使Modbus主站控制和获取CANopen从站的状态,网关另外分配了16位的状态输入缓冲区和16位的控制命令输出缓冲区,且状态输入缓冲区与512字节的输入缓冲区是一个连续的数据存储区,控制命令输出缓冲区与512字节的输出缓冲区是一个连续的数据存储区,所以2个状态缓冲区地址均为256,数据长度是16位,高8位为CANopen从站的节点地址,低8位为CANopen从站的状态或对CANopen从站的控制命令。
Modbus主站通过网关获取和设置CANopen从站状态的原理图如下:
word/media/image14.gif
如上图所示,Modbus主站可通过4号功能码来读取CANopen从站的状态、通过6和16号功能码将控制命令写入输出缓冲区,网关收到控制命令后会通过NMT命令控制CANopen从站的状态。
16位CANopen从站状态输入缓冲区和控制命令输出缓冲区的地址映射如下表所示:
节点状态说明见下表:
说明:节点状态默认为0Fh(未知状态)。
控制命令说明见下表:
双击配置软件图标,打开的窗体如下所示:
word/media/image16.gifword/media/image17.gifword/media/image18.gif
如上图所示,配置参数主要包括3部分,每一部分参数说明如下:
1、第1部分是通信参数设置区,可设置的参数及说明如下:
网关工作方式:选择CANOPEN主站/Modbus从站。
CANOPEN参数
从站ID:CANopen从站的节点ID,如果与网关的节点ID一样,则SYS灯会快闪,此时需要修改网关的ID,并重启网关。
节点守护:0表示使用心跳模式,非零值表示使用节点守护模式,节点守护时间单位为ms,范围为100~60000ms。
CAN波特率:有效范围是5Kbps~500Kbps,默认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。TPDO和RPDO的COB-ID有效范围均为:181h~57Fh,网关TPDO的COB-ID须与CANopen从站的RPDO保持一致,网关RPDO的COB-ID须与CANopen从站的TPDO保持一致,网关的TPDO用以将对应的保持寄存器数据发送给CANopen从站,网关的RPDO用以接收CANopen从站发来的输入寄存器数据,并将数据保存在对应的网关映射区。
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个寄存器数据。
(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~500Kbps,默认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欧姆终端电阻。
网关数据交换图如下图所示:
word/media/image20.gifword/media/image21.gifword/media/image22.gifword/media/image23.gifword/media/image24.gifword/media/image25.gifword/media/image26.gifword/media/image27.gifword/media/image28.gif
512字节输入缓冲区包括160字节(1280bits)的数字量输入(DI)缓冲区(用于存放离散量输入数据)和352字节的模拟量输入(AI)缓冲区(用于存放输入寄存器数据)。输入缓冲区被映射到CANopen的TPDO中,网关可通过Modbus读命令获取Modbus从站的离散量输入和输入寄存器数据,如果数据发生变化,则触发对应的TPDO将数据发送给CANopen主站。
512字节输出缓冲区包括160字节(1280bits)的数字量输出(DO)缓冲区(用于线圈状态数据)和352字节的模拟量输出(AO)缓冲区(用于存放保持寄存器数据)。输出缓冲区被映射到CANopen的RPDO中,网关可通过RPDO接收CANopen主站发来的数据,保存在输出缓冲区中,网关轮询modbus命令时,会把最新数据发送给Modbus从站。
DI和DO数据按位访问,地址范围为0~1279bit;AI和AO按word访问,地址范围为0~175word。
DI缓冲区在对象字典里的映射如下表所示:
AI缓冲区在对象字典里的映射如下表所示:
DO缓冲区在对象字典里的映射如下表所示:
AO缓冲区在对象字典里的映射如下表所示:
此种模式下的网关支持快速SDO的访问,如下表所示:
双击配置软件图标,打开的窗体如下所示:
word/media/image17.gifword/media/image29.gifword/media/image30.gif
如上图所示,配置参数主要包括3部分,每一部分参数说明如下:
1、第1部分是通信参数设置区,可设置的参数及说明如下:
网关工作方式:选择CANOPEN从站/Modbus主站。
CANOPEN参数
从站ID、节点守护无需设置。
CAN波特率:有效范围是5Kbps~500Kbps,默认20K。
Modbus参数
轮询间隔:网关轮询Modbus命令时,发送并接收完一条命令之后到发送下一条命令之前的时间间隔,单位是ms,默认50ms。
节点ID:当前模式下,该选项无需设置。
波特率:485串口波特率,1200、2400、4800、9600、14400、19200、38400、56000、57600、115200可选,默认9600。
数据位:8bits。
校验位:None、Odd、Even,默认None。
停止位:1、2可选,默认1。
配置
串口配置:选择可用的串口。
刷新串口:若配置串口下拉菜单中没显示可用串口,可单击刷新串口。
打开串口:下载配置时需打开串口。
配置网关:配置完参数后,点击配置网关,可将配置信息下载至网关,之后会提示是否配置成功。
保存配置:保存配置信息。
读取配置:加载保存的配置信息。
2、第2部分是PDO对象配置区,可配置的参数及说明如下:
根据需要来配置TPDO和RPDO。TPDO和RPDO的COB-ID有效范围均为181h~57Fh。网关TPDO的COB-ID须与CANopen主站的RPDO保持一致,网关RPDO的COB-ID须与CANopen主站的TPDO保持一致,网关的TPDO用以将对应的输入寄存器数据发送给CANopen主站,网关的RPDO用以接收CANopen主站发来的保持寄存器数据,并将数据保存在对应的网关映射区。
3、第3部分是Modbus命令配置区
从站地址:Modbus从站的地址,有效范围1~247。
Modbus功能码:1、2、3、4、5、6、15、16可选。
从站起始地址:Modbus从站的寄存器、线圈、离散输入(输入状态)等的起始地址,有效范围0~65535(协议地址),若用户使用的是PLC地址,须将PLC地址转换成协议地址再写入。PLC地址与协议地址的对应关系举例如下:
例如:当配置的功能码为3(读保持寄存器)的命令时,用户使用的是PLC地址40001,则从站起始地址应写入0。
数据个数:Modbus从站寄存器、线圈、离散输入(输入状态)等的个数。
网关映射区起始地址:想要网关通过Modbus读命令将Modbus从站的从站起始地址开始的指定数量的输入寄存器和离散输入数据读到网关输入寄存器地址和离散输入地址中的哪个地址开始的存储区或想要网关通过Modbus写命令将线圈地址和保持寄存器地址中哪个地址开始的指定数量的线圈状态和保持寄存器数据写到Modbus从站的以从站起始地址开始的存储区中。
可配置最多64条Modbus命令,网关会按照轮询间隔时间来轮询这些命令。用户可为每条命令设置响应超时时间,超时时间应小于轮询间隔时间。网关映射区起始地址可参照第二部分的映射地址。
例如:CANopen主站想通过网关获取Modbus从站的第0~63个离散输入状态,则可将TPDO1的COB-ID配置成有效值,然后设置一条Modbus命令,从站地址为Modbus从站的地址,功能码选择2,从站起始地址为Modbus从站的数据存放起始地址,数据个数为64,网关映射区起始地址为0,应答超时时间为40ms。如果网关通过Modbus命令读到的输入状态与TPDO1对应缓冲区(离散输入0-63bit)中的数据不一样,就会触发TPDO1通信,将Modbus从站的最新输入状态发送给CANopen主站。
说明:如果想读取超过64个的离散输入状态,则需配置不止一个TPDO。离散输入状态对应的TPDO是TPDO1、TPDO22~TPDO40,共20个,每个TPDO可传送8个字节,每个字节的每个位表示1个离散输入状态,所以每个TPDO可传送64个离散输入状态。
PDO即过程数据对象用来传输实时数据,单向传输,无需接收节点回应CAN 报文来确认,从通讯术语上来说是属于“生产消费”模型 PDO,就像食品销售柜台, 生产者摆出“食品” ,但只有有“需要” 的消费者才会来买,没有指向性。 PDO可传输1~8个字节。
PDO分为发送PDO(TPDO)和接收PDO(RPDO),发送和接收是以CANopen从站节点为参考,如果是主站就相反,但在使用本网关时,不管网关是主站还是从站,发送和接收均以网关为参考。
有4组预定义的TPDO和RPDO,对应的COB-ID(CAN-ID)如下图所示,nodeID范围是01h~7Fh(1~127):
PDO通信比较灵活,广义上只要符合PDO范围内的所有COB-ID(CAN-ID)都可以做为节点自身的TPDO和RPDO使用,不受功能码和nodeID限制。
当网关工作在CANopen做主站/Modbus做从站模式时,可将网关TPDO的COB-ID配置成所接CANopen从站RPDO的COB-ID、将网关RPDO的COB-ID配置成所接CANopen从站TPDO的COB-ID,这样就可以使用PDO进行通信了。
说明:须在上图中的COB-ID范围内对PDO进行配置,且一个COB-ID只能配置给一个PDO对象。
在一个CANopen系统中,通常CANopen从节点作为SDO服务器,CANopen主节点作为客户端。
SDO的通信原则非常单一:发送方(客户端)发送COB-ID(CAN-ID)为600h+nodeID的报文,nodeID为接收方(服务器)的节点地址,数据长度为8字节;接收方(服务器)成功接收后,回应COB-ID(CAN-ID)为580h+nodeID的报文,nodeID依然为接收方(服务器)的节点地址,数据长度为8字节。
最常用的SDO协议是快速SDO,所谓快速,就是1个来回就搞定,读取和写入的值最多4个字节,命令中直接包含了要读写的索引、子索引、数据,快速SDO协议的示意图如下所示:
通过快速SDO,可以直接对CANopen节点的对象字典中的值进行读取和修改,所以在做参数配置之外,也经常作为关键性数据传输之用,保证可靠到达。
例:CANopen主站通过SDO读命令读取nodeID为1的CANopen从站的2000h索引、01h子索引中的数据,假设数据为3个字节的01h。
发送SDO读请求:COB-ID为601h,8字节数据为40 00 20 01 00 00 00 00
收到SDO读响应:COB-ID为581h,8字节数据为47 00 20 01 01 01 01 00
例:CANopen主站通过SDO写命令将2个字节数据03h写到nodeID为2的CANopen从站的3000h索引、02h子索引中。
发送SDO写请求:COB-ID为602h,8字节数据为2B 00 30 02 03 03 00 00
收到SDO写响应:COB-ID为582h,8字节数据为60 00 30 02 00 00 00 00
SDO客户或服务器可通过发出如下格式的报文来中止SDO传送:
其中CS命令符为80h,16进制的中止码(数据5-8)如下表所示:
本文来源:https://www.2haoxitong.net/k/doc/5b2010f74a35eefdc8d376eeaeaad1f347931192.html
文档为doc格式