各位先進好
小弟最近撰寫一個頗大的程式
程式包含TCP/IP通訊 RS485通訊及記錄的程式
採用多while loop 的方式撰寫,也有為while loop 做迴圈延遲避免CPU被操爆
但最近發現有些通訊迴圈的時間與我當初預估的相差甚遠
原先我預定的時間差很多(理想上應該1秒內可以完成的事情,拖到3秒)
可是同一個程式在通訊設備較少的地方測試,迴圈速度又變回正常
想請問一下各位先進是否有碰到類似的問題
另外在測試的時候
我發現如果其中一個通道有無法通訊的設備出現時,其他通訊迴圈的速度也會被影響
理論上不同迴圈的執行速度不是獨立開來的嗎?
例如:
A通訊迴圈 COM1 有4個設備 理論上執行一次的時間為1秒
B通訊迴圈 COM2 有8個設備 理論上執行一次的時間為2秒
當B迴圈有設備被關閉導致無回應時A迴圈的執行時間變成2秒
就算B迴圈因為TIME OUT設定為1秒,跟A迴圈應該沒有關係吧
在 03-17-2014 07:45 PM
還有其他程式
a與b都是數位電錶的通訊迴圈 使用rs485介面的modbus
程式太大 我沒有辦法去看程式停在什麼地方
而且 程式因某些原因不能po上來 我只能把狀況描述出來
在 03-18-2014 09:01 PM
恩謝謝您百忙之中還抽空來討論這個問題
其實是因為這有點不合理我才提出來的
我程式每個迴圈的功能都蠻獨立的
不會相互影響
但是兩個通訊迴圈這個問題 卻發生了,所以想問有沒有人遇到跟我一樣的問題
在 03-19-2014 09:03 PM
在 03-20-2014 01:03 AM
謝謝您提供的網站,蠻有幫助的
但我的迴圈都有加入Wait Until Next ms Multiple來減慢程式速度
CPU使用量也還好
所以不是這問題
在 03-20-2014 08:05 PM
RS485網路中要加終端電阻去做調校,不然訊號會反射。
http://zone.ni.com/reference/en-XX/help/370984T-01/lvaddon11/987x_rs485termination/
http://www.ni.com/support/serial/resinfo.htm
參考看看吧。
在 03-20-2014 08:10 PM
終端電阻的部分有加,目前好像發現原因了
請問各位先進在使用副程式時,是否有發生過 兩個不同的迴圈都執行同一個副程式時,會被占用的問題
是否有方法寫一個副程式,讓兩個以上獨立迴圈利用的時候,不被占用的方法? 類似...巨集之類的
可以將subvi設為reentrant