基于MCGS和CAN总线的粮库温湿度监测系统

2016-11-28 16:32包建华乔曦王亮宋博
江苏农业科学 2016年9期
关键词:CAN总线粮库驱动程序

包建华+乔曦+王亮+宋博

摘要:设计一种基于CAN总线网络的粮库温湿度分布式监测系统,通过安装于现场的智能CAN节点,可实现粮库多点温湿度数据的采集与变送。为解决CAN总线与上位PC机串口数据交换问题,设计了一个CAN/RS232通信转换模块。上位机可视化监控界面在通用版组态软件MCGS平台下开发,主要负责温湿度数据的显示、保存、管理以及采集的调度。对于用户自主设计的单片机应用系统,MCGS没有提供现成的底层设备驱动程序,基于MCGS脚本驱动开发工具并结合系统功能分析,开发了MCGS串口驱动构件。现场调试表明,整个系统实时性、稳定性良好,完全达到设计要求。

关键词:粮库;温湿度;MCGS;CAN总线;驱动程序

中图分类号: TP273 文献标志码: A

文章编号:1002-1302(2016)09-0394-03

粮食储藏是国家备战备荒的重要战略举措,粮库粮情监测是科学保粮的关键措施之一[1]。而温湿度是影响仓储过程中粮食品质的主要因素,因此,如何快速、准确地检测粮库的温度和湿度并及时进行处理,对粮食的安全储藏意义重大。早期粮库温湿度参数常采用人工方法来进行检测,用到的检测手段有双金属温度计、毛发湿度计、干湿度表和湿度试纸等,这些方法效率低、劳动强度大且测量精度低[2]。1998年以来,国家启动粮食储备仓库建设,工程先后分为3批,粮食储备规模超过250亿kg。目前,对于粮情监测,各大粮库相继采用以计算机为核心的网络监控系统,但从实际运维情况看,仍有进一步改进的空间。

为解决汽车中众多控制与测试仪器之间的数据交换问题,德国博世(Bosch)公司于20世纪80年代开发了控制器局域网CAN(controller area network),这是一种有效支持分布式控制系统的串行通信网络,它属于现场总线的范畴。相比于传统的RS-485总线,CAN总线主要特点表述如下[3]:

(1)多主技术。网络上的任一节点不分主从,可在任意时刻主动地向其他节点发送信息,同时,发送的节点信息具有不同的优先级,以满足不同的实时性操作需要。

(2)高可靠性。节点在发生严重错误时,通过自动关闭其输出来断开与总线的联系,保证了总线上其他节点的正常操作。

(3)完善的错误监测机制。采用短帧结构,每1帧的有效字节数为8个,短帧传输时间短,受干扰概率低;每帧信息都有CRC校验及其他检错措施,保证了数据的出错率极低。

上述优良特性使得CAN总线广泛应用于汽车工业、工业控制、航空工业、现代农业、医疗器械及楼宇自动化等领域,CAN总线已被公认为最有前途的现场总线之一。本研究中的粮库温湿度分布监测系统信息传输就是基于CAN总线串行通信网络。

MCGS(monitor and control generated system)是北京昆仑通态自动化软件科技有限公司开发的通用版组态软件,它提供了监控层的软件平台和开发环境,其灵活的组态方式,可使用户快速构建专业级的可视化监控系统。为了提高粮情监测系统的可靠性,增强粮情监测功能,本研究设计了基于MCGS和CAN总线的粮库温湿度分布式监测系统。

1 系统总体方案

为实现某大型粮库多点温湿度检测目的,设计了一种基于CAN总线网络的分布式监测系统。布放于各测量现场的CAN节点结构完全相同,主要由现场单片机、集成温湿度传感器、独立CAN控制器、CAN总线驱动器组成,现场单片机主要负责温湿度数据的采集并将数据传送至CAN总线。CAN/RS232通信转换模块主要包括管理单片机、独立CAN控制器、CAN收发器、MAX232核心芯片,管理单片机主要负责CAN节点与上位PC机(以下简称上位机)间的通信联络控制。

上位机主要负责温湿度数据的保存、显示、管理以及采集的调度,其可视化监控界面基于MCGS平台开发,上位机与管理单片机之间通过RS232串行口互换数据,笔者通过MCGS平台下的串口驱动构件开发,可以实现组态软件MCGS与管理单片机间的软件通信功能。系统总体框图如图1所示。

2 系统硬件设计

系统中硬件电路设计主要包括单片机与温湿度传感器的接口电路设计、CAN总线接口电路设计、RS232接口电路设计。现场单片机和管理单片机都选用宏晶公司的增强型8位单片机STC89C52,RS232接口电路简单通用,而传感器接口电路和CAN总线接口电路设计如下。

2.1 温湿度采集电路

