搜索
您的当前位置:首页正文

CANLINK通信手册(2.00)

来源:好走旅游网


H1U/H2U系列可编程控制器

CAN通信手册

V2.00

深圳市汇川控制技术有限公司

第一章 概述 .................................................................................................................... 3 1. CAN-LINK网络 ........................................................................................................ 4

1.1 硬件接口 ........................................................................................................ 4 1.2 CAN-LINK软件配置 ...................................................................................... 5

1.3 1.4

CAN-LINK网络组态 ...................................................................................... 6 CAN-LINK网络监控与运行 ............................................................................ 6

2. CAN指令 ................................................................................................................. 6

2.1 远程扩展模块访问指令 ................................................................................... 6

2.2

CAN自由指令 ................................................................................................ 7

2.2.1 CAN数据发送指令 ........................................................................................... 7 2.2.2 CAN数据发送指令 ..........................................................................................11 2.3 PLC编程参考 .....................................................................................................11 3. 协议........................................................................................................................ 14

3.1

CAN-LINK协议 ........................................................................................... 14 3.1.1 CAN-LINK远程响应帧 ...................................................................... 15 3.1.2 3.1.3 3.1.4

CAN-LINK命令帧 ............................................................................. 16 CAN-LINK配置帧 ............................................................................. 20 CAN-LINK数据帧 ............................................................................. 21

3.2 远程读写协议 ............................................................................................... 21 4. 附录........................................................................................................................ 22

第一章概述

H1U/H2U系列PLC具有CAN通信功能,硬件上需要配置CAN通讯卡。在PLC主模块上,可支持自由CAN通信指令,可支持远程模块访问指令FROM/TO,同时支持CAN-LINK网络功能。

CAN-LINK是汇川控制技术公司开发的基于CAN总线的网络协议,该协议是一个开放的协议,支持该协议的设备均可接入CAN-LINK网络。

H1U/H2U系列PLC及其远程扩展模块均可以支持CAN-LINK协议,CAN-LINK组网设备数量最大可达63台。

若是H1U产品,要特别注意,必须预置D8199为7,否则可能造成无法通信。

关键词

CAN-LINK:汇川控制技术公司开发的基于CAN总线的网络协议,该协议是一个开放的协议,支持该协议的设备均可接入CAN-LINK网络。

CAN-LINK网络管理主机:CAN-LINK协议是不存在主从之分的,但需要有一台或多台设备负责配置和管理CAN-LINK网络,承担CAN-LINK网络配置和管理功能的设备称为CAN-LINK网络管理主机,同一个CAN-LINK网络可以有多台网络管理主机。

CAN-LINK网络设备:满足CAN-LINK协议,并接入CAN-LINK网络的设备均称为CAN-LINK网络设备。

自由CAN通信指令:H1U/H2U 控制器均支持自由CAN通信指令,用户可通过指令编程,实现与具有CAN通信功能的设备之间的通信。具体指令名称为CAN发送指令:CANTX;CAN接收指令:CANRX。

远程模块访问指令:H1U/H2U 控制器支持远程模块、远程PLC的访问指令,通过远程模块访问指令可实现对远程模块的读写。具体指令名称为读指令:FROM;写指令:TO。兼容本地扩展模块的读写指令。其它满足CAN远程访问协议的设备也可以用此两条指令访问。

1. CAN-LINK网络

1.1 硬件接口

CAN-LINK网络示意图:

图1-1 CAN-LINK网络拓朴示意图

H1U/H2U CAN扩展卡接口定义:

图1-2 CAN-LINK接口定义 表1-1 CAN-LINK接口引脚定义

管脚号 1 2 3 信号 +24Vcc CANH PGND 描述 外接直流24V供电电源正 CAN总线正 屏蔽地线,接通信电缆屏蔽层 4 5 CANL 0V CAN总线负 外接直流24V供电电源负 组成CAN-LINK网络时,所有设备的以上五根线均要一一对应连在一起。并且+24Vcc和0V间需要外接24V直流电源。总线的两端均要加120欧姆的CAN总线匹配电阻。CAN-LINK接线图如图1-3所示:

图1-3 多台设备组成CAN-LINK网络接线图

H1U/H2U远程扩展卡和CAN接口卡均内置了匹配电阻,可通过拨码开关接入或断开。标准的拨码开关定义如下:

图1-4 CAN-LINK拨码开关 表1-2 CAN-LINK拨码开关定义

拨码号 1 2 3 4 5 6 7 8 信号 地址线A1 地址线A2 地址线A3 地址线A4 地址线A5 地址线A6 波特率 匹配电阻 描述 此六位拨码开关由高到低组合成一个六位二进制数字,用来标识本机站号(若为PLC主模块,还可以通过D元件设置站号)。“ON”表示1,“OFF”表示0。高位在高,低位在低。按以下方式组合:A6A5A4A3A2A1。比如A1=ON,其它位为OFF,即二进制地址为:000001,十进制为K01,16进制为h01。若A5,A4都为ON,其它为OFF,即二进制地址为:011000,十进制为K24,16进制为h18。 OFF:高速模式,波特率500Kbps,ON:低速模式,波特率100Kbps 若拨码开关为ON,表示接入120欧姆的终端匹配电阻,否则断开 若改变拨码开关,除匹配电阻外,波特率和地址并不能立即生效,需要给系统重新上电才可能使用新的设置参数。

1.2 CAN-LINK软件配置

系统通过以下步骤完成CAN-LINK网络的配置

1. 通过AUTOSHOP完成CAN-LINK网络组态,定义需要交换的数据。 2. 把配置信息下载到H2U或H1U系列PLC中。

