CAN -- CAN通讯

类型

系统指令

描述

直接通过CAN总线收发数据。

 

可以实现多个控制器通过CAN来通讯,但是同一个CAN网络上只能有一个主端(CANIO_ADDRESS=32)

较新的固件版本才支持这个功能,如不支持请联系厂家。

 

接线如下图所示:

CANL - CANL

CANH - CANH

CANLCANH的首尾两端分别连接1120欧电阻用于阻抗匹配。连接带拨码开关的扩展模块时,将拨码第八位拨为ON即表示接入120欧电阻,无需额外接电阻。

语法

CAN(channel, function, tablenum)

channelCAN通道,0表示第一个通道,-1表示缺省通道

function:功能号

描述

6

接收,没有数据时,identifier<0

7

发送

16

需要升级固件

带扩展支持接收,没有数据时,identifier<0

17

需要升级固件

发送扩展数据,普通数据使用7发送

tablenum数据存储的TABLE位置

 

67模式时依次存储

identifierCan通讯对象(Cob-Id)114位是功能码7位是节点IDZCAN使用的高位数据预留建议0-511接收时如果小于0则表明没有收到数据。bit11表示是否远程帧。

bytes数据区域字节数最多为8

data:数据区域,字节(0-FF)。

 

1617模式时依次存储

identifierCan通讯对象(Cob-Id)114位是功能码,后7位是节点IDZCAN使用的高位数据预留建议0-511接收时如果小于0则表明没有收到数据。bit11表示是否远程帧。

identifier extend:扩展id增加高1118共同组成CAN29ID不存在填-1

bytes数据区域字节数最多为8

data:数据区域,字节(0-FF)。

 

29位扩展帧ID从左边非0开始拆分为高11位和低18位,例子如下:

扩展帧ID18EF1300

对应二进制为0001 1000 1110 1111 0001 0011 0000 0000

11位为11000111011,对应10进制1595

18位为110001001100000000,对应10进制201472

所以使用CAN17模式时,identifier=1595Identifier extend=201472

适用控制器

通用

例子

例一       

'发送端:

TABLE(0,1,8,1,2,3,4,5,6,7,8) '发送cobid=18个字节,依次为1-8

CAN(0,7,0)                '发送

 

'接收端:

CANIO_ADDRESS=1      '设置为非主控,此参数设置一次即可

CAN(0,6,0)                '接收

?TABLE(0)

 

例二       

'发送端

TABLE(0,1,10,8,1,2,3,4,5,6,7,8)  '发送cobid=1,扩展id108个字节,依次'1-8

CAN(0,17,0)                   '发送

 

'接收端:

CANIO_ADDRESS=1      '设置为非主控,此参数设置一次即可

CAN(0,16,0)                   '接收

?TABLE(0)

相关指令

CANIO_ADDRESSCANIO_STATUSCANIO_ENABLE