可能出現(xiàn)通信擠兌的情況,就是同時(shí)有通信指令在進(jìn)行,時(shí)間長或者次數(shù)多了可能會(huì)宕機(jī)。
建議你優(yōu)化下輪詢程序,比如每條指令做好充足的時(shí)間間隔,如果有站掉線,時(shí)間會(huì)延長。把S7、TCP等同一網(wǎng)口的通信指令進(jìn)行輪詢,避開同時(shí)觸發(fā)。
我看你DONE\ERROR并沒有使用。實(shí)際官方的例程是有使用的。
當(dāng)REQ觸發(fā),DONE或者ERROR觸發(fā)后,REQ復(fù)位,下一個(gè)站REQ觸發(fā),DONE或者ERROR觸發(fā)后,下一個(gè)站REQ觸發(fā)......
其次,單條指令的最大字?jǐn)?shù)好像是128個(gè),而你100個(gè)字也算多了,modscan測(cè)試少有讀100個(gè)地址穩(wěn)定不掉線的情況。一般二三十個(gè)是可以穩(wěn)定的。
地址讀多了或者讀到無效地址就會(huì)導(dǎo)致掉線,你可以減少單個(gè)指令讀取的字?jǐn)?shù),一個(gè)指令讀不完就分兩個(gè)指令來讀,且盡量是說明書上的有效地址范圍。
[ 此帖被fczxjh在2025-04-15 11:23重新編輯 ]