3. 所有PLC等可编程设备均要启动CAN-LINK网络功能,若非特殊说明,H1U/H2U系列扩展模块默认是启用CAN-LINK功能的,不需要特殊的设置。并且,在有CAN-LINK配

置的PLC中,需要通过用户程序启动CAN-LINK网络配置。

1.3 CAN-LINK网络组态

CAN-LINK网络组态有两种方式,绘图式、填表式或指令编写。绘图式比较直观,填表式即较为简单,指令编写即需要用户用CANTX编写满足CAN-LINK配置帧的用户程序。以下简单介绍一下绘图式,更详细的操作请参见AUTOSHOP软件使用说明。

在AUTOSHOP软件中,点击新建CAN-LINK网络,系统将出现一条CAN-LINK总线,然后增加设备,把需要组成CAN-LINK网络的设备拖进来,若系统中没有该设备,可以增加其它设备。CAN-LINK网络如图1。

在CAN-LINK网络系统中,需要指定一台网络管理主机,网络管理主机一般是PLC。当然,若其它设备支持CAN-LINK网络管理,也可指定该设备做网络管理主机。

接着设定每台机器的地址,注意,该地址必须与物理地址对应,即必须与拨码开关地址或通过其它手段设定的地址对应,CAN-LINK网络目前仅支持6位二进制地址,网络最大支持64台设备。

设定地址后,设定每台设备提供的服务,每条服务信息包括:本机服务内容及数量,服务对象站号,服务对象存储该内容的寄存器起始地址,服务信息发送间隔时间。

配置完成后,把配置信息下载到所指定得网络管理主机中。

1.4 CAN-LINK网络监控与运行

CAN-LINK的网络管理是在网络管理主机上完成的,若此网络主机下载有配置信息,即可执行网络监控功能。

PLC在第一次运行时初始化CAN硬件的,硬件初始化后PLC才能接入CAN-LINK网络,也就是说PLC必须在运行后才能执行网络监控命令。

M8287:更新网络配置,用本机的配置信息覆盖原来的配置信息,若通过CANTX指令配置网络,不需要使用该命令。

M8288:在原来配置的接触上增加配置信息,此命令一般用于具有多台网络管理主机时使用。此命令要慎用,特别是不能重复执行,否则会造成网络配置信息不断增加,从而造成网络通信量增加,最终可能造成网络通信量过重而使得CAN-LINK网络通信缓慢。

网络配置命令执行后,CAN-LINK网络将自动执行,各设备开始自动交互数据。

2. CAN指令

2.1 远程扩展模块访问指令

通过扩展模块指令,可读写通过CAN连接的远程扩展模块(需要扩展模块支持)和远程PLC。该指令兼容本地扩展模块访问指令。

硬件接口参考1-1。

指令格式如下:

读模块数据指令:FROM(M1,M2,D,n) 写模块数据指令:TO(M1,M2,D,n) 参数说明:

M1:大于100表示CAN远程模块,模块地址+100。小于100表示本地扩展模块。 M2:模块寄存器地址。对扩展模块来说是BFM地址,对PLC来说是D元件序号。 D:PLC通信缓冲区。若为FROM指令,即把指定地址的模块的指定寄存器读到此缓冲区中;若为TO指令,即把此缓冲区的数据写入到指定地址的模块的指定寄存器中。

n:表示读写的寄存器(BFM区)个数 指令执行说明:该指令被驱动后,马上通过CAN对外部模块发送一帧数据,等待外部模块响应,若在规定时间(D8281设定,以ms为单位)收到外部模块的正确响应数据,指令执行正常并更新数据,否则报错。若是超时,M8290将置位。

2.2 CAN自由指令

CAN自由指令目的是方便用户与不满足CAN-LINK协议或远程扩展模块访问协议的设备通信用,通过该指令,用户可编写任意CAN通信用户协议。

2.2.1 CAN数据发送指令

指令格式:CANTX(Addr1,Addr0,D,n) Addr1,Addr0:CAN标识符(地址)

Addr1.bit15:保留 Addr1.bit14:保留

Addr1.bit13:CAN标识符位数设定。“0”表示标准CAN标识符(11位标识符),“1”表示扩展CAN标识符(29位标识符)。若为11位标识符,Addr0的低11位表示标识符。若为29位标识符,Addr0表示低16位标识符,Addr1的0~12位表示高13位标识符。 D:发送缓冲区,D元件。从该D元件开始的最大4个D元件作为发送缓冲区。 n:发送数据个数,以字节为单位,最大为8。

CAN数据发送指令是立即执行的,若3ms内没有发送成功,将报6380故障;若CAN忙,将报6382故障。下面将举例说明CANTX指令应用。

1. 10ms发送一组数据,缓冲区为D10~13,D0存发送的字节数。如图2-1所示。

图2-1 CANTX用户指令

若D0 = k8,D10 = h1234,D11 = h5678,D12 = h9ABC,D13 = hDEF0 发送的数据如表2-1所示:

表2-1 发送数据

第一字节 第二字节 第三字节 第四字节 第五字节 第六字节 第七字节 第八字节 h12 h34 h56 h78 h9A hBC hDE hF0 若接收端字节从高到低,CAN接收数据寄存器MDL = h12345678,MDH = h9ABCDEF0 若D0 = 1,只发送一个字节:h12

若D0 = 3,发送前三个字节:h12,h34,h56

依次类推。

2. 通过CANTX配置CAN-LINK网络,假设有7台PLC组成一个CAN-LINK网络,站号从1~7。有如下要求:

(1)通过 CANTX指令来配置CAN-LINK网络。

(2)所有PLC的D110~D179的数据相同,其中D110~D119由1#PLC更新,D120~D129由2#PLC更新,······,D170~D179由7#PLC更新

