ylliao
级别: 略有小成
精华主题: 0
发帖数量: 85 个
工控威望: 203 点
下载积分: 535 分
在线时间: 72(小时)
注册时间: 2013-07-26
最后登录: 2024-10-17
查看ylliao的 主题 / 回贴
楼主  发表于: 2018-06-05 22:04
1uvufuc
[ 此帖被ylliao在2022-01-15 01:13重新编辑 ]
instanttw
级别: 探索解密
精华主题: 0
发帖数量: 26 个
工控威望: 155 点
下载积分: 2292 分
在线时间: 39(小时)
注册时间: 2013-04-25
最后登录: 2021-11-04
查看instanttw的 主题 / 回贴
1楼  发表于: 2018-06-08 10:42
请楼主认真看待一楼的建议


程序看似豪华,但缺乏弹性。
基本功能至少还要有 无符号/正负号整数、32 位元整数、浮点数、K4MXY、K8MXY...


有没有思考过如何提升整体通讯效率?
读写 5 个不连续的位址就一定要通讯 5 次?
连接的 PLC 多的时候要怎么处理?
只连一台 PLC,程序跑到卡就太失败了。


使用 VB6 编程...




这是曾在玩的,主站读取资料,其他跟主站要资料。
大量不同位址 + FX3U/FX3G + FX5U + S7-1200 等多台 PLC。



instanttw
级别: 探索解密
精华主题: 0
发帖数量: 26 个
工控威望: 155 点
下载积分: 2292 分
在线时间: 39(小时)
注册时间: 2013-04-25
最后登录: 2021-11-04
查看instanttw的 主题 / 回贴
2楼  发表于: 2018-06-11 09:10
噢! 这裡没有做过展示程序,只能简述程序的设计流程。

与 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重新编辑 ]