产品推荐:水表|流量计|压力变送器|热电偶|液位计|冷热冲击试验箱|水质分析|光谱仪|试验机|试验箱


仪表网>技术中心>故障维护>正文

欢迎联系我

有什么可以帮您? 在线咨询

DELPHI 语言在远程红外测温报警系统中的应用

   2012年03月21日 16:25  
  摘要:本文主要介绍了DELPHI串行通信,以及怎样使用Delphi语言编程实现温度的实时采集以及处理显示。
  
  引言
  
  温度是一个十分重要的物理量,对它的测量与控制有着十分重要的意义,在现代工业生产中温度也是常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关,随着时代的不断发展,现代工农业技术的不断进步,人们对生活环境要求的提高,使得对于温度的测量和控制的要求越来越高,迫切需要检测与控制温度
  
  1、系统总体介绍
  
  本系统主要包括三个模块:下位机硬件设计部分、下位机软件设计部分和上位机软件设计部分。本文涉及的主要是上位机软件程序设计部分,使用语言Delphi编制上位机监控程序,并通过RS-232串行通信口与下位机系统实现实时通信。同时为了操作方便,系统还附加了遥控器部分。其中系统的原理框图如图1所示:
  
  图1系统的原理框图
  
  2、主要控件介绍:
  
  2.1TComm控件:
  
  用Delphi实现串口通讯,常用的几种方法为:使用控件如TComm,使用API函数或者在Delphi中调用其它串口通讯程序。下面详细介绍TComm的使用。
  
  a)TComm的主要属性
  
  Name:对象的名称,对象放置完成后,是*个必须要设置的属性。
  
  CommPort:通信端口的选择。
  
  PortOpen:打开或关闭通信端口。
  
  BaudRate:传输速度的选择。
  
  b)TComm的主要事件
  
  ONReceiveData:当接收到数据时触发。
  
  OnReceiveError:当接收数据错误时触发。
  
  OnModemSTateChange:当引脚的电压发生变化时触发。
  
  d)TComm的主要方法
  
  OutputString:输出文字数据到串行端口。
  
  OutputByte:输出字节数据到串行端口。
  
  ReadInputByte:以字节方式读取缓冲区内的数据。
  
  2.2TChart组件:
  
  TChart是Delphi里面一个标准的图形显示控件。它可以静态设计(atdesigntime)也可以动态生成。TChart的实时绘制对机器性能要求比较高,因此在编程的时候要注意:
  
  (1)使用2d图形;⑵Chart尽可能包含少的点。
  
  a)TChart组件的主要事件
  
  OnPageChange:当改变页的时候,此事件发生。
  
  OnMouseDown:当鼠标按下时产生。
  
  OnAfterDraw事件:该事件是在绘制所有的Series时发生的。
  
  OnClick事件:该事件是在用户单击Series点时发生的。
  
  OnZoom事件:该事件是在图表放大时触发。
  
  b)TChart组件的主要方法
  
  ActiveSeriesLegend函数:该函数用于返回当前活动的Series,如果所有的Series都是活动的,需要为该函数确定要返回Series的序号。
  
  AddSeries过程:该过程用于添加一个Series对象。
  
  3、系统各具体模块设计
  
  3.1系统主界面设计
  
  用户登录到主界面之后,在主界面中,可以实现通过面板或者菜单来设置温度的上下限,系统实时显示测试时间,同时在面板上通过状态灯显示当前系统的工作状态。
  
  图2系统主界面
  
  同时在主界面的菜单中,可以进行通信端口的选择、通信波特率的选择、修改密码、帮助以及退出系统。
  
  3.2修改密码模块设计
  
  为了系统的安全,系统增加了修改密码模块。如果要修改密码,首先要输入原来的密码,而后输入新密码,zui后重新输入新密码并确定,如果输入的两次新密码相同,则修改密码成功,如果输入的两次新密码不同,则修改密码失败,则重新输入新密码。
  
  3.3通信模块的设计
  
  本次设计使用RS232转RS485转换器实现远程监控的,采用的是半双工的数据传输方式和异步通信方式,串行口工作于模式1。
  
  传输数据的格式如下:首先上位机发送FF给下位机,下位机检测到时,将温度传送给上位机。向单片机发送上限温度命令,格式:FE,XX;向单片机发送下限温度命令,格式:FD,XX;设置监控,格式:FC;取消监控,格式:FB;向单片机发送点击上限按钮,格式:FA;向单片机发送点击下限按钮,格式:F9。
  
  )接收数据
  
  上位机采用事件驱动方式接收数据。当下位机传送一帧数据上来输入缓存时,将触发TCOMM组件的OnReceiveData事件,对数据进行接收。然后对接收的数据进行判断,分别转相应的处理程序。下面是数据接收的程序段:
  
  begin
  
  try
  
  count:=form1.Comm1.ReadInputByte(pt);
  
  if((count+1)mod4<>0)then
  
  begin
  
  form1.Comm1.DataCount:=0;
  
  exit;
  
  end;
  
  fori:=0to3do
  
  begin
  
  re[i]:=pt^;
  
  inc(pt);
  
  end;
  
  …//数据处理部分
  
  b)发送数据
  
  发送数据采用异步I/O方式,即将要发送的数据用WriteCommData方法发送到写线程,然后立即返回。该方法所有的操作均在后台进行,如果发送成功,返回True,发送失败,返回False。下面是发送数据的主要程序段:
  
  form1.Comm1.PortOpen:=true;
  
  form1.Comm1.OutputByte(send);
  
  timedelay(300);
  
  3.4系统初始化模块设计
  
  本系统初始化部分设计程序如下:
  
  begin
  
  Position:=poscreencenter;
  
  form1.Comm1.DataCount:=0;
  
  form1.Comm1.RThreshold:=1;
  
  form1.Comm1.PortOpen:=true;//串行口初始化
  
  form1.sys_ini();//系统参数初始化
  
  …
  
  3.5参数设置模块设计
  
  为了系统的操作方便,在菜单中加入了参数的设置,可以选择串行口,选择通信的波特率等等。
  
  4、结束语
  
  系统经过一个多月的观察测试,该软件系统运行稳定,使用操作方便,测量精度高。

免责声明

  • 凡本网注明“来源:仪表网”的所有作品,均为浙江兴旺宝明通网络有限公司-仪表网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:仪表网”。违反上述声明者,本网将追究其相关法律责任。
  • 本网转载并注明自其它来源(非仪表网)的作品,目的在于传递更多信息,并不代表本网赞同其观点或和对其真实性负责,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品第一来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
联系我们

客服热线: 15267989561

加盟热线: 15267989561

媒体合作: 0571-87759945

投诉热线: 0571-87759942

关注我们
  • 下载仪表站APP

  • Ybzhan手机版

  • Ybzhan公众号

  • Ybzhan小程序

企业未开通此功能
详询客服 : 0571-87759942