关键词:CAN总线 气象监测 P87C591 I2C总线
果树的生长受自然环境和人为因素的影响,其中果园中的气象条件对果树的生长、结果和寿命影响很大。果园的气象条件分温度、土壤的水分、光照以及风力的强弱。所以,通过监测果园的气象条件,及时地以人为因数改善果树的生长条件,已成为影响果农收入的关键问题。
CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作,通信速率可达1MBPS。作为一种分散式、数字化、双向多点、具有高速率高可靠性特点的通信系统,CAN总线可以构建灵活的多主通讯机制,也可以建立主从式结构,而且这两种方式下的硬件物理联接完全相同。
1 系统的总体方案设计及工作原理
运用CAN总线构建分布式的果园气象监测网络系统,采用主从式结构。系统结构如图1所示。本系统由上位监控PC机、CAN总线适配器和现场监测节点三部分组成,节点数量可根据果园的规模增减。
上位监控PC机采主要负责对监测系统气象数据的接收与管理、控制命令的发送以及各监测节点工作状态的实时显示;CAN总线适配器可以使PC机方便地连接到CAN总线上,本系统采用USB-CAN总线适配器;监测节点以单片机P87C591为核心,主要负责对现场的气象数据进行采集,对采集来的数据进行数字滤波求平均值处理并将处理过的数字信号送入CAN总线。同时监测节点也接收来自上位机的控制命令参数。本系统通信可靠、快捷,硬件电路设计和软件编程简单,能较好地满足对果园气象条件长期准确监测的要求。
2 气象监测节点的设计
2.1 P87C591的特点
节点硬件电路以PHILIPS 8位单片机P87C591为核心。P87C591从80C51微控制器家族派生而来,带硬件I2C总线接口和CAN总线接口,带6路模拟输入的10位ADC,可选择快速8位ADC。
P87C591包含了PHILIPS半导体SJA1000 CAN控制器强大的PeliCAN功能,并在此基础上扩展了以下功能:①增强的CAN接收中断,有接收缓冲区级的接收中断;用于接收中断的高优先级验收滤波器。②扩展的验收滤波器,8个滤波器用于标准帧格式,4个滤波器用于扩展帧格式;验收滤波器的“运行中可改变”特性。
80C51 CPU接口将PeliCAN与P87C591微控制器内部总线相连,连接原理如图2 所示。80C51核通过5个特殊功能寄存器CANADR(地址寄存器),CANDAT(数据寄存器),CANMOD(模式寄存器),CANSTA(状态寄存器)和CANCON(命令寄存器)对PeliCAN进行访问。通过CANMOD 可对PeliCAN模式寄存器进行直接的读/写访问;通过写入CANCON 对命令寄存器进行访问;通过读CANCON 对中断寄存器进行访问;通过CANSTA 寄存器可对中断使能寄存器进行写操作;访问CANSTA 可位寻址并允许单个状态位的直接寻址,这对查询很有用。
所有其它的CAN 寄存器都需要进行间接寻址。CANADR 寄存器指向PeliCAN 寄存器的地址。在写操作时,将要送到被寻址寄存器的数据写入CANDAT; 读操作时被寻址寄存器的数据可从CANDAT 中读出。
2.2 节点硬件电路设计
现场需要采集四路不同的气象信息,故将四路采集通道分别和P87C591 的P1.2、P1.3、P1.4和P1.5相连。这四个管脚除了作一般的I/O口以外,同时也是ADC输入通道。
由于电路对数据是采用多次采集再取平均值的处理方法,故使用存储器6264作为数据采集过程中的暂存区。
PCF8563是一款低功耗的CMOS实时时钟/日历芯片,用于向电路提供定时中断信号以及数据采集的精确时间信息,包括年、月、日、时、分、秒。 PCF8562是一款单片LCD控制器/驱动器。它们都具有I2C总线接口,在节点电路中,与P87C591的I2C总线接口相连,构成串行传输结构,大大简化了电路的设计。
监测节点在现场采集到水分、温度、光照和风力数据后,将通过CAN总线传给上位监控PC机。P87C591 的P1.0和P1.1口被复用为CAN接收器的输入脚和发送器的输出脚。这两管脚经收发器PCA82C250连到CAN总线电缆上。PCA82C250 收发器是CAN协议控制器和物理传输线路之间的接口。节点硬件电路如图3所示。
3 监测节点软件设计
监测节点软件除了初始化P87C591及其外围器件外,还有两项任务需要完成:一是定时产生中断,实施对各传感器的采样与数据处理,并向上位机上传数据。二是中断接收上位机的控制参数命令。其中在定时采集中断任务中对所需数据采用多次采集求平均值的方法,同时从时钟芯片读取采集开始时间和结束时间,最后一起送LCD显示及上传给上位机。
P87C591内部的CAN控制器必须在上电或硬件复位后进行相应的初始化处理。初始化主要包括工作方式的设置,接收收滤波方式的设置,接收屏蔽寄存器和接收代码寄存器的设置,波特率参数设置和中断允许寄存器的设置等,在完成初始化设置以后就可以回到工作状态进行正常的通信任务。图4为CAN控制器初始化流程图。
监测节点程序流程框图如图5。在没有采集任务或要求接收控制参数时,P87C591进入空闲模式。当一旦出现定时采集中断或接收控制参数中断时,P87C591退出空闲模式,进入相应的中断服务程序。
4 结束语
本文作者创新点:在基于CAN总线的分布式测控系统节点的设计中,就如何利用P87C591丰富的片上集成资源,简化数据采集监测节点的电路设计,提出了一个良好的设计方案。对于类似的分布式监测系统节点的设计有着很好的借鉴作用。
参考文献
[1] P8xC591_useIN_CAN . www.zlgmcu.com
[2] 饶运涛 邹继军 郑勇芸 编著. 现场总线CAN原理与应用技术. 北京:北京航空航天大学出版社出版发行,2003
[3] 王博 蒋云峰 刘杰. 基于CAN总线的网络监控系统. 微计算机信息 2004年第三期