发布时间:2024-04-24 15:01
HslCommunication
dathlin/HslCommunicationgithub.com这个功能是最丰富的,M,Q,I,DB块随便读写,而且不仅是西门子,各家PLC都有,还附带各种demo和一些其他功能,
//读取一段数据,然后取其中一部分
var SiemensTcpNet = new SiemensS7Net(SiemensPLCS.S1200, IP);
var content = await SiemensTcpNet.ReadAsync("Q8.2", 30);//从Q8.2开始读,长度30
aaa = ByteTransform.TransBool(content.Content, 0);
bbb = ByteTransform.TransBool(content.Content, 10);
ccc = ByteTransform.TransBool(content.Content, 22);
//直接读取某个地址
ddd = (await SiemensTcpNet.ReadInt32Async("DB26.8")).Content;
可以实现读取一整块然后对零碎地址的读取
也可以一个一个零碎读取
支持async await
s7netplus
S7NetPlus/s7netplusgithub.com从s7net演化而来,读写DB块
S7.Net.Plc plc = new S7.Net.Plc(S7.Net.CpuType.S71200, ip, 0, 2);
PlcData data = plc.ReadClassAsync(1);
读取DB1 一整块到类
适合非常规整的DB块读写
支持async await
sharp7
fbarresi/Sharp7github.com比较适合零碎地址的DB数据读写
这三个都是纯C#实现的,都可以在nuget上直接获取,同时支持.net framework和.net standard,意味着可以在任何平台的.net程序里使用他们,也是.net程序最适合的类库形态,而不必去使用COM组件或者c++组件。
有了这些类库完全可以摆脱传统上位机软件束缚,自己实现各种功能,用C#开发更加大型的系统。