C# 联合KepServer对PLC进行数据读写

本文介绍了如何使用KepServer将工业设备的通信协议转换为OPC,实现在上位机上对西门子PLC的MD200等数据的读写操作,包括OPC连接、数据订阅、异步写入及实时刷新。

KepServer可以将任何工业设备的通信协议转换为opc协议,然后用OPCAutomation进行上位机数据读写。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OPCAutomation;

namespace KepTest1
{
   
   
    public partial class FrmMain : Form
    {
   
   
        public FrmMain()
        {
   
   
            InitializeComponent();
            this.Load += FrmMain_Load;
        }

        private void FrmMain_Load(object sender, EventArgs e)
        {
   
   
            this.btnRefresh_Click(btnRefresh, null);
            this.dataGridViewValue.AutoGenerateColumns = false;
        }

        OPCServer opcServer;
        OPCGroups opcGroups;
        OPCGroup opcGroup;

        OPCItems opcItems;
        OPCItem opcItem; //项
        Dictionary<string, OPCItem> dicOpcItem = new Dictionary<string, OPCItem>();
        List<OPCItem> opcItemList = new List<OPCItem>(); //项的集合

        OPCBrowser opcBrowser;
        string strHostName = null;
        object opcServerList;

        List<OpcValue> opcValueList = new List<OpcValue>();

        int clientHandle; //change句柄

        int count;

        //异步写入相关
        Array writeErrors;
        int cancelId;

        private void btnConn_Click(object sender, EventArgs e)
        {
   
   
            //连接服务器
            if (opcServer != null)
            {
   
   
                opcServer = new OPCServer();
            }
            try
            {
   
   
                opcServer.Connect(this.cmb_ServerName.Text, this.cmb_ServerNode.Text);
            }
            catch (Exception ex)
            {
   
   
                MessageBox.Show("连接失败:" + ex.Message);
                return;
            }

            opcBrowser = this.opcServer.CreateBrowser(); //由OPC 节点创建浏览器
            opcBrowser.ShowBranches();//展示浏览器属性
            opcBrowser.ShowLeafs(true); //叶节点展示

            //绑定 其实是浏览器browers
            this.listBoxServer.Items.Clear();

            foreach (var item in opcBrowser)
            {
   
   
                if (!thi
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘诺西亚的火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值