Delphi7.0开发OPC客户端程序(Siemens_Opc_client)

合集下载

OPCClient客户端工具使用说明

OPCClient客户端工具使用说明

OPCClient客户端测试工具使用说明
编写人胡强编写时间2004-10-8
修改人侯桂香修改时间2005-04-7
OPC Client 测试软件仅用于辅助测试OPC SERVER端是否正常传送数据。

1.注册
开始-> 程序选择“MACSII OPC SERVER V2.2”->“OPC 注册”,如下图:
点击“确定”,如下图:
点击“确定”,即完成注册。

2.运行
开始-> 程序选择“OPC Client 测试”->“OPC Client”,显示如下对话框:
选择“OPC”---“connect”连接OPC服务端
Server Node填写MACSOPC.exe所在服务器的机器名,出现Available servers后,选中,OK 如果Available Servers没有显示,请按Refresh List按钮,等待出现Available Servers显示。

选择“OPC”---“ADD ITEM”,出现如下对话框:
双击选中FAAMBCT0_A V,点击DONE, 出现如下对话框:
鼠标右键单击项名,选择“Write value…”
请特别注意:
OPCCLIENT连接服务器端的时候,客户端操作系统登录的用户名和密码必须和服务器端当前用户名,密码保持一致,才能实现远程连接。

DELPHI7.0及其串口通信

DELPHI7.0及其串口通信

Delphi7.0及其串口通信2.1Delphi7.0简介2.1.1Delphi7.0基本界面Delphi是由Borland公司于1995年推出的快速应用软件开发工具RAD (Rapid Application Development)。

Delphi使用了当今世界上比较先进的很多程序开发思想,使用Delphi开发软件无疑会大大提高软件开发的效率。

本文以Delphi7.0作为平台,进行软件开发。

Delphi7.0打开的主界面如图2.1所示。

图2.1Delphi7.0主界面2.1.2Delphi7.0的特点和优点Delphi7.0是Windows系统下的具有功能强大、简便易用和代码执行速度快等优点的可视化集成开发工具,它提供了强大的可视化组件VCL(Visual Component Library)功能,使程序员可以快速高效的开发出Windows系统下的应用程序。

和其他软件开发工具相比,Delphi在网络编程、数据库编程、程序界面方面更胜一筹,而且增加了对Linux平台下应用程序开发的更强大支持。

而且它在构架企业信息系统方面也发挥着越来越重要的作用,因此许多程序员愿意选择Delphi作为开发工具编制各种应用程序[2]。

(1)可视化的集成开发环境Delphi提供了可视化的集成开发环境IDE(Integrated Development Environment)。

可视化环境是指用户在设计程序界面的时候,无须为程序界面编写代码,只需将相应的组件添加到窗体上,调节其大小和位置即可,Delphi会自动生成相应的代码。

Delphi的集成开发环境不仅可以非常方便的设计出用户的程序界面,而且程序的界面设计、属性设计、代码编写、程序调试、运行、生成可执行文件等操作都可以在这个集成开发环境中进行,使得软件设计变得非常的快捷、高效。

(2)真正的面向对象面向对象的程序设计OOP(Object Oriented Programming)是Delphi诞生的基础。

DELPHI OPC Client 例子

DELPHI  OPC Client 例子

