OPCServer Modbus使用和配置
生活随笔
收集整理的這篇文章主要介紹了
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:WindowsSysWOW64路徑下打開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/NG
private OPCItem item1, item2, item3;
public Form2()
{
InitializeComponent();
}
#region OPC Server
private 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+",");
}
#endregion
private void Form2_Load(object sender, EventArgs e)
{
KepServerLoad();
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
KepServer.Disconnect();
}
}
}
總結
以上是生活随笔為你收集整理的OPCServer Modbus使用和配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Revit2018 没有外部工具,问题解
- 下一篇: jQuery 库