由于CANTX指令无法发数据给本PLC,所以要在两台PLC中,通过CANTX指令配置CAN-LINK网络。本例通过1#PLC配置2#~7#PLC,通过2#PLC配置1#PLC。需要在1#PLC和2#PLC上编写一段配置程序。其它PLC不需要配置程序。

由于CAN-LINK是采用1对1的通信方式,即任一台PLC需要给另6台PLC分别发数据,每台发送数据量为10个16位数据,CAN-LINK一帧最多只能发送2个16位数据,所以需要给每台PLC发送5帧数据,即任一台机器需要发送的数据帧总数为5×6=30帧,CAN-LINK总线上总帧数为30×7=210帧,使用500K波特率,一帧数据所用时间大约是300us,所以更新一次数据一共需要300us×210=63ms。为避免总线过分拥挤,取100ms刷新一次数据比较合理。

1#PLC编程。配置2#PLC,服务接收站起始寄存器为D120;服务提供站起始寄存器也是D120,寄存器个数为10,时间间隔为100ms,服务发送站号为2,服务接收站号分别为1,3,4,5,6,7。取D10~D13作为CANTX发送缓冲区。即有

MOV MOV

K120 D10 //服务接收站起始寄存器 K120 D11 //服务提供站起始寄存器

MOV HA06 D12 //h0a为寄存器个数(10),06为时间间隔高位(h64) MOV H4042 D13 //h4为时间间隔低位(h64),h042展开为二进制为0000,01;00,0010。分号前的6位表示1#站为服务接收站,分号后的6位表示2#站为服务提供站。只需要改变服务接收站分别为1,3,4,5,6,7即可。

CANTX H35ff H201 D10 K8 //配置2#站发送数据给1#站

ADD ADD CANTX ADD CANTX ADD CANTX ADD CANTX ADD CANTX

H40 D13 D13 H40 D13 D13

H35ff H201 D10 K8 //配置2#站发送数据给3#站 H40 D13 D13

H35ff H201 D10 K8 //配置2#站发送数据给4#站 H40 D13 D13

H35ff H201 D10 K8 //配置2#站发送数据给5#站 H40 D13 D13

H35ff H201 D10 K8 //配置2#站发送数据给6#站 H40 D13 D13

H35ff H201 D10 K8 //配置2#站发送数据给7#站

同理,配置3#~7#PLC梯形图 MOV K130 D10 MOV MOV MOV

K130 D11 HA06 D12 H4043 D13 H35ff H301 D10 K8 H40 D13 D13 H35ff H301 D10 K8 H40 D13 D13 H40 D13 D13

H35ff H301 D10 K8 H40 D13 D13

CANTX ADD CANTX ADD

ADD CANTX ADD

CANTX ADD CANTX ADD CANTX MOV MOV MOV MOV

CANTX ADD CANTX ADD CANTX ADD ADD

CANTX ADD CANTX ADD CANTX

MOV MOV MOV MOV

CANTX ADD CANTX ADD CANTX ADD CANTX ADD ADD

CANTX ADD CANTX MOV MOV MOV MOV

CANTX ADD CANTX

H35ff H301 D10 K8 H40 D13 D13

H35ff H301 D10 K8 H40 D13 D13

H35ff H301 D10 K8

K140 D10 K140 D11 HA06 D12 H4044 D13 H35ff H401 D10 K8 H40 D13 D13

H35ff H401 D10 K8 H40 D13 D13

H35ff H401 D10 K8 H40 D13 D13 H40 D13 D13 H35ff H401 D10 K8 H40 D13 D13

H35ff H401 D10 K8 H40 D13 D13 H35ff H401 D10 K8 K150 D10 K150 D11 HA06 D12

H4045 D13

H35ff H501 D10 K8 H40 D13 D13 H35ff H501 D10 K8 H40 D13 D13

H35ff H501 D10 K8 H40 D13 D13

H35ff H501 D10 K8 H40 D13 D13 H40 D13 D13 H35ff H501 D10 K8 H40 D13 D13 H35ff H501 D10 K8 K160 D10 K160 D11 HA06 D12 H4046 D13 H35ff H601 D10 K8 H40 D13 D13

H35ff H601D10 K8

ADD CANTX ADD CANTX ADD ADD

H40 D13 D13

H35ff H601 D10 K8 H40 D13 D13

H35ff H601 D10 K8 H40 D13 D13

CANTX ADD CANTX MOV MOV MOV

H35ff H601 D10 K8 H40 D13 D13 H40 D13 D13

H35ff H601 D10 K8 K170 D10 K170 D11 HA06 D12 H4047 D13

H35ff H701 D10 K8 H40 D13 D13

H35ff H701 D10 K8 H40 D13 D13

H35ff H701 D10 K8 H40 D13 D13 H35ff H701 D10 K8 H40 D13 D13

MOV CANTX ADD CANTX ADD CANTX ADD CANTX ADD

CANTX H35ff H701 D10 K8 ADD H40 D13 D13 CANTX H35ff H701 D10 K8 2#PLC编程

2#PLC负责配置1#PLC,相对简单,程序如下 MOV MOV MOV MOV

K110 D10 K110 D11 HA06 D12 H4081 D13 H35ff H102 D10 K8 H40 D13 D13 H35ff H102 D10 K8 H40 D13 D13 H35ff H102 D10 K8 H40 D13 D13 H35ff H102 D10 K8 H40 D13 D13

H35ff H102 D10 K8 H40 D13 D13

CANTX ADD CANTX ADD CANTX ADD CANTX ADD CANTX ADD

CANTX H35ff H102 D10 K8

为了保证配置信息能发到各PLC,必须要等到所有PLC上电,配置信息发送需要等待一定时间,建议为3秒。即3秒后1#PLC、2#PLC发出以上信息。

