第一文秘网    > 演讲致辞

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

作者:jnscsh   时间:2022-04-16 08:44:05   浏览次数:

zoޛ)j馐4 
O 
c###/H 
S?niM6}6Mz77u_}}H?hv�(WjpK9wuvwiB�Ѐ7i0!ⶊڝ(zy2צ0!4 
B�Ѐ4 
`4 
0`4𿦓$R}ddvB�R}I0.vE- 
vi�ͷ]u6@3m׀}u I0.v?~RBci`7iB�Ѐ4 
5工作于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.

推荐访问:粮库 温湿度 总线 监测系统 MCGS