噢! 这裡没有做过展示程序,只能简述程序的设计流程。
与 PLC 通讯的核心部分应该是大同小异,主要就是附加功能来应付各种情况。像是提到符号、整数的位元数(16/32/K4/K8)、浮点数等等,这些在 PC 端程序增加个转换即可。C 使用指针、.NET 使用 BitConverter,要注意的部分是 S7-1200 为 big-endian。
而送给 PLC 的封包则是数量越少越好,所以尽量将每个封包都使用到极限。3U/3G 的极限很小,所以能玩得不多。5U 的弹性就远比 3U/3G 来得强悍,可以将不同类型的位址塞进一个封包裡。1200 则是很单纯,一个封包最多 20 组要求。
至于处理多台 PLC,看要选择多线程还是异步。会建议后者,但写起来比较困难。而通讯和程序主体应分开两个线程执行,避免意外锁死。
测试时,同时连线 6 台 PLC,通讯部分几乎都是 0% CPU 使用率,而每台 PLC 一秒约 50 次的通讯次数。
EDIT: 若有更好的方式,欢迎赐教~
[ 此帖被instanttw在2018-06-11 09:46重新编辑 ]