@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
}
}
以上就是实测方法真实可用,具体引用需要结合项目需要,对大家有帮助的话可以点赞收藏!!