WinCC与Excel,VB的本地DDE通讯2

合集下载

利用DDE通信将PLC数据传输到EXCEL

利用DDE通信将PLC数据传输到EXCEL

利⽤DDE通信将PLC数据传输到EXCEL前⾔:微软的Office办公软件功能⾮常强⼤,特别是Excel对数据的分析更是臻于完美。

在⼀些特殊的场景,需要将PLC的实时数据传输到Excel中,利⽤其强⼤的数据处理功能进⾏分析,以便进⾏监视和决策。

如何来实现PLC与Excel进⾏数据交换呢?由于RSLinx和Excel都⽀持DDE,这将使得这⼀需求变得容易多了。

⼀、DDE是什么1、DDE(Dynamic Data Exchange),是⼀种动态数据交换机制。

2、使⽤DDE通讯需要两个Windows应⽤程序,其中⼀个作为服务器处理信息,另外⼀个作为客户机从服务器获得信息。

3、客户机应⽤程序向当前所激活的服务器应⽤程序发送⼀条消息请求信息,服务器应⽤程序根据该信息作出应答,从⽽实现两个程序之间的数据交换。

⼆、情景设定1、夏季已经到了,很多地区更是进⼊了暴⾬季节;2、某⼚区使⽤的AB PLC控制系统进⾏⾬⽔检测及排放;3、该⼚领导要求在其办公室能实时查看3个集⽔井的液位变化,其他数据不需要接⼊。

三、⽅案设计1、由于只需要查看3个液位数据,如果在其办公电脑上安装上位机软件费时费⼒费财,⽽且⼤材⼩⽤,这个⽅案必须否决;2、最优⽅案是:办公电脑安装有Excel,只需要安装RSLinx,利⽤DDE将PLC⾥的集⽔井液位数据传输到Excel,再应⽤其图表分析功能实时显⽰液位数据。

四、⽅法步骤1、Studio 5000的控制器标签⾥存放有3个集⽔井实时液位变量LT[1]、LT[2]、LT[3].2、在已经安装好的RSLinx中,点击DDE/OPC菜单,选择Topic Configuration.3、在弹出的配置窗⼝,按下图标识的顺序进⾏,该步骤是将PLC控制器指定到⼀个DDE通道(testDDE,其名称可顺便填写)。

4、在Edit菜单中,选择Copy DDE/OPC Link,这时出现刚才已经建好的testDDE通道,选择在线,找到1#集⽔井液位变量LT[1],点OK.5、打开Excel,编辑好相关信息,在1#集⽔井实时液位表格单击右键--选择性粘贴—粘贴链接—确定,这样就把PLC中的变量复制到Excel表格中了.6、其他2#、3#集⽔井的液位值只需要把1#变量中的LT[1]改为LT[2]、LT[3]即可.7、光有数据显⽰不是很直观,这时,是Excel的图表发挥其强功能的时候了,按下图顺序操作,将数据变为柱形图显⽰。

Wincc与Excell数据交换实例一二

Wincc与Excell数据交换实例一二

Wincc与Excell数据交换实例一二Wincc与Excell数据交换实例一二Liking5200,sdyjdx关键字:Wincc,Excell,数据交换,动态数据交换(DDE)现实工程中,经常会遇到重要的参数存储子Excell表格中,在Wincc组态画面中,根据现场参数数值,查询调用对应Excell表格内的数据,同时根据经验在此将更新参数重新保存到Excell中去,这就要求我们实现Wincc与excell的通讯读写。

本文通过两个实例,介绍两种Wincc与excell的读写方法。

实例1Excell不做任何处理,通过Wincc按钮创建C动作,实现对Excell 的读写。

首先建立Excell文件,如d:\\Wincc_Excell_RW.xls。

内容如下:Wincc,建立四个内部变量:ReadExcell_X,Excell_Address_R,WriteExcell_X,Excell_Address_W,分别代表读取的数据,读取地址,写入的数据,输入地址,并在组态画面组态四个IO域与之相对应,组态两个按钮“按钮-读-Excell-X”,“按钮-写-Excell-X”,启动读写功能。

为了数据通用,变量类型定义为“文本变量16位字符集”,四个IO域数据格式选“字符串”,根据需要也可设为其他数据类型,但要确保Wincc与Excell相同,不然将发生读写错误或读取不正确。