系统中选用的AM2311是一款含有已校准数字信号输出的温湿度复合传感器,其敏感元件包括1个电容式感湿元件和1个高精度测温元件,并与1个高性能8位微处理器相连接。成品化传感器都通过严格的湿度校验室校准,校准系数储存于微处理器的存储单元中,以供传感器内部在处理检测信号时调用,测量精度高,抗干扰能力强。通信接口采用标准I2C接口模式,可直接挂接于I2C总线上,无需额外布线。

AM2311具有4个引脚,与单片机接口连接方便。系统中AM2311与现场单片机的接口电路如图2所示,SCL为串行时钟引脚,与STC89C52单片机的P3.5管脚相连,用于相互间数据通信同步,SDA引脚内部为三态双向结构,与STC89C52的P3.4相连,用于读、写传感器数据。

2.2 CAN总线接口电路

CAN总线接口是所有设备或其他网络连接到CAN总线的桥梁,负责CAN协议的解释与执行,并为CAN节点中的微处理器提供CAN总线的状态信息。

本研究的CAN总线接口电路主要由SJA1000芯片和PCA82C250芯片构成。SJA1000由NXP半导体公司推出,它是一种独立CAN控制器,可以工作于BasicCAN和PeliCAN这2种协议,BasicCAN支持CAN2.0A协议,PeliCAN支持具有很多新特性的CAN 2.0B协议,位速率可达1 Mbit/s,拥有完善的错误管理机制,能够实现CAN协议中最复杂的数据链路层功能,微处理器通过对SJA1000编程设置其工作方式,控制其工作状态,启动CAN报文的发送并对反馈的报文予以接收。PCA82C250是CAN控制器与CAN总线之间的接口芯片,它一方面为CAN控制器提供差分信号的接收功能,同时为CAN总线提供差分信号的发送功能,PCA82C250属于高速CAN总线驱动器[4]。

CAN总线接口电路的原理图设计见图3。STC89C52单片机负责数据处理和SJA1000的初始化,并通过SJA1000的1组控制寄存器和1个RAM报文缓冲器实现数据收发功能。SJA1000的AD0~AD7连接到STC89C52的P0.0口,片选/CS端连接到STC89C52的P2.0,对应的CPU片外存储器基址为0xFE00,在此情况下STC89C52可以对SJA1000进行访问的地址范围为0xFE00~0xFE31。SJA1000的/RD、/WR、ALE分别连接至STC89C52的相应引脚,/INT接STC89C52的/INT1,STC89C52可在中断服务程序中访问SJA1000。SJA1000的复位端/RST为低电平有效,其接STC89C52的P2.7口。

PCA82C250的CANH和CANL引脚分别通过1个5 Ω的限流电阻与CAN总线相连,以降低过流对PCA82C250的影响,CANH、CANL与地之间各自连接了1个30 pF的小电容,以起到滤除CAN总线上高频噪声的作用。PCA82C250的RS端通过47 kΩ电阻接地,使其工作于斜率控制方式。

3 系统软件设计

软件设计主要包括温湿度数据采集、CAN总线通信、MCGS串口驱动以及上位机组态等。CAN总线通信程序和MCGS串口驱动程序是本系统软件设计中的核心与关键,设计思路如下。

3.1 CAN总线报文收/发程序

CAN总线通信程序设计包括CAN节点初始化、CAN总线报文发送程序设计和CAN总线报文接收程序设计。CAN通信前首先需要对SJA1000进行初始化参数设置,与初始化有关的寄存器有:总线定时寄存器BTR、中断使能寄存器IER、时钟分频寄存器CDR、输出控制寄存器OCR。CAN初始化只能在复位模式下进行。初始化完成后,CAN控制器就可以设置进入工作模式,执行正常的通信任务,需要用到SJA1000的命令寄存器、状态寄存器、中断寄存器、接收缓冲区、发送缓冲区等。CAN总线的通信任务程序包括报文发送子程序及报文中断接收子程序[5]。

为使程序结构紧凑,CAN总线通信软件设计中定义了1个结构体struCAN_Comm,其成员变量有:报文ID、报文性质(远程帧或数据帧)、报文长度、报文类型(扩展帧或标准帧)。根据输入参数配置该结构体,是发送子程序的主要任务。在向SJA1000发送报文之前,首先需要判断其是否正在接收数据、上次发送是否成功以及发送缓冲器是否锁定等,以保证数据发送的可靠性[5]。填充报文结构体是中断接收子程序的主要任务,为防止干扰引起错误中断,需要在进入中断服务程序后先判断接收缓冲区是否有数据。报文发送和报文接收的程序流程分别如图4和图5所示。

3.2 MCGS串口驱动构件开发

