1.概述
“组态王”支持动态数据交换(DDE:Dynamic Data Exchange),能够和其他支持动态数据交换的应用程序方便地交换数据。通过DDE,工程人员可以利用PC机丰富的软件资源来扩充“组态王”的功能,比如用电子表格程序从“组态王”的数据库中读取数据,对生产作业执行优化计算,然后“组态王”再从电子表格程序中读出结果来控制各个生产参数;可以利用VISUAL BASIC开发服务程序,完成数据采集、报表打印、多媒体声光报警等功能,从而很容易组成一个完备的上位机管理系统;还可以和数据库程序、人工智能程序、专家系统等进行通信。
现就组态王与VB应用程序、Excel程序通过DDE方式进行数据交换的使用方法进行简要的说明:
2.组态王与Excel间的数据交换
2.1Excel程序从组态王中获得数据
1)在组态王中建立变量。
图-1
建立变量“B”,并设置允许DDE访问。(本例连接的物理设备为亚控仿真PLC)。
2)创建Excel数据表格,输入访问组态王变量的连接语句。
图-2
选择“R1C2”单元格按如下格式输入DDE连接语句“=VIEW|TAGNAME!设备地址”,其中设备地址为在组态王中定义的IO变量的寄存器地址,其格式为“连接设备名.寄存器名”。在本例中访问组态王中变量“B”的DDE连接语句为“=VIEW|TAGNAME!PLC.INCREA100”。
运行组态王的运行系统(加载演示本演示工程),Excel数据表格可以实时的得到组态王变量的数据。
2.2组态王从Excel程序中获得数据
1)创建Excel数据表格,并给工作表起名为“AAA”(参见图-2)。
2)在工作表“AAA”的R1C1单元格添加“=R1C2”的语句(在R1C1单元格引用)R1C2的值。
3)在组态王中建立Excel的DDE连接。
图-3
在组态王工程浏览器à设备àDDEà新建DDE设备。弹出设备向导(参见图-3),要求输入DDE的连接设备名,本例为“Excel”(可按用户的实际需求命名);单击下一部(参见图-4),设置DDE的服务程序名“Excel”(Excel程序的服务名,不可更改),设置话题名“AAA”(为Excel的表格名称,可以按用户的实际需求设定),设置数据交换方式为“标准的Windows项目交换”(兼容微软应用程序DDE数据交换)。单击下一步(参见图-5),显示所配置DDE设备信息,确认无误后单击完成,即完成Excel DDE设备的配置。
图-4
图-5
在组态王中添加由Excel 作为数据源的IO变量(参见图-6)。设置连接设备为“Excel”(DDE设备名),项目名为“R1C1”(Excel表格的名称)。单击确认。在组态王的画面中建立此IO点的动态连接。
图-6
运行组态王的运行系统(加载本演示工程),参见图-7。Excel 通过DDE连接获得组态王变量“B”的数值,并通过表格的赋值操作将值传递给“R1C1”单元格,组态王IO变量“Excel2”获得此值并显示在画面上。
图-7
3.组态王与VB间的数据交换
3.1VB应用程序从组态王中获得数据
1)创建VB应用程序。(参见图-8)创建标准EXE程序(工程名为VBDDE),窗体名为“VBDome”(DDE服务的话题名)。
图-8
2)VB应用程序中建立与组态王变量的DDE连接(参见图-9),在VB窗体里加一个“Label”控件(将其命名为VB2),在其属性里设置与DDE相关的项目:
设置LinkTopic的值为“view|tagname”(组态王默认的服务名和应用名,不可更改);
设置LinkItem的值为“PLC.INCREA100”(组态王变量得寄存器地址,格式为“连接设备名.寄存器名”);
设置LinkMode的值为“1”(如组态王运行系统未运行,显示错误,参见第3步);
设置LinkTimeout的值为“50”(为默认值即可)。
图-9
3)VB应用程序启动时设置连接模式为自动(VB2.LinkMode=1)。参见图-10。单击窗体(Form),弹出代码编辑框,选择Form的Load属性。键入“VB2.LinkMode=1”。编译本工程。
图-10
4)运行组态王的运行系统(加载本演示工程),运行生成的VB运行程序。Vb应用程序即可通过DDE方式得到组态王变量“B”的实时数据,并显示其值在当前的窗口。
3.2组态王从VB应用程序中获得数据
1)利用上述创建的VB应用程序,在菜单条选择“VBDDE属性”,弹出如下窗口(参见图-11)。选择生成属性框,在应用程序的标题中键入“VBDDE”(DDE服务程序名)。
图-11
2)在窗体里添加TextBox控件(命名为VB1,将作为DDE服务的项目名),参见图-12。选择代码编辑窗口,选择Form的MouseMove事件,键入如下语句“VB1.Text = Int(VB2.Caption)+1”。
图-12
3)设置VBDDE程序为DDE发布端。设置窗体属性的DDE属性,参见图-13。
设置LinkMode的值为“1”(表示应用程序为DDE的发布端);
设置LinkTopic的值为“VBDome”(DDE话题名)。
设置完成并确认无误后即可编译生成应用程序文件。
图-13
4)在组态王建立IO变量,并以前面所创建的VB用程序作为数据源。添加DDE设备的方法同前(定义的DDE设备名为VBDDE),DDE的应用程序名和话题名为前面设置的名称,即应用程序名为“VBDDE”,话题名为“VBDome”。
5)在组态王建立变量“VB2”(参见图-14),连接设备为“VBDDE”,项目名为“VB1”(即为VB程序TexTBox控件的名称)。
图-14
6)在画面里建立与变量“VB2”的动画连接。
7)运行组态王的运行系统(加载演示本演示工程),运行前面建立的VB应用程序(组态王画面的点“VB2”的值不变化,选择菜单中的特殊à“重新建立DDE连接”即可)。参见图-15。本例VB应用程序获得组态王变量“B”的数值并将此数值返回到组态王变量“VB2”中并在画面显示此值。
图-15