2.2.2 CAN数据发送指令

指令格式:CANRX(Addr1,Addr0,D,n) Addr1,Addr0:CAN标识符(地址) Addr1.bit15:保留 Addr1.bit14:保留

Addr1.bit13:CAN标识符位数设定。“0”表示标准CAN标识符(11位标识符),“1”表示扩展CAN标识符(29位标识符)。若为11位标识符,Addr0的低11位表示标识符。若为29位标识符,Addr0表示低16位标识符,Addr1的0~12位表示高13位标识符。

D:接收缓冲区,D元件。从该D元件开始的最大4个D元件作为接收缓冲区。

n:接收数据个数,以字节为单位,最大为8。 CANRX特别说明:

M8291:OFF表示CAN接收处于空闲状态,ON表示CAN处于接收等待状态。

若CAN接收处于空闲状态,且接收指令被驱动,开始CAN数据接收并置M8291为ON,正常接收完成后M8291自动置为OFF,并从此条指令位置开始扫描下一条被驱动的指令开始执行接收数据。

从指令被驱动起计时,若接收等待时间超过D8241(毫秒为单位),报超时故障,M8290置位,指令执行完成。M8290自动置为OFF,并从此条指令位置开始扫描下一条被驱动的指令开始执行接收数据。

指令被驱动,并不代表马上可以开始接收数据,先要看是否有CANRX处于接收等待状态。

该指令可以用沿驱动。为避免与CAN-LINK冲突,11位标识符需要小于1023。下面将举例说明CANRX的应用。

1. 接收发给1号站的数据,如图2-2所示。

图2-2 CANRX用户指令

若D0 = 8,若对方发过来的数据是h123456789ABCDEF0,那么D1010 = h1234,D1011 = h5678,D1012 = h9ABC,D1013 = hDEF0。

若D0 = 1,若对方发过来的数据是h123456789ABCDEF0,那么D1010 = h12xx,D1011 = hxxxx,D1012 = hxxxx ,D1013 = hxxxx 。x表示未知数,不用关心。

若D0 = 3,对方发过来的数据是h123456789ABCDEF0,那么D1010 = h1234,D1011 = h56xx,D1012 = hxxxx ,D1013 = hxxxx 。x表示未知数。

2.3 PLC编程参考

对与H1U/H2U系列远程扩展模块,默认启动CAN-LINK的,只需要把硬件配置好,即把拨码开关拨好就可以了。

对于PLC主机,在用户程序编程上还需要做一些配置处理,特别是使用到CAN自由指令时。

请参照表2-2、2-3、2-4。

表2-2 CAN通信相关特殊变量表(VEL1.00)

扩展卡类型号,H2U为自动识别,D8199显示此卡的类型号; H1U不能自动识别,需要通过D8199设定扩展卡类型。 扩展卡类型如下: 1 D8199 2 3 4 5 6 7 D8240.0 D8240.1 D8240.2 RS232扩展卡 RS422/485通讯扩展卡 AD扩展卡 DA扩展卡 6A_6B_3A_BD1扩展卡 高速扩展卡 CAN扩展卡 启动CAN同步主站功能 0:拨码设定CAN_LINK地址,D8242显示地址 1: D8242设定CAN_LINK地址 0:拨码设定波特率,D8243显示波特率 1:由D8240.3决定波特率设置 0:波特率分档设定 1:波特率由D8243,D8244组成的32位寄存器自由设定(参见CAN波特率设置寄存器规则,选择该设置,可能造成通信异常,请慎重) 允许保存网络设备信息(用户设定保存网络设备信息地址) CAN接收超时设定(ms) CAN_LINK地址设定/显示地址 波特率设定,或显示拨码设定的波特率 D8240.2 = 1,D8240.3 = 0时 D8244 = 其它值, 800K D8244 = 6, 600K D8244 = 5, 500K D8240.3 D8240.4 D8241 D8242 D8243 D8244 D8244 = 4, 400K D8244 = 3, 300K D8244 = 2, 200K D8244 = 1, 100K D8244 = 0, 10K D8240.4 = 1,设定网络设备信息保存起始寄存器,寄存器个数为6×网络设备个数,最多384个寄存器,用户需要留出足够的空间,避免冲突 启动CAN_LINK发送一次功能 重新配置CAN-LINK网络 添加CAN-LINK网络配置信息 启动网络设备搜索 CAN接收超时 0:自由CAN指令接收完成或空闲 1:自由CAN指令接收状态 1:CAN自由指令发送失败 同步时钟计数器L 同步时钟计数器H 网络设备个数 CAN中断错误 CAN接收到的数据长度(MCFL) D8245 D8246.0 D8246.1 D8246.2 D8246.3 D8246.8 或M8192 D8246.9 或M8193 D8246.A 或M8194 D8247 D8248 D8249 D8250 D8251 D8252 D8253 D8254 D8255 D8280.0 MDLL MDLH MDHL MDHH 0表示应用原协议,1表示应用新协议。

表2-3 CAN通信相关特殊变量表(VEL2.00)

