在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → C#通过Kepserver 与PLC通信配置及C#实现读取实例教程

C#通过Kepserver 与PLC通信配置及C#实现读取实例教程

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:4.01M
  • 下载次数:155
  • 浏览次数:5860
  • 发布时间:2020-03-27
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.rar
  • 所需积分:2
 相关标签:

实例介绍

【实例简介】


【实例截图】

from clipboard

【文件目录】

│  (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);
            }
        }
      

    }
}


标签:

实例下载地址

C#通过Kepserver 与PLC通信配置及C#实现读取实例教程

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 ulquiorra12358 发表于: 2020-06-20 10:49 40
我来说两句...

支持(0) 盖楼(回复)

第 2 楼 hanks@21cn.com 发表于: 2023-08-31 21:38 36
缺少关键的dll文件

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有2条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警