• 思考項目

    1. 成功率的重要性
    2. 失敗的原因
    3. 如果無法改變那我該怎麼做
  • 1. 成功率的重要性

    • 一開始

    • 看見Modus再多接切多設備Slave詢問會有問不到的問題時有即時做出改變如:
      1. 修改程式碼增加休息間隔
      2. 加上末端 120 歐姆電阻
      3. 調整詢問方式邏輯讓他階段性的詢問:
        • 一開始用 9200,怕是詢問段落太長會應時間壓不住導致Timeout
      4. retries改成3次,timeout設定0.5
    • 成果:

      • 確實有減少一個區間錯誤的次數,本來約5/10會失敗,如今大約壓到2/10
      • 但一個詢問週期會因為重試次數而拉長,有發現大多就算Retries多次也只會有首次成功或失敗的問題,代表如果進Retries階段也許是SPM3 Modbus通訊堵塞忙碌。
  • 2. 失敗的原因

    • 物理性質

      1. 外界干擾
      2. 磁場影響
    • 程式碼邏輯

      1. 多Slave切換
      2. 休息間隙過短
  • 3. 如果無法改變那我該怎麼做

    • 目前解法

      1. 失敗原因不可控
        • 失敗原因經測試發現為線長與物理性之問題,因此不採用成功率提升作法
      2. 詢問頻率不等於回應頻率
        • 因詢問頻率並不會同等於回應頻率,此條件需求調高詢問頻率並減少TimeOut。
      3. 休息時間與回應的相關性
        • 有發現在學者或其他工程師的文章中多多少少會說Modbus的Buffer是會自理的,但在實作的過程中有發現根本不會,當我完全不放休息時間開始後第二次第三次一定會死,因此條件詢問區間大約調製0.5左右。
      4. Retries是否需要
        • 測試結果Retries增加確實會增加成功機率,但