工控技术分享平台
尊重原创 勿抄袭
勿私放其他平台
写在前面
本年度专为工业自动化爱好者而生的“2021贝加莱橙色灯塔杯技术最强音挑战赛”已经接近尾声,感谢合作伙伴和技术粉丝们的厚爱,感谢大家的踊跃参与!
The Voice of B&R Tech技术最强音竞赛
几百位来自天南海北的技术粉丝不仅一起参与了竞争激烈的网络答题挑战赛,同时,还提交了众多风格多样的优秀原创技术作品。从即日起,"剑指工控"将对初步入围的作品进行展播。
原创投稿
006
CAN总线通讯的瑞士军刀
陈 巍
前言
CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898)。CAN总线目前在车辆、物流AGV和工程机械领域得到了广泛应用。以CAN总线为基础,诞生了目前得到广泛应用的CANopen和J1939等应用层协议。
一、硬件支持
贝加莱PLC对CAN总线的硬件支持是非常广泛的。几乎所有的贝加莱控制器都可以扩展CAN总线,一部分将CAN总线作为了标配集成在PLC本体。
以我们经常使用的X20CP1382为例,本体自带一路CAN总线,另外还可以通过PLC的插槽插入X20IF1072或X20IF2772通讯卡扩展一路或两路独立的CAN总线。甚至可以通过右侧的IO总线插入X20CS1070或X20CS2772模块来扩展更多的CAN总线接口。
除了PLC外,贝加莱的集成控制功能的触摸屏系列也都支持CAN总线的扩展。例如C30系列触摸屏就有本体自带2路CAN总线的型号。
二、软件支持
1、CANopen集成主站
贝加莱Automation Studio平台集成了免费的CANopen主站功能,特别要指出的是,贝加莱的集成CANopen主站是软件功能,所以可以在普通的CAN总线接口实现。例如刚才提到过的X20IF1070/X20IF2772或PLC本体自带的CAN总线端口。通过在PLC中实现CANopen的软件协议栈,标准的CAN总线接口摇身一变就可以支持CANopen主站通讯功能。集成主站功能的配置和变量映射都在Automation Studio中完成,只需要导入EDS文件,不需要编写代码。
2,通讯库支持
贝加莱Automation Studio平台提供了两个用于CAN总线的通讯库支持,分别是CAN_lib和ArCAN库。较新的ArCAN库不但大大简化了调用接口,而且提供了更多的通讯方式的支持。例如支持了接收总线所有报文的监听模式。
ArCan库的调用非常简单,只需要一个ArCanSend和一个ArCanReceive功能块就可以实现数据收发的全部功能。
ArCanSend功能块只需要指定硬件接口,复制发送数据,然后给SendFrame管脚一个脉冲就可以实现报文发送。发送的状态可以从功能块右侧管脚获取。
ArCanReceive功能块支持接收指定ID的报文,或者通过指定掩码接收部分报文,也可以设定接收所有报文。Format管脚可以指定接收CAN2.0A报文或CAN2.0B报文。而且功能块还集成了自定义长度的FIFO报文队列,避免丢失任何报文。
三、应用举例
1,CAN总线数据记录仪
CAN总线数据记录仪相当于是一个总线通讯的黑匣子,连接在CAN总线上的数据记录仪不发送任何数据,而是默默记录下所有的总线通讯报文,然后记录到本地存储器。在需要查找错误的时候作为最原始的数据凭证起到关键的作用,在电力、车辆等行业都有广泛应用。
贝加莱支持CAN总线的PLC都可以集成CAN总线数据记录功能。只需要把ArCanReceive功能块的IDMask管脚设置成为arCAN_RECEIVE_ALL就可以实现监听所有报文。
报文记录功能也是贝加莱PLC的强项,通过FileIO库可以方便的生成并写入记录文件。数据可以记录成为txt格式的文本文件或方便数据导出和检索的csv文件。
数据记录可以存放在PLC的内部存储器或者PLC上插入的U盘,也可以通过网络存储在FTP服务器,Samba文件服务器。
2、J1939报文收发
SAE J1939是美国汽车工程协会(SAE)的推荐标准,用于为中重型道路车辆上电子部件间的通讯提供标准的体系结构。J1939基于CAN 2.0B报文进行通讯。
贝加莱的ArCanSend和ArCanReceive功能块都支持CAN2.0B报文收发,甚至支持在同一个CAN总线硬件接口同时收发CAN2.0A和CAN2.0B报文。
另外,由于J1939协议中,部分信息是通过29位的CAN ID来进行传输,所以ArCanReceive的IDMask在这里就可以用来过滤信息位,保留预设位。当然也可以直接用监听模式接收所有CAN 2.0B报文然后再判断处理。
典型的应用场合例如在AGV控制中,接收电池组的J1939信息报文。
3,通过编程实现CANopen Master
实际应用中,偶尔也会碰到部分设备无法提供EDS文件,或者对于CANopen协议兼容性差。这种情况下,贝加莱工程师通过编程方式,调用arCAN或CAN_lib库实现了CANopen Master的主站功能,可以更灵活的解决现场遇到的CANopen通讯问题。
4,通过编程实现CANopen Slave
一般情况下,CANopen Slave可以通过在PLC中插入专用的CANopen从站模块来实现,有时候由于PLC扩展不方便,或者要实现一些特殊的从站功能(比如直接替换第三方的从站),需要通过编程实现CANopen Slave功能。
通过编程实现的CANopen Slave可以实现对指定报文发送特定应答。以及自定义的对象字典等功能。
四、总结
贝加莱Automation Studio平台的CAN总线应用的主要优势是:扩展方便,底层支持强大,案例丰富。而且贝加莱还有专用于移动应用的X90系列控制器,适合用于移动车载控制。
END