M元件 M8280 协议标志 0:CAN-LING VER2.00协议 1:CAN-LING VER1.00协议 M8281 没有识别到CAN扩展卡,CAN-LINK功能不能使用 D8281 M元件定义 D元件 D8280 当前软件CAN-LINK协议版本号(默认200) 扩展卡类型号,H2U为自动识别,D8280显示此卡的类型号; H1U不能自动识别,需要通过D8281设定扩展卡类型。 扩展卡类型如下: 1 2 3 4 5 6 7 M8282 M8283 M8284 启动CAN同步主站功能 保留 0:拨码设定CAN_LINK地址,D8282显示地址 1: D8282设定CAN_LINK地址 M8285 M8286 0:拨码设定波特率,D8283显示波特率 1:由M8284决定波特率设置 0:波特率分档设定,由D8284分档设定,D8283显示波特率 1:波特率由D8283,D8284组成的32位寄存器自由设定 D8286 D8285 波特率设定,或显示拨码及档位设定的波特率 M8283=1,M8284 = 0时 D8284 <10的时候 D8284 = 其它值, 800K D8284 = 6, 600K D8284 = 5, 500K D8284 = 4, 400K D8284 = 3, 300K D8284 = 2, 200K D8284 = 1, 100K D8284 = 0, 10K D8284 >=10的时候 D8284 = 10, 10K D8284 = 20, 20K ··· M8287 允许保存网络设备信息 D8287 M8287=1,设定网络设备信息保存起始D元件编号,D元件个数为6×网络设备D8282 D8282 D8284 CAN_LINK地址设定/显示地址 RS232扩展卡 RS422/485通讯扩展卡 AD扩展卡 DA扩展卡 6A_6B_3A_BD1扩展卡 高速扩展卡 CAN扩展卡 D元件定义 同步时钟计数器L(us) 同步时钟计数器H(us) 个数,最多384个D元件,用户需要留出足够的空间,避免冲突 M8288 M8289 M8290 M8291 M8292 M8293 M8294 M8295 M8296 M8297 M8298 M8299 M8300 M8301 M8302 M8303 M8304 M8305 启动CAN_LINK发送一次功能 重新配置CAN-LINK网络 添加CAN-LINK网络配置信息 启动网络设备搜索 0:自由CAN指令接收完成或空闲 1:自由CAN指令接收状态 CAN自由指令发送失败 CAN状态异常 保留 保留 保留 保留 CAN接收超时 设备通信中断 网络过载 设备发送非法数据(非CAN-LINK协议数据) 设备没有正确执行配置信息 协议版本错误 网络中有设备告警(用户程序复位) D8303 D8304 M8305 设备编号 设备编号 高8位表示告警码,低8位告警设备编号;若多个设备同时存在告警,即地址编号最小的设备告警优先;若同一个设备有多个告警,即告警码最小优先。 M8306 启用详细告警记录 D8306 若启用详细告警记录:设定保存告警/错误起始D元件编号。从该编号开始的64个D元件,将用来存放0-63号设备的告警信息(告警码) D8293 D8294 D8295 D8296 D8297 D8298 D8299 D8300 D8301 D8302 CAN中断寄存器 CAN状态寄存器 MDLL MDLH MDHL MDHH CAN接收超时设定(ms) 设备编号 保留 设备编号 D8288 D8289 D8290 D8291 D8292 保留 保留 保留 网络设备个数 CAN接收到的数据长度(MCFL) 表2-4 故障信息 6380 6381 6382 6383 发送超时 接收超时 CAN发送忙 CAN接收忙 3. 协议

3.1 CAN-LINK协议

CAN-LINK通信由三组帧结构组成,命令帧,配置帧和数据帧。命令帧和配置帧用来

管理网络,数据帧是正式通信数据,用于不同设备信息交换。CAN-LINK通信不用询问和应答,通过定时发送的方式实现高效通信。

CAN-LINK远程响应帧

网络管理主机通过远程响应帧扫描CAN-LINK设备,CAN-LINK网络中的所有设备,必须可响应网络管理主机发过来的远程帧。上电后,网络稳定后,网络主机通过远程帧扫描网络中设备。远程帧格式如图3-1、3-2、3-3所示。

表3-1 远程帧格式

仲裁区(29bit) 仲裁标识 4bit bit28~25 保留 1bit 保留 8bit bit20~17 目的站号 8bit bit15~8 保留 8bit bit7~0 DLC 字节数 4bit 数据1 16bit bit15~0 bit7~固定1101 1 ffh xxh ffh 0:Di数 bit15~8:Do数 MDL 数据2 16bit bit31~16 bit7~0:Ai数 bit15~8:Ao数 产品主标识 产品辅标识 数据3 16bit MDH 数据4 16bit bit16 bit15~0 bit31~16 表3-2 主站发送远程帧 仲裁区(29bit) 仲裁标识 1101 保留 保留 目的站号 1 ffh xxh DLC MDL MDH 保留 字节数 数据1 数据2 数据3 数据4 ffh 8h NULL NULL NULL NULL

表3-3 设备回应远程帧

仲裁区(29bit) DLC 保留 字节数 数据1 MDL 数据2 数据3 MDH 数据4 仲裁标识 保留 保留 目的站号 bit7..0:Dbit7..0:Ai数 bit15..8:Ao数 产品主标识 产品辅标识 1101 1 ffh xxh ffh 8h i数 bit15..8:Do数 在编程时需要注意以下两点。

1. 在TI芯片中可对邮箱进行以下设置:

SCC1CANMID = MSGID11(11010XXXXXX) + AAM; //发送邮箱,会响应远程帧 SCC1CANMCF = 8; SCC1CANMDL .Bit0_7 SCC1CANMDL .Bit8_15 SCC1CANMDL .Bit16_23

//字节数

//输入IO数量 //输出IO数量 //输入模拟量数量

//输出模拟量数量 //产品主标识(软件ID及版本号) //产品辅标识(非标版本号)

SCC1CANMDL .Bit24_31

SCC1CANMDH.Bit0_15 SCC1CANMDH.Bit16_31

2. 产品主标识的定义

格式:GXXYY,全部为十进制数字0~9。

G:公司名称,“1”表示汇川公司产品,“2”表示其它公司产品

