ylliao
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 85 個(gè)
工控威望: 203 點(diǎn)
下載積分: 535 分
在線時(shí)間: 72(小時(shí))
注冊時(shí)間: 2013-07-26
最后登錄: 2024-10-17
查看ylliao的 主題 / 回貼
樓主  發(fā)表于: 2018-06-05 22:04
1uvufuc
[ 此帖被ylliao在2022-01-15 01:13重新編輯 ]
instanttw
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 26 個(gè)
工控威望: 155 點(diǎn)
下載積分: 2292 分
在線時(shí)間: 39(小時(shí))
注冊時(shí)間: 2013-04-25
最后登錄: 2021-11-04
查看instanttw的 主題 / 回貼
1樓  發(fā)表于: 2018-06-08 10:42
請樓主認(rèn)真看待一樓的建議


程序看似豪華,但缺乏彈性。
基本功能至少還要有 無符號(hào)/正負(fù)號(hào)整數(shù)、32 位元整數(shù)、浮點(diǎn)數(shù)、K4MXY、K8MXY...


有沒有思考過如何提升整體通訊效率?
讀寫 5 個(gè)不連續(xù)的位址就一定要通訊 5 次?
連接的 PLC 多的時(shí)候要怎么處理?
只連一臺(tái) PLC,程序跑到卡就太失敗了。


使用 VB6 編程...




這是曾在玩的,主站讀取資料,其他跟主站要資料。
大量不同位址 + FX3U/FX3G + FX5U + S7-1200 等多臺(tái) PLC。



instanttw
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 26 個(gè)
工控威望: 155 點(diǎn)
下載積分: 2292 分
在線時(shí)間: 39(小時(shí))
注冊時(shí)間: 2013-04-25
最后登錄: 2021-11-04
查看instanttw的 主題 / 回貼
2樓  發(fā)表于: 2018-06-11 09:10
噢! 這裡沒有做過展示程序,只能簡述程序的設(shè)計(jì)流程。

與 PLC 通訊的核心部分應(yīng)該是大同小異,主要就是附加功能來應(yīng)付各種情況。像是提到符號(hào)、整數(shù)的位元數(shù)(16/32/K4/K8)、浮點(diǎn)數(shù)等等,這些在 PC 端程序增加個(gè)轉(zhuǎn)換即可。C 使用指針、.NET 使用 BitConverter,要注意的部分是 S7-1200 為 big-endian。

而送給 PLC 的封包則是數(shù)量越少越好,所以盡量將每個(gè)封包都使用到極限。3U/3G 的極限很小,所以能玩得不多。5U 的彈性就遠(yuǎn)比 3U/3G 來得強(qiáng)悍,可以將不同類型的位址塞進(jìn)一個(gè)封包裡。1200 則是很單純,一個(gè)封包最多 20 組要求。

至于處理多臺(tái) PLC,看要選擇多線程還是異步。會(huì)建議后者,但寫起來比較困難。而通訊和程序主體應(yīng)分開兩個(gè)線程執(zhí)行,避免意外鎖死。
測試時(shí),同時(shí)連線 6 臺(tái) PLC,通訊部分幾乎都是 0% CPU 使用率,而每臺(tái) PLC 一秒約 50 次的通訊次數(shù)。

EDIT: 若有更好的方式,歡迎賜教~
[ 此帖被instanttw在2018-06-11 09:46重新編輯 ]