利用DELPHI多线程机制实现PC机与PLC之间的串行通信.pdf
文本预览下载声明
计算机应用研究000241
计算机应用研究
APPLICATION RESEARCH OF COMPUTERS
2000 Vol.17 No.2 P.109-110
利用DELPHI多线程机制实现PC机与PLC之间的串行通信
张海燕 袁平波
摘 要 主要介绍了在DELPHI环境下如何利用多线程机制实现可编程控制器(PLC)与上位
PC机之间的串行通信,对该系统的特点、软件设计方法进行了具体论述。
关键词 多线程机制 串行通信
针对合肥国家同步辐射光源200Mev直线加速器的高精度稳流电源,我们研制了一
套强干扰环境下电源的计算机控制系统。在考虑系统设计方案时,选用OMRON PLC-
C200H系列产品作为下位机,放置在电源内部,并与上位机PC之间用光缆通过SYSWAY
方式通讯,实现系统监测和控制功能。
软件系统是对电源实现计算机控制的核心部分。本控制软件采用Delphi 3.0作为开发
语言,平台为Windows 98。其中PLC与上位PC机之间的通信是整个系统的关键。由于串
行通讯具有线路简单、应用灵活、可靠性高等一系列优点,并且普通PC上均带有串
口,可以方便实现,所以本系统PC与PLC之间采用了串行通信。同时为了有效克服串口
通信中的停滞和反应不及时现象,提高工作效率,引入DELPHI的多线程工作模型。
1 编制串行通信程序
在Delphi环境下对串口的编程是通过Windows的API函数调用来实现的。基本过程
为:
(1)打开串口,获取串口句柄。采用CreateFile函数,其原型为:
hTemplatrFile)
第一个参数给出要打开的串口逻辑名,如揅“COM2”
第二个参数指定了端口访问方式,即标志GENERIC.READ为读方式,GENERIC.
WRITE为写方式;通常在设置中两个标志均使用,即采用读写方式,
fdwAccess=GENERIC.READ GENERIC.READ or GENERIC.WRITE。
第三个参数指定该端口的共享属性,设置为0。
第四个参数引用安全属性结构,将其设为NULL。
第五个参数指定打开文件的方式,设置为OPEN-EXISTING。
第六个参数描绘文件的各种属性,对串口一般设为0。
最后一个参数是指向模板文件的句柄,对串口设为NULL。
(2)对串口进行设置。采用以下两个函数:
BOOL GetCommState (hComm, dcb)
BOOL SetCommState (hComm, dcb)
其中第一个参数为打开的串口句柄,第二个参数为指向DCB结构的指针。在打开串
万方数据
1/5 页)2010-3-23 1:22:58
计算机应用研究000241
口后,可先用GetCommState函数读入串口状态,并得到串口的缺省设置,然后重新设
置需要改变的DCB函数,并用SetCommState函数将其返回。
(3)读/写串口。采用函数为:
(4)通信完毕释放串口。所用函数为:CloseHandle(hComm)。
同时串口通信必须遵从OMRON-HOSTLINK特定协议,通信数据格式要符合协议
所规定的上位机链结命令格式。
从上位机发送一个命令时,按下述的格式排列命令数据:
整个系统采取上位机主动的通讯方式,将下位机与上位机的编程融为一体,上位机
每隔三秒钟向PLC发送读取数据命令。PLC内部不需要用特定的梯形图编程语言来作下
位机程序,增加了系统的通用性,减少了软件接口所带来的工作量。
2 引入多线程机制
在串行通信中,上位机所接收的通信往往是异步的、突发性的。在通讯模块程序中
引入多线程,即创建专门的通信线程实现对串口的访问。这种方法可以有效地克服串口
通信中的停滞和反应不及时现象。
线程是进程内的一个执行单元,它是操作系统分配CPU运行时间的基本实体。一个
进程可由多个线程组成。各线程共享进程的虚拟空间和操作系统为此所分配的系统资
源。多任务操作系统将处理器的运行时间分成小的时间片,并分配给多个线程,每个线
程在指定的时间片内运行。
多线程的DELPHI应用程序在运行时,操作系统首先创建VCL主线程,由
显示全部