文档详情

利用DELPHI多线程机制实现PC机与PLC之间的串行通信.pdf

发布:2018-04-05约字共6页下载文档
文本预览下载声明
计算机应用研究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主线程,由
显示全部
相似文档