1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢(xún)
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      C#編寫(xiě)OPC客戶(hù)端讀取OPC服務(wù)器的數(shù)據(jù)(最高效簡(jiǎn)潔版)

      編寫(xiě)OPC客戶(hù)端,網(wǎng)上的資料一般是一上來(lái)就要求找OPCDAAuto.dll,其實(shí)我想說(shuō),用VS,那都是多此一舉,當(dāng)然,如果你是在需要,我也可以提供給您最新版 OPCDAAuto.dll(v2.2.5.30)

      為潁泉等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及潁泉網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站建設(shè)、潁泉網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

      如果沒(méi)有積分,無(wú)所謂,不要也罷,因?yàn)槲覀兊膙s中本來(lái)就有,為了方便大家理解學(xué)習(xí),我新建項(xiàng)目為控制臺(tái)程序,連接對(duì)象為Kepserver服務(wù)器,針對(duì)KepServer服務(wù)器,我已經(jīng)配置好了,可以匿名登錄,

      新建控制臺(tái)程序后,引用右鍵選擇添加引用,依次選擇COM/OPC DA Automation Wrapper 2.02選中,確定。這樣就把OPCAutomation 添加到了引用中了。

      接著,寫(xiě)如下程序(所有程序如下,完整版本,稍作修改即可使用。):

      using OPCAutomation;//需要手動(dòng)添加

      using System;

      using System.Collections.Generic;

      using System.Linq;

      using System.Net;//需要手動(dòng)添加

      using System.Text;

      using System.Threading.Tasks;

      namespace ConsoleApp1

      {

      class Program

      {

      static void Main(string[] args)

      {

      OPCServer server = new OPCServer();

      //此處127.0.0.1字符串,為本地IP地址,也可別的電腦IP或者電腦名稱(chēng);此處測(cè)試,就以本地IP測(cè)試;

      IPHostEntry host = DNS.GetHostEntry("127.0.0.1");

      //獲取此電腦上的所有OPC服務(wù)器的ProgId,有了它,才能連接到OPC服務(wù)器。注意此處為一組OPC服務(wù)器集合,

      //而非單個(gè),具體數(shù)量根據(jù)實(shí)際情況而定,當(dāng)然,也可以是一個(gè),我只是想說(shuō)它是一個(gè)服務(wù)器的集合。

      object progIds = server.GetOPCServers(host.HostName);

      foreach (string progId in (Array)progIds)

      {

      //此處是獲得單個(gè)progId,方便后面連接。

      server.Connect(progId);

      }

      //此處為常規(guī)設(shè)置,group中還有許多參數(shù)沒(méi)有設(shè)置,我都采取了它的默認(rèn)值,我沒(méi)有特殊要求,所以不用改。

      OPCGroups groups = server.OPCGroups;

      OPCGroup group = groups.Add("myGroup");

      //此處必須修改,因?yàn)槟J(rèn)訂閱功能為false;當(dāng)然你也可以根據(jù)別的方式獲取數(shù)據(jù)。

      group.IsSubscribed = true;

      group.DataChange += Group_DataChange;

      //此處為設(shè)定需要的ItemIds,就是你需要訂閱的哪些數(shù)據(jù)。

      //具體根據(jù)需求而來(lái)。

      List ItemIds= new List()

      {

      "S7-1200.0-166.BOOL",

      "S7-1200.0-166.BYTE",

      "S7-1200.0-166.INT",

      "S7-1200.0-166.WORD",

      "S7-1200.0-166.REAL",

      };

      //把需要訂閱的項(xiàng)添加到group中。@

      //此處由于個(gè)人的疏忽,導(dǎo)致各位同僚們的疑惑,我在此做出更正。謝謝 阿露法的指出。

      //原為 for (int i = 0; i < progids.Count; i++)

      //修改為 for (int i = 0; i < ItemIds.Count; i++)

      //20191024091435

      for (int i = 0; i < ItemIds.Count; i++)

      {

      OPCItem myItem = group.OPCItems.AddItem(ItemIds[i], i);

      }

      Console.ReadKey();

      }

      private static void Group_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps)

      {

      //此處注意i是從1開(kāi)始,因?yàn)間etvalue沒(méi)有0.下面輸出分別為數(shù)據(jù)的ClientHandles(就是上文AddItem方法的第二個(gè)參數(shù)。),Itemvalue就是值,Qualities為質(zhì)量,timestamps為時(shí)間。

      for (int i = 1; i < NumItems+1; i++)

      {

      Console.WriteLine(ClientHandles.GetValue(i).ToString() + "--" + ItemValues.GetValue(i).ToString() + "--" + Qualities.GetValue(i).ToString() + "--" + TimeStamps.GetValue(i).ToString());

      }

      }

      }

      }

      最終結(jié)果輸出如下:

      這就是一個(gè)OPC客戶(hù)端,我想應(yīng)該是最簡(jiǎn)單的了。。。

      2019.03.30增補(bǔ):

      想起前兩天群友說(shuō),由于網(wǎng)絡(luò)原因,OPC通訊中斷了,斷了之后重新連接了就不能自動(dòng)恢復(fù)了,如果是這樣,我們只需做小小的修改即可:

      private static void Group_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps)

      {

      //此處注意i是從1開(kāi)始,因?yàn)間etvalue沒(méi)有0.下面輸出分別為數(shù)據(jù)的ClientHandles(就是上文AddItem方法的第二個(gè)參數(shù)。),Itemvalue就是值,Qualities為質(zhì)量,timestamps為時(shí)間。

      for (int i = 1; i < NumItems+1; i++)

      {

      try

      {

      Console.WriteLine(ClientHandles.GetValue(i).ToString() + "--" + ItemValues.GetValue(i).ToString() + "--" +

      Qualities.GetValue(i).ToString() + "--" + TimeStamps.GetValue(i).ToString());

      }Catch(exception e)

      {

      }

      }


      本文題目:C#編寫(xiě)OPC客戶(hù)端讀取OPC服務(wù)器的數(shù)據(jù)(最高效簡(jiǎn)潔版)
      文章分享:http://www.ef60e0e.cn/article/ihopos.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        大安市| 东乡县| 绥棱县| 邯郸市| 朝阳县| 龙南县| 青州市| 徐州市| 克拉玛依市| 青冈县| 莎车县| 瑞金市| 耿马| 台中市| 景宁| 城固县| 临泉县| 政和县| 福州市| 汉川市| 巴彦淖尔市| 全州县| 松溪县| 岳阳市| 平定县| 周至县| 宁城县| 新郑市| 石台县| 湛江市| 岳阳市| 理塘县| 卓资县| 耒阳市| 齐齐哈尔市| 盐亭县| 阿尔山市| 景宁| 布尔津县| 沛县| 色达县|