日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OPCServer Modbus使用和配置

發布時間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OPCServer Modbus使用和配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,安裝KEPware.Enhanced.OPC.DDE.KEPServer。(PLC數據傳送給KEPServer,開發的程序用OPCServer讀KEPServer)

?????

???

?

??? 設置ip地址后面是指的plc站號,此處必須和plc上站號對應。否則無法接收數據。

???

????? 打開quick client 查看傳值情況

?????

二.C#程序代碼

???引用opcdaauto.dll

?? 在win7 64位下KepServer = new OPCServer()會出錯的問題,

?? 檢索COM 類工廠中 CLSID 為 <28e68f9a-8d75-11d1-8dc3-3c302a000000> 的組件時失敗,原因是出現以下錯誤: 80040154

? 1.一定要到C:\Windows\SysWOW64路徑下打開cmd.exe運行命令文件(而不是在運行打開),注冊“OPCDAAuto.dll” 輸入命令: REGSVR32 OPCDAAuto.dll;即可

? 2.編譯工具目標要選擇x86

?? KepServer.Connect("KEPware.KEPServerEx.V4", "127.0.0.1");? 此處ip地址是安裝KEPware.Enhanced.OPC.DDE.KEPServer電腦的ip地址.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OPCAutomation; using System.Threading;namespace SPCTest {public partial class Form2 : Form{private OPCServer KepServer;private OPCGroups KepGroups;private OPCGroup KepGroup;private OPCItems KepItems;//軸承凈重,注脂量,防塵蓋壓入深度,防塵蓋平整度 壓入OK/NGprivate OPCItem item1, item2, item3;public Form2(){InitializeComponent();}#region OPC Serverprivate void KepServerLoad(){try{KepServer = new OPCServer();KepServer.Connect("KEPware.KEPServerEx.V4", "127.0.0.1");if (KepServer.ServerState == (int)OPCServerState.OPCRunning){// statusLabelConnectInfo.Text = "OPC Server連接成功"; }else{// statusLabelConnectInfo.Text = "OPC Server連接失敗";return;}}catch (Exception ex){// statusLabelConnectInfo.Text = "OPC Server連接失敗," + ex.Message;return;}KepGroups = KepServer.OPCGroups;Thread t1; // 開1個線程用于讀取數據 t1 = new Thread(new ThreadStart(KepProcess));t1.Start();}public void KepProcess(){//KepGroup = KepGroups.Add("Channel.Device.Group");KepGroup = KepGroups.Add("Channel1.Device1.Group");KepGroup.UpdateRate = 250;KepGroup.IsActive = true;KepGroup.IsSubscribed = true;//當KepGroup中數據發生改變的觸發事件 KepGroup.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(KepGroup_DataChange);KepItems = KepGroup.OPCItems;item1 = KepItems.AddItem("Channel1.Device1.A01", 1);item2 = KepItems.AddItem("Channel1.Device1.A02", 2);item3 = KepItems.AddItem("Channel1.Device1.A03", 3);}//當數據改變時觸發的事件 public delegate void DelegateShowMessage(string str);public void KepGroup_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps){string str = "";DelegateShowMessage show1 = new DelegateShowMessage(ShowMessage);for (int i = 1; i <= NumItems; i++){if (ClientHandles.GetValue(i).Equals(1)){str = "A01:" + ItemValues.GetValue(i).ToString();}if (ClientHandles.GetValue(i).Equals(2)){str = "A02:" + ItemValues.GetValue(i).ToString();}if (ClientHandles.GetValue(i).Equals(3)){str = "A03:" + ItemValues.GetValue(i).ToString();}BeginInvoke(show1, new string[] { str });}}public void ShowMessage(string str){richTextBox1.AppendText(str+",");}#endregionprivate void Form2_Load(object sender, EventArgs e){KepServerLoad();}private void Form2_FormClosing(object sender, FormClosingEventArgs e){KepServer.Disconnect();}} }

?

轉載于:https://www.cnblogs.com/ike_li/p/5468658.html

總結

以上是生活随笔為你收集整理的OPCServer Modbus使用和配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。