OPC Server示例教程:VC#和VB.NET中的簡單API

xiaochuachua發表於2019-04-18

OPC Server是一套利用微軟的COM/DCOM技術實現工業自動化資料獲取的架構。OPC Server提供OPC介面,它將與之相連的物理裝置(PLC)的資訊值通過介面返回到客戶端應用程式。也就是說,客戶端通過這些介面,可以獲得與OPC Server連線的物理裝置的資訊。對於整合應用程式,只要支援OPC介面,就能輕易訪問物理裝置,而無需相關的技術資訊。 程式設計者可以使用相同的程式程式碼,操作不同的硬體裝置,充分達成軟體複用的目的。

OPC Server 最新版下載

此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)的示例程式比以下連結的可下載程式更易於下載。

下載

OPC server

Notes

使用此DLL時,請從Visual Studio 2008開始使用。並且,它需要.NET Framework 3.5作為執行時引擎。

連線目標OPC伺服器應對應OPC DA3.0,因為該DLL使用OPC DA3.0的IOPCItemIO介面。

OPC Server示例教程:VC#和VB.NET中的簡單API

相關文章