按钮“按钮-读-Excell-X”,“按钮-写-Excell-X”,分别创建C动作如下按钮“按钮-读-Excell-X”,C动作:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char*lpszPropertyName){#pragma code("Shell32.dll") //调用动态链接库char tag1[20],tag2[20],add[20];__object* pExcel = NULL; //建立 pExcel 指针用来对 EXCEL 进行操作HWND handle=NULL;handle=FindWindow(NULL,"WinCC-运行系统 - ");if (MessageBox(handle,"Start Reading","Read From Excell", MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB _SYSTEMMODAL)==IDYES){ pExcel = __object_create("Excel.Application");pExcel->Visible = 0;pExcel->Workbooks ->Open ("d:\\Wincc_Excell_RW.xls");strcpy(add,GetTagChar("Excell_Address_R"));strcpy(tag1,pExcel->Worksheets("sheet1")->Range(add)->V alue);SetTagChar("ReadExcell_X",tag1);//将地址Excell_Address_R,excel文件里面的内容写到外部变量ReadExcell_XpExcel->Quit();//退出Excel}__object_delete(pExcel);}按钮“按钮-写-Excell-X”,C动作:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma code("Shell32.dll")//调用动态链接库char tag1[20],tag2[20],add[20];__object* pExcel = NULL; //建立 pExcel 指针用来对 EXCEL 进行操作HWND handle=NULL;handle=FindWindow(NULL,"WinCC-运行系统 - ");if (MessageBox(handle,"Start Writing","Write Into Excell",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB _SYSTEMMODAL)==IDYES) { pExcel = __object_create("Excel.Application");pExcel->Visible = 0;//控制excel文件是否可见,当1时,excel文件可见.pExcel->Workbooks ->Open ("d:\\Wincc_Excell_RW.xls");strcpy(add,GetTagChar("Excell_Address_W"));pExcel->Worksheets("sheet1")->Range(add)->Value =GetTagChar("WriteExcell_X");if (MessageBox(handle,"Save the Excell","Write Into Excell", MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB _SYSTEMMODAL)==IDYES) //{ } pExcel->ActiveWorkbook->Save();pExcel->DisplayAlerts = 0;pExcel->Workbooks->Close();//关闭文件pExcel->Quit();//退出Excel}__object_delete(pExcel);}运行情况如下:读B1数据:点击是读C5数据:点击是写B1数据:点击是然后再读取B1:点击是如此,我们可以对Excell文件d:\\Wincc_Excell_RW.xls ――Sheet 1的任意数据进行读写。

WinCC与Excel,VB的本地DDE通讯

WinCC与Excel,VB的本地DDE通讯

WinCC与Excel、VB的本地DDE通讯WinCC Communication with Excel,VB Via DDE摘要WinCC与Excel、VB的本地DDE通讯关键词WinCC ,Excel,VB,DDEKey Words WinCC ,Excel,VB,DDEA&D Service & Support Page 2-11目录1 WinCC 作为DDE的服务器, Excel 作为DDE客户端 (4)2 WinCC 作为DDE的服务器, VB 作为DDE客户端 (6)3 WinCC 作为DDE的客户端,Excel 作为DDE服务器(本地) (7)4 WinCC 作为DDE的客户端,VB作为DDE服务器(本地) (8)附录-推荐网址 (11)A&D Service & Support Page 3-111 WinCC 作为DDE的服务器, Excel 作为DDE客户端1) 打开WinCC项目,在WinCC Explorer 中“计算机属性->启动”中添加应用程序: DdeServ.exe,同时添加命令行参数: /v /n 。

2) 激活WinCC 后,会弹出 WinCC DDE-Server 对话框,点击 Tag List 按钮:A&D Service & Support Page 4-11在列表中选择想要访问的变量,点击“确定”,这样该变量的连接信息就被拷贝到Windows 剪贴板。

A&D Service & Support Page 5-113) 打开Excel,任意(双击)选中一个单元格,将Windows剪贴板的内容拷贝到该单元格中,然后在第一个字符前添加“=”,这样就完成对单元格的输入。

这时在Excel中就能够得到WinCC的内部和外部过程数据了。

4) 如果要访问多个变量,请重复步骤 2) 和 3)。

注意:1) DdeServ.exe 需要一直运行。

关于组态王同VB间的DDE连接

关于组态王同VB间的DDE连接

关于组态王同VB间的DDE连接以下通过一个用VB编写的简单的记时器程序来说明组态王同VB间的DDE连接。

一.V B作为服务器向组态王提供数据VB程序1.运行Visual Basic,新建工程文件vbddesvr.vbp。