XX:产品分类,“01”表示变频器,“02”表示PLC,“03”表示电梯一体化控制器,“05”表示司服驱动器···。实际是公司产品大类编码(01XX0000项目编码的5、6位) YY:产品系列号,最好根据软件区分,PLC产品实际就是软件编号。产品主标识定义如表3-4所示。

表3-4 产品主标识定义

H2U系列PLC主模块 H1U系列PLC主模块 H2U系列远程IO扩展模块 H2U系列远程通用模拟量扩展模块 H2U系列远程温度扩展模块 变频器 伺服 伺服

1 1 1 1 02 01 05 06 52 XX XX XX 公司名称(G) 1 1 1 1 产品分类(XX) 02 02 02 02 产品序列号(YY) 24 26 02 51 备注 CAN-LINK命令帧

命令帧是需要应答的,除广播(接收站地址为0)命令外,否则需要接收站应答。命令帧格式如表3-5所示。

表3-5 命令帧格式

仲裁区(29bit) 仲裁标识 4bit bit28..25 固定1000 问答标志 1bit 命令编码 目的站号 源站号 DLC 字节数 0/4/8 bit MDL MDH 数据1 数据2 数据3 数据4 8bit 8bit 8bit 16bit Bit31~16 16bit Bit15~0 16bit Bit31~16 16bit Bit15~0 bit16 0:答 1:问 bit20~17 bit15~8 bit7~0 仲裁标识:命令帧仲裁标识固定为1000,以区分配置帧、数据帧和远程帧。 问答标志:命令帧分为“命令”和:应答“两种方式”,通过问答标志来区分,“命令”时写入“1”,“应答”时写入“0”。

命令编码:用以区分各个命令功能的编码。

源站号:发送该命令的设备站,问命令编码指的是发送站发出的命令 目的站号:接收该命令的站,若为0则表示是广播(不需要应答)。 数据区:根据命令不一样而有不同的定义。 1. 删除命令

删除设备CAN-LINK配置信息,DLC为0,数据区不存在;若目的站号为0表示广播,对所有设备均有效,所有设备配置信息均删除配置,否则仅删除指定设备配置信息。广播帧不能回答。删除命令如表3-6所示。

表3-6 删除命令格式

命令01h 问: 答: 仲裁区(29bit) 仲裁标识 1000 1000 问答标志 1 0 命令编码 01h 01h 目的站号 源站号 DLC 字节数 0h 0h MDL 数据1 NULL NULL 数据2 NULL NULL MDH 数据3 NULL NULL 数据4 NULL NULL xxxxxxxx yyyyyyyy yyyyyyyy xxxxxxxx 2. 添加命令 增加设备CAN-LINK配置信息,DLC为0,数据区不存在;若目的站号为0,所有模块都要做好增加配置信息的准备。添加命令如表3-7所示。

表3-7 添加命令格式

命令02h 问: 答: 仲裁区(29bit) 仲裁标识 1000 1000 问答标志 1 0 命令编码 02h 02h 目的站号 xxxxxxxx yyyyyyyy 源站号 yyyyyyyy xxxxxxxx DLC 字节数 0h 0h MDL MDH 数据1 数据2 数据3 数据4 NULL NULL NULL NULL NULL NULL NULL NULL 3. 读设备配置信息命令

读设备CAN-LINK配置信息,目的站号不能为0,接收到该信息的设备必须回复CAN-LINK配置信息。接收站将接收到的配置信息编号所对应的配置信息发送给发送站。读设备配置信息命令如表3-8所示。

表3-8 读设备配置信息命令格式

命令03h 问: 答: 仲裁区(29bit) 仲裁标识 1000 1000 问答标志 1 0 命令编码 03h 03h 目的站号 xxxxxxxx yyyyyyyy 源站号 yyyyyyyy xxxxxxxx DLC 字节数 4h 8h MDL MDH 数据1 数据2 数据3 数据4 配置信息编号 NULL NULL CAN-LINK配置信息,同CAN-LINK配置帧定义 4. 读寄存器数据 读取站点寄存器数据,DLC为4或8,目的站号不能为0。问帧:若DLC为4,数据1为寄存器个数,数据2为寄存器起始地址;若DLC为8,数据1为寄存器个数1,数据2为寄存器1起始地址,数据3为寄存器个数2,数据4为寄存器2起始地址;答帧:若DLC为4,数据1为寄存器数据,数据2为寄存器地址;若DLC为8,数据1为寄存器1内容,数据2为寄存器1地址,数据3为寄存器2内容,数据4为寄存器2地址。读命令可以一次读取多个寄存器,目的站可根据读取的信息依次将内容反馈给发送站。读设寄存器数据命令如表3-9所示。

表3-9 读寄存器数据命令格式

命令04h 仲裁区(29bit) 仲裁标识 问答标志 命令编码 目的站号 源站号 DLC 字节数 MDL 数据1 数据2 MDH 数据3 数据4 问: 1000 1 04h xxxx xxxx yyyy yyyy yyyy yyyy xxxx xxxx 4/8h 寄存器个数1 寄存器1数据 寄存器1首地址 寄存器1地址 寄存器个数2 寄存器2数据 寄存器2首地址 寄存器2地址 答: 1000 0 04h 4/8h 5. 写寄存器命令 写站点寄存器数据,DLC为4或8,目的站号为0表示广播,写所有站点,不需要回复。 问帧:若DLC为4,数据1为寄存器内容,数据2为寄存器地址;若DLC为8:数据1为寄存器1内容,数据2为寄存器1地址,数据3为寄存器2内容,数据4为寄存器2地址; 答帧:DLC为0。写设寄存器数据命令如表3-10所示。

