zhaopeiym / IoTClient

This is an IoT device communication protocol implementation client, which will include common industrial communication protocols such as mainstream PLC communication reading, ModBus protocol, and Bacnet protocol. This component is open source and free for life, using the most relaxed MIT open source agreement, you can modify and commercial use at will (commercial use please evaluate and test). 这是一个物联网设备通讯协议实现客户端,将会包括主流PLC通信读取、ModBus协议、Bacnet协议等常用工业通讯协议。本组件终身开源免费,采用最宽松的MIT开源协议,您可以随意修改和商业使用(商业使用请做好评估和测试)。
MIT License
1.27k stars 408 forks source link

西门子读取变量可以连续读取多个变量吗? #13

Open StarBrighter opened 3 years ago

StarBrighter commented 3 years ago

连续读取

zhaopeiym commented 3 years ago

image

StarBrighter commented 3 years ago

我想的是从一个地址开始,按照顺序连续读取n个相同类型的变量;您上面那个批量读取,如果我想读取n个相同连续变量的话,我还需要把这些地址添加到批量表里才能读到

zhaopeiym commented 3 years ago

SiemensClient client = new SiemensClient(SiemensVersion.S7_200Smart, "127.0.0.1",102); client.ReadInt32("V400",5); 你试试,可能会有问题。

不建议用这种方式。一般的需求界面对数据的监控,应该不是连续的吧。

StarBrighter commented 3 years ago

好的, 感谢 ! 我用过那个S7NetPlus这个库 连续读取的速度是比较快的

zhaopeiym commented 3 years ago

请问,你们是什么需求会要求读取连续的地址呢? 读取不连续地址的需求应该更常见才对啊。

StarBrighter commented 3 years ago

我前段时间做了个上位机程序,大概用到了上千个PLC变量,我进行了读取测试,如果每个变量都单独读取,我把上千个变量读完可能得花2秒钟甚至更多,但如果我将用到的bool类型、int类型等都整理出来,进行连续的读取,读完以后再根据对应索引进行分配,速度提高了非常多,也就200ms左右,你上面提到的批量读取我也进行了测试,速度没有连续读取的快,但也提高了非常多。当然这有个前提,就是PLC下位机程序必须保证变量地址连续。

zhaopeiym commented 3 years ago

你能做下测试吗,用批量读取和连续读取。同样的变量数量,性能差距有多少,是否在接受范围之内。

StarBrighter commented 3 years ago

我过几天测试,这两天PLC没在