WPF与PLC进行OPC数据交互通讯

@WPF也工控机西门子通过OPC通讯方式进行数据上的交互

初始化以及读取写入的方法:
  
namespace OPC
{
  public partial class MainWindow
{
       OPCServer MyOpcServer;

        OPCGroup MyOpcGroup;
        public OPCItem Item1, Item2, Item3
   
        public string OPCStart()//初始化以及监控点位
        {
            try
            {
                MyOpcServer = new OPCServer();
                MyOpcServer.Connect("OPC.SimaticNet");
                MyOpcGroup = MyOpcServer.OPCGroups.Add("MyGroup1");
                MyOpcGroup.IsActive = true;

                Item1 = MyOpcGroup.OPCItems.AddItem("S7:[S7_Connection_1]DB44,X0.3", 1);
                Item2 = MyOpcGroup.OPCItems.AddItem("S7:[S7_Connection_1]DB44,X0.4", 2);//标签名称或地址名
                Item3 = MyOpcGroup.OPCItems.AddItem("S7:[S7_Connection_1]DB44,X0.5", 3);
                          
                return "ok";
            }
            catch (System.Exception ex)
            {
                return ex.Message;
            }
        }

 #region 同步写、读
        public string OPCWrite(OPCItem Item, object Value)
        {
            try
            {
                Item.Write(Value);
                return "ok";
            }
            catch (System.Exception ex)
            {
                return ex.Message;
            }
        }

        public string OPCWritebool(OPCItem Item, object Value)
        {
            try
            {
                Item.Write(Value);
                return "ok";
            }
            catch (System.Exception ex)
            {
            
                return ex.Message;
            }
        }
        public string OPCRead(OPCItem Item, out string value)
        {
            object ItemValues = null;
            object Qualities = null;
            object TimeStamps = null;
            try
            {
                Item.Read(1, out ItemValues, out Qualities, out TimeStamps);
                value = String.Format("{0}", ItemValues);


                return "ok";
            }
            catch (System.Exception ex)
            {
                value = "error";
                return ex.Message;
            }
        }


      

        public float Readfloat(OPCItem Item, out object Value)
        {
            Value = null;
            object Quality = null;
            object TimeStamp = null;
            try
            {
                Item.Read(1, out Value, out Quality, out TimeStamp);
                return Convert.ToSingle(Value);
            }
            catch (System.Exception ex)
            {
               
                return Convert.ToSingle(0);
            }
        }

      
        #endregion
}
}





以上就是实测方法真实可用,具体引用需要结合项目需要,对大家有帮助的话可以点赞收藏!!

你可能感兴趣的:(c#,后端)