Delphi7和OPC通信 点击:1130 | 回复:2



chuanpu

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:27帖 | 74回
  • 年度积分:0
  • 历史总积分:345
  • 注册:2005年5月24日
发表于:2010-07-23 19:44:41
楼主

我想用Delphi7实现和OPC的通信,在网上参考了些别人的代码,能够连接上去,但一旦写数据或者读数据的时候就出错,不知道怎么回事,现把代码拷贝下来,大家一起看看。

 

Delphi7.0加载Siemens动态库:
1.打开Delphi7.0,点击Project->Import Type Library
2.在Import Type Library里面找到Siemens OPC DAAutomation 2.0 (Version 1.0),在Class Nams里面可以看三个类方法(TOPCGroups,TOPCGroup,TOPCServer),默认的Palette Page为ActiveX,单击Install…

Delphi7.0中编写客户端程序:
1.连接OPC服务器
在Form上面添加三个OPC控件:
OPCGroup1: TOPCGroup;
OPCGroups1: TOPCGroups;
OPCServer1: TOPCServer;

连接OPC

var
Group:OPCGroup;
testItem:OPCItem;
OPCItems:string;
OPCItemsValues:string;

OPCServer1.Connect1(‘kingview.view.1‘,‘结点名称(OPC主机名称)‘);//连接OPC服务器
OPCServer1.OPCGroups.DefaultGroupUpdateRate:=500;//设置更新频率
Group:=OPCServer1.OPCGroups.Add(‘MyGroup‘); //添加Group

testItem:=Group.OPCItems.AddItem(‘SCADA.YPA1_SILO_CHARGEWEIGHTACT.F_CV‘,1);//添加OPC数据项

读取OPC数据

var
myvalue,myquality,mytimestamp:OleVariant;

begin
testItem.Read(OPCDevice,myvalue,myquality,mytimestamp);
Edit1.Text:=myvalue;

end;

写OPC数据

var
myvalue:OleVariant;

begin
testItem.Write(myvalue);

end;

 

断开OPC

begin
OPCServer1.OPCGroups.RemoveAll;
OPCServer1.Disconnect;

end;





yct0605

  • 精华:0帖
  • 求助:3帖
  • 帖子:5帖 | 9回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2009年8月26日
发表于:2010-08-10 21:02:03
1楼
好像和我写的例子很像哦!现在要知道OPC DA3.0时这个方法是连接不上OPC服务器的。

hello world

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 44回
  • 年度积分:0
  • 历史总积分:46
  • 注册:2009年10月03日
发表于:2010-08-11 09:02:13
2楼

肯定连不上,上面写得很清楚,opc da automation 2.0

QQ:939754869


热门招聘
相关主题

官方公众号

智造工程师