摘要:基于DDE(Dynamic Data Exchange)技术,研究了VB6.0下组态软件与下位机串口通信服务程序的实现方法,并对其进行了改进,解决了组态软件没有提供某些现场设备的通信驱动程序的问题。服务程序利用串口通信控件MSComm与下位机进行通信,同时采用DDE技术与组态软件进行数据交换。工程实践表明,该方法通用性强、实现简便。
1、引言 在工业控制领域,组态软件正得到越来越广泛的使用。例如:Fix、InTouch、KingView (组态王)等均是组态软件的优秀代表,它们提供了丰富的工控界面、数据库处理、对象连接等数据管理控制功能,为使用者带来了极大的方便。组态软件以Windows系统作为操作平台,具有图形功能完备、界面一致性好和易学易用等特点,与以往使用专用机开发的工控系统相比更有通用性,更方便了工程技术人员的应用开发。但在实际应用中,组态软件常常没能提供一些现场设备的通信驱动程序,而这些设备大多采用串口与PC机进行通信。 VB提供的串行通信控件MSComm,让开发者可以方便、快捷地开发串行通信程序,而采用VB在Windows环境下实现符合DDE协议的通信程序也并非难事,因此整个系统的数据流示意图如图1所示。本文以组态王软件与PHILIPS公司的51LPC系列单片机之间的通信为例,研究了采用VB6.0开发串口通信服务程序的原理及其实现方法。
![]() 图1 系统数据流示意图
2、串口通信的实现方法 Windows平台下利用VB实现串口通信主要有以下两种方法: 3、与组态软件的DDE通信 Windows环境下,应用程序和系统间以及应用程序间可通过剪贴板、动态链接库DLL(Dynamic Link Library)、对象链接和嵌入OLE(Object Link Embedded)以及动态数据交换DDE(Dynamic Data)方便地实现数据的实时交换。其中,剪贴板是一种静态交换数据的途径,DLL不被大多数组态软件所支持,OLE不适合串行通信方式。相比之下,DDE是一种简单、高效又被组态软件广泛支持的数据交换方法。 所谓动态数据交换是指在操作系统环境下各个应用程序间进行实时动态数据交换。一旦提供数据的服务方改变了交换数据的内容,接受数据的客户方将立即自动更新交换数据内容,从而有效地保证了数据传送的一致性。提出交换请求的一方称为客户(Client),对交换请求作出响应或提供服务的一方称为服务器(Server)。串口通信服务程序向组态软件提供串口数据的服务,是服务器端,又称为发送端;而组态软件向通信服务程序发出请求,并接收其发送的数据,是客户端。 Windows应用程序间的DDE对话是通过应用程序名、主题、项目三个标识名来约定的。应用程序名(Application)是进行DDE对话双方的名称,KingView的程序名是View,VB的应用程序名是可执行文件的名称。主题(Topic)是被讨论的数据域(Domain),KingView的主题被规定为TagName,VB的主题由窗体(Form)的LinkTopic属性值指定。项目(Item)是被讨论的特定数据对象,KingView中,在指定数据字典的I/O变量的同时,指定项目名称,而在VB中,项目是一个特定的文本框、标签或者图片框的名称。 为了建立两者间的DDE连接,首先需要在组态王中定义DDE设备,DDE设备的服务程序名、主题名和数据交换方式。在组态王的数据词典中按照预先需要通讯的变量点数和变量类型建立I/O变量,定义变量的连接设备和项目名。然后在VB程序中设置主窗体的LinkMode属性为1,LinkTopic可任意给定,如FormDDE。另外还需定义控件的属性和方法,设置LinkTopic、LinkItem、LinkMode三个属性。一般的设置为: 4、对DDE通信的改进方法 实际应用中,考虑到工控软件的数据处理能力有限,应将通信协议的转换工作交由通信服务程序完成。串口通信服务程序根据协议提取出每一条指令或数据,再将这些数据和指令同时上传给工控软件。工控软件发送串口数据时,也是向通信服务程序同时发送所有的数据或指令,由通信服务程序实现数据的打包发送。
![]() 图2 控件Text与对应的数据帧示意图
为使通信程序具有可移植性,可采用动态加载控件的办法,即在通信程序启动时,根据设定的帧长加载相应的Text控件数。但务必在采用变长帧的通信协议时,通信服务程序设定的帧长不应小于可能出现的最大帧长。 5、结束语 VB是一种成熟的、面向对象的程序设计语言,采用它编写的Windows环境下PC机与下位机的串行通讯软件具有程序实现简便、通用性强的特点,减轻了软件开发者的工作量。本文利用VB的串行通信控件MSComm,并采用DDE技术较好地实现了上位PC机中组态王软件与下位单片机间的双向通信。组态软件编写的上层人机监控界面直观、友好。实际运行证明该串行通讯服务程序方便可靠,具有较强的实用价值。 |
|