将窗体Form1的LinkMode属性设置为1, LinkTopic属性设置为FormTopic(任意名称均可)。

2.在窗体Form1中,放入两个文本框,其文本框Name属性分别命名为TxtRegister (用于向组态王提供计数器)和TxtInterval(用于设置计数器频率)。

3.在窗体Form1中,放入一个Timer 控件Timer1。

4.输入如下代码:Private Sub Form_Load()TxtRegister.Text = 0Timer1.Interval = 200TxtInterval.Text = 200'初期设定End SubPrivate Sub Timer1_Timer()TxtRegister.Text = CStr(CInt(TxtRegister.Text) + 1)If CInt(TxtRegister.Text) >= 1000 ThenTxtRegister.Text = 0End If'计数器记到1000时,重新从0开始End SubPrivate Sub TxtInterval_Change()Timer1.Enabled = FalseTxtRegister.Text = 0Timer1.Interval = CInt(TxtInterval.Text) '设定计数频率Timer1.Enabled = TrueEnd Sub5.生成vbddesvr.exe文件组态王设定1.在“组态王”中定义DDE设备在工程浏览器中,从左边的工程目录显示区中选择“设备\DDE”,然后在右边的内容显示区中双击“新建”图标,则弹出“设备配置向导”,按向导逐步配置DDE设备的各项。

组态王通过DDE与VB和Excel通讯

组态王通过DDE与VB和Excel通讯

组态王通过DDE与VB应用程序、Excel程序进行数据交换组态王支持通过DDE方式与其它应用程序进行数据交换,通过DDE方式用户自编的应用程序可以无缝的与组态王进行数据交换,扩充组态王的功能,为用户提供更为灵活的应用空间。

现就组态王与VB应用程序、Excel程序通过DDE方式进行数据交换的使用方法进行简要的说明:一、与Excel程序进行实时的数据交换Excel程序从组态王中获得数据1.在组态王中建立变量。

图-1建立变量”B”,并设置允许DDE访问。

(本例连接的物理设备为亚控仿真PLC)2.创建Excel数据表格,输入访问组态王变量的连接语句。

图-2选择”R1C2”单元格按如下格式输入DDE连接语句”=VIEW|TAGNAME!设备地址”,其中设备地址为在组态王中定义的IO变量的寄存器地址,其格式为”连接设备名.寄存器名”。

在本例中访问组态王中变量”B”的DDE连接语句为” =VIEW|TAGNAME!PLC.INCREA100”。

3.运行组态王的运行系统(加载演示本演示工程),Excel数据表格可以实时的得到组态王变量的数据。

组态王从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设备的配置。

组态王通过DDE方式从VB或Excel取得数据

组态王通过DDE方式从VB或Excel取得数据

组态王通过DDE方式从VB应用程序、Excel程序读取数据组态王支持通过DDE方式与其它应用程序进行数据交换,通过DDE方式用户自编的应用程序可以无缝的与组态王进行数据交换,扩充组态王的功能,为用户提供更为灵活的应用空间。

现就组态王与VB应用程序、Excel程序通过DDE方式进行数据交换的使用方法进行简要的说明:组态王从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图-54.在组态王中添加由Excel 作为数据源的IO变量(参见图-6)。

设置连接设备为”Excel”(DDE设备名),项目名为”R1C1”(Excel表格的名称)。

单击确认。

在组态王的画面中建立此IO点的动态连接。

图-65.运行组态王的运行系统(加载本演示工程),参见图-7。

Excel 通过DDE连接获得组态王变量”B”的数值,并通过表格的付值操作将值传递给”R1C1”单元格,组态王IO变量”Excel2”获得此值并显示在画面上。

图-7一、与VB应用程序进行实时的数据交换组态王从VB应用程序中获得数据1.利用上述创建的VB应用程序,在菜单条选择”VBDDE属性”,弹出如下窗口(参见图-11)。

Wincc用VBS控制excel

Wincc用VBS控制excel

