基于CAN总线的家庭控制器的设计与实现
扫描二维码
随时随地手机看文章
引言
CAN(Controller Area Network)总线是德国Bosch公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维,通信速率可达1Mbps,通信距离可达10km,CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码,使网络内的节点个数在理论上不受限制。由于CAN总线具有较强的纠错能力,支持差分收发,因而适合高干扰环境,并具有较远的传输距离。因此,CAN协议对于许多领域的分布式测控是很有吸引力的。目前CAN已成为ISO11898标准,其特性如下:
(1)CAN是一种有效支持分布式控制和实时控制的串行通信网络。
(2)CAN协议遵循ISO/OSI模型,采用了其中的物理层、数据链路层与应用层。
(3)CAN 可以多主方式工作,本质上也是一种CSMA/CD方式,网络上任意一个节点均可以在任意时刻主动地向网络上的其它节点发送信息,而不分主从,节点之间有优先级之分,因而通信方式灵活;CAN采用非破坏性位仲裁技术,优先级发送,可以大大节省总线冲突促裁时间,在重负荷下表现出良好的性能;CAN可以点对点、一点对多点(成组)及全局广播等几种方式传送和接收数据。
(4)CAN的直接通信距离最远可达10km(传输速度为5 Kbps);最高通信速率可达1Mbps(传输距离为40m)。
(5)CAN上的节点数据实际可达110个。
(6)CAN数据链路层采用短帧结构,每一帧为8个字节,易于纠错;CAN每帧信息都有CRC校验及其它检错措施,有效地降低了数据的错误率;CAN节点在错误严重的情况下,具有自动关闭的功能,使总线上其它节点不受影响。
(7)信号调制解调方式采用NRZ编码/解码方式,并且采用插入填充位(位填充)技术。
(8)数据位具有支配“0”(Dominant bit)和退让“1”(Recessive bit)两种逻辑值,采用时钟同步技术,具有硬件自同步和定时时间自动跟踪功能。
基于CAN总线的家庭控制器总线设计方案
在进入信息化时代的今天,人们对于居住环境中的安全性、舒适性要求已越来越高,建立住宅小区计算机管理局域网,实现小区综合管理的网络化势在必行。通过遍布于整个住宅区的家庭控制器和中央计算机系统,实现对住宅的智能化管理。
图 1是基于CAN总线的总体结构示意图,系统采用支持CAN标准的总线型网络。中央计算机系统(上位机PC)通过CAN接口适配卡与CAN总线相连,进行数据交换。通过双绞线把中央计算机系统和家庭控制器(下位智能节点)挂接在一条总线上,构成低层通信网络。由于采用了CSMA/CD的信息传输控制技术,允许总线上各节点平等争用总线,从而可构成具有多主节点的冗余网络结构。
在低层通信网络中,中央计算机系统和家庭控制器分别有自己的ID标志。由于采用CAN标准作为网络通信协议,各节点在网络中的地位相同,于是我们可以将中央计算机系统虚拟成主机,而家庭控制器则虚拟成从机,响应主机的要求。中央计算机系统负责对整个CAN总线系统进行监视管理,具有系统参数(如传输速率、节点地址等)设置、数据发送、数据请求、本机状态查询、节点状态查询、中断状态查询等功能。系统工作过程为上位机向下位节点(家庭控制器)发送命令,下位节点识别并执行相应命令。同时各下位节点也可按要求进行信息交换。
在数据链路层中,规定了支持CAN协议的两种帧类型:数据帧和远程帧。数据帧用来发送数据,用于一个节点传送信息到其它任一或所有节点;远程帧用来“远程发送请求”,用于一个节点主动要求其它节点发送信息,两种帧的具体格式如图2所示。
硬件电路设计
家庭控制器硬件设计
本系统是由许多智能家庭控制器通过CAN总线相连而组成的一个控制器局部网,因此,CAN总线的设计就显得极为重要。其中,CAN控制器的选取、CAN收发器以及抗干扰措施将成为设计的关键。
①CAN控制器的选取
为了系统进一步扩展的需要,可选取支持CAN2.0B通信协议的SJA1000。SJA1000是PHILIPS公司最新生产的既支持CAN2.0B又支持 CAN2.0A的CAN控制器,它与仅支持CAN2.0A的CAN控制器PCA82C200在硬件上和软件上完全兼容。
②CAN收发器
PCA82C250是PHILIPS公司的CAN控制器和物理总线间的接口,提供对总线的差动发送和接收能力。它与ISO11898标准完全兼容,有三种不同的工作方式即高速、斜率控制和待机,可根据实际情况选择。
③光电隔离
为了进一步提高系统的抗干扰能力,在控制器SJA1000和收发器PCA82C250之间增加了由高速隔离器件6N137构成的隔离电路,电源采用DC-DC变换器。
硬件电路中使用PCA82C250是为了增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI),实现热防护等。
CAN器件与微处理器的硬件结构图如图3所示。
CAN接口适配卡和CAN总线中继器
CAN接口适配卡完成CAN-PC总线的通信。适配卡由单片机89C51、CAN控制器SJA100、CAN收发器89C250及其控制电路组成。
由于CAN收发器的限制,在一个CAN总线网络中,最多只能有110个CAN节点,最多只能有110个CAN节点。利用中继器可对CAN总线进行扩展,不但可使CAN节点总数达到2032个,而且可使CAN通信距离成倍增加,同时也可以把两个不同速率的CAN网连接在一起,组成更复杂的CAN网络。
中继器采用特定的控制逻辑控制一对CAN收发器82C250.CAN收发器背-背相接,连接两个物理上独立的CAN网,双向传输数据。从物理层上看,中继器实现CAN总线信号的透时中继。
软件设计
上位机软件
采用Visual Basic 6.0开发软件。分两大功能模块:高层系统管理模块和低层通信模块。程序流程图如图4所示。
家庭控制器(节点)软件
实现与上位机及其它节点的信息交换。
在软件设计中, 遵循模块化设计思想,采用结构化程序设计方案,使之具有良好的模块性、可修改性和可移值性。
CAN总线系统的初始化设计是软件设计的关键,这一部分设计不好,系统将不可能正常工作。因此初始化设计是一个难点,又是一个重点。
在初始化之前,应设置输出控制寄存器(OCR)的复位请求位为高,再设置其它寄存器。控制寄存器(CR)设定中断;命令寄存器(CMR)控制缓存器的接收状态;中断寄存器(IR)、状态寄存器(SR)查询SJA1000的工作状态;接收码寄存器(ACR)设定工作地址;接收屏蔽寄存器(AMR)设定工作形式,总线定时寄存器(BTR0、BTR1)设定工作频率、采样频率;输出控制寄存器(OCR)一般为正常输出方式,最后应使复位请求位从高变低,使CAN 控制器进入正常工作状态。因此,对CAN控制器进行初始化,实际上就是对ACR,AMR,BTR0,BTR1和OCR这些寄存器进行访问。
成功地初始化SJA1000后,系统就可以应用它来传输报文。
结语
CAN总线以其高性能、高可靠性及其独特的设计越来越受到人们的重视,并被公认为最有前途的总线之一。我们在家庭控制器系统中应用了这种总线技术,设计了硬件电路和软件,并得到实际应用。