多点温度检测系统上位机软件设计与编程.docx
《多点温度检测系统上位机软件设计与编程.docx》由会员分享,可在线阅读,更多相关《多点温度检测系统上位机软件设计与编程.docx(37页珍藏版)》请在冰点文库上搜索。
![多点温度检测系统上位机软件设计与编程.docx](https://file1.bingdoc.com/fileroot1/2023-5/21/461520ce-e5b3-49f3-9bc1-f19b57490109/461520ce-e5b3-49f3-9bc1-f19b574901091.gif)
多点温度检测系统上位机软件设计与编程
第一章绪论
1.1引言
球磨机是建材、选矿、化工等重工业中最广泛采用的粉磨机械。
运用在大规模的粉磨场合。
在水泥生产中,经过粉碎的原料、熟料、煤及其他混合材料都要在球磨机中进行粉磨。
球磨机是生产水泥的重要主机设备。
但是在使用过程中,主轴瓦过热问题时常影响着生产,尤其出现在采用球磨机粉磨熟料生产成品水泥中,主轴瓦过热,严重的甚至烧瓦,造成停机降温,甚至停产抢修。
这个问题的出现,不同程度地影响设备运转率,影响生产的正常进行,给企业造成一定的经济损失。
因此,对球磨机进行实时故障检测,对保障安全生产、提高生产效率都有着重大的实际意义。
1.2球磨机故障分析
1.2.1主轴瓦作用
球磨机是一个水平装在两个主轴上的低速回转筒体,回转部分的重量全部由主轴承负担,而主轴承由主轴瓦、轴承座和润滑系统组成。
主轴瓦是主轴承最重要的零件,它呈球面形,装在轴承底座的凹球面上,瓦面多用铅基轴承合金制成。
这种主轴瓦具有较好的强度、塑性、距合性、减摩性、耐磨性、润滑性、传热性,而且更换简单、方便。
能够满足主轴承良好润滑要求,适应球磨机低速、重载的工作环境。
1.2.2主轴瓦润滑原理
主轴瓦的润滑有油圈带油式和油泵供油式等几种形式,目前常用的是油圈带油式。
油圈随球磨机中空轴一起运转带油,由刮油体将油圈带来的油刮到布油器上,再由布油器将油均匀地撒到中空轴上,在中空轴和主轴瓦接触的表面之间形成一层油膜,把摩擦表面隔开,获得液体动压润滑,从而减小中空轴与主轴瓦之间的磨损,保证球磨机正常运转。
1.2.3主轴瓦过热原因分析
主轴瓦过热根本原因在于主轴承内有大量热量,不能及时散发出去,积存下来导致温度不断升高,主轴瓦过热,当温度进一步升高,主轴瓦表面的巴氏合金将熔化,造成烧瓦,导致球磨机无法正常运转。
因此,这类问题在生产中要高度重视,我们可以从以下几个方面来分析主轴瓦过热原因。
(l)主轴瓦刮研不良,中空轴与主轴瓦接触达不到规定要求,造成主轴瓦过度磨损,产生大量热量,导致主轴瓦过热,甚至烧瓦。
(2)润滑油种类选择不当,油质不好,损坏中空轴与主轴瓦,油粘度小,难以形成润滑油膜。
(3)润滑系统有问题,如油圈带油不好,刮油体、布油器安装不正确,没有油过滤器,管道不畅通等。
(4)球磨机工的责任心不强,没有随时掌握油位、油质,不能及时加油,不能及时更换润滑油造成缺油、油质差。
主轴瓦得不到良好的润滑,导致主轴瓦过热。
(5)中空轴与螺旋筒隔热不好,筒体内热量直接传递给主轴瓦。
(6)长时间喂入过热物料,主要是出窑熟料散热不充分,导致入磨物料温度过高,直接反映在主轴瓦上温度偏高,这在夏天6-8月表现更明显。
(7)球磨机通风不良,磨内热量难以排出直接传到主轴瓦上。
(8)外部冷却不充分,球磨机采用水冷却,循环水一方面冷却主轴瓦,一方面冷却磨机筒体表面,冷却水停止或冷却水不足,造成冷却不充分,主轴瓦过热。
(9)主轴承有裂缝,轴承内冷却水穿过裂缝渗到瓦面,破坏了良好的润滑,导致主轴瓦过热。
通过上面分析,我们可以看到,球磨机的各种故障最终都引起主轴瓦的温度升高,造成主轴瓦过热甚至烧瓦。
因此我们可以通过实时检测主轴瓦的温度,发现球磨机的故障。
当主轴瓦温度异常时,给出报警信号,及时地进行检测,避免烧瓦等严重事故,保障了设备的安全运行。
1.3解决方案
球磨机的轴承在故障情况下,引起温度升高而烧坏,从而造成直接和间接的巨大的经济损失。
我们设计了一套多点温度检测系统,实时检测主轴承的温度,系统结构图如图1-1所示。
本系统由下位机和上位机组成,下位机由AT89C51单片机、键盘显示电路、报警电路、数字温度传感器、E2ROM和看门狗电路组成。
完成对球磨机轴承温度的检测、显示、报警。
并把检测值通过RS-485总线传送给控制室的上位机(微机)。
由上位机进行数据存储、显示。
可对历史数据进行查询。
通过图形显示,直观的反映球磨机的温度变化趋势可早期预报球磨机故障。
RS485总线
图1-1系统结构图
1.4论文主要内容
本文为多点温度巡检系统的一个子课题,设计与开发上位机监控系统软件,本文详细介绍了如何在windows98操作系统上用VisualBasic编程。
设计并开发了数据采集、数据处理与存储、系统参数初始化、数据显示、查询、超温报警等功能模块。
第二章RS-232与RS-485标准及应用
2.1RS-232、RS-422与RS-485的由来
RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。
RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。
为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。
RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。
为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。
由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。
RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。
因此在视频界的应用,许多厂家都建立了一套高层通信协议,或公开或厂家独家使用。
如录像机厂家中的Sony与松下对录像机的RS-422控制协议是有差异的,视频服务器上的控制协议则更多了,如Louth、Odetis协议是公开的,而ProLINK则是基于Profile上的。
2.2RS-232串行接口标准
EIARS-232C是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。
RS-232C串行接口总线适用于:
设备之间的通讯距离不大于15m,传输速率最大为20KB/S。
一、接口信号
一个完整的RS-232C接口有22根线,采用标准的25芯插头座。
表2-1给出了RS-232C串行接口信号的定义以及信号的分类。
2-1RS-232C接口信号
引脚号
缩写符
信号方向
说明
1
屏蔽(保护)地
2
TXD
从终端到调制解调器
发送数据
3
RXD
从调制解调器到终端
接收数据
4
RTS
从终端到调制解调器
请求发送
5
CTS
从调制解调器到终端
清除发送
6
DSR
从调制解调器到终端
数据装置就绪
7
——
信号地
8
DCD
从调制解调器到终端
接收线信号检出(载波检测)
9
—
——
保留供测试用
10
—
——
保留供测试用
11
—
——
未定义
12
DCD
从调制解调器到终端
辅信道接收线信号检测
13
CTS
从调制解调器到终端
辅信道清除发送
14
TXD
从终端到调制解调器
辅信道发送数据
15
从调制解调器到终端
发送器信号定时
16
RXD
从调制解调器到终端
辅信道接收数据
17
从调制解调器到终端
接收器信号定时
18
—
——
未定义
19
RTS
从终端到调制解调器
辅信道请求发送
20
DTR
从终端到调制解调器
数据终端就绪
21
从调制解调器到终端
信号质量检测
22
从调制解调器到终端
振铃指示
23
从终端到调制解调器
从调制解调器到终端
数据信号速率选择器
24
从终端到调制解调器
发送器信号定时
25
—
——
未定义
二、电气特性
RS-232C采用负逻辑,即:
逻辑“1”:
-5V~-15V
逻辑“0”:
+5V~+15V
RS-232C的电气特性如表2-2所示。
表2-2RS-232、RS-485、RS-422有关电气参数
规定
RS-232
RS-422
RS-485
工作方式
单端
差分
差分
节点数
1收、1发
1发10收
1发32收
最大传输电缆长度
50英尺
400英尺
400英尺
最大传输速率
20Kb/s
10Mb/s
10Mb/s
最大驱动输出电压
+/-25V
-0.25V~+6V
-7V~+12V
驱动器输出信号电平
(负载最小值)
负载
+/-5V~+/-15V
+/-2.0V
+/-1.5V
驱动器输出信号电平
(空载最大值)
空载
+/-25V
+/-6V
+/-6V
驱动器负载阻抗(Ω)
3K~7K
100
54
摆率(最大值)
30V/us
N/A
N/A
接收器输入电压范围
+/-15V
-10V~+10V
-7V~+12V
接收器输入门限
+/-3V
+/-200mV
+/-200mV
接收器输入电阻(Ω)
3K~7K
4K(最小)
12K
驱动器共模电压
-3V~+3V
-1V~+3V
接收器共模电压
-7V~+7V
-7V~+12V
2.3RS-485与RS-422串行接口标准
2.3.1平衡传输
RS-485、RS-422与RS-232不一样,数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B,如图2-2所示。
通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~-6V,是另一个逻辑状态。
另有一个信号地C,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。
“使能”端是用于控制发送驱动器与传输线的切断与连接。
当“使能”端起作用时,发送驱动器处于高阻状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三态。
图2-2RS-422、RS-485传输线定义
接收器也作与发送端相对的规定,收、发端通过平衡双绞线将AA与BB对应相连,当在收端AB之间有大于+200mV的电平时,输出正逻辑电平,小于-200mV时,输出负逻辑电平。
接收器接收平衡线上的电平范围通常在200mV至6V之间。
如图2-3所示。
图2-3RS-485/RS-422接收器接收平衡线上的电平
2.4握手协议
计算机在与单片机通信时,为了确定所收的数据是单片机发出的温度值就要设计握手协议。
我们采用在发送每路温度数据前发送一个数AAH作为数据报头,接着发送温度值所对应的序号、该路温度值的整数部分、该路温度值的小数部分,每次发送之间延时6mS。
用这样的一组发送序列将一路温度数据发送给上位机。
每组发送序列间隔大于450mS。
第三章软件功能与结构设计
3.1数据采集模块
上位机通过电缆与下位机相连。
下位机进行数据预处理,组成一定的数据格式,通过RS-232串行口,将数据送到上位机,上位机采用串口中断方式接收数据,保证采集数据的实时处理。
数据采集模块负责设置串口,监听串口,当串口有数据传入时判断是否是所要接收的温度数据。
如果所接收到的数据正确则将数据传给数据处理和数据显示模块。
3.2数据处理与存储
该模块实现数据处理与存储。
当此模块收到数据采集模块传来的数据后ASC函数将数据转化为String型。
然后判断此温度是否超过所设的最高温度。
如果没有超过报警值,则将数据交给显示模块。
如果超过则报警,提示用户温度过高。
在完成数据的处理和显示后,用WriteLine函数将数据写入系统日志保存在硬盘上,至此就完成了数据处理与存储。
3.3系统参数初始化
本程序可以对一些参数进行设置。
包括高温报警值,低温报警值,串口波特率,串行端口号选择。
参数被设置后将会被保存,以便系统在运行时使用。
用户可以根据需要随时更改参数。
3.4数据显示
数据显示采用了模拟LCD显示的ActiveX控件。
并使用了4组显示模块可以同时显示4路不同的温度数据。
该显示控件以黑色为底色,用天蓝色来显示温度值,这样的配色很醒目。
而且当温度过高时背景色会变成红色以提醒用户温度过高了。
3.5图形显示
本程序可以根据用户选择的数据源将数据以图形的形式显示在绘图区中,直观的体现温度的变化情况。
此模块先将用户选择的数据读入到一个动态数组中然后绘图。
用户可以清楚的看到温度的变化。
3.6查询
本程序将收到的数据以文本的形式保存在一个以当天日期为文件名的文本文件中。
用户可以通过打开日志文件来查看某天的温度记录。
3.7超温报警
本软件设计了报警模块,当数据处理模块发现所收到的数据值大于最高温度时就触发报警模块。
报警模块会弹出用户温度过高的警告,并将当前温度以醒目的红色为背景色显示,并控制计算机的小喇叭发出蜂鸣声。
这时用户可以选择“确定”来关闭报警对话框或者选择“忽略”,此时系统会自动打开设置对话框,用户可以重新设置高温报警值。
第四章系统软件开发
4.1软件开发平台和编程语言的选择
本软件在微软Windows98平台上开发。
经过测试其在最新的Windows2000及WindowsXP上均可正常运行。
本软件使用微软基于Basic语言的VisualBasic软件开发。
之所以选择VisualBasic是因为其提供了大量的控件,为程序的初期界面开发提供了便利。
而且本程序对运行速度没有过高的要求,因为相对于当今CPU的处理速度,串口的传输速率不可能超过CPU的处理速度。
4.2软件界面设计
为使界面美观我是用了XP界面控件,界面美观醒目,格式统一。
4.2.1系统主界面
在程序启动时先有一个Loading界面(见图4-1)。
Loading界面会自动关闭,然后系统主界面会弹出(见图4-2)。
图4-1系统Loading界面
图4-2系统主界面
4.2.2应用系统子界面
本系统子界面包括:
设置窗口,高温报警窗口,温度提示窗口,时间显示窗口,数值选择判断窗口,数值输入错误提示窗口,选择绘图数据源窗口。
4.3主要模块的实现
4.3.1数据采集模块的实现
一、MSComm控件介绍
在数据采集模块中使用MSComm控件通过串行端口接收数据,为应
图4-3数值输入错误提示窗口
用程序提供串行通讯功能。
MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。
MicrosoftCommunicationsControl(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:
一是事件驱动(Event-driven)方法,一是查询法。
二、串行通信的两种格式
进行串行通信时有以下的两种传输方式:
(1)字符形式:
通常以小于ASCⅡ的字符码来传输,通常用于传送指令
(2)二进制形式:
将数据以二进制编码的方式传送,他可能含有ASCⅡ128
以上的字符码,通常用来传送数据,以节省时间。
进行串行通信的双方,一般说来是利用字符串(也就是我们在键盘上可以找到的可见字符,他们通常在ASCⅡ码128以内)来进行数据的交换,由于传输一般的命令,使用这种可见字符是相当恰当的;不过,在某些需要考虑传输的设计上会用以二进制的方式来传输数据。
如当要传输一个100的数值出去,如果使用字符的方式传输的话,将会使用到4个字节;由于1000这个数值,在计算机上可以用一个整数来表示,所以将他改成二进制的方式的话,只要两个字节就可以了,两者之间相差了50%的传输时间。
由于串行传输的速度在我们看来还是很快的,这种差异在小量的10组,20组数据传输时可能还没有关系;可是如果这样的数据我们要传送200组,500组时,时间上的差异就非常明显,这种明显的差异表现出来就是系统效能的降低。
因此在考虑传输方式时,要特别想到数据量的对少和系统效能之间的关系。
三、MSComm控件两种处理通讯的方式
MSComm控件提供下列两种处理通讯的方式:
事件驱动方式和查询方式,定时器自动驱动方式。
(1)时间驱动方式:
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如:
在串口接收缓冲区中有字符,或者CarrierDetect(CD)或RequestToSend(RTS)线上一个字符到达或一个变化发生时。
在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通讯件。
OnComm事件还可以检查和处理通讯错误。
所有通讯事件和通讯错误的列表,参阅CommEvent属性。
在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。
这种方法的优点是程序响应及时,可靠性高。
每个MSComm控件对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。
本程序采用了事件驱动方式,没有采用延时控制,因为本程序要同时接受4路温度数据,延时所带来的误差即不确定性会导致程序无法正确的接受并显示数据。
在MSComm1_OnComm()方法中我采用SelectCase语句来为接受到的数据选择显示地址。
以下对MSComm1_OnComm()的源代码进行说明:
temp=MSComm1.Input‘接受串口数据并存入字符串temp中
sel=Left$(temp,1)‘取temp中的第一个字符
First=Mid(temp,2,2)‘取temp中的的2,3个字符
Second=Right(temp,1)‘取temp中的最后一个字符
temping=Val(First+"."+Second)‘为了显示小数在第2,3字符与最后一个符之间加点
SelectCasesel‘判断读入的数据应在哪块模拟LCD上显示
Case"A"
LCDShower1.Temperature=temping
Iftemping>=CDbl(OptionForm.HighTempText.Text)Then
‘判断温度是否’超过警戒温度
LCDShower1.BackColor=&HFF&‘使LCD显示背景色变为红色
frmmsg.Show
EndIf
Case"B"
LCDShower2.Temperature=temping
Iftemping>=CDbl(OptionForm.HighTempText.Text)Then
LCDShower1.BackColor=&HFF&‘使LCD显示背景色变为红色
frmmsg.Show
EndIf
Case"C"
LCDShower3.Temperature=temping
Iftemping>=CDbl(OptionForm.HighTempText.Text)Then
LCDShower1.BackColor=&HFF&‘使LCD显示背景色变为红色
frmmsg.Show
EndIf
Case"D"
LCDShower4.Temperature=temping
Iftemping>=CDbl(OptionForm.HighTempText.Text)Then
LCDShower1.BackColor=&HFF&‘使LCD显示背景色变为红色
frmmsg.Show
EndIf
EndSelect
temp=""‘清空缓冲区
EndSub
(2)查询方式
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。
(3)定时器自动驱动方式
定时器控件在控制系统中经常被用来执行固定且周期性的工作,该控件中的Interval属性用于设置每次执行的间隔时间,只要间隔时间一到,马上就会执行Timer时间内的程序代码,这样就达到了不断执行的目的。
如果希望每隔100秒执行一次程序代码取得设备数据,最直接的做法就是设置定时器的Intertal属性值为100,表面上看这样可以每隔100秒去一次数据了。
但每一次向设备要求数据传送时,会执行一段代码,这一段代码所费的时间依代码的大小而不同,以现在的计算机CPU来说,这些时间真的微不足道:
可是经实验发现每一次的数据传输尽管使用了最优化设计,还会花上100毫秒左右的时间才能得到一组数据,这个时间还和所传输的数据量的大小有关。
如果数据量一大,这个等待时间还必须再拉长。
问题出在传输线上,即使现在的CPU进步神速,也只能看到数据在计算机内部处理时的速度加快;连上单片机设备后,一个完整的传输系统中的传输效能就必须看速度最慢的环节-显然这就是传输线本身了,因为他的速率无法无限制的往上提升。
所以我把串口通信速度设为1200,这样才可保证数据准确无误的被传送和接收。
四、MSComm控件的常用属性
MSComm控件有很多重要的属性,现在对程序中所用的几个重要的属性进行说明:
CommPort设置并返回通讯端口号。
Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen设置并返回通讯端口的状态。
也可以打开和关闭端口。
Input从接收缓冲区返回和删除字符。
Output向传输缓冲区写一个字符串。
下面分别描述:
CommPort属性设置并返回通讯端口号。
语法object.CommPort[value](value一整型值,说明端口号。
)
说明在设计时,value可以设置成从1到16的任何数(缺省值为1)。
但是如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。
注意:
必须在打开端口之前设置CommPort属性。
本程序在端口初始化时设置端口为1即OmmPort=1,用户也可以点击Option按钮在弹出对话框对串口属性进行设置。
用户更改设置,点击确定后系统会自动将串口初始值保存。
以下是Option窗口创建时对下拉框组件的初始化
PublicSubForm_Load()
Combo1.AddItem("1200")‘对串口速率的设置
Combo1.AddItem("1800")
Combo1.AddItem("2400")
Combo1.AddItem("4800")
Combo1.AddItem("7200")
Combo1.AddItem("9600")
Combo1.ItemData(0)=1200
Combo1.ItemData(0)=1800
Combo1.ItemData(0)=2400
Combo1.ItemData(0)=4800
Combo1.ItemData(0)=7200
Combo1.ItemData(0)=9600
Combo2.AddIte