Wincc用VBS控制excelSub OnClick(Byval Item)Dim fso,folderDim type1Dim patch,filenameDimtestposition,testnumber,startdate,printdate,brand,tyremodel ,rim,tread,condition,load,speed,pres sure,statusSet testposition=HMIRuntime.tags("T estPosition_2")Set testnumber=HMIRuntime.tags("T estNumber_2")Set startdate=HMIRuntime.tags("StartDate_2")Set printdate=HMIRuntime.tags("PrintDate_2")Set brand=HMIRuntime.tags("TypeBrand_2")Set tyremodel=HMIRuntime.tags("TyreType_2")Set rim=HMIRuntime.tags("RimStandard_2")Set tread=HMIRuntime.tags("TyreTread_2")Set condition=HMIRuntime.tags("TestConditionFile_2")Set load=HMIRuntime.tags("StandardLoad_2")Set speed=HMIRuntime.tags("SpeedSymbol_2")Set pressure=HMIRuntime.tags("StandardPressure_2")Set status=HMIRuntime.tags("FinalStatus_2")'***********************check tyre type*******************tyremodel.Readtype1=tyremodel.ValueIf type1="" ThenMsgBox "Please check tire type" , ,"Info"Exit SubElseEnd If'***********************check Report folder****************Set fso=CreateObject("Scripting.FileSystemObject")If (fso.FolderExists("E:\Report")) ThenElseSet folder=fso.CreateFolder("E:\Report")End If'***********************close report************************* Dim objExcelApp,objExcelBook,objExcelSheetOn Error Resume NextDim ExcelApp,ExcelBookSet ExcelApp = GetObject(,"Excel.Application")If TypeName(ExcleApp) = "Application" ThenFor Each ExcelBook In ExcelApp.WorkBooksIf ExcelBook.FullName = "D:\TTM-Monitor 2STA. ver.1.2\TTM-Monitor\Report\Report.xls" Then ExcelApp.ActiveWorkbook.SaveExcelApp.Workbooks.CloseExcelApp.QuitSet ExcelApp= NothingExit ForEnd IfNextEnd If'************************Report waiting massgae***************************Dim waittingbitSet waittingbit = HMIRuntime.Tags("waittingbit")waittingbit.Readwaittingbit.write 1'************************creat connect report_2archive********************Dim sConDim sSqlDim connDim oRsDim oComDim m,nDim DSNDSN = HMIRuntime.Tags("@DatasourceNameRT").ReadsCon="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;Persist Security Info=False;Data Source=.\WINCC;Initial Catalog='" & DSN & "';"sSql = "Select * from UA#Report_2"Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.CursorLocation = 3conn.OpenSet oRs = CreateObject("ADODB.Recordset")Set oCom = CreateObject("/doc/8416257995.html,ma nd")/doc/8416257995.html,mandType = 1 Set oCom.ActiveConnection = conn/doc/8416257995.html,mandT ext = sSqlSet oRs = oCom.Executem = oRs.Fields.Count'************************* write datas to report.xls**********************Set objExcelApp =CreateObject("Excel.Application")objExcelApp.Visible=FalseobjExcelApp.Workbooks.Open"D:\TTM-Monitor 2STA. ver.1.2\TTM-Monitor\Report\Report.xls"objExcelApp.Worksheets(ReportDatas).Activate'****************************report wating message*************************************************** Set waittingbit = HMIRuntime.Tags("waittingbit")waittingbit.Readwaittingbit.write 1'************************************************************** **************** **If (m > 0) ThenoRs.MoveFirstn = 11testposition.ReadobjExcelApp.cells(5,3).value=testposition.valuetestnumber.ReadobjExcelApp.cells(4,3).value=testnumber.valuestartdate.ReadobjExcelApp.cells(6,3).value=startdate.valueprintdate=NowobjExcelApp.cells(7,3).value=printdatebrand.ReadobjExcelApp.cells(8,3).value=brand.valuetyremodel.ReadobjExcelApp.cells(9,3).value=tyremodel.valuerim.ReadobjExcelApp.cells(3,10).value=rim.valuetread.ReadobjExcelApp.cells(4,10).value=tread.valuecondition.ReadobjExcelApp.cells(5,10).value=condition.value load.ReadobjExcelApp.cells(6,10).value=load.value speed.readobjExcelApp.cells(7,10).value=speed.value pressure.ReadobjExcelApp.cells(8,10).value=pressure.value status.ReadobjExcelApp.cells(9,10).value=status.valueDo While Not oRs.EOFn = n + 1objExcelApp.Cells(n,1).Value=oRs.Fields(1).Value objExcelApp.Cells(n,2).Value=oRs.Fields(2).Value objExcelApp.Cells(n,3).Value=oRs.Fields(3).Value objExcelApp.Cells(n,4).Value=oRs.Fields(4).Value objExcelApp.Cells(n,5).Value=oRs.Fields(5).Value objExcelApp.Cells(n,6).Value=oRs.Fields(6).Value objExcelApp.Cells(n,7).Value=oRs.Fields(7).Value objExcelApp.Cells(n,8).Value=oRs.Fields(8).Value objExcelApp.Cells(n,9).Value=oRs.Fields(9).Value objExcelApp.Cells(n,10).Value=oRs.Fields(10).Value objExcelApp.Cells(n,11).Value=oRs.Fields(11).Value objExcelApp.Cells(n,12).Value=oRs.Fields(12).Value objExcelApp.Cells(n,13).Value=oRs.Fields(13).Value objExcelApp.Cells(n,14).Value=oRs.Fields(14).Value objExcelApp.Cells(n,15).Value=oRs.Fields(15).Value objExcelApp.Cells(n,16).Value=oRs.Fields(16).Value objExcelApp.Cells(n,17).Value=oRs.Fields(17).Value oRs.MoveNextLoopfilename=CStr(Year(Now))&"-"&CStr(Month(Now))&"-"&CStr(Day(Now))&"_"&CStr(Hour(Now))&"."&CStr(Minute(Now))&"_"&"STA2"patch= "E:\Report\"&filename&"_"&type1&".xls"objExcelApp.ActiveWorkbook.SaveAs patchobjExcelApp.Workbooks.CloseobjExcelApp.QuitSet objExcelApp= NothingEnd IfoRs.CloseSet oRs = Nothingconn.CloseSet conn = Nothing'**************************************closemessage************************* MsgBox "报表保存成功,路径:E:\Report\"Set waittingbit = HMIRuntime.Tags("waittingbit")waittingbit.Readwaittingbit.write 0'***************************close save as report*********************************** End Sub。