DELPHI OPC Client 例子(2008-09-25 20:23:52)分类:DELPHI 标签:delphi opc client opcserver remoteserver security group杂谈unit Unit1;interfaceusesWindows, Forms, ComObj, ActiveX, SysUtils, OPCtypes, OPCDA, OPCutils,StdCtrls, Classes, Controls, OPCenum;typeTForm1 = class(TForm)Button1: TButton;ListBox1: TListBox;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;constOneSecond = 1 / (24 * 60 * 60);// these are for use with the Matrikon sample serverServerProgID = 'OPC.SimaticNET';Item0Name = 'S7:[@LOCALSERVER]DB1,STRING8.10';Item1Name = 'S7:[@LOCALSERVER]DB1,STRING30.10';RPC_C_AUTHN_LEVEL_NONE = 1;RPC_C_IMP_LEVEL_IMPERSONATE = 3;EOAC_NONE = 0;varServerIf: IOPCServer;GroupIf: IOPCItemMgt;GroupHandle: OPCHANDLE;Item0Handle: OPCHANDLE;Item1Handle: OPCHANDLE;ItemType: TVarType;ItemValue: string;ItemQuality: Word;HR: HResult;AdviseSink: IAdviseSink;AsyncConnection: Longint;OPCDataCallback: IOPCDataCallback;StartTime: TDateTime;Form1: TForm1;OPCServerList: TOPCServerList;CATIDs: array of TGUID;ServerNames: TStringList;I: Integer;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);beginServerNames := TStringList.Create;trySetLength(CATIDs, 0);OPCServerList := TOPCServerList.Create('', True, CATIDs); tryOPCServerList.Update;ServerNames.AddStrings(OPCServerList.Items);finallyOPCServerList.Free;end;ListBox1.items.Add('OPC servers from registry: -');for I := 0 to ServerNames.Count - 1 dobeginListBox1.items.Add(ServerNames[I]);end;ServerNames.Clear;SetLength(CATIDs, 1);CATIDs[0] := CATID_OPCDAServer20;OPCServerList := TOPCServerList.Create('', False, CATIDs); tryOPCServerList.Update;ServerNames.AddStrings(OPCServerList.Items);finallyOPCServerList.Free;end;ListBox1.items.Add('OPC DA 2.0 servers from server browser: -');for I := 0 to ServerNames.Count - 1 dobeginListBox1.items.Add(ServerNames[I]);end;finallyServerNames.Free;end;end;procedure TForm1.Button2Click(Sender: TObject);BeginHR := CoInitializeSecurity(nil, // points to security descriptor-1, // count of entries in asAuthSvcnil, // array of names to registernil, // reserved for future useRPC_C_AUTHN_LEVEL_NONE, // the default authentication level for proxiesRPC_C_IMP_LEVEL_IMPERSONATE,// the default impersonation level for proxies nil, // used only on Windows 2000EOAC_NONE, // additional client or server-side capabilities nil // reserved for future use);if Failed(HR) thenbeginMessagebox(Self.Handle,'Failed to initialize DCOM security','提示',1);end;tryServerIf := CreateRemoteComObject('172.20.110.49',ProgIDToClassID(ServerPro gID)) as IOPCServer;exceptServerIf := nil;end;if ServerIf <> nil thenbeginMessagebox(Self.Handle,'Connected to OPC server','提示',1);endelse beginMessagebox(Self.Handle,'Unable to connect to OPC server','提示',1);Exit;end;// now add a groupHR := ServerAddGroup(ServerIf, 'MyGroup', True, 500, 0, GroupIf, GroupHandle); if Succeeded(HR) thenbeginMessagebox(Self.Handle,'Added group to server','提示',1);endelse beginMessagebox(Self.Handle,'Unable to add group to server','提示',1);Exit;end;// now add an item to the groupHR := GroupAddItem(GroupIf, Item0Name, 0, VT_EMPTY, Item0Handle,ItemType);if Succeeded(HR) thenbeginMessagebox(Self.Handle,'Added item 0 to group','提示',1);endelse beginMessagebox(Self.Handle,'Unable to add item 0 to group','提示',1);ServerIf.RemoveGroup(GroupHandle, False);Exit;end;// now add a second item to the groupHR := GroupAddItem(GroupIf, Item1Name, 1, VT_EMPTY, Item1Handle,ItemType);if Succeeded(HR) thenbeginMessagebox(Self.Handle,'Added item 1 to group','提示',1);endelse beginMessagebox(Self.Handle,'Unable to add item 1 to group','提示',1);ServerIf.RemoveGroup(GroupHandle, False);end;// now try to read the item value synchronouslyHR := ReadOPCGroupItemValue(GroupIf, Item0Handle, ItemValue, ItemQuality); if Succeeded(HR) thenbeginif (ItemQuality and OPC_QUALITY_MASK) = OPC_QUALITY_GOOD thenbeginMessagebox(Self.Handle,Pchar(ItemValue),'提示',1);endelse beginMessagebox(Self.Handle,'Item 0 value was read synchronously, but quality was not good','提示',1);end;endelse beginMessagebox(Self.Handle,'Failed to read item 0 value synchronously','提示', 1);end;// finally write the value just read from item 0 into item 1HR := WriteOPCGroupItemValue(GroupIf, Item1Handle, 'TDSSSS');if Succeeded(HR) thenbegin//Writeln('Item 1 value written synchronously');endelse beginMessagebox(Self.Handle,'Failed to write item 1 value synchronously','提示', 1);end;// and try to read it backHR := ReadOPCGroupItemValue(GroupIf, Item1Handle, ItemValue, ItemQuality); if Succeeded(HR) thenbeginif (ItemQuality and OPC_QUALITY_MASK) = OPC_QUALITY_GOOD thenbeginMessagebox(Self.Handle,Pchar(ItemValue),'提示',1);else beginMessagebox(Self.Handle,'Item 1 value was read synchronously, but quality was not good','提示',1);end;endelse beginMessagebox(Self.Handle,'Failed to read item 0 value synchronously','提示', 1);end;// now cleanupHR := ServerIf.RemoveGroup(GroupHandle, False);if Succeeded(HR) thenbeginMessagebox(Self.Handle,'Removed group','提示',1);endelse beginMessagebox(Self.Handle,'Unable to remove group','提示',1);end;end ;end.。

