-
思考項目
- 成功率的重要性
- 失敗的原因
- 如果無法改變那我該怎麼做
-
1. 成功率的重要性
-
一開始
- 看見Modus再多接切多設備Slave詢問會有問不到的問題時有即時做出改變如:
- 修改程式碼增加休息間隔
- 加上末端 120 歐姆電阻
- 調整詢問方式邏輯讓他階段性的詢問:
- 一開始用 9200,怕是詢問段落太長會應時間壓不住導致Timeout
- retries改成3次,timeout設定0.5
-
成果:
- 確實有減少一個區間錯誤的次數,本來約5/10會失敗,如今大約壓到2/10
- 但一個詢問週期會因為重試次數而拉長,有發現大多就算Retries多次也只會有首次成功或失敗的問題,代表如果進Retries階段也許是SPM3 Modbus通訊堵塞忙碌。
-
2. 失敗的原因
-
物理性質
- 外界干擾
- 磁場影響
-
程式碼邏輯
- 多Slave切換
- 休息間隙過短
-
3. 如果無法改變那我該怎麼做
-
目前解法
- 失敗原因不可控
- 失敗原因經測試發現為線長與物理性之問題,因此不採用成功率提升作法
- 詢問頻率不等於回應頻率
- 因詢問頻率並不會同等於回應頻率,此條件需求調高詢問頻率並減少TimeOut。
- 休息時間與回應的相關性
- 有發現在學者或其他工程師的文章中多多少少會說Modbus的Buffer是會自理的,但在實作的過程中有發現根本不會,當我完全不放休息時間開始後第二次第三次一定會死,因此條件詢問區間大約調製0.5左右。
- Retries是否需要