摘要:介绍了CAN总线技术及特点,提出了一种基于CAN总线的温度测量节点的设计,该系统采用单片机技术和CAN总线技术实现,给出了温度测量节点的硬件、软件的设计。经实际应用,使用CAN总线的温度测量节点在信号传输的实时性、可靠性、传输距离和测量精度有着显著的提高。
关键词:CAN总线;节点;CAN通信
0 引言
CAN是Controller Area Network的缩写,即控制器局部网,通常称为CAN bus(CAN总线),是一种支持分布式控制的串行通信协议。CAN最初出现在汽车工业中,是20世纪80年代德国Boech公司为汽车的监控、控制系统而设计的,主要是解决汽车中的电子控制装置之间的通信,减少不断增加的信号线。CAN总线的直接通信距离最远可以达到10 km,此时通信速率为5 kbps以下;而通信速率最高可达1 Mbps,此时通信距离长为40 m。同时CAN总线的通信媒介采用双绞线或光纤,选择灵活,其结构较简单,总线接口芯片支持8位、16位的CPU。
由于CAN总线采用短帧结构,在标准格式中,短帧的字节数为8个,因此传输时间短,受干扰的概率低,重新发数据帧的时间短,并且每帧信息都有CBC校验及其他检错措施,这样可以保证极低的数据出错率。CAN总线上的节点在错误严重时,可以自动关闭总线的功能,使总线上的其它操作不受到影响。由于CAN总线的数据通信具有卓越的特性及极高的可靠性,因而非常适合工业过程监控设备互连,也是最有前途的现场总线之一。由于CAN总线的特点,使得其广泛地应用于电力、航空航天、治金、交通工具、机器人、医疗设备、环境监控和家用电器等众多领域。本文提出基于CAN总线的温度测量节点的设计。
1 系统总体结构设计
根据系统的设计要求,其总体设计结构如图1所示。整个系统由主站节点、分布式温度测量节点两部分组成。由于基于CAN总线的温度测量节点是一种分布式、实时的通信系统,可采用主从方式通信,其特点就是系统中任一节点设一为主站节点,其余均为从站节点,主站节点通过CAN总线与各个从站节点进行通信。我们只需设一个主站节点作为主监控器,以点对点方式进行通信,其余的从站均为各个温度测量节点。各个节点都通过CAN总线实现信号数据的连接,各个温度测量节点具有较强的独立性,具有工作可靠性、性能稳定、测量精确、安装调试方便、造价低廉等特点。
2 温度测量节点的硬件电路设计
CAN总线温度测量节点主要任务是温度采集与CAN通信,其硬件结构框图如图2所示。硬件电路由微处理器STC89C52、总线控制器SJA10 00、总线驱动器PCA82CS0和传感器DS18B20四个部份组成。微处理器负责对SJA1000和DS18B20进行初始化,通过总线控制器SJA1000实现数据的接收和发送等通信任务。
2.1 温度传感器DS18B20
DS18B20是美国DALLAS公司推出的第一片支持“一线总线”接口的温度传感器,该传感器只需一个端口引脚进行通信,就可以实现多点分布的应用,具有低功耗、高性能、抗干扰强等优点。其传感器的特性为:
(1)温度测量范围宽,能测到-55℃~125℃的温度,在-10℃~+85℃时精度为正负0.5℃。
(2)提供9—12位的测量分辩率,对应的温度精度分别为0.5℃、0.25℃、0.125℃和0.0625℃,实现了高精度的测量。
(3)接口方式独特,仅需一条信号线就可以实现与微处理器的双向通信。
(4)测量出的温度能直接转化成串行数字信号供CPU处理,同时还传送CRC校验码,具有很强的抗干扰纠错能力。
温度传感器的电路设计由单片机的引脚P3.5与传感器DS18B20的DQ脚相连,实现微处理器与传感器的双向数据的通信。同时DQ单总线外接一4.7 k的上拉电阻。温度传感器的电路图如图3所示。
2.2 CAN通信电路的设计
CAN通信电路是整个系统实现通信的关键部分,系统中各个节点和节点控制器是通过CAN通信电路接入CAN总线网络上的,实现信号数据的传输。CAN通信电路采用STC89C52处理器、PHILIPS公司的总线控制器SJA1000、NXP公司的总线收发器82C250和高速光电耦合器6N137等器件组成。在CAN通信电路中微处理器负责对SJA1000进行初始化,各信号通过CAN总线控制器实现信号数据的接收和发送等通信任务。同时为了增加CAN总线节点的抗干扰能力,更好地实现了总线上各CAN节点间的电气隔离,SJA1000的TX和RX引脚通过连接光耦6N137后再与总线收发器PCA82C250相连,总线收发器82C250的TXD和RXD分别接光耦6N137的输出OUT和输入IN端,再通过具有差动发送和接收功能的总线终端CAN_H和CAN_L连接入总线电缆中,完成通信的传输。
3 温度测量节点的软件设计
温度测量节点的软件设计包括CAN总线初始化、发送子程序及中断接收程序软件设计和温度传感器DS18B20的程序设计。其节点流程图如图4所示。
3.1 CAN初始化程序
CAN初始化即初始化CAN节点。要保证通信正确可靠则必须先对控制器SJA1000进行初始化参数设置。初始化设置是通过微处理器对SJA1 000的寄存器进行初始化,这些初始化包括控制寄存器的配置、命令寄存器的配置、状态寄存器的配置、中断管理寄存器的设置、总线定时寄存器的配置、输出控制寄存器的设置以及时钟分频寄存器的设置等。
系统上电后,对CAN初始化只有在复位模式下才可以开始,初始化设置完成后,CAN控制器就可以回到工作状态,即进入工作模式,执行正常的通信任务。CAN控制器初始化流程图如图5所示。
3.2 CAN通信电路程序
CAN总线节点要完成通信任务则还必须包括发送子程序及中断接收程序。发送子程序负责各节点报文的发送任务。发送时只需将待发送的数据信息按特定的格式组合成一帧报文,送入CAN控制器SJA1000的发送缓冲器中,启动SJA1000发送即可完成发送报文任务。在向SJA1000发送缓冲器发送报文之前,可先做一些判断,判断其是否正在接收数据、先前发送是否成功以及发送缓冲器是否锁定等等,以确保数据发送的可靠性。
中断接收程序主要是负责节点报文的接收以及其它中断情况的处理。当进入中断后要进行是否有数据的判断,以防干扰误中断。
3.3 温度传感器的程序设计
温度测量节点电路上电后也要进行初始化设置,初始化完成后,温度测量节点中的温度传感器对采集到的数据信息实时处理、现场数据实时显示,并判断采集的信息是否超过正常值,如出现异常,则报警提示并通过CAN通信电路进行通信。
4 结束语
本设计应用性很强,在实际应用中表明,其温度测量的精度和稳定性都得到很好的提高,准确地反应了工作状况和实际状况,达到了预期目标。