国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      總線通信協(xié)議識(shí)別方法

      文檔序號(hào):8398105閱讀:994來(lái)源:國(guó)知局
      總線通信協(xié)議識(shí)別方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及總線通信領(lǐng)域,具體而言,涉及一種總線通信協(xié)議識(shí)別方法。
      【背景技術(shù)】
      [0002]上位機(jī)軟件監(jiān)測(cè)RS-485總線上的通訊內(nèi)容時(shí),首先從通過(guò)監(jiān)聽(tīng)總線接收到的未分幀的原始字節(jié)數(shù)組中識(shí)別出總線上運(yùn)行的通訊協(xié)議,然后才能根據(jù)通訊協(xié)議的類(lèi)別對(duì)原始字節(jié)數(shù)據(jù)進(jìn)行分幀和解析處理。如果不能從監(jiān)聽(tīng)接收到的原始字節(jié)數(shù)據(jù)中識(shí)別出通訊協(xié)議或識(shí)別錯(cuò)誤,上位機(jī)軟件無(wú)法對(duì)數(shù)據(jù)進(jìn)行后續(xù)的分幀和解析處理,進(jìn)而也不可能監(jiān)測(cè)到總線上的通訊內(nèi)容,因此上位機(jī)軟件監(jiān)測(cè)識(shí)別RS-485總線上的通訊協(xié)議的方法和識(shí)別的準(zhǔn)確性就顯得非常重要。
      [0003]傳統(tǒng)的方法一般是根據(jù)通訊協(xié)議的協(xié)議幀中某些特征字節(jié)或特征字節(jié)的組合來(lái)識(shí)別協(xié)議,這樣雖然提高了識(shí)別的速度,但可能出現(xiàn)傳輸?shù)哪撤N協(xié)議的數(shù)據(jù)幀中包含的數(shù)據(jù)中有與其它協(xié)議的協(xié)議幀的特征字節(jié)或特征字節(jié)的組合相同的情況,從而出現(xiàn)識(shí)別不準(zhǔn)確的情況。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明旨在提供一種能夠提高準(zhǔn)確率的總線通信協(xié)議識(shí)別方法。
      [0005]本發(fā)明提供了一種總線通信協(xié)議識(shí)別方法,該方法包括:步驟S1:緩存大于或者等于第一長(zhǎng)度的原始字節(jié)數(shù)組;步驟S2:調(diào)用總線的所有兼容協(xié)議的分幀方法對(duì)原始字節(jié)數(shù)組中的原始字節(jié)數(shù)據(jù)進(jìn)行分幀處理;步驟S3:計(jì)算每種分幀方法的分幀率,并比較得到所有分幀率中的最大分幀率,其中,分幀率=分幀處理后所有幀包含的字節(jié)個(gè)數(shù)之和/原始字節(jié)數(shù)組中的字節(jié)個(gè)數(shù);步驟S4:將最大分幀率與分幀率標(biāo)準(zhǔn)對(duì)比;步驟S5:當(dāng)最大分幀率大于或者等于分幀率標(biāo)準(zhǔn)時(shí),則最大分幀率對(duì)應(yīng)的分幀方法的通訊協(xié)議為總線運(yùn)行通訊協(xié)議。
      [0006]進(jìn)一步地,該方法還包括:步驟S6:當(dāng)最大分幀率小于分幀率標(biāo)準(zhǔn)時(shí),添加新的原始字節(jié)數(shù)據(jù)到原始字節(jié)數(shù)組,且每次添加后將原始字節(jié)數(shù)組的字節(jié)長(zhǎng)度與第二長(zhǎng)度對(duì)比;步驟S7:當(dāng)原始字節(jié)數(shù)組的字節(jié)長(zhǎng)度小于或者等于第二長(zhǎng)度時(shí),返回步驟S2 ;當(dāng)原始字節(jié)數(shù)組的字節(jié)長(zhǎng)度大于第二長(zhǎng)度時(shí),反饋?zhàn)R別失敗提示。
      [0007]進(jìn)一步地,第一長(zhǎng)度為所有兼容協(xié)議的最大幀長(zhǎng)度的5倍。
      [0008]進(jìn)一步地,第二長(zhǎng)度大于或者等于所有兼容協(xié)議的最大幀長(zhǎng)度的10倍。
      [0009]進(jìn)一步地,分幀率標(biāo)準(zhǔn)為60%。
      [0010]進(jìn)一步地,步驟SI包括:步驟Sll:設(shè)置原始字節(jié)數(shù)組緩存;步驟S12:添加新的原始字節(jié)數(shù)據(jù)到原始字節(jié)數(shù)組,且每次添加后將原始字節(jié)數(shù)組的字節(jié)長(zhǎng)度與第一長(zhǎng)度對(duì)比,直到原始字節(jié)數(shù)組的字節(jié)長(zhǎng)度大于或者等于第一長(zhǎng)度。
      [0011]根據(jù)本發(fā)明的總線通信協(xié)議識(shí)別方法,通過(guò)將第一長(zhǎng)度的原始字節(jié)數(shù)組直接調(diào)用不同通訊協(xié)議必須的分幀方法進(jìn)行分幀,后找出分幀率最大的一個(gè),并與一個(gè)設(shè)定分幀率標(biāo)準(zhǔn)比較,如果最大的那個(gè)分幀率大于設(shè)定的分幀率標(biāo)準(zhǔn),則判斷產(chǎn)生該最大分幀率對(duì)應(yīng)的通訊協(xié)議就是正確的通訊協(xié)議,能夠有效提高識(shí)別準(zhǔn)確性。
      【附圖說(shuō)明】
      [0012]構(gòu)成本申請(qǐng)的一部分的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
      [0013]圖1是根據(jù)本發(fā)明的總線通信協(xié)議識(shí)別方法的原理示意圖;
      【具體實(shí)施方式】
      [0014]下面將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明。
      [0015]結(jié)合圖1所示,以RS-485總線上識(shí)別通訊協(xié)議來(lái)具體說(shuō)明本發(fā)明的總線通信協(xié)議識(shí)別方法。
      [0016]具體地,以兼容識(shí)別Modbus/RTU和協(xié)議7E兩種協(xié)議,且總線上實(shí)際運(yùn)行的通訊協(xié)議是7E為例(其中Modbus/RTU和7E的最大幀長(zhǎng)度分別假設(shè)為150和200個(gè)字節(jié))。具體的識(shí)別步驟如下:
      [0017](I)首先緩存設(shè)置一個(gè)原始字節(jié)數(shù)組。該緩存用于保存從總線上監(jiān)測(cè)到的原始字節(jié)數(shù)據(jù),數(shù)據(jù)保存到緩存中時(shí)按監(jiān)測(cè)到的時(shí)間先后順序進(jìn)行,先監(jiān)測(cè)到的原始字節(jié)數(shù)據(jù)放到緩存的前部,后續(xù)監(jiān)測(cè)到的原始字節(jié)數(shù)據(jù)添加到緩存的后部。本實(shí)施例中,總線上實(shí)際運(yùn)行的是7E通訊協(xié)議,因此緩存中保存的是7E的原始字節(jié)數(shù)據(jù)。
      [0018](2)計(jì)算所有兼容協(xié)議的最大幀長(zhǎng)度,并乘以5,本實(shí)施例中,假設(shè)Modbus/RTU和7E的最大幀長(zhǎng)度分別為150和200個(gè)字節(jié),那所有兼容協(xié)議的最大幀長(zhǎng)度顯然為200,200乘以5結(jié)果為1000,及第一長(zhǎng)度為1000。
      [0019](3)把從總線上監(jiān)測(cè)接收到的原始字節(jié)數(shù)據(jù)添加到原始字節(jié)數(shù)組中,判斷字節(jié)長(zhǎng)度是否大于1000,如果是,進(jìn)入下一步;如果不是,重復(fù)本步驟,繼續(xù)把從總線上監(jiān)測(cè)接收到的后續(xù)數(shù)據(jù)添加到原始字節(jié)數(shù)組中,直到滿足原始字節(jié)數(shù)組中的原始字節(jié)數(shù)據(jù)長(zhǎng)度大于1000為止。
      [0020](4)按Modbus/RTU的幀格式定義的分幀方法對(duì)原始字節(jié)數(shù)組中的原始字節(jié)數(shù)據(jù)進(jìn)行分幀,并計(jì)算所有分出的幀中包括的字節(jié)個(gè)數(shù),再與緩存中原始字節(jié)個(gè)數(shù)相除,計(jì)算出Modbus/RTU通訊協(xié)議對(duì)緩存的原始字節(jié)數(shù)據(jù)的分幀率。分幀率具體的計(jì)算公式如下:
      [0021]分幀率=分出的所有幀包含的字節(jié)個(gè)數(shù)之和/緩存中的原始字節(jié)個(gè)數(shù);
      [0022]相應(yīng)地,按7E協(xié)議的幀格式定義的分幀方法對(duì)原始字節(jié)數(shù)組中的原始字節(jié)數(shù)據(jù)進(jìn)行分幀,并按上述分幀率計(jì)算公式計(jì)算出7E協(xié)議對(duì)緩存的原始字節(jié)數(shù)據(jù)的分幀率。然后,將兩種分幀方法得到的分幀率比較,找出最大分幀率。
      [0023]需要說(shuō)明的是,在本實(shí)施例中,由于RS-485總線上運(yùn)行的實(shí)際通訊協(xié)議是7E為例,那如果按Modbus/RTU的幀格式的定義來(lái)對(duì)緩存中的原始字節(jié)數(shù)據(jù)進(jìn)行分幀,一般情況下不會(huì)分出任何幀,但不排除偶然情況下出現(xiàn)7E數(shù)據(jù)恰好組合出Modbus/RTU幀的巧合情況,本識(shí)別方法就是為了排除這種偶然情況下巧合情況的出現(xiàn),因?yàn)槌霈F(xiàn)一幀巧合情況有一點(diǎn)可能,但出現(xiàn)7E數(shù)據(jù)組合成連續(xù)的多個(gè)Modbus/RTU幀的情況幾乎為0,尤其是每種幀都有校驗(yàn)的情況下。
      [0024](5)最大分幀率與分幀率標(biāo)準(zhǔn)60%進(jìn)行比較,如果大于或等于60%,那表示該最大分幀率對(duì)應(yīng)的通訊協(xié)議就是
      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1