1、OPC Server是用的simens net V8.2搭建的,已经能够和S7-314正常读写通讯。
2、delphi与OPC通讯参考的本论坛的帖子http://bbs.csdn.net/topics/330170980/
在delhpi7.0环境中,添加了simens OPC DA automation 2.0,Active页面中有了三个控件:OPC server,OPCgroup,OPCgroups。在窗体中添加这三个控件,另外加了一个按钮,准备测试连接OPC server。现在只做了个按钮测试连接到OPC,运行时,按下按钮就报错。
全部代码如下:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OPCSiemensDAAutomation_TLB, OleServer;type
TForm1 = class(TForm)
OPCServer1: TOPCServer;
OPCGroups1: TOPCGroups;
OPCGroup1: TOPCGroup;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
Group:OPCGroup;
testItem:OPCItem;
OPCItems:string;
OPCItemsValues:string; implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
//连接OPC
OPCServer1.Connect1('xingyun-PC','');
//xingyun-PC是我的计算机名称,也是OPC server的名称。
OPCServer1.OPCGroups.DefaultGroupUpdateRate:=500;
Group:=OPCServer1.OPCGroups.Add('MyGroup');
testItem:=Group.OPCItems.AddItem('SCADA.YPA1_SILO_CHARGEWEIGHTACT.F_CV',1);end;
end.有哪位做个这类通讯,麻烦指导一下,不胜感激!!
2、delphi与OPC通讯参考的本论坛的帖子http://bbs.csdn.net/topics/330170980/
在delhpi7.0环境中,添加了simens OPC DA automation 2.0,Active页面中有了三个控件:OPC server,OPCgroup,OPCgroups。在窗体中添加这三个控件,另外加了一个按钮,准备测试连接OPC server。现在只做了个按钮测试连接到OPC,运行时,按下按钮就报错。
全部代码如下:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OPCSiemensDAAutomation_TLB, OleServer;type
TForm1 = class(TForm)
OPCServer1: TOPCServer;
OPCGroups1: TOPCGroups;
OPCGroup1: TOPCGroup;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
Group:OPCGroup;
testItem:OPCItem;
OPCItems:string;
OPCItemsValues:string; implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
//连接OPC
OPCServer1.Connect1('xingyun-PC','');
//xingyun-PC是我的计算机名称,也是OPC server的名称。
OPCServer1.OPCGroups.DefaultGroupUpdateRate:=500;
Group:=OPCServer1.OPCGroups.Add('MyGroup');
testItem:=Group.OPCItems.AddItem('SCADA.YPA1_SILO_CHARGEWEIGHTACT.F_CV',1);end;
end.有哪位做个这类通讯,麻烦指导一下,不胜感激!!
解决方案 »
- 主界面showmodal事件中开了一个线程,退出时出错;求助
- 如何在退出程序的时候询问是否退出,回答否就不退出?
- delphi4升级到delphi7的时候 halt语句错误问题
- 100分问个关于DLL窗体与EXE之间呢参数传递问题,请大家来帮帮忙~~~
- 请大家多多帮忙:一个提示入口出错的问题
- 关于程式"自杀"(自动升级)的问题
- 急!!!急!!!急!!!急!!!急!!!急!!!急!!!急!!!急!!!太急了!!!高手求救!
- 在delphi报表制作时,如果查询出的记录有多条,如何实现单条记录的打印
- 我发现本论坛上有人转播病毒!!!
- 怎么访问Pointer类型的变量?
- Delphi 运行期创建报表的功能
- 求助:DELPHI多线程的问题
http://wenku.baidu.com/link?url=uZ0XmuS8VHpkfEcnrA2vs3vs7paEWVMzZ2SEJqY3i3kf4NIr04AdPfMs27lpR4fJRvM7oSaItJoPvnnFNrpBunVonfDTSqyPbSs5jEUjq-i
你用的是314哪个CPU的?现在最新的314C-2PN/DP和ET200S系列支持Open TCP/IP,应该不需要用OPC就可以的。另外,问一下,你在做什么样的系统?
function TForm1.OPCServerList(): Boolean;
var OPCServerList,OPCServerName:OleVariant;
j,i:integer;
begin
Result := false;
try
//FOPCServer := TOPCServer.Create(Self);
OPCServerList:=OPCServer1.GetOPCServers;
i:=VarArrayHighBound(OPCServerList,1);
for j:=1 to i do
begin
OPCServerName:=VarArrayGet(OPCServerList,j);
lboxServerName.Items.Add(OPCServerName);
Result :=true;
end;
except
Result := False;
end;
end;
但是 再我本机 可以枚举到 测试服务器 (非西门子)
莫非是 OPCDAAuto.dll 版本问题吗 ?
http://blog.sina.com.cn/s/blog_16d7d3ecb0102x1z5.html