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;
interface
uses
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.
有哪位做個這類通訊,麻煩指導一下,不勝感激!!
uj5u.com熱心網友回復:
一種基于OPC的Delphi程式與PLC通訊的實作方法希望對你有幫助http://wenku.baidu.com/link?url=uZ0XmuS8VHpkfEcnrA2vs3vs7paEWVMzZ2SEJqY3i3kf4NIr04AdPfMs27lpR4fJRvM7oSaItJoPvnnFNrpBunVonfDTSqyPbSs5jEUjq-i
uj5u.com熱心網友回復:
就是按照這種方法做的,報錯了
uj5u.com熱心網友回復:
先關注一下 ,目前我在做PC和Omron PLC的,Siemens PLC的等Omron的有進制了,再去做。你用的是314哪個CPU的?現在最新的314C-2PN/DP和ET200S系列支持Open TCP/IP,應該不需要用OPC就可以的。
另外,問一下,你在做什么樣的系統?
uj5u.com熱心網友回復:
看了一下這個程式,試了一下,這個不是錯誤,因為作者的只是個例程,介紹的連接方法,你的連接的變數都沒有定義,如:OPCServer1.Connect1('xingyun-PC',''),還有這個'SCADA.YPA1_SILO_CHARGEWEIGHTACT.F_CV'是變數,應該在PLC里定義的。做這個,必須有西門子的PLC,實際連接一下,再看看Siemens的OPC資料,初步看了一下,Siemens的PC連接比較繁瑣,但多試,一定可以的。
uj5u.com熱心網友回復:
我遇到的問題是 列舉不到 西門子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 版本問題嗎 ?
uj5u.com熱心網友回復:
DELPHI屬于高級語言了,還用OPC干嘛,直接用官方的DLL不是更方便,這里有詳細說明和源代碼下載:http://blog.sina.com.cn/s/blog_16d7d3ecb0102x1z5.html
uj5u.com熱心網友回復:
介面很明確,頂。
uj5u.com熱心網友回復:
介面很明確,頂。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/55116.html
標籤:網絡通信/分布式開發
