实例介绍
【实例简介】
【实例截图】
【文件目录】
│ (3条消息)C#通过KepServer采用DA、UA两种方式访问PLC - liwen9016的博客.png
│ C#_KEPWARE.rar
│ Kepserver_for_Siemens_S7-300_PLC - 副本.pdf
│
└─C#_KEPWARE
└─C#_KEPWARE
└─KEPWARE C# DEMO
│ sim.opf
│ WindowsFormsApplication2.rar
│
└─WindowsFormsApplication2
└─WindowsFormsApplication2
│ WindowsFormsApplication2.sln
│
└─WindowsFormsApplication2
│ Form1.cs
│ Form1.Designer.cs
│ Form1.resx
│ Program.cs
│ WindowsFormsApplication2.csproj
│
├─bin
│ └─Debug
│ WindowsFormsApplication2.exe
│ WindowsFormsApplication2.pdb
│ WindowsFormsApplication2.vshost.exe
│ WindowsFormsApplication2.vshost.exe.manifest
│
├─obj
│ └─x86
│ └─Debug
│ │ DesignTimeResolveAssemblyReferences.cache
│ │ DesignTimeResolveAssemblyReferencesInput.cache
│ │ Interop.OPCAutomation.dll
│ │ WindowsFormsApplication2.csproj.FileListAbsolute.txt
│ │ WindowsFormsApplication2.csproj.GenerateResource.Cache
│ │ WindowsFormsApplication2.csproj.ResolveComReference.cache
│ │ WindowsFormsApplication2.exe
│ │ WindowsFormsApplication2.Form1.resources
│ │ WindowsFormsApplication2.pdb
│ │ WindowsFormsApplication2.Properties.Resources.resources
│ │
│ └─TempPE
└─Properties
AssemblyInfo.cs
Resources.Designer.cs
Resources.resx
Settings.Designer.cs
Settings.settings
【核心代码】
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 System.Data.SqlClient; using OPCAutomation; namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } OPCServer MyOpcServer; //opcserver OPCGroup MyOpcGroup; OPCItem MyOpcItem1; OPCItem MyOpcItem2; int[] ServerHandle = new int[2]; // const int READASYNC_ID = 1; const int WRITEASYNC_ID = 2; private void button1_Click(object sender, EventArgs e) { try { MyOpcServer=new OPCServer(); MyOpcServer.Connect("Kepware.KEPServerEX.V5", ""); MyOpcGroup = MyOpcServer.OPCGroups.Add("MyGroup1"); MyOpcGroup.IsActive = true; MyOpcGroup.IsSubscribed = true; MyOpcGroup.DeadBand = 0; MyOpcGroup.UpdateRate = 1000; MyOpcItem1 = MyOpcGroup.OPCItems.AddItem("Channel1.Device1.tag1", 0); MyOpcItem2 = MyOpcGroup.OPCItems.AddItem("Channel1.Device1.tag2", 1); ServerHandle[0] = MyOpcItem1.ServerHandle; ServerHandle[1] = MyOpcItem2.ServerHandle; MyOpcGroup.AsyncWriteComplete = new DIOPCGroupEvent_AsyncWriteCompleteEventHandler(MyOpcGroup_AsyncWriteComplete); MyOpcGroup.AsyncReadComplete = new DIOPCGroupEvent_AsyncReadCompleteEventHandler(MyOpcGroup_AsyncReadComplete); MyOpcGroup.AsyncCancelComplete = new DIOPCGroupEvent_AsyncCancelCompleteEventHandler(MyOpcGroup_AsyncCancelComplete); MyOpcGroup.DataChange = new DIOPCGroupEvent_DataChangeEventHandler(MyOpcGroup_DataChange); } catch(System.Exception error) { MessageBox.Show(error.Message,"fail",MessageBoxButtons.OK,MessageBoxIcon.Error); } } void MyOpcGroup_AsyncCancelComplete(int CancelID) { throw new NotImplementedException(); } void MyOpcGroup_AsyncReadComplete(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps, ref Array Errors) { throw new NotImplementedException(); } void MyOpcGroup_AsyncWriteComplete(int TransactionID, int NumItems, ref Array ClientHandles, ref Array Errors) { throw new NotImplementedException(); } //同步读数据 private void btn_read_s_click_Click(object sender, EventArgs e) { object ItemValues; object Qualities; object TimeStamps; try { MyOpcItem2.Read(1, out ItemValues, out Qualities, out TimeStamps); textBox2.Text = string.Format ("{0}", ItemValues); textBox3.Text = string.Format("{0}", Qualities); textBox4.Text = string.Format("{0}", TimeStamps); } catch(System.Exception error) { MessageBox.Show(error.Message, "Result--同步读", MessageBoxButtons.OK, MessageBoxIcon.Error); } } //datachange事件 void MyOpcGroup_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps) { try { textBox5.Text = string.Format("{0}", MyOpcItem1.Value); textBox6.Text = string.Format("{0}", MyOpcItem1.Quality); textBox7.Text = string.Format("{0}", MyOpcItem1.TimeStamp); textBox8.Text = string.Format("{0}", MyOpcItem2.Value); textBox9.Text = string.Format("{0}", MyOpcItem2.Quality); textBox10.Text = string.Format("{0}", MyOpcItem2.TimeStamp); } catch (System.Exception error) { MessageBox.Show(error.Message, "Result--同步读", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
标签:
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)