PLC通讯协议
S7
nuget包
1.S7netplus
1-安装S7netplus 2-using S7.Net;
//plc型号,一般是1500,仿真实例的IP,端口一般是102,对应的机架和插槽
Plc plc = new Plc(CpuType.S71500, "192.168.0.1", 102, 0, 1);
//plc型号,一般是1500,仿真实例的IP,端口一般是102,对应的机架和插槽
Plc plc = new Plc(CpuType.S71500, "192.168.0.1", 102, 0, 1);//读
//DB: 通常用于表示数据块的编号。
//DataType: 表示数据的类型。一般就是DataBlock
//StartByteAdr: 起始字节地址,表示从数据块中哪个字节开始访问数据。起始值偏移量
//BitAdr: 位地址,表示字节中的具体位位置。偏移量的小数位
//Count: 数据数量,这里设为 1,表示只读取一个数据单元。
//VarType:要读取数据的变量类型,假设是一个枚举类型,值为 Bit。
DataItem dataItem = new DataItem()
{
DataType = DataType.DataBlock,
DB = 1,
StartByteAdr = 14,
BitAdr = 1,
Count = 1,
VarType = VarType.Bit,
};
List<DataItem> temp = [dataItem];
//读多个
plc.ReadMultipleVars(temp);
Console.WriteLine((bool)temp[0].Value);
//foreach (var item in (BitArray)temp[0].Value)
//{
// Console.WriteLine(item);
//}
plc.Close();//写入
//Value:要写入的值
DataItem dataItem1 = new DataItem()
{
DataType = DataType.DataBlock,
DB = 1,
StartByteAdr = 14,
BitAdr = 1,
Count = 1,
VarType = VarType.Bit,
Value = !(bool)temp[0].Value,
};
DataItem[] temp1 = [dataItem1];
plc.Write(temp1);采集间隔
//internal: 访问修饰符,表示此字段只能在同一个程序集内访问。
//readonly: 修饰符,意味着这个字段只能在声明时或者在构造函数中被赋值,之后就不能再被修改。
//PeriodicTimer: .NET 6引入的一个计时器类型,用于创建按固定周期触发的定时器。
//采集间隔: 变量名,表示这是一个采集间隔的计时器。
//new(TimeSpan.FromMilliseconds(300)): 创建一个新的PeriodicTimer,间隔时间为300毫秒(0.3秒)。
这个计时器可以用于定期执行某些任务,比如数据采集、状态检查等。每300毫秒,它会触发一次执行。
internal readonly PeriodicTimer 采集间隔 = new(TimeSpan.FromMilliseconds(300));读取String地址要加2,首位是字符串最大长度,第二位是字符串的实际长度,通常读254
//将多读出的空格去除
virtualSN = 信号表[信号名称表.读取_SN].Value.ToString().Trim('\0');
//清空之前独到的数据
await plc.WriteAsync(plcAddress, emptyString);
工站 = (工站Base)Activator.CreateInstance(工站类型, new object[] { 系统参数.信号表, 实时信息 });
工站 = (工站Base)Activator.CreateInstance(工站类型, [系统参数.信号表, 实时信息]);plc写入起始地址一致,类型为S7string
读取还是原来的
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果
