<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      IOT-OPC UA Client C# 實現方式->賬號密碼形式 01

      本文只要記錄OPC UA 方式讀取PLC數據,默認opc server已經配置成功;
      、外部引用 opcuahelper

      using Opc.Ua;
      using OpcUaHelper;
      

      、源碼如下;

      > 點擊查看代碼
      using Opc.Ua;
      using OpcUaHelper;
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace ConsoleApp1
      {
          class Program
          {
              static OpcUaClient opcUaClient = new OpcUaHelper.OpcUaClient();
              static string url = @"opc.tcp://172.30.62.74:8020";
              static string username = "Admin";
              static string password = "123456";
              static void Main(string[] args)
              {
                  Console.ForegroundColor = ConsoleColor.Green;
                  Console.WriteLine("采集系統啟動中.....");
                  //連接OPC UA 且獲取連接狀態
                  bool result = OpcConnectByPwdandUid();
                  if (result)
                  {
                      //當result為true時:OPC UA SERVER CONNECT SUCCESSFUL;
                      ExecuteAction();
                      Console.WriteLine("-----------------");
                      Console.WriteLine("-----------------");
                      Console.WriteLine("");
                      ReadPoint();
                  }
                  else
                  {
                      Console.WriteLine("OPC UA 連接失敗");
                      Console.ReadKey();
                  }
              }
              /// <summary>
              /// 用戶名密碼方式連接OPC UA 服務器
              /// </summary>
              /// <returns></returns>
              private static bool OpcConnectByPwdandUid()
              {
                  bool result = false;
                  opcUaClient.UserIdentity = new UserIdentity(username, password);
                  try
                  {
                      opcUaClient.ConnectServer(url).Wait();
                      Console.ForegroundColor = ConsoleColor.Green;
                      Console.WriteLine("OPC SERVER 連接成功");
                      result = true;
                  }
                  catch (Exception ex)
                  {
                      Console.ForegroundColor = ConsoleColor.Red;
                      Console.WriteLine("異常提示:"+ex.ToString());
                      Console.ReadKey();
                  }
                  return result;
              }
      
              static void ExecuteAction()
              {
                  Console.ForegroundColor = ConsoleColor.Green;
                  Console.WriteLine("開始采集..");
                  //批量采集方式
                  try
                  {
                      NodeId[] nodes = new NodeId[]
                      {
                          "ns=2;s=TB_OEE_1",
                          "ns=2;s=TB_OEE_2",
                          "ns=2;s=TB_OEE_3",
                          "ns=2;s=TB_OEE_4",
                          "ns=2;s=TB_OEE_5",
                          "ns=2;s=TB_OEE_6",
                          "ns=2;s=TB_OEE_7",
                          "ns=2;s=TB_OEE_8",
                          "ns=2;s=TB_OEE_9",
                          "ns=2;s=TB_OEE_10",
                          "ns=2;s=TB_OEE_11",
                          "ns=2;s=TB_OEE_12",
                          "ns=2;s=TB_OEE_13",
                          "ns=2;s=TB_OEE_14",
                          "ns=2;s=TB_OEE_15",
                          "ns=2;s=TB_OEE_16",
                          "ns=2;s=TB_OEE_17",
                          "ns=2;s=TB_OEE_18",
                          "ns=2;s=TB_OEE_19",
                          "ns=2;s=TB_OEE_20"
                      };
                      foreach (Opc.Ua.DataValue item in opcUaClient.ReadNodes(nodes))
                      {
                          object data = item.WrappedValue.Value;
                          Console.ForegroundColor = ConsoleColor.Green;
                          if (data != null)
                          {
                              Console.WriteLine(data.ToString());
                          }
                          else
                          {
                              Console.WriteLine("獲取到的值為NULL");
                          } 
                      }
                      //Console.ReadKey();
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine(ex.ToString());
                      //異常時,釋放OPC ua對象
                      opcUaClient.Disconnect();
                      Console.ReadKey();
                  }
              }
      
              /// <summary>
              /// 通過設備清單關聯點位地址讀取方式TODO
              /// </summary>
              /// <param name="equipmentNo">設備標號</param>
              /// <param name="equipmentName">設備名稱</param>
              /// <param name="pointLocation">采集地址</param>
              /// <param name="pointName">采集地址描述</param>
              /// <param name="values">返回采集值</param>
              /// <returns></returns>
              static string EquipmentCollection(string equipmentNo,string equipmentName,string pointLocation,string pointName,out string values)
              {
                  values = "1";
                  return "";
              }
              /// <summary>
              /// 
              /// </summary>
              static void ReadPoint()
              {
                  try
                  {
                      ///①讀取一個節點的關聯節點,包含了幾個簡單的基本信息
                      ReferenceDescription[] references = opcUaClient.BrowseNodeReference("ns=2;s=root.C2200_103");
                      foreach (var item in references)
                      {
                          string des = opcUaClient.ReadNoteAttributes(item.NodeId.ToString())[3].Value.ToString();
                          //根據得到的節點,讀取當前值,下面2行代碼未測試,需要調試
                          DataValue dv = opcUaClient.ReadNode(item.NodeId.ToString());
                          string currentValue = dv.WrappedValue.Value.ToString();
                          // 輸出節點及參數
                          string str = $"節點ID:{item.NodeId},節點描述:{des},當前值:{currentValue}";
                          Console.WriteLine(str);
                      }
                      Console.ReadKey();
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine(ex.ToString());
                  }
              }
          }
      }
      

      三、兩種模式區別演示
      ** 1、登錄系統**

      2、第一種批量讀取模式

      3、第二種批量讀取模式

      個人比較喜歡用第二中模式,維護簡單,結合設備使用非常爽!!

      后續將更新 匿名模式與證書模式的實例;

      posted @ 2024-02-20 16:08  王俊成  閱讀(737)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 成人亚洲一级午夜激情网| 五月婷婷久久中文字幕| 精品人妻中文字幕在线| 97人妻精品一区二区三区| 黄色国产精品一区二区三区| 国产偷国产偷亚洲清高| 欧美交a欧美精品喷水| 日本一卡2卡3卡4卡无卡免费| 国产精品点击进入在线影院高清 | 亚洲国产精品一区二区第一页| 国产精品一区二区三区黄| 91中文字幕一区二区| 丝袜美腿一区二区三区| 午夜免费啪视频| 精品人妻中文字幕av| 好了av四色综合无码| 日本一本无道码日韩精品| 九九热在线免费视频观看| 成人福利国产午夜AV免费不卡在线| 婷婷色香五月综合缴缴情香蕉| 久久久久人妻一区精品色| 国产人妻大战黑人20p| 国产激情电影综合在线看| 四虎永久精品免费视频| 亚洲欧美日韩在线码| 色丁香一区二区黑人巨大| 性夜夜春夜夜爽夜夜免费视频| 韩国三级+mp4| 欧美日本一区二区视频在线观看 | 狠狠躁天天躁中文字幕无码 | 中文字幕国产精品专区| 布尔津县| 97久久精品人人做人人爽| 久久精品国产99久久丝袜| 毛片亚洲AV无码精品国产午夜| 国产三级精品三级在线看| 电影在线观看+伦理片| 人妻伦理在线一二三区| 久久综合97丁香色香蕉| 日本精品不卡一二三区| 337P日本欧洲亚洲大胆精品555588|