邵丙新
摘要:文章介绍计算机通过CAN总线技术实现的计算机数据采集、温湿度测量和控制技术,重点简介CAN总线的特点、数据格式、报文和滤波器的设置。
关键词:CAN总线;计算机远程控制;设计应用
现代化工业生产和商品销售中离不开信息技术,无论是分散式还是集中式生产经营活动都需要信息的参与。大型企业的自动化生产技术和信息通信的结合得更加紧密。CAN总线技术以其可靠性高,抗干扰能力强,应用灵活、方便等特点得到广泛的应用。本文介绍CAN在计算机远程信息传送和控制中的应用。
1 CAN总线技术概述
CAN(Controller Area Net)即控制器局域网是主要用于各种过程(设备)监测及控制的一种网络。CAN最初是则德国BOSCH公司为汽车的监测、控制系统而设计的。CAN的信号传输采用短帧结构,每一帧的有效字节数为8个,因而传输时间短,受干扰的概率低。当多个节点同时向总线传送数据时,它采用总线仲裁机制,高优先级的节点优先发送,优先级低的节点停止发送,从而不免总线冲突。由于CAN具有卓越的特性极高的可靠性,特别适合于工业过程中监控设备的互连,因此,越来越受到工业界的重视。
2 CAN总线报文和帧类型
2.1 CAN报文:CAN是以报文的形式传输信息的,报文包括ID号和数据场两个部分,标准ID号是11位的,扩展ID号是29位,数字场可以是1-8个字节的数据。报文以帧的形式传输。CAN的报文可以是一对一传输,也可以多对一或一对多的形式,这取决于CAN节点滤波器的设置。CAN总线中传送的报文是以帧的形式出现的,每帧由7部分组成。CAN协议支持两种报文格式,即标准格式和扩展格式。两者的区别是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (ro),为将来扩展使用。它的最后四个字节用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。
2.2 CAN的帧结构和功能位的定义:
CAN有以下四种不同类型的帧:
(1)数据帧(DATA):数据帧将数据从发送器传输到收发器。
(2)远程帧(Remote):总线单元发出远程帧,请求发送具有同一标识的数据帧。
(3)错误帧(Error):任何单元检测到总线错误就发出错误帧。
(4)过载帧(Overload):过载帧用在相邻数据帧或远程帧之间提供附加的延时。
数据帧或远程帧与前一个帧之间都会有一个间隔域,即帧间隔,作为一个帧的界定。数据帧和远程帧可以使用标准帧及扩展帧两种格式。
在报文传输时,不同的帧具有不同的传输结构,下面将分别介绍四种传输帧的结构,只有严格按照该结构进行帧的传输,才能被节点正确接收和发送。
2.2.1 CAN数据帧结构
数据帧是携带数据由发送器至接收器的帧,是CAN的4种帧格式之一,这4种帧格式分别是数据帧、远程帧、出错帧和超载帧。
数据帧的主要结构有:
(1)帧起始:帧起始(SOF)标志着数据帧和远程帧的起始,仅由一个“显性”位组成。在CAN的同步规则中,当总线空闲时(处于隐性状态),才允许站点开始发送(信号)。所有的站点必须同步于首先开始发送报文的站点的帧起始前沿(该方式称为“硬同步”)。
(2)仲裁场:由11位标识符(ID10~ID0)和 远程发送请求位(RTR)组成,RTR位为显位表示数据帧,隐位表示远程帧。标识符由高至低次序发送,且前7位 (ID10~ID4)不能全为隐性位,标识符用于提供关于传送报文和总线访问的优先权信息,其数值越小,表示优先权越高,发生冲突时优先发送。
(3)控制场:由6位构成,前2位为保留位,为显性, 后4位为数据长度码;(DLC),表示数据场中数据的字节数,必须在0~8范围内变化。
(4)数据场:由被发送数据组成,数目为控制场中决定的0~8个字节,第一个字节的最高位首先被发送。
(5)CRC场:包括CRC(循环冗余码校验)序列(15位)和CRC界定符(1个隐位),用于帧校验。
(6)ACK场:由应答间隙和应答界定符组成,共两位。
(7)帧结束:由7位隐性位组成,此期间无位填充。
2.2.2 CAN远程帧结构
远程帧也有标准格式和扩展格式,而且都由6个不同的位域组成:帧起始、仲裁域、控制域、CRC域、应答域、帧结尾。与数据帧相比,远程帧的RTR位为隐性,没有数据域,数据长度编码域可以是0~8个字节的任何值,这个值是远程帧请求发送的数据帧的数据域长度。当具有相同仲裁域的数据帧和远程帧同时发送时,由于数据帧的RTR位为显性,所以数据帧获得优先。发送远程帧的节点可以直接接收数据。
2.3 CAN 报文滤波器设置
CAN 报文滤波器是基于PHILIPS 公司CAN 控制器SJA1000 的PeliCAN 模式来进行设计的。SJA1000 的滤波器由4 组(4 字节)验收代码寄存器(ACR)和4 组(4 字节)验收屏蔽寄存器(AMR)构成。ACR 的值是预设的验收代码值,AMR 值是用来表征相对应的ACR 值是否用作验收滤波。
但是在SJA1000 的某些模式下,滤波器的某些寄存器没有用到,为了使用方便,所以在配置软件中使用的是直接ID号进行滤波设置和屏蔽,摒弃一些无关的内容。
滤波的一般规则是:每一位验收屏蔽分别对应每一位验收代码,当该位验收屏蔽位为1的时候(即设为无关),接收的相应帧ID 位无论是否和相应的验收代码位相同均会表示为接收;但是当验收屏蔽位为0 的时候(即设为相关),只有相应的帧ID 和相应的验收代码位值相同的情况才会表示为接收。并且只有在所有的位都表示为接收的时候,CAN 控制器才会接收该帧报文。
滤波的方式上又分“单滤波”和“ 双滤波”两种。并且在标准帧和扩展帧情况下滤波又略有不同。在配置软件的“自定过滤屏蔽码”的情况下开放滤波器所有功能。
3 总体设计
电路如图3-1所示,计算机通过USB转CAN将数据传输的总线,在总线上连接N个节点,每个节点都有一个唯一的ID号,并通过传感器进行温湿度的测量,其结果通过总线传给计算机。计算机根据数据变化向节点发出指令,以实现温湿度控制。根据CAN技术规范,节点数可达110个,有最大效传输距离能达到10000米。
4 结束语
多点数据的传输,在各点同时传送时,经常出现数据冲突,使得网络瘫痪,利用CAN总线技术,利用CAN的仲裁功能,能避免数据在传输中发生拥堵。同时,CAN总线纠错能力强,传输距离远,实时性好,抗干扰能力强,所以利用CAN总线技术实现计算机远程控制是一个理想的方案。