WinCC、Excel、VBA、脚本、连通性软件包

WinCC、Excel、VBA、脚本、连通性软件包

WinCC、Excel、VBA、脚本、连通性软件包1 功能说明在Microsoft office Excel中访问WinCC的历史数据,实现如下图所示的报表:图1: Excel中访问WinCC的历史数据生成报表选择日期后,可以生成当天的风机参数日报表(报表数据来自WinCC)。

2 软件环境本地计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2003远程计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20033 WinCC/Connectivity Pack 介绍WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC/Connectivity Pack提供的OLE-DB接口才能够解压并读取这些数据。

3.1 连接字符串“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;“其中:Catalog:WinCC运行数据库的名称注意:当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。

建议使用WinCC系统变量“@DatasourceNameRT” 获得当前的Catalog。

Data Source :服务器名称本地:“.\WinCC” 或者“<计算机名称>\WinCC”远程:“<计算机名称>\WinCC”3.2 查询语句“TAG:R,<ValueID or ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]”其中:ValueName:格式为“ArchiveName\Value_Name”,可以使用多个名称。

WINCC与EXCEL通过DDE连接的问题

WINCC与EXCEL通过DDE连接的问题

WINCC与EXCEL通过DDE连接的问题
WINCC与EXCEL通过DDE连接的问题
1、我阅读了通过DDE使WINCC与EXCEL的连接文档,但是貌似只能连接内部变量吧?
2、想问一下,如果我想在EXCEL中的指定单元格直接写入外部变量(实时数据),怎么做?是不是需要用内部变量当中间量呢?
3、WINCC怎么能把时间的实时变量传送到EXCEL的指定单元格中?
4、如果是要写VB脚本的话,那么是写在WINCC的全局脚本里,还是写在EXCEL的VB编辑器里呢?
最佳答案
1、可以连接内部变量和外部变量
2、不需要内部变量转换,脚本如下:
objexcelapp.worksheets(“sheet1”).cells(i,j).value=hmirunti me.ta gs(“外部变量”).read
3、和2一样
4、我是放在画面的按钮脚本里。

WinCC程序与VB程序之间采用DDE方式进行数据交换

WinCC程序与VB程序之间采用DDE方式进行数据交换

WinCC程序与VB程序之间采用DDE方式进行数据交换2009-07-30 08:54:03| 分类:Wincc | 标签:|字号大中小订阅描述:VB程序作为DDE的server端,WinCC程序作为DDE的client端,通过简单配置,可以实现双方数据交换,通讯延时在1个周期内。

步骤一:创建一个VB应用项目,先重命名并保存,工程文件名改为“project”(很重要的设置),窗体文件名改为“main”(很重要的设置),Source Code Control项选择“NO”(在编辑程序代码时无须输入密码);同时在属性栏修改工程名和窗体名,和前面保持一致。

