欢迎来到天天文库
浏览记录
ID:40547899
大小:427.17 KB
页数:11页
时间:2019-08-04
《CAN&CANopen学习笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、PART1——CAN1CAN基础知识CAN总线是一种通用的串行通信协议,包含OSI网络模型中的物理层和数据链路层,全部通过硬件来实现。CAN总线不分主从,每个节点只要需要,都可作为主站,向网络上其他节点发送信息。物理层主要是通过CAN收发器来实现。1.1CAN收发器CAN收发器安装在CAN控制器内部,负责逻辑信号和电信号的转换,也即信息的收发。将逻辑信号转为电信号,并将其送入传输线;或者,将传输线的电信号转为逻辑信号。传输线跟电线一样,分一高一低,即CANH和CANL。TIPS:电信号,指随着时间而变化的电压或电流CAN收发器如图1.1
2、所示。由一个电路进行控制,也意味着控制单元的某个时间段只能进行一个操作,收或者发。VDD图1.1收发器原理图开关闭合输出低电平,用逻辑“0”来表示,即显性电平;开关断开输出高电平,用逻辑“1”来表示,即隐性电平。当总线上连接有多个节点时,只要其中1个节点输出低电平,则总线激活,总线电平为低电平;总线上所有节点都输出高电平时,总线电平才为高电平,此时总线未激活。原理如图1.2所示。VDDVDDVDD图1.2多节点收发器原理图1.2CAN总线终端电阻CAN网络中,网络的源端(起始节点)和末端需各安装一个终端电阻。注:上图所示电阻并非终端电阻
3、。有两种接法,一般采用左图接法,如图1.3所示,左边高速,右边低速。主要作用是:提高总线抗干扰能力提高信号质量。通过终端电阻来消除在通信电缆中的信号反射,在通信过程中,有两种原因导致信号反射:阻抗不连续和阻抗不匹配。阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射。数据收发器与传输电缆之间的阻抗不匹配,这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱,为了提高网络节点的拓扑能力,CAN总线两端需要接有120Ω的抑制反射的终端电阻。图1.3两种终端电阻接线方式1.3CAN报文C
4、AN总线的报文有5种类型,数据帧、远程帧、错误帧、过载帧和帧间隔。只介绍数据帧和远程帧。1)数据帧有两种格式,即标准帧和扩展帧。帧结构如图1.4所示。以标准帧为例,详细介绍如下:帧起始仲裁段控制段数据段CRC段ACK段帧结束图1.4帧结构图帧起始:由单个显性位“0”组成,即总线激活。仲裁段:有CANID和RTR位组成。对于标准帧,CANID为11位(扩展帧29位),通过此CANID来规定数据帧的优先级。RTR位,远程帧发送标识位,为1代表是远程帧,数据帧此位为0。控制段:IDE+1个保留位+DLC,DLC表示数据段长度。数据段:标准帧数
5、据段长8个字节。CRC段:CRC校验值存在此段。ACK段:当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平帧结束:每个数据帧和远程帧均由7个隐性位“1”来标志该帧结束。2)远程帧当一个节点想要获取另一个节点的数据时,就发送远程帧来请求数据。CAN协议中,未在CANID中定义目标节点ID。此部分由应用层协议定义,如CANopen。另远程帧需指定数据长度。与数据帧的唯一区别是无数据段,也分为标准帧和远程帧两种格式。1.4数据链路层数据链路层由CAN控制器实现,负责以下操作:LLC:接收报文的选择
6、过载通知错误恢复MAC:数据的打包拆包帧编码错误检测及通知串并行转换PART2——CANopen1CANopen基础知识CANopen,一种架构在CAN上的高层通信协议,协议由通信子协议和设备子协议组成。两个协议均包含在对象字典(OD)中,如下图,对象字典中的对象通过16位的索引及8位的子索引来定位。OD对象列表CANopen完全基于CAN标准报文格式,细化了对CAN报文11位标识符的定义,其中高4位定义为功能码,后7位为节点ID。功能码标识报文类型,主要类型有NMT、SYNC、PDO、SDO等,且给报文定义了优先级,如下:N
7、MT→SYNC→EMERGENCY→TIME→PDO→SDO→NMTErrControl1.1SDOServiceDataObject,服务器数据对象,主要用于对OD进行读写。一发一回模式,主站发送请求帧,从站回复应答帧。写主站发送报文:600H+NodeIDCsIndexSubindexData(1Byte)(2Bytes)(1Byte)(4Bytes)Cs命令字随数据长度(DL)的变化而变化:当DL=1时,CS=2F;DL=2时,CS=2B;DL=3时。CS=27;DL=4时,CS=23;Ifsuccess,从站返回:600H+N
8、odeID60IndexSubindex00000000(2Bytes)(1Byte)Iffailed,从站返回:580H+NodeID80IndexSubindexErrorCode(2Bytes)(1B
此文档下载收益归作者所有