Blackrose's Blog Blackrose's Blog

多主通信之CAN总线

in technologyread (120) 文章转载请注明来源!

现在做的项目,有涉及到数据的采集,所以必然要用到传感器之类的。但是,工业中数据的采集点和管理点通常不在一个地点,远距离传输就是必须的了。之前常用是485总线,一主多从,比较适合集中控制和管理。项目中的采集点比较多,数据都要上传至管理器,也会下发各种命令来控制传感器和设备。最后,选择使用CAN总线。

CAN,Controler Area Network。20世纪80年代初,德国BOSCH公司为解决现代汽车中众多控制单元,测试仪器之间的实时数据交换而开发一种串行通行协议。CAN的物理连接使用两根线,称为CANH和CANL,传输时采用差分信号的方式,连接时CANH与CANH连,CANL与CANL连接即可。协议本身对节点个数没有限制,但通常由于线缆或其它干扰原因,有使用个数的限制。每个节点与总线的加入或断开,都是动态的,不会影响现有的其它节点通迅。总线上的数据是以广播的方式来发送的,这样连接在总线上的节点都可以收到同一数据。CAN总线的数据称为报文,区分报文是靠报文ID来确定,也是唯一的标识。实际使用时,并不是总有节点都会处理所有的数据,而是通过过滤器来选择需要处理的报文。

CAN transceiver在发送数据时,同时也会接收数据。完成这个功能,使用了非破坏性仲裁的载波侦听多路访问/冲突避免(CSMA/CA,Carrier Sense Multiple Access/Collision Avoidance)。
载波侦听(CS):各个节点在发送数据前都要侦听总线的发送状态。若有通信,则等待网络空闲;若空闲,则发送准备好的数据。
多路访问(MA):如果总线空闲,多个节点可以同时访问总线,向总线发送数据。
冲突避免(CA):节点在发送数据的过程中要不停地检测发送的数据,确定是否与其它节点发生冲突,并通过非破坏性仲裁机制避免冲突。

互联网通信是靠OSI/RM的七层模型,CAN通信也有类似的结构,有三层。物理层、链路层和应用层。
物理层:MDI(Medium Dependent Interface,介质相关接口),PMA(Physcial Medium Attachment,物理介质连接),PSL(Physical Singling Layer,物理信令子层)
链路层:MAC(Medium Access Control,媒介访问控制),LLC(Logical Link Control,逻辑链路控制)

CAN的标准有两个CAN2.0A和CAN2.0B,前一个规定了CAN的标准帧,后一个增加了扩展帧。
CAN的电平有三种,CANH为3.5v、CANL为1.5v和2.5v。逻辑电平有两个,0为dominant,1为recessive。在传输中,dominant比recessive的级别高。


参考文献
CAN http://hem.bredband.net/stafni/developer/CAN.htm
陈庆霆技术专栏
SocketCAN
Low Level CAN Framework
远距离CAN通讯终端电阻策略

文章二维码

扫描二维码,在手机上阅读!

发表新评论
博客已萌萌哒运行
© 2018 由 Typecho 强力驱动.Theme by Yodu
前篇 后篇
雷姆
拉姆