步骤二:加入一个TextBox控件对象,一个定时器控件对象和一个Label控件对象;TextBox控件对象的Name属性为“Text”,然后双击定时器控件对象,打开脚本编辑器,在定时器函数内编写0至100的循环加1程序,并根据定时器设置周期进行累加。

Label控件对象的Name属性为“Label”。

程序代码和运行界面如下图所示。

图1步骤三:选中Form,在属性栏中找到DDE选项,将“LinkMode”选为“1-Source”,将“LinkTopic”选为“main”(窗体文件名),然后生成.exe可执行程序,文件名为testcom.exe。

步骤四:创建一个WinCC项目,创建WINDOWS DDE通道,点击“DDE”属性,新建一个Connection,打开其属性,在Application中输入VB程序的工程文件名“project”,在Topic中输入VB程序的LinkTopic属性名“main”,点击“OK”完成设置。

图2图3步骤五:在New Connection中新建一个WORD型16-bit变量,设置Address的Select属性,其中Item Name输入“Text”(VB程序的控件名),Data Type选择WORD类型,点击“OK”完成设置;再新建一个text型8-bit 变量,设置Item Name为“Label”(VB程序控件名),Data Type选择TEXT8类型,点击“OK”完成设置。

WinCC与Excel,VB的本地DDE通讯

WinCC与Excel,VB的本地DDE通讯

WinCC与Excel,VB的本地DDE通讯WinCC与Excel、VB的本地DDE 通讯1.WinCC 作为DDE的服务器,Excel 作为DDE客户端2.WinCC 作为DDE的服务器,VB 作为DDE客户端3.WinCC 作为DDE的客户端,Excel 作为DDE服务器1WinCC 作为DDE的服务器, Excel 作为DDE客户端1)打开WinCC项目,在WinCC Explorer 中“计算机属性->启动”中添加应用程序 : DdeServ.exe ,同时添加命令行参数: /v /n 。

2)激活WinCC 后,会弹出WinCC DDE-Server 对话框,点击Tag List 按钮:在列表中选择想要访问的变量,点击“确定”,这样该变量的连接信息就被拷贝到Windows剪贴板。

3)打开Excel ,任意(双击)选中一个单元格,将Windows剪贴板的内容拷贝到该单元格中,然后在第一个字符前添加“=”,这样就完成对单元格的输入。

这时在Excel中就能够得到WinCC的内部和外部过程数据了。

4)如果要访问多个变量,请重复步骤 2)和 3)。

注意:1) DdeServ.exe 需要一直运行。

2) 这种连接是单向的。

返回2WinCC 作为DDE的服务器, VB 作为DDE客户端1)打开WinCC项目,在WinCC Explorer 中“计算机属性->启动”中添加应用程序 : DdeServ.exe ,同时添加命令行参数: /v /n 。

2)激活WinCC。

3)打开VB,在窗体上放置 T extBox 控件,设置该控件的下列属性:a)LinkTopic=WinCC|\\计算机名称\该WinCC项目的文件夹的共享名\该WinCC项目名.mcpb)LinkItem=WinCC的变量名称c)LinkMode=Automatic 。

只要该属性一生效,此T extBox控件就能在编辑状态下取得WinCC 变量的值。

组态王通过DDE方式从VB或Excel取得数据

