OPC Server是一套利用微軟的COM/DCOM技術實現工業自動化資料獲取的架構。OPC Server提供OPC介面,它將與之相連的物理裝置(PLC)的資訊值通過介面返回到客戶端應用程式。也就是說,客戶端通過這些介面,可以獲得與OPC Server連線的物理裝置的資訊。對於整合應用程式,只要支援OPC介面,就能輕易訪問物理裝置,而無需相關的技術資訊。 程式設計者可以使用相同的程式程式碼,操作不同的硬體裝置,充分達成軟體複用的目的。
此API可以輕鬆地從VC#和VB.NET opc客戶端一次讀取和寫入資料。
簡單的API列表
在C#的簡單API的DLL(DxpSimpleAPI.dll)中準備了以下函式。
namespace DxpSimpleAPI { public class DxpSimpleClass { public DxpSimpleClass(); public bool Connect(string sNodeName, string sServerName); public bool Disconnect(); public bool EnumServerList(string sNodeName, out string[] sServerNameArray); public bool Read(string[] sItemIDArray, out object[] oValueArray, out short[] wQualityArray, out FILETIME[] fTimeArray, out int[] nErrorArray); public bool Write(string[] sItemIDArray, object[] oValArray, out int[] nErrorArray); } }
它主要使用以下四個功能。
連線(連線到OPC伺服器)
- arg1:節點名稱(in)
- arg2:OPC伺服器名稱(in)
- 返回:true:成功,false:失敗
斷開連線(斷開與OPC伺服器的連線)
- arg:none
- return:true:success,false:failure
讀取(一次性讀取)
- arg1:ItemID(in)
陣列arg2:讀取值陣列(out)
- arg3:質量陣列(out)
- arg4:時間戳陣列(out)
- arg5:錯誤陣列(out)
- 返回:true:成功,false:異常錯誤
寫入(一次寫入)
- arg1:ItemID(in)
- 陣列arg2:寫入值陣列(in)
- arg3:錯誤陣列(out)
- 返回:true:成功,false:異常錯誤
OPC伺服器的列舉可通過以下函式實現。
EnumServerList(OPC伺服器的列舉)
- arg1:節點名稱(in)
- arg2:安裝在指定節點(out)中的OPC伺服器名稱陣列
- 返回:true:成功,false:失敗
DLL的用法
使用Visual Studio建立VC#專案,並新增參考配置。 請從Visual Studio的參考配置的附加選單中新增對此DLL和OPCRcw.Da.DLL的引用。
請使用using語句定義OpcRcw.Da,如下所示。
using OpcRcw.Da;
功能的用法
簡單的API可以通過以下方式使用。
Connection
// Create OPC access instance DxpSimpleAPI.DxpSimpleClass opc = new DxpSimpleAPI.DxpSimpleClass(); // Connect: node name("localhost") and Server Prog.ID("Takebishi.Dxp") bool ret = opc.Connect("localhost", "Takebishi.Dxp");
Read
// Read 3 points string[] sItemNameArray = new string[3]; sItemNameArray[0] = "Device1.D0"; sItemNameArray[1] = "Device1.D1"; sItemNameArray[2] = "Device1.D2"; object[] oValueArray; short[] wQualityArray; OpcRcw.Da.FILETIME[] fTimeArray; int[] nErrorArray; bool ret = opc.Read(sItemNameArray, out oValueArray, out wQualityArray, out fTimeArray, out nErrorArray);
Write
// Write 3 points object[] oValArray = new object[3]; oValArray[0] = "1234"; oValArray[1] = "5678"; oValArray[2] = "9012"; int[] nErrorArray; bool ret = opc.Write(sItemNameArray, oValArray, out nErrorArray);
Disconnect
// Disconnect opc.Disconnect();
實施Demo
VC#客戶端(VS2008)的示例程式比以下連結的可下載程式更易於下載。
Notes
使用此DLL時,請從Visual Studio 2008開始使用。並且,它需要.NET Framework 3.5作為執行時引擎。
連線目標OPC伺服器應對應OPC DA3.0,因為該DLL使用OPC DA3.0的IOPCItemIO介面。