2025年11月14日
配天机器人2025年11月14日
TE2025年11月14日
西门子2025年11月14日
新时达2025年11月14日
蔡司工业
2025年11月13日
埃尔森
2025年11月10日
BBS
2025年11月07日
劳易测
2025年11月06日
和利时
2025年11月14日
威图
2025年11月14日
TE
2025年11月14日
KUKA
2025年11月14日
先导智能
2025年11月14日
TDK

3 串口通信的实现
各测量点测得的数据的是通过RS-232标准串行接口传送到监控中心的,因为RS-232驱动能力太低,所以使用了MODEM作为中继器。监控中心读取到这些数据之后,再根据预定义好的规约分析数据,做出报警判断及进行数据存储。监控中心软件运行在Windows 2000操作系统下,为了方便对数据库编程,可以采用Delphi(Windows平台下的可视化软件开发工具)作为监控软件的开发工具。在Delphi中编写串口读写程序的方法基本可以分为两种,一是采用封装了串口读写方法的控件,二是直接调用Win32 API。使用已有控件可以提高编程效率,只需要几条简洁的语句就可以实现串口的读写,但是灵活性太差,不能完全按照个人意愿读写串口,并且有些控件的健壮性也没有得到充分的验证,所以本系统程序编写采用Win32 API(应用编程适配器:Windows的32位应用程序编程接口,一组调用操作系统或其他程序而获得访问服务的例行程序)完成。
API函数不仅提供了打开和读写通讯端口的操作方法,还提供了名目繁多的函数以支持对串行通讯的各种操作。下面以处理串口接收数据的子程序为例介绍一下本系统的串口通信程序。接收消息之前应该先用clearcommerror函数处理串口通信错误并报告当前串口状态,如果出现错误向用户发出提示并退出此子程序,如果没有错误就再判断串口接收的数据数是否超过预定以缓冲区的大小。限于篇幅,本文略过这段语句,直接给出读取并处理数据的主体程序,并给出程序的注释。
procedure NOTIFY(var message:tmessage);
var
Temp : string; inputbuffer: array[0..4000>of Char;
nBytesRead, dwError:DWORD ; showReceive:string;
commstate:TCOMSTAT;//存放串口状态的结构体
begin
//略过预处理程序……
//使用readfile函数读取串口数据;在win32 API中使用文件操作函数操作串口
if(not readfile(hcomm,inputbuffer,e,nbytesread,@read_os)) then
begin
if(dwerror<>0)and(dwerror<>error_io_pending) then
begin//读取串口错误,则提示用户,并关闭所有相关句柄
messagebox(0,'readfile error','notice',mb_ok);
stop:=true;
closehandle();
closehandle(post_event);
closehandle(hcomm);
exit;
end
else
begin
waitforsingleobject(hcomm,infinite);
getoverlappedresult(hcomm,read_os,nbytesread,false);
end;
end;
if nbytesread>0 then
begin
temp:=(inputbuffer,1,e);
receivebuffer:=receivebuffer+temp;
buffer:=receivebuffer;
if (temp[length(temp)>=#13)or(temp[length(temp)>=#10)or (length(receivebuffer)>128)
//上位机和下位机定义通信规约为以ASCII的13或者10作为帧结束标志
then
begin
//若处于显示接收内容模式,显示接收到的内容
if d then
begin
showreceive:=buffer;
[2>.Text:='接受内容:'+showreceive;
end
else
[2>.Text:='接受内容:';
//分析故障信息
if temp[length(temp)>=#10 then
failureinfoparse(buffer);//条用故障处理子程序,此子程序分析故障类型,判断故障设备,并把故障信息记录到数据库
receivebuffer:='';//处理完一帧数据就清空缓冲区,为下一次读取做准备
end; end; end;
setevent(post_event);
end;
上位机的图形化监控软件完成调度控制中心的基本功能。上位机网络由一个应用程序服务器、两个监控工作站、一个模拟屏控制机和数据库服务器组成。上述串口读写程序就工作在应用程序服务器上。
4 结束语
本文介绍了一个供水自动监控及调度系统的设计和实现,采用了分布式控制结构,使系统处理事故和进行调度的效率有所改善和提高。但因为考虑设计成本等因素,这种设计方案并不是最优的,在以后的实践研究中会做出进一步改进。