新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Modbus通訊注意事項及測試

        Modbus通訊注意事項及測試

        作者: 時間:2016-12-13 來源:網絡 收藏
        很多同學在做Modbus通訊時,需要連續讀取多個現場設備的數據,雖然也編寫了Modbus輪詢的程序,但是有時還是無法正常通訊。有時雖然能夠保證通訊,但是所有現場設備的輪詢周期很長。本文將從MBUS_CTRL的超時時間參數設置來說明超時時間設置的重要性。
        答:Modbus通訊協議是單主多從的通訊協議,如果需要讀取多個現場Modbus從站設備的數據時,很多PLC不支持對Modbus通訊功能塊的自動排序,需要自己編寫Modbus輪詢程序來實現,輪詢時每次只能激活一個Modbus的讀寫功能塊。
        以常見的主站讀取從站的寄存器為例,主站發出請求需要8個字節,從站返回響應為52*n個字節。其中n為寄存器個數。
        如果通訊速率為9600時,按照常規的ModbusRTU,8個數據位、1個停止位、偶校驗方式,每傳輸1個字節數據需要的時間為:
        (811)/9600=1.04ms/Byte
        因此,主站發出響應到從站返回數據的時間周期為:
        (852*n)*1.04T1T2,其中n為寄存器個數,T1為從站的響應時間(如果是PLC,則為PLC的掃描時間),T2為通訊余量,一般為20~50ms。
        如果讀取10個字的數據,從站響應時間為50ms,則整個周期為:
        (852*10)*1.045050=134.32ms。
        因此,超時時間必須大于134.32ms,可以設置為150ms以上。
        如果超時時間太短,響應不能完全返回,通訊會報錯。
        如果超時時間設置太長,按照上述例子,一共10個從站,每個從站讀取10個字的數據,超時時間設置為1s。如果有1個從站出現故障,則整個輪詢周期為:10009*134.32=2208.88ms。
        同理,如果超時時間設為150ms,則整個輪詢周期為:1509*134.32=1358.88ms。
        因此,可以看出正確的超時時間設置可縮短整個輪詢周期,不正確的設置,將導致通訊出錯或整個通訊周期過長。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 彭水| 台东市| 三亚市| 嫩江县| 泰和县| 龙井市| 望都县| 庄河市| 云霄县| 永胜县| 青铜峡市| 藁城市| 沿河| 高台县| 麻江县| 嫩江县| 博野县| 错那县| 边坝县| 资兴市| 鱼台县| 五原县| 台中县| 正安县| 莆田市| 乌什县| 曲水县| 滁州市| 疏勒县| 莱芜市| 香格里拉县| 南江县| 台东县| 永泰县| 巴东县| 北安市| 章丘市| 资源县| 南溪县| 易门县| 巴塘县|