delphi用Automation接口编写OPC客户端

delphi用Automation接口编写OPC客户端

delphi 用Automation接口编写OPC客户端一,首先是OPCAutomation 的安装1)使用regsvr32 注册 OPCDAAuto.dll2)在 Delphi 的project菜单中,选导入类型库 OPC Automation 2.0。

二编写程序声明 OPC 的类与接口FOPCServer:TOPCServer;FOPCGroup :TOPCGroup;FOPCb :OPCBrowser;FOPCItems :OPCItems; // interfaceFOPCItem :OPCItem; // interface// 获取OPC Server 列表function TForm1.OPCServerList(): Boolean;var OPCServerList,OPCServerName:OleVariant;j,i:integer;beginResult := false;tryFOPCServer := TOPCServer.Create(Self);OPCServerList:=FOPCServer.GetOPCServers;i:=VarArrayHighBound(OPCServerList,1);for j:=1 to i dobeginOPCServerName:=VarArrayGet(OPCServerList,j);lboxServerName.Items.Add(OPCServerName);end;exceptResult := False;end;end;// 连接OPC Serverfunction TForm1.OPCServerConnect(sServerID:string): Boolean; beginResult := true;tryFOPCServer.Connect1(sServerID);exceptResult := False;end;end;// 断开与OPC 服务器的连接procedure TForm1.OPCServerDisconnect;beginif Assigned(FOPCServer) thenbeginif Assigned(FOPCGroup) thenbeginFOPCServer.OPCGroups.RemoveAll;FOPCGroup.Free;FOPCGroup := nil;end;FOPCItems := nil;FOPCItem := nil;FOPCServer.Disconnect;FOPCServer.Free;FOPCServer := nil;end;end;// 创建连接OPC Groupfunction TForm1.OPCGroupConnect(AGroupName: OleVariant): Boolean; beginResult := True;tryFOPCGroup := TOPCGroup.Create(Self);FOPCGroup.ConnectTo(FOPCServer.OPCGroups.Add(AGroupName));FOPCGroup.UpdateRate :=1000;FOPCGroup.IsActive := True;FOPCGroup.IsSubscribed := True; // 事件支持exceptResult := False;end;end;procedure TForm1.BrowseItem(curNode:TTreeNode);var i: Integer;sItemName:WideString;beginwith FOPCb dobeginFilter:='*';DataType:=0;AccessRights:=0;ShowBranches;for i:=1 to Count dobeginsItemName:=Item(i);TvItemView.Items.AddChild(curNode,sItemName);end;// TvItemView.Selected.Expand(true);end;end;procedure TForm1.ADDBrowserItem;vari,iOrg:integer;sItemName:WideString;beginFOPCb:=FOPCServer.CreateBrowser;iOrg:=FOPCb.Get_Organization;if iOrg=2 then //平坦式结构beginwith FOPCb dobeginFilter:='*';DataType:=0;AccessRights:=0;ShowLeafs(true);for i:=1 to Count dobeginsItemName:=Item(i);TvItemView.Items.AddChild(SerVerNameNode,sItemName);end;end;endelse begin //树状结构BrowseItem(SerVerNameNode);end;end;procedure TForm1.SetBrowsePosition(sPosition:string);begintryFOPCb.MoveToRoot;caption:=sPosition;FOPCb.MoveDown(sPosition);except;end;end;procedure ItemViewClick(Sender: TObject);var i: Integer;sItemName:WideString;beginListBox1.Clear;SetBrowsePosition(TvItemView.Selected.Text);with FOPCb dobeginFilter:='*';DataType:=0;AccessRights:=0;ShowLeafs(true);for i:=1 to Count dobeginsItemName:=Item(i);ListBox1.Items.Add (sItemName);end;end;end;procedure ItemViewExpanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);beginif not TvItemView.Selected.HasChildren thenbeginSetBrowsePosition(TvItemView.Selected.Text);BrowseItem(TvItemView.Selected);end;end;//添加一个项procedure TForm1.OPCItemAdd(sItemName:string);beginFOPCItems := FOPCGroup.OPCItems;FOPCItems.DefaultRequestedDataType:=0;FOPCItems.DefaultIsActive :=true;FOPCItem:=FOPCItems.AddItem(sItemName,ItemIndex);end;//读取指定项function TForm1.ReadData(ItemName:string):OleVariant;varValue, Quality, TimeStamp: OleVariant;beginFOPCitem :=FOPCItems.Item(ItemName);if not Assigned(FOPCItem) then Exit;FOPCItem.Read(OPCDevice, Value, Quality, TimeStamp);ReadData :=Value;end;。