组态王通过DDE方式从VB或Excel取得数据
5.在组态王建立变量”VB2”(参见图-14),连接设备为”VBDDE”,项目名为”VB1”(即为VB程序TexTBox控件的名称)。
图-14
6.在画面里建立与变量”VB2”的动画连接。
7.运行组态王的运行系统(加载演示本演示工程),运行前面建立的VB应用程序(组态王画面的点”VB2的值不变化,选择菜单中的特殊”重新建立DDE连接”即可)。参见图-15。本例VB应用程序获得组态王变量”B”的数值并将此数值返回到组态王变量”VB2”中并在画面显示此值。
北京亚控科技发展有限公司技术部pageddevbexcel组态王支持通过dde方式与其它应用程序进行数据交换通过dde方式用户自编的应用程序可以无缝的与组态王进行数据交换扩充组态王的功能为用户提供更为灵活的应用空间
组态王通过
组态王支持通过DDE方式与其它应用程序进行数据交换,通过DDE方式用户自编的应用程序可以无缝的与组态王进行数据交换,扩充组态王的功能,为用户提供更为灵活的应用空间。
图-15
图-12
3.设置VBDDE程序为DDE发布 Nhomakorabea。设置窗体属性的DDE属性,参见图-13。
设置LinkMode的值为”1”(表示应用程序为DDE的发布端);
设置LinkTopic的值为”VBDome”((DDE话题名)。
设置完成并确认无误后即可编译生成应用程序文件。
图-13
4.在组态王建立IO变量,并以前面所创建的VB用程序作为数据源。添加DDE设备的方法同前(定义的DDE设备名为VBDDE),DDE的应用程序名和话题名为前面设置的名称,即应用程序名为”VBDDE”,话题名为”VBDome”。
现就组态王与VB应用程序、Excel程序通过DDE方式进行数据交换的使用方法进行简要的说明:

VB与excel通讯

VB与excel通讯

VB与excel通讯VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。

因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。

但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。

一、 VB读写EXCEL表:VB本身提自动化功能可以读写EXCEL表,其方法如下:1、在工程中引用Microsoft Excel类型库:从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。

表示在工程中要引用EXCEL类型库。

2、在通用对象的声明过程中定义EXCEL对象:Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkBookDim xlSheet As Excel.Worksheet3、在程序中操作EXCEL表常用命令:Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件xlApp.Visible = True '设置EXCEL对象可见(或不可见)Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表xlSheet.Cells(row, col) =值 '给单元格(row,col)赋值xlSheet.PrintOut '打印工作表xlBook.Close (True) '关闭工作簿xlApp.Quit '结束EXCEL对象Set xlApp = Nothing '释放xlApp对象xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。

WinCC通过VBS的Excel文件操作

WinCC通过VBS的Excel文件操作
2.4 移动文件 objFSO.MoveFile "C:\Path\File.txt" "C:\Path\File2.txt"
2.5 删除文件 objFSO.DeleteFile "C:\Path\File.txt"
WinCC 通过 VBS 的 Excel 文件操作
二、 Excel 文件访问
1. Application 对象 WinCC 下使用 VBS 访问 Excel ,实际上是对 Excel 的 Application 对象成员进行编程。 Application 对象是 Excel 对象模型中最高级别的对象,表示 Excel 程序自身。 Application 对 象提供正在运行的程序的信息、应用于程序实例的选项以及实例中打开的当前对象。在
对象 /集合 FileSystemObject
Drive
Drives File Files Folder Folders TextStream
类型 主对象
对象
集合 对象 集合 对象 集合 对象
描述 包含用来创建、删除和获得有关信息以及通常用来操作驱 动器、文件夹与文件的方法和属性。和该对象相关联的许 多方法,与其他 FSO 对象中的方法完全相似;它们是为 了方便才被提供的。 包含用来收集信息的方法和属性,这些信息是关于连接在 系统上的驱动器的,如驱动器的共享名和它有多少可用空 间。可以是硬盘、光驱、 RAM 磁盘、网络共享驱动器 等。 提供驱动器的列表,这些驱动器物理地或逻辑地与系统相 连接。 Drives 集合包括所有驱动器,与类型无关。 包含用来创建、删除或移动文件的方法和属性,也用来向 系统询问文件名、路径和多种其他属性。
Tag1 、Tag2 、
4.1 创建 WinCC 起始画面 Start.pdl ,并在“打开画面”事件中加入如下脚本:

基于DDE 技术的WinCC与VB通讯研究

基于DDE 技术的WinCC与VB通讯研究

基于DDE 技术的WinCC与VB通讯研究池行强;郭均瑶;肖盼【期刊名称】《工业控制计算机》【年(卷),期】2016(029)011【摘要】针对WinCC监控软件与VB的通讯问题,详细介绍了WinCC与VB利用DDE技术进行通信的实现过程,给出了WinCC实现VB连接的具体步骤。

根据需要建立DDE服务器,将各类数据传送给上位机的应用程序,丰富了对数据的处理方法。

%In order to solve communication problems between the WinCC monitoring software and VB,the process of real-ize communication between WinCC and VB using DDE technology is presented indetail,specific steps are given also in this paper.Building DDE server according to the need,and transmit al kinds of data to the PC applications,so that the methods of data processing are enriched.【总页数】2页(P22-23)【作者】池行强;郭均瑶;肖盼【作者单位】武汉市计量测试检定研究所,湖北武汉 432100;武汉市计量测试检定研究所,湖北武汉 432100;武汉市计量测试检定研究所,湖北武汉 432100【正文语种】中文【相关文献】1.基于DDE技术的MATLAB和WinCC数据的通讯与分析 [J], 唐传斌;王伟2.基于DDE机理的WinCC和Matlab网络通讯研究 [J], 邹伟;孙瑜;周海君;张根宝3.基于DDE的FIX与VB数据通讯的实现 [J], 雷兆明;陈曦;梁淑芬4.基于DDE、NETDDE技术解决不同组态软件通讯的方法 [J], 张继军;桂芳5.利用DDE技术实现组态王与VB应用程序的数据通讯 [J], 王树勇因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SIEMENS
WinCC与Excel、VB的本地DDE通讯(WinCC Communication with Excel,VB Via DDE)
摘要
WinCC与Excel、VB的本地DDE通讯
关键词
WinCC ,Excel,VB,DDE
Key Words
WinCC ,Excel,VB,DDE
网上课堂-/service/e training/ Page 2-8
WinCC与Excel、VB的本地DDE 通讯
1. WinCC 作为DDE的服务器,Excel 作为DDE客户端
2. WinCC 作为DDE的服务器,VB 作为DDE客户端
3. WinCC 作为DDE的客户端,Excel 作为DDE服务器
4. WinCC 作为DDE的客户端,VB 作为DDE服务器
1 WinCC 作为DDE的服务器, Excel 作为DDE客户端
1) 打开WinCC项目,在WinCC Explorer 中“计算机属性->启动”中添加
应用程序 : DdeServ.exe ,同时添加命令行参数: /v /n 。