目前,MCGS串口驱动构件开发有2种途径,一种是MCGS软件厂商提供了1套开放的、可扩充的接口规范和配套的高级开发工具包,允许用户根据自己的需要来开发设备驱动构件,另一种提供配套的MCGS脚本驱动开发工具实现用户个性化开发。脚本驱动开发屏蔽了大量技术细节且步骤标准,因此本研究的MCGS串口驱动构件开发采用了第2种途径,具体开发内容涉及设备属性定义、设备通道添加、设备命令编写和设备脚本代码编辑。

设备属性定义了串口驱动构件添加到MCGS通用串口父设备后显示的属性,包括设备名称、注释、数据采样周期等参数,此处选用默认参数。设备通道是现场设备与MCGS实时数据库中的数据对象间信息沟通的桥梁。设备命令为现场设备与MCGS系统之间的方法接口,它利用MCGS脚本开发环境下提供的强大库函数,通过编程设置可以方便地实现数据解析、数据处理、与MCGS系统的数据交换等功能,设备命令类似于系统的功能子函数[6-7]。设备脚本包括采集脚本、单通道写脚本、初始化脚本、退出脚本等。

为保证数据通信正常,本研究串口驱动构件的开发采用ACSⅡ码通讯协议(字符型协议),其格式为:“@” +“xx” + “command”。“@”是帧头,长1个字符;“xx”是设备地址,固定长2个字符;“command”表示设备命令,由MCGS系统关键字确定。下面以1#CAN节点的温湿度检测为例,给出其采集脚本代码。

4 系统调试与运行

管理单片机通过串口和上位机交换数据,其外接晶振频率为11.059 2 MHz,在单片机的初始化程序中编写语句TH1=0xFD、SMOD=0,可获得9 600 bps的通信波特率,该波特率误差率恰好为0,串口通信的可靠性大大提高[8]。基于MCGS脚本驱动开发工具设计好的程序以mdr格式保存,将此文件拷贝到D:\MCGS\Program\Drivers的目录下,通过在MCGS组态环境下的设备窗口中添加该串口驱动构件,能够实现MCGS与管理单片机之间的通信。

在MCGS组态环境中新建“粮库温湿度监测系统.MCG”工程,按照粮库温湿度监测系统功能要求,遵循通用版组态软件MCGS的组态方法,完成系统上位机可视化监控界面的开发工作。所有组态工作完成后,按“F5”键进入MCGS运行环境,系统上位机运行主界面如图6所示。

5 结论

设计的粮库温湿度监测系统采用分布式结构,通过布置于现场的智能CAN节点,可以实现粮库不同监测点温湿度数据的采集与变送。考虑到目前商用PC机一般不具备CAN通信接口,设计了1个CAN/RS232通信转换模块,用以实现CAN总线数据和RS232串口数据间的互换[9]。上位机统一监测界面基于MCGS平台开发,人机交互友好。MCGS与底层单片机之间的通信驱动程序需要用户自己开发,为此,笔者基于MCGS脚本驱动开发工具开发了MCGS串口驱动构件,现场调试表明,MCGS与单片机之间数据通信稳定可靠,实时性高。

参考文献:

[1]王永志,刘媛媛. 大型粮库的温湿度监测报警控制系统[J]. 农机化研究,2008(8):167-169.

[2]袁 江,曹金伟,邱自学,等. 基于WSN的粮库温湿度无线监测系统[J]. 测控技术,2012,31(4):77-81.

[3]饶运涛,邹继勇,王进宏,等. 现场总线CAN原理与应用技术[M]. 北京:北京航空航天大学出版社,2007.

[4]卢 超. 基于CAN总线分布式矿井温湿度监测系统研发[J]. 煤炭科学技术,2011,39(9):94-99.

[5]邓德源,王成栋,苗 强. 基于CAN总线的温湿度在线监测系统设计[J]. 仪表技术与传感器,2012(12):40-42.

[6]黎志刚,王俊元,刘 波. 基于MCGS的SMC电动执行器控制方法研究[J]. 制造业自动化,2014,36(7):16-18.

[7]朱 林,李兰云. 嵌入式系统在稀土萃取流量控制中的应用[J]. 自动化仪表,2013,34(3):34-37.

[8]包建华. 基于MCGS的步进电机控制系统设计[J]. 计算机测量与控制,2012,20(3):702-704.

[9]王 强,张建喜. RS232通信网络与CAN总线通信网络互联设计[J]. 电子技术应用,2010,36(9):158-160.

猜你喜欢
CAN总线粮库驱动程序
粮库竣工
粮库里的机器人
计算机硬件设备驱动程序分析
智能化粮库现场见闻
我为抗日政府管粮库
基于嵌入式的汽车辅助制动系统研究
基于MPC8280的CPU单元与内部总线驱动程序设计