一种基于OPC的Delphi程序与PLC通讯的实现方法

一种基于OPC的Delphi程序与PLC通讯的实现方法
OPC 客户端开发中以动态链接库或组件形式的 OPC 客户 端开发工具的通用性强,对开发环境的要求较小,可以在任意支 持动态链接库或组件形式的环境下使用,开发者只要使用动态连 接库的输出函数或组件的接口函数即可完成 OPC 客户端程序的
《工业控制计算机》2011 年第 24 卷第 11 期
47
开发,这种方法使用简单,通常能够满足多数用户的开发需求。 2.1 组件的引用
end; end; end;
2.5 OPC 变量的写入
当需要对变量进行控制时,例如需要对 PLC 中的 变 量 进 行
写操作时,可以调用 write 方法实现,部分代码如下:
procedure TForm1.Button4Click(Sender: TObject);
var
myvalue:OleVariant;
将工业现场的设备与
PC 工作站通 过 多 种 通
讯网络联系在一起,本文
使用的 OPC Server 为 SIMATIC NET OPC
图 1 系统结构图
Server,其 名 称 为 :OPC.simaticNET 。
1.1 S7 PLC 的组态
1)使用 SIMATIC Manager 配置一个 S7-300 的站点,双击
完成 '; except MessageBox(0, OPC 服务器连接时出现错误,请检查服务器名、节
点名及服务器状态 '', ' 系统错误 ', MB_OK + MB_ICONSTOP); end;
end; 2.3 连接 OPC 变量
根 据 ACCESS 数 据 库 中 预 定 义 的 变 量 名 称 连 接 相 应 的 变 量,即读取 ACCESS 数据库中的变量名称并根据相应的变量名 称连接变量,部分代码如下: procedure TForm1.N8Click(Sender: TObject); / / OPC 变量的连接 var i:integer;

DELPHI下OPC客户端开发入门

DELPHI下OPC客户端开发入门

DELPHI下OPC客户端开发⼊门⼀、通信拓扑根据实际⼯作的内容,需要利⽤OPC作为媒介实现delphi程序与组态王软件的通信。

不同于通常的思路,将组态王作为数据的提供者,直接采集plc等控制器的数据,然后⽤delphi做显⽰,我这次的⼯作是刚好相反的,因为原有的⼀些⼯业控制现场已经采⽤delphi编写了各⾃的显⽰程序,但是现在需要将四个⼯业现场的数据传输到⼀个总控的地⽅作为⼀个总得显⽰端,⽽这个显⽰端要⽤组态王开发,因此,就相当于delphi为组态王提供数据。

因此,肯定需要频繁的使⽤delphi给组态王发送数据。

