djd347599380
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 83 個(gè)
工控威望: 164 點(diǎn)
下載積分: 716 分
在線時(shí)間: 46(小時(shí))
注冊(cè)時(shí)間: 2015-07-26
最后登錄: 2024-11-02
查看djd347599380的 主題 / 回貼
樓主  發(fā)表于: 2018-07-12 08:01
  Modbus通訊協(xié)議是單主多從的通訊協(xié)議,如果需要讀取多個(gè)現(xiàn)場Modbus從站設(shè)備的數(shù)據(jù)時(shí),很多PLC不支持對(duì)Modbus通訊功能塊的自動(dòng)排序,需要自己編寫Modbus輪詢程序來實(shí)現(xiàn),輪詢時(shí)每次只能激活一個(gè)Modbus的讀寫功能塊。
      以常見的主站讀取從站的寄存器為例,主站發(fā)出請(qǐng)求需要8個(gè)字節(jié),從站返回響應(yīng)為5 2*n個(gè)字節(jié)。其中n為寄存器個(gè)數(shù)。
      如果通訊速率為9600時(shí),按照常規(guī)的Modbus RTU,8個(gè)數(shù)據(jù)位、1個(gè)停止位、偶校驗(yàn)方式,每傳輸1個(gè)字節(jié)數(shù)據(jù)需要的時(shí)間為:
      (8 1 1)/9600=1.04ms/Byte
      因此,主站發(fā)出響應(yīng)到從站返回?cái)?shù)據(jù)的時(shí)間周期為:
      (8 5 2*n)*1.04 T1 T2,其中n為寄存器個(gè)數(shù),T1為從站的響應(yīng)時(shí)間(如果是PLC,則為PLC的掃描時(shí)間),T2為通訊余量,一般為20~50ms。
      如果讀取10個(gè)字的數(shù)據(jù),從站響應(yīng)時(shí)間為50ms,則整個(gè)周期為:
      (8 5 2*10)*1.04 50 50=134.32ms。
      因此,超時(shí)時(shí)間必須大于134.32ms,可以設(shè)置為150ms以上。
      如果超時(shí)時(shí)間太短,響應(yīng)不能完全返回,通訊會(huì)報(bào)錯(cuò)。
      如果超時(shí)時(shí)間設(shè)置太長,按照上述例子,一共10個(gè)從站,每個(gè)從站讀取10個(gè)字的數(shù)據(jù),超時(shí)時(shí)間設(shè)置為1s。如果有1個(gè)從站出現(xiàn)故障,則整個(gè)輪詢周期為:1000 9*134.32=2208.88 ms。
      同理,如果超時(shí)時(shí)間設(shè)為150ms,則整個(gè)輪詢周期為:150 9*134.32=1358.88 ms。
      因此,可以看出正確的超時(shí)時(shí)間設(shè)置可縮短整個(gè)輪詢周期,不正確的設(shè)置,將導(dǎo)致通訊出錯(cuò)或整個(gè)通訊周期過長。
本帖最近評(píng)分記錄:
  • 下載積分:+3(l83438797) 這番解答比較詳細(xì)了!
    沒啥特長
    說句真話,你其實(shí)彳
    級(jí)別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 290 個(gè)
    工控威望: 481 點(diǎn)
    下載積分: 13539 分
    在線時(shí)間: 76(小時(shí))
    注冊(cè)時(shí)間: 2017-04-15
    最后登錄: 2022-03-07
    查看沒啥特長的 主題 / 回貼
    1樓  發(fā)表于: 2018-07-12 11:22
    牛人
    wangnaizhi
    級(jí)別: 論壇先鋒
    精華主題: 0
    發(fā)帖數(shù)量: 1273 個(gè)
    工控威望: 1449 點(diǎn)
    下載積分: 5484 分
    在線時(shí)間: 896(小時(shí))
    注冊(cè)時(shí)間: 2015-08-31
    最后登錄: 2024-11-06
    查看wangnaizhi的 主題 / 回貼
    2樓  發(fā)表于: 2018-07-12 14:16