作者 | 主题 |
---|---|
匆匆又三年 侠圣 经验值: 3258 发帖数: 310 精华帖: 8 |
楼主 2021-01-14 21:48:05
主题:C#基于Sharp7(二次封装)读取西门子plc变量(上) 先实例化一个类 S7Client plc = new S7Client(); 连接PLC plc.ConnectTo("192.168.31.100", 0, 1); 方法一、注册标签名读写变量 1、注册变量plc.Add(变量名, 地址, 数据类型); plc.Add("D1", "D1.0.0", S7Type.Bit); plc.Add("D2", "D1.1", S7Type.Byte); plc.Add("D3", "D1.2", S7Type.Word); plc.Add("D4", "D1.4", S7Type.Int); plc.Add("D5", "D1.6", S7Type.DWord); plc.Add("D6", "D1.10", S7Type.DInt); plc.Add("D7", "D1.14", S7Type.Real); plc.Add("D8", "D1.18", S7Type.LWord); plc.Add("D9", "D1.26", S7Type.LInt); plc.Add("D10", "D1.34", S7Type.LReal); 2、读取变量 plc.Read(变量名) plc.Read("D1"); plc.Read("D2"); plc.Read("D3"); plc.Read("D4"); plc.Read("D5"); plc.Read("D6"); plc.Read("D7"); plc.Read("D8"); plc.Read("D9"); plc.Read("D10"); 3、写入变量plc.Write(变量名,值) plc.Write("D1",1); plc.Write("D2",2); plc.Write("D3",3); plc.Write("D4",4); plc.Write("D5",5); plc.Write("D6",6); plc.Write("D7",7); plc.Write("D8",8); plc.Write("D9",9); plc.Write("D10",10); 方法二、地址加类型读写变量 1、读取变量 plc.Read(地址,数据类型) plc.Read("I0.0", S7Type.Bit); plc.Read("I1", S7Type.Byte); plc.Read( "I2", S7Type.Word); plc.Read("I4", S7Type.Int); plc.Read( "I6", S7Type.DWord); plc.Read("I10", S7Type.DInt); plc.Read("I14", S7Type.Real); plc.Read("I18", S7Type.LWord); plc.Read("I26", S7Type.LInt); plc.Read("I34", S7Type.LReal); 2、写入变量 plc.Write(地址,数据类型,值) plc.Write("I0.0", S7Type.Bit,1); plc.Write("I1", S7Type.Byte, 2); plc.Write("I2", S7Type.Word, 3); plc.Write("I4", S7Type.Int, 4); plc.Write("I6", S7Type.DWord, 5); plc.Write("I10", S7Type.DInt, 6); plc.Write("I14", S7Type.Real, 7); plc.Write("I18", S7Type.LWord, 8); plc.Write("I26", S7Type.LInt, 9); plc.Write("I34", S7Type.LReal, 10); 方法三、读取一个类,再利用方法一写入变量 1、新建一个类 class Udt { private bool _Static_1; public bool Static_1 { get => _Static_1; set => _Static_1 = value; } private byte _Static_2; public byte Static_2 { get => _Static_2; set => _Static_2 = value; } private ushort _Static_3; public ushort Static_3 { get => _Static_3; set => _Static_3 = value; } private short _Static_4; public short Static_4 { get => _Static_4; set => _Static_4 = value; } private UInt32 _Static_5; public UInt32 Static_5 { get => _Static_5; set => _Static_5 = value; } private Int32 _Static_6; public Int32 Static_6 { get => _Static_6; set => _Static_6 = value; } private float _Static_7; public float Static_7 { get => _Static_7; set => _Static_7 = value; } private UInt64 _Static_8; public UInt64 Static_8 { get => _Static_8; set => _Static_8 = value; } private Int64 _Static_9; public Int64 Static_9 { get => _Static_9; set => _Static_9 = value; } private double _Static_10; public double Static_10 { get => _Static_10; set => _Static_10 = value; } } 2、初始化类 Udt D2 = new Udt(); Udt I0 = new Udt(); Udt Q0 = new Udt(); Udt M0 = new Udt(); 3、读取变量 plc.ReadClass(D2,S7Area.DB, 2, 0);//读取DB2地址从0.0开始的十个变量 plc.ReadClass(I0, S7Area.PE, 0, 0);//读取I区地址从0.0开始的十个变量 plc.ReadClass(Q0, S7Area.PA, 0, 0);//读取Q区地址从0.0开始的十个变量 plc.ReadClass(M0, S7Area.MK, 0, 0);//读取M区地址从0.0开始的十个变量 4、写入变量 1.先用plc.Add(类,实例名, 数据区域,DB编号,起始地址)方法注册字典 plc.Add(D2, "D2", S7Area.DB, 2,0); plc.Add(I0, "I0", S7Area.PE, 2, 0); plc.Add(Q0, "Q0", S7Area.PA, 2, 0); plc.Add(M0, "M0", S7Area.MK, 2, 0); 2.再利用plc.Write(变量名,值) plc.Write("D2. Static_1", 1); plc.Write("I0. Static_1", 1); plc.Write("Q0. Static_1", 1); plc.Write("M0. Static_1", 1); 方法四、通过配置XML文件读取变量,件 1、加载Debug目录下的PlcTag.xml配置文 S7Client plc1 = new S7Client(System.IO.Path.Combine(Environment.CurrentDirectory, "PlcTag.xml")); plc1.ConnectTo("192.168.31.100", 0, 1); 2、plc1.Read();读取变量 变量的值存放在plc1.Tag中,可以使用foreach循环获取 foreach (KeyValuePair<string,Tag> item in plc1.Tag) { //打印结果 Console.WriteLine($"<编号>{ item.Key} <变量名>{ item.Value.name}<数据类型>{ item.Value.s7type}<地址>{ item.Value.address}<值>{ item.Value.value}"); } 3、写入变量 plc.Write(变量名,值) 写入变量通过方法一 plc1.Write("name", Value);......name是通过配置文件<Package/> 中的name值加上<Name/>中的number值 例如Package中 name="Package_D1",Name中number="1" 则name="Package_D1"+"."+1; 例如Package中 name="Package_Q0",Name中number="10" 则name="Package_Q0"+"."+10; plc1.Write("Package_D1.1", 1); plc1.Write("Package_D1.2", 1); plc1.Write("Package_Q0.10", 1); rar压缩包包含三个文件,一个vs2019、一个使用说明书、一个v15项目,xml文件在Test项目下的Debug目录下PlcTag.xml文件
有事联系邮箱 203161926@qq.com
|