网上课堂-/service/e training/ Page 3-8
2) 激活WinCC 后,会弹出 WinCC DDE-Server 对话框,点击 Tag List 按
钮:
在列表中选择想要访问的变量,点击“确定”,这样该变量的连接信息就被拷贝到Windows剪贴板。

3) 打开Excel ,任意(双击)选中一个单元格,将Windows剪贴板的内容
拷贝到该单元格中,然后在第一个字符前添加“=”,这样就完成对单元网上课堂-/service/e training/ Page 4-8
格的输入。

这时在Excel中就能够得到WinCC的内部和外部过程数据
了。

4) 如果要访问多个变量,请重复步骤 2)和 3)。

注意:1) DdeServ.exe 需要一直运行。

2) 这种连接是单向的。

返回
2 WinCC 作为DDE的服务器, VB 作为DDE客户端
1) 打开WinCC项目,在WinCC Explorer 中“计算机属性->启动”中添加
应用程序 : DdeServ.exe ,同时添加命令行参数: /v /n 。

2) 激活WinCC。

3) 打开VB,在窗体上放置 TextBox 控件,设置该控件的下列属性:
a) LinkTopic=WinCC|\\计算机名称\该WinCC项目的文件夹的共享名\该
WinCC项目名.mcp
b) LinkItem=WinCC的变量名称
c) LinkMode=Automatic 。

只要该属性一生效,此TextBox控件就能在编
辑状态下取得WinCC 变量的值。

返回
3 WinCC 作为DDE的客户端,Excel 作为DDE服务器(本地)
1) 打开WinCC Explorer,在“变量管理”中建立“WINDOWS DDE”通道
和连接,其连接属性中:
“计算机名称”为空;
“应用程序”为Excel;
“主题”为 [Excel文件名]工作表名,比如 [book1.xls]sheet1 。

网上课堂-/service/e training/ Page 5-8
2) 建立新变量,在变量属性中选择地址,条目名称填: r 行数c列数,比如
r1c1 (表示第一行第一列的单元格)
网上课堂-/service/e training/ Page 6-8
3) 重复步骤2)可以加入更多的DDE变量。

返回
4 WinCC 作为DDE的客户端,VB作为DDE服务器(本地)
1) 创建VB窗体,注意下图窗体属性设置,生成可执行文件p1.exe;
2) 创建WinCC DDE 连接;
3) 创建变量。

网上课堂-/service/e training/ Page 7-8
返回
附录-推荐网址
HMI
西门子(中国)有限公司
自动化与驱动集团客户服务与支持中心
网站首页:/Service/
HMI常问问题:/CN/view/zh/10805548/133000
HMI更新信息:/CN/view/zh/10805548/133400
“找答案”WinCC版区:/service/answer/category.asp?cid=1032 WinCC“网上课堂”:/service/e-training/list.asp?columnid=8 Panel/ProTool/WinCC Flexible “网上课堂”:/service/e-training/list.asp?columnid=9
网上课堂-/service/e training/ Page 8-8。

相关文档
最新文档