zoukankan      html  css  js  c++  java
  • C#通过自定义控件实现在设计界面关联PLC通讯地址

    前言

    用Wincc或者触摸屏软件开发上位机时,可以方便的在控件中填写与PLC的关联地址就可以实现PLC变量的读写,在C#WinForm中也可以通过在控件中添加自定义属性来实现这一功能。

    效果

    22

    实现过程

    • 建立自定义控件

    • 在控件中添加Address、Rate、TypeMode等属性 
      public partial class CheckBoxEx : CheckBox
        {
            public CheckBoxEx()
            {
                InitializeComponent();
    
            }
    
            [Category("Data")]
            public string Address { get; set; }
    
            [Category("Data")]
            public int Rate { get; set; }
    
            [Category("Data")]
            public string Comment { get; set; }
    
            [Category("Data")]
            public TypeMode Mode { get { return TypeMode.Boolen; }set {value = TypeMode.Boolen ; }}
    
            [Category("Data")]
            public string Value { get { return this.Checked.ToString(); } set { this.Checked = value == "True"?true:false; } }
            public CheckBoxEx(IContainer container)
            {
                container.Add(this);
    
                InitializeComponent();
            }
    
        }
    • 解析地址

     我使用的是Snap7与西门子通信,西门子DB块的地址通常为DB1.D100.0,为了简化地址输入,通常使用一个DB块与上位机通信,所以地址可简化为100.0(字符串类型),DB块号默认为1 。对于Int和DInt等占一个字节以上的数据,只需要地址偏移量100即可,对于bool量,则还需要.0也就是位,于是地址解析就变成了从一个带小数点的字符串中取出小数点前的数和小数点后的数。

    代码如下:

            private void WriteMethod(string address, int value)
            {
                int idx = address.LastIndexOf(".");
                string strF = address.Substring(idx + 1);
                string strW = address.Substring(0, idx);
                int FiledValue = System.Convert.ToInt32(strF);
                int Offset = System.Convert.ToInt32(strW);
    
    
                S7.SetDIntAt(plc.DB_WriteBuffer, Offset, value);
                plc.PLC_DB_Write(1, 0, 222);
            }
    • 建立连接

     地址解析完成后就可以根据地址将控件数据写入或读取到缓存Buffer,再将Buffer内数据一次写入到PLC或从PLC读取到内存。具体内容可以搜索Snap7的Api。

  • 相关阅读:
    电商项目面试题 及mysql面试题 太难没啥用
    fastDFS配置及日志查看 所遇到的问题
    fastDFS
    比较难的问题
    基础面试题
    难度比较大的面试题(2)
    项目功能介绍 非常有用
    Hibernate和Mybatis区别 详细 有用
    mysql和oracle的区别
    TCP/IP Note4
  • 原文地址:https://www.cnblogs.com/amosi/p/13756074.html
Copyright © 2011-2022 走看看