用户登陆 用户注册
您的位置:首页>
电脑专栏>内容正文
一种实用的计算机温度采集系统
[正文]:一、前言随着计算机技术的发展和成熟,计算机的应用也越来越广泛。
在自动化领域,计算机已经成为控制系统的首选平台,应用计算机对生产和试验进行实时、远程监控是现代自动化发展的主要方向。
将计算机应用于工业实时控制的前提是现场数据的实时获取。
在生产和科学实验中,常常要测控很多参数,诸如温度、压力、转速等,通常的方法是使用专用的仪表人为观测、记录处理数据、做出判断,这就会带来人为的误差,而且应用范围也会受到现场条件、响应速度等因素的限制。
而自动的实时监控系统能很好的解决这些问题。
本文以一种简单实用的温度实时采集系统为实例,讨论了一种利用计算机进行远程测控的框架结构和实现方法。
二、硬件构成
点击查看大图片
系统结构如图1所示,其中:computer为普通pc机,要求能够运行windows98操作系统和开发环境vb6.0,具有标准的rs232串口或rs485口,主要功能为数据采集处理和系统控制,是人机交互平台。
实验中使用的是piii800的计算机。
adam4521为研华科技公司的接口转换模块,能将rs485或rs422信号转换为rs232信号。
由于普通pc只具有rs232接口,而一般工业测试信号符合rs485或rs422标准,所以在这里要进行一下转化。
研华科技公司的adam4521模块有以下特点:可寻址;内置微处理器;传输速度115.2kbps;1000vdc高压隔离;rs485浪涌电压保护;输入输出可置不同的波特率;无需握手信号。
adam4013为研华科技公司的热敏电阻输入模块,能将热敏电阻的模拟信号转换为rs485数字信号。
adam4013模块利用内置的微处理器控制a/d转换器把电流、电压或热敏电阻的模拟信号转换为数字信号,模块提供信号调整、a/d转换、测量范围调整、rs485通讯等功能,良好的光隔能有效的保护设备的安全。
模块的主要特点有:内置看门狗;3000vdc高压隔离;采样率10次/秒;误差小于0.05%。
这些参数能满足绝大多数场合的应用。
温度传感器选用铂电阻pt100测量-100℃到+100℃的温度,adam4013模块测温系数a设为0.00385。
可根据测量范围和测量精度的要求选择不同的温度传感器,在软件设计时进行相应的参数配置即可。
试验中的介质是两种液体的化学反应。
铂电阻pt100将化学反应温度转化为模拟电信号传到adam4013模块,经过采样处理转化为rs485数字信号,在经过adam4521模块的转换,变成计算机可以接收的rs232信号,计算机收到数据后,实时显示,绘制温度曲线,同时进行后台处理、存储,以备他用。
三、软件实现系统软件主要是用vb6.0对rs232串口编程,实现硬件之间的通讯。
软件框图如图2所示。
点击查看大图片
1、mscomm控件简介vb6.0对rs232串口编程主要通过mscomm控件来实现。
下面简单介绍一下mscomm控件:mscomm控件为应用程序提供串行通讯功能。
控件提供下列两种处理通讯的方式: 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如,在 carrier detect (cd) 或 request to send (rts) 线上一个字符到达或一个变化发生时。
在这些情况下,可以利用 mscomm 控件的 oncomm 事件捕获并处理这些通讯事件,无论何时当 commevent 属性的值变化时,就产生 oncomm 事件,标志发生了一个通讯事件或一个错误。
另一种方法是通过检查 commevent 属性的值来查询事件和错误。
如果应用程序较小,并且是自保持的,这种方法可能是更可取的,它只对某一特定的事件响应。
每个使用的 mscomm 控件对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个 mscomm 控件。
mscomm 控件主要属性:commport:设置并返回通讯端口号;settings: 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位;portopen: 设置并返回通讯端口的状态。
也可以打开和关闭端口;input: 从接收缓冲区返回和删除字符;output: 向传输缓冲区写一个字符串。
更详细的信息请参阅microsoft的联机文档msdn。
2、adam模块常用命令介绍adam模块时通过特殊的约定字符来实现相应的操作的,常用的有:"%0101210600":设置端口,0-100度,科学单位;"#01" : 读串口1数据;"#02" : 读串口2数据;"36;010" : 模块自动校准;"36;011" : 偏移量校准;"36;012" : 读端口信息;"36;01m": 读模块名。
3、主界面及部分代码vb6.0具有强大的界面编辑功能,是一种完全面向对象的编程语言,用它实现的人机界面直观友好、易操作易实现,下面就是试验中所作的界面(图3):
点击查看大图片
从界面可以看出,系统能实现温度采集的设置、数据显示处理功能。
关键代码如下:const cmdconfig = "%0101210600" 设置端口命令字符,0-100度,科学单位const cmddatain1 = "#01" 读串口1数据命令字符const cmddatain2 = "#02" 读串口2数据命令字符const cmdspancalibration = "36;010" 校准命令字符const cmdoffsetcalibration = "36;011" 偏移量校准命令字符const cmdconfigstatus = "36;012" 读端口信息命令字符const cmdmodulename = "36;01m" 读模块名命令字符private sub cmdstart_() 开始命令子程序mscomm1.commport = comnum 设置串口号if mscomm1.portopen = false then 打开串口mscomm1.portopen = true end ifif comnum = 1 thencmddatain = cmddatain1elsecmddatain = cmddatain2end if mscomm1.output = cstr(cmddatain) & vbcr 发出读数命令timedelay 500 延时500mspicture1.currentx = 0 绘制曲线坐标起点picture1.currenty = temperature timer1.enabled = true 开始计时end subprivate sub mscomm1_oncomm() 事件响应子程序select case mscomm1.commevent 判断mscomm1通讯事件case comevreceive 收到rthreshold个字节产生的接收事件mscomm1.rthreshold = 0 关闭oncomm事件接收timedelay 20 延时20mstemperatureshow = right(mscomm1.input, 7) 读取第一个数据字节(bcd码高位字节)temperature = val(temperatureshow) 数值组合,标定小数点mscomm1.output = cstr(cmddatain) & vbcr 发送读命令mscomm1.inbuffercount = 0 清空缓存mscomm1.rthreshold = 1 关闭oncomm事件接收case comeventbreak 收到 break。
…case elseend selectend sub程序中一般会用到系统时钟来计时,这是要用到系统动态连接库kernel32.dll。
有一点需要注意,由于串口速度有限,系统运行速度也有限,所以设置采样间隔一般不能小于15毫秒,否则会出现延时错误。
四、结论本系统最大的特点就是容易实现,不需要数据采集卡,不需要硬件驱动程序,硬件连接方便,软件编制也比较容易掌握,有一点儿vb的基础,再了解一下串口控件应用就可以了,特别适合较小的测温系统。
由于adam模块是可寻址的,所以可以用多个模块实现多个参量的测量采集。
整个系统的开发周期较短,调试方便,运行可靠,可根据需要制作相应的操作界面。
系统只占用pc机的一个串口,占用资源少,对硬件要求不高,各模块在不同的场合可灵活应用。
网站首页
培训课程
维修指南
技术文章
家电专栏
供应信息
求购信息
培训资讯
展会信息
电脑专栏
教程下载
资料下载
常用软件
PLC教程
PLC资料
变频伺服
低压电器
维修资料
人机界面
自控仪表
工控机类
文章标题:
搜文章
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
京ICP备11002135号
报时(2026-04-02 13:40:06)