S7netplus与PLC通信时的读写
问https://s3.bmp.ovh/imgs/2025/09/01/c675f26fe89c2993.jpg
答
S7netplus 是一个开源的库,主要用于.NET环境中与西门子S7系列PLC进行通信。
S7NetPlus 对 PLC 内部变量(如 M0.0、MW10、MD20 等)的访问权限受限,特别是 S7-1200/1500 系列 的 PLC,默认启用了优化访问,并且限制了外部写入。
在博图(TIA Portal)中:
进入PLC属性 → "防护与安全" → "连接机制"
必须勾选"允许来自远程对象的PUT/GET通信访问"
右键点击DB块 → "属性"
必须取消勾选"优化块的访问"
西门子PLC中的浮点数(REAL)在内存中是以IEEE 754标准存储的32位单精度浮点数。S7netplus在底层通信时,会以字节形式传输数据,返回的是原始的32位整数表示,所以需要通过ConvertToFloat()方法将其转换为C#中的float类型。
对于LREAL(双精度浮点数),转换方法类似,但需要使用ConvertToLReal()方法
如果您想直接写入浮点数,S7netplus可能不支持直接写入浮点数类型,需要通过字节数组的方式
您也可以使用ReadBytes()方法读取指定字节数,然后自己处理转换。
https://www.jianshu.com/p/e93e85ddc59c
页:
[1]