表3-10 写寄存器数据命令格式 命令05h 仲裁区(29bit) 仲裁标识 1000 问答标志 1 命令编码 05h 目的站号 xxxx xxxx yyyy yyyy 源站号 yyyy yyyy xxxx xxxx DLC 字节数 MDL 数据1 寄存器1数据 NULL 数据2 寄存器1地址 NULL MDH 数据3 寄存器2数据 NULL 数据4 寄存器2地址 NULL 问: 8h 答: 1000 0 05h 0h 6. 读站点设备信息命令 读取站点设备信息,与远程帧数据格式相同,仲裁区不同。远程帧用于设备上电配置网络,命令帧用于单纯命令读取站点设备信息。问帧:DLC为0。答帧:DLC为8,数据区1~4为设备信息。读站点设备信息命令如表3-11所示。

表3-11 读站点设备信息命令格式 命令06h 仲裁区(29bit) 仲裁优先 1000 问答标志 1 命令编码 06h 目的站号 xxxx xxxx 源站号 yyyy yyyy DLC 字节数 MDL 数据1 数据2 MDH 数据3 数据4 问: 0h NULL bit7..0NULL bit7..0:Ai数 bit15..8:Ao数 NULL NULL 答: 1000 0 06h yyyy yyyy xxxx xxxx 8h :Di数 bit15..8:Do数 产品主标识 产品辅标识 7. 读告警信息

用于主站读取从站告警信息,从站接收到读取命令后将从站告警信息返回给主站,维持整个网络监控功能。告警信息定义:共64条告警,每位表示一条告警,如bit0表示0#告警,依次类推。若置位表示告警存在。读告警信息命令如表3-12所示。

表3-12 读告警信息命令格式

命令07h 问: 仲裁区(29bit) 仲裁标识 1000 问答标志 1 命令编码 07h 目的站号 xxxxxxxx 源站号 yyyyyyyy DLC 字节数 0h MDL MDH 数据1 数据2 数据3 数据4 NULL 共64条告警,每位表示一条告警,答: 1000 0 07h yyyyyyyy xxxxxxxx 8h 如bit0表示0#告警,依次类推。若置位表示告警存在 8. 报告站点告警信息 用于从站向主站报告站点告警信息,从站发生新告警时马上报告。告警信息定义:共64条告警,每位表示一条告警,如bit0表示0#告警,依次类推。若置位表示告警存在。报告站点告警信息命令如表3-13所示。

表3-12 报告站点告警息命令格式

命令10h 仲裁区(29bit) 仲裁问答命令编码 目的站号 源站号 DLC 字节数 MDL 数据1 MDH 标识 标志 数据2 数据3 数据4 共64条告警,每位表示一条告警,问: 1000 1 10h xxxxxxxx yyyyyyyy 8h 如bit0表示0#告警,依次类推。若置位表示告警存在 答: 1000 0 10h yyyyyyyy xxxxxxxx 0h NULL NULL NULL NULL 9. 配置请求命令 配置请求。网络设备请求网络管理主机发送配置信息到本机。网络管理主机收到该请求后,将查找此网络设备的配置信息,若有配置信息,回复配置信息条数给该网络设备,并将把配置信息发给该设备。一般用于网络设备重新上电或网络设备配置信息丢失后重新请求。若目的站号为0,所有网络主机都有可能回复并把配置信息发给该站点,若目的站号为非0,只有地址匹配的网络主机才会回应。配置请求命令如表3-14所示。

表3-13 配置请求命令格式 命令20h 问: 答: 仲裁区(29bit) 仲裁标识 1000 1000 问答标志 1 0 命令编码 20h 20h 目的站号 xxxxxxxx yyyyyyyy 源站号 yyyyyyyy xxxxxxxx DLC 字节数 0h 0h MDL MDH 数据1 数据2 数据3 数据4 NULL NULL NULL NULL NULL NULL NULL NULL 下面举例说明命令帧应用。 1. 网络管理主机(站号5)删除所有模块的配置信息,CAN数据帧如下: 仲裁区:仲裁为“1000”,问答标志为“1”,命令编码为“01h”,目的站地址为“00h”(广播),原站地址为“05h”。发出的仲裁区二进制:1000 1 00000001 00000000 00000101。 DLC(十六进制):0

回复的信息:CAN-LINK网络所有设备接收到该信息后,复位配置区,配置数据条数变为0,因为是广播不需要回复。

2. 网络管理主机(站号5)删除1号站模块的配置信息,CAN数据帧如下: 仲裁区:仲裁为“1000”,问答标志为“1”,命令编码为“01h”,目的站地址为“01h”,原站地址为“05h”。发出的仲裁区二进制:1000 1 00000001 00000001 00000101。 DLC(十六进制):0

1号站设备回复:仲裁区:仲裁为“1000”,问答标志为“0”,命令编码为“01h”,目的站地址为“05h”,原站地址为“01h”。发出的仲裁区二进制:1000 0 00000001 00000101

00000001。DLC(十六进制):0

CAN-LINK配置帧

CAN-LINK协议各设备的工作都是基于网络主机发过来的配置信息,配置信息可以为多条,但一个设备接收的配置信息最多不能超过10条配置信息。

以下CAN通信帧数据,是网络主机发给网络上某设备(服务提供站)的信息。接收到该信息的设备即为“服务提供站”,设备需要提供规定的服务。配置帧格式如表3-14所示。

表 3-14 配置帧格式

仲裁区(29bit) 仲裁标识 4bit 保留 1bit 保留 8bit 目的站号 8bit 源站号 8bit MDL(32bits) bit31~16 16bit 服务接bit28..25 bit16 bit20..17 bit15..8 bit7..0 收站寄存器地址 1010 1 ffh xxh yyh bit15~0 16bit 服务提供站寄存器地址 bit31~24 8bit 寄存器个数 MDH(32bits) bit23~12 12bit bit11~6 6bit 服务接收站 bit5~0 6bit 服务提供站 时间间隔 “服务提供站”设备收到此帧数据后,把数据区保存在本地。C编程时可参考以下数据结构:

typedef struct { UINT64 SStation:6; UINT64 RStation:6;

UINT64 Timer:12;

//服务提供站,指的是需要提供服务的设备 //服务接收站,指的是接收该服务信息的设备

//发送时间(ms)间隔,指的是服务提供站按照该时间定时发送服

务信息 UINT64 RegLenth:8; //寄存器个数

UINT64 SRegAddr:16; //服务提供站寄存器地址,寄存器数据长度为16位 UINT64 RRegAddr:16; //服务接收站寄存器地址,寄存器数据长度为16位

}CANCfg; 例如:

若数据区为“0x000B000A05003141”,即CAN低32位数据寄存器MDL 为“0x000B000A”,高32位数据寄存器MDH 为“0x05003141”。服务提供站为“1”,服务接收站为“5”,发送时间间隔为“3ms”,寄存器个数为“5”,服务提供站的寄存器起始地址为“10”,服务接收站寄存器起始地址为“11”。如图3-1所示:

图3-1 配置帧格式

服务提供站设备收到配置信息后,按照配置信息的要求为服务接收站提供服务:定时把本地指定寄存器数据发给服务接收站的指定寄存器。如上例数据,1号服务提供站设备需要每隔3ms,把寄存器10~14(5个寄存器)的内容发送给5号站,并要求5号站收到此通信数据后,把这些数据存储于本地的寄存器11~15。详见CAN-LINK数据帧。

CAN-LINK数据帧

CAN-LINK数据帧用于网络数据交互,服务提供站设备把本机寄存器信息发给服务接收站设备指定的寄存器。

CAN-LINK数据帧实际上就是写服务接收站的寄存器,若DLC为4,写一个寄存器,若为8,写两个寄存器。一帧数据最多只能写两个寄存器。若配置要求发送的寄存器大于2个寄存器,需要连续发送多帧数据。数据帧格式如表3-15所示。

表3-15 数据帧格式

仲裁区(29bit) 仲裁标识 4bit 保留 1bit 保留 8bit bit20..17 ffh 目的站号 8bit 源站号 8bit MDL数据区(32bits) 31~16bit 16bit 15~0bit 16bit 服务接收bit15..8 bit7..0 寄存器内容1 站寄存器地址1 xxh yyh MDH数据区(32bits) 31~16bit 16bit 寄存器内容2 15~0bit 16bit 服务接收站寄存器地址2 bit28..25 bit16 1011 1 注意服务器接收站寄存器地址必须与内容对应,服务接收站收到该数据帧后将把寄存器内容放到该数据帧指定的寄存器地址中。

3.2 远程读写协议

远程读写协议使用的是CAN-LINK命令帧。“04h”命令为读,即FROM指令读,“05h”命令为写,即TO指令。

目前H1U/H2U及其远程扩展模块均支持此两命令。具体举例说明读写功能。 1. PLC(站号5)执行指令意思是读取1号站的0#BFM区,并将读取到的数据保存到D10寄存器中。如图3-2所示。

图3-2 FROM用户指令应用

仲裁区:仲裁为“1000”,问答标志为“1”,命令编码为“04h”,目的站地址为“01h”,原站地址为“05h”。发出的仲裁区(二进制):1000 1 00000100 00000001 00000101。

DLC(十六进制):4

数据区(十六进制):读取寄存器1首地址为“0000h”,读取寄存器个数为“0001h”发出的信息MDL为(十六进制):“00010000h” 1号站设备回复(0#BFM为1234h):

仲裁区:仲裁为“1000”,问答标志为“0”,命令编码为“04h”,目的站地址为“05h”,原站地址为“01h”。发出的仲裁区(二进制):1000 0 00000100 00000101 00000001。 DLC(十六进制):4 数据区:数据区1为寄存器地址“0000h”,数据区2为寄存器内容“1234h”发出的信息MDH为(十六进制):“12340000h”。

2. PLC(站号5)执行指令,执行的意思是将本站D100的内容写入1号站的10#BFM区。如图3-3所示。

图3-2 TO用户指令应用

其中PLC的D100 = h5678

仲裁区:仲裁为“1000”,问答标志为“1”,命令编码为“05h”,目的站地址为“01h”,原站地址为“05h”。发出的仲裁区(二进制):1000 1 00000101 00000001 00000101。 DLC(十六进制):4

数据区:数据区2为寄存器地址“000Ah”,数据区1为D100的值“5678h” 发出的信息MDH为(十六进制):“5678000Ah”。

1号站设备回复:

仲裁区:仲裁为“1000”,问答标志为“0”,命令编码为“05h”,目的站地址为“05h”,原站地址为“01h”。发出的仲裁区(二进制):1000 0 00000101 00000101 00000001。 DLC(十六进制):0

4. 附录

H1U,H2U系列PLC主模块CAN-LINK访问地址编码

变量名称 D0~D7999 起始地址 0(0) 寄存器数量 8000 16位寄存器 说明 16位寄存器,特殊寄存器,访问是要注意,特别是写操作,可能造成系统异常 16位寄存器 16位寄存器 32位寄存器,每个寄存器占用两个地址 位编址:一个地址对应一个线圈 位编址:一个地址对应一个线圈 D8000~D8255 0x1F40(8000) 256 T0~T255 C0~C199 C200~C255 X0~X255 Y0~Y255

0xF000(61440) 256 0xF400(62464) 200 0xF700(63232) 56 0xF800(63488) 256 0xFC00(64512) 256 ―――THE END―――

因篇幅问题不能全部显示,请点此查看更多更全内容

Top