先实例化一个类
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文件
Dome.rar
C#基于Sharp7(二次封装)读取西门子plc变量(下)