最初考虑的是利⽤delphi作为服务器端,组态王作为客户端,这样有利于数据的传输,但是,经过⼀段时间的研究,发现开发delphi的OPC服务器不是易事,需要花费很多的时间,为了快速的进⾏项⽬开发,我同样采⽤delphi作为客户端,组态王作为服务器来进⾏开发,同样实现了数据的双向传输。

具体的通信拓扑如图⼀所⽰。

图⼀⼀、资料准备实际开发过程中所⽤到的⼀些资料如下:1、 delphi 7 集成开发环境2、组态王软件3、 OPCDll4、 OPC客户化接⼝标准说明⽂档5、 Delphi opc接⼝实现程序包说明:OPCDll包含名为opc_aeps.dll,opccomn_ps.dll,OPCDAAuto.dll,opchda_ps.dll,opcproxy.dll的五个dll⽂件,在使⽤之间需要进⾏注册。

不过实际上,在安装完组态王软件以后,这⼏个⽂件就已经被注册了,因此我在开发的时候并没有单独进⾏注册,OPC客户化接⼝说明⽂档是进⾏客户化OPC开发必备的参考资料,由OPC基⾦会提供。

我打包了⼀下OPC客户化接⼝以及⾃动化接⼝的说明⽂档,有需要下载的请访问Delphi opc接⼝实现程序包是前⼈编写的,我整理了⼀下编写客户端需要的⼀些源⽂件,包括:OPC_AE.pasOPCCOMN.pasOPCDA.pasOPCerror.pasOPCHDA.pasOPCSEC.pasOPCtypes.pasOPCutils.pas其中,OPCutils.pas以上是对OPC提供的接⼝函数的声明,OPCutils.pas⽂件实现了编写客户端基本的⼀些函数,例如连接服务器,为服务器添加组,为组添加条⽬等等功能。

OPC服务器和客户端程序开发指南.doc

OPC服务器和客户端程序开发指南.doc

OPC服务器和客户端程序开发指南第一章OPC概述关键词:Comdcmopcda通信标准CLIENTSERVER GROUP ITEM自定义接口自动化接口同步异步回调随着计算机科学技术、工业控制等方面新技术的飞速发展,计算机监控系统从早期的集中式监控向全分布式方向发展,计算机监控系统软件随着面向对象技术的成熟,分布式对象计算、多级客户机/服务器技术也从早期的功能系统软件,发展成为以特定现场设备为特征的面向对象的监控系统软件。

与此同时,计算机监控系统的规模越来越大,不同厂家生产的现场设备种类也越来越多。

由于不同厂家提供的现场设备的通信机制不尽相同,需要由计算机监控系统软件开发的硬件设备通信驱动程序越来越多,导致硬件通信驱动程序需要不断开发的现象。

基于COM/DCOM技术的OPC技术提供了统一的通信标准,不同的厂商只要遵循OPC技术标准,就可以实现软硬件的互操作。

过程控制技术是专门为过程控制而设计的。

它是由一些世界领先的自动化系统和软硬件公司与微软公司密切合作建立的,并成立了一个专门的OPC 基金会来管理它。

OPC基金会负责OPC规范的制定和发布。

OPC提出了一套统一的标准,采用典型的客户机/服务器模式。

硬件设备的驱动程序由硬件制造商或专业公司完成,为服务器程序提供统一的OPC接口标准。

软件制造商只能通过根据OPC标准编写客户端程序来访问(读/写)服务器程序来实现与硬件设备的通信。

如图1.1所示,与传统的通信开发方法相比,OPC技术具有以下优点:硬件供应商熟悉他们自己的硬件设备,因此设备驱动程序更加可靠和高效。

软件制造商可以缩短复杂设备驱动程序的开发周期,只需要开发一套符合OPC标准的程序来实现与硬件设备的通信,这样就可以投入人力和物力来改善系统功能。

可以实现软件和硬件的互操作性。

OPC区分了软件和硬件制造商,大大提高了双方的工作效率。

图1.1应用前后的OPC技术对比因此,OPC技术的出现得到了众多软硬件制造商的支持,并且发展迅速。

OPCClient User Guide

OPCClient User Guide

OPCClient使用快速指南北京恒和大风软件技术有限公司目 录1. 安装 (1)2. 远程OPC连接配置 (1)3. 编辑I/O点对照表文件 (8)4. 运行OPCClient (10)5. 建立与OPCServer间的连接 (11)6. 导入对照表 (12)7. 保存连接信息及对照表信息 (14)8. 开关状态检查 (14)9. 程序退出 (16)10. 其他常用操作 (16)10.1 设置通讯时间间隔 (16)10.2 设置断线自动重连时间间隔 (17)10.3 设置画面刷新时间间隔 (18)10.4 事件信息显示区的操作 (18)10.5 OPCServer连接、组及对点项的删除 (19)1.安装运行安装程序OPCClient_Setup.exe,弹出安装界面,如图1所示。

选择目标文件夹为SimuEngine的安装路径,然后点击“安装”按钮即可。

图1 安装界面2.远程OPC连接配置如果OPCServer与OPCClient不在同一台计算机上,则需要对两台计算机进行连接配置。

如果OPCServer与OPCClient在同一台计算机上运行,则不需要做此配置。

远程OPC连接配置应按以下步骤进行(注意:两台计算机的都需要做以下配置):1)用户名和密码的设置两台计算机要使用相同的用户名和密码进行登录,并且密码不能为空。

2)在运行OPCClient的计算机上也需要运行OPCServer的注册程序(一般直接运行OPCServer的安装程序即可)。

3)DCOM配置打开Windows的运行窗口,输入dcomcnfg,如图2所示,然后点击“确定”按钮。

弹出组件服务设置窗口,如图3所示。

图2 运行DCOM配置图3 组件服务设置窗口选择“组件服务\计算机\我的电脑\DCOM配置”,在对象中找到要连接的OPCServer,例如ProConOS OPC-Server 2.0,如图4所示。

在其上点击鼠标右键,选择“属性”,则弹出其属性设置窗口,如图5所示。

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

OPC是OLE for Process Control的缩写,即把OLE应用于工业控制领域,OPC是建立在O LE规范之上,它为工业控制领域提供了一种标准的数据访问机制。

OPC服务器由三类对象组成:服务器(Server)、组(Group)、数据项(Item)。

服务器对象(Server)拥有服务器的所有信息,同时也是组对象(Group)的容器。

组对象(Group)拥有本组的所有信息,同时包容并逻辑组织OPC数据项(Item)。

在这里数据项(Item)就是指所有的PLC信号的输入与输出。

OPC组对象(Group)提供了客户组织数据的一种方法。

客户可对之进行读写,还可以设置客户端的数据更新速率。

当服务器缓冲区内的数据发生改变时,OPC将向客户发出通知,客户得到通知后再进行必要的处理。

而无须浪费大量的时间进行查询。

OPC规范定义了两种组对象:公共组和局部组(私有组)。

公共组由多个客户共有,局部组只隶属于一个OPC客户。

一般来说,客户和服务器的一对连接只需要定义一个组对象。

在每个组对象中,客户可以加入多个OPC数据项(Item)。

OPC数据项(Item)是服务器端定义的对象,通常指向设备的一个寄存器单元。

OPC客户对设备寄存器的操作都是通过其数据项来完成的,通过OPC数据项(Ite m),OPC规范尽可能地隐藏了设备的特殊信息,也使OPC服务器的通用性大大增强。

OPC 数据项(Item)并不提供对外接口,客户不能直接对之进行操作,所有的操作都是通过组对象进行的。

每个OPC数据项(Item)的数据结构包括三个成员变量:即数据值、数据质量和时间
戳。

数据值是以Variant形式表示的。

Delphi7.0加载Siemens动态库:
1.打开Delphi7.0,点击Project->Import Type Library
2.在Import Type Library里面找到Siemens OPC DAAutomation 2.0 (Version 1.0),在Clas s Nams里面可以看三个类方法(TOPCGroups,TOPCGroup,TOPCServer),默认的Palette Pag
e为ActiveX,单击Install…
Delphi7.0中编写客户端程序:
1.连接OPC服务器
在Form上面添加三个OPC控件:
OPCGroup1: TOPCGroup;
OPCGroups1: TOPCGroups;
OPCServer1: TOPCServer;
具体操作图文说明请到网盘下载
注:具体设备的OPC驱动虽然不一致,但是都有统一的标准,本文只是针对Siemens设备,如果有错误欢迎批评指教!。

相关文档
最新文档