国产精品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>

      一種集成工業(yè)以太網(wǎng)從站自主識(shí)別主站的方法

      文檔序號(hào):6312793閱讀:309來源:國(guó)知局
      一種集成工業(yè)以太網(wǎng)從站自主識(shí)別主站的方法
      【專利摘要】本發(fā)明公開了一種集成工業(yè)以太網(wǎng)從站自主識(shí)別主站的方法,應(yīng)用在嵌入有Linux操作系統(tǒng)的集成從站上。該方法基于工業(yè)以太網(wǎng)主從站之間通信前,主站會(huì)向從站發(fā)送識(shí)別信息這一前提,采用在Linux操作系統(tǒng)下原始套接字編程的方法,抓取通信網(wǎng)絡(luò)中主站發(fā)出的識(shí)別信息,并對(duì)抓取到的識(shí)別信息進(jìn)行區(qū)分判斷,從而確定主站的類型并加載相應(yīng)的從站程序。通過該方法,可以實(shí)現(xiàn)工業(yè)以太網(wǎng)集成從站自主識(shí)別與之相連接的主站類型,并完成自動(dòng)加載運(yùn)行與之對(duì)應(yīng)的從站程序。
      【專利說明】一種集成工業(yè)以太網(wǎng)從站自主識(shí)別主站的方法

      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明屬于工業(yè)控制領(lǐng)域,涉及工業(yè)控制現(xiàn)場(chǎng),運(yùn)行有嵌入式Linux操作系統(tǒng)的集成工業(yè)以太網(wǎng)從站,與不同種類工業(yè)以太網(wǎng)主站進(jìn)行通信時(shí),進(jìn)行自主識(shí)別與之連接的主站種類,進(jìn)行相應(yīng)從站程序的選擇運(yùn)行。

      【背景技術(shù)】
      [0002]以太網(wǎng)技術(shù)向工業(yè)現(xiàn)場(chǎng)的推廣,為生產(chǎn)效率的提高,產(chǎn)品的優(yōu)化等等多方面都起到了極大的促進(jìn)作用。目前世界上有多種工業(yè)以太網(wǎng)標(biāo)準(zhǔn),種類繁多,各有優(yōu)點(diǎn),在某一生產(chǎn)過程中,往往需要幾種工業(yè)以太網(wǎng)配合使用會(huì)產(chǎn)生更大的收益。所以,在工業(yè)控制現(xiàn)場(chǎng)比較流行使用集成工業(yè)以太網(wǎng)從站,但是,集成從站內(nèi)對(duì)于從站程序的選擇運(yùn)行,一直采用傳統(tǒng)的手動(dòng)加載運(yùn)行,即在上電前確定集成從站的性質(zhì),這給大規(guī)模的工業(yè)生產(chǎn)帶來了很多不便。目前,急需一種方法,能夠?qū)崿F(xiàn)集成從站自主識(shí)別與之連接的主站類型,并自動(dòng)運(yùn)行與之對(duì)應(yīng)的從站程序。


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

      [0003]本發(fā)明的目的是為了解決現(xiàn)有技術(shù)上存在的上述問題,提供一種集成工業(yè)以太網(wǎng)從站能夠識(shí)別主站類型并自主選擇加載運(yùn)行相應(yīng)從站程序的方法。
      [0004]本發(fā)明提供的集成工業(yè)以太網(wǎng)從站自主識(shí)別主站的方法,應(yīng)用在工業(yè)控制現(xiàn)場(chǎng),運(yùn)行有嵌入式Linux操作系統(tǒng)的集成工業(yè)以太網(wǎng)從站,以下簡(jiǎn)稱集成從站;所述的集成從站集成了 Modbus-TCP和P0WERLINK從站程序;此方法通過分析判斷來自通信網(wǎng)絡(luò)中的主站識(shí)別信息,來確定與集成從站相連接的主站類型,從而選擇加載運(yùn)行對(duì)應(yīng)的集成從站程序,實(shí)現(xiàn)了集成從站對(duì)主站類型的自主識(shí)別和集成從站程序的自動(dòng)加載,擺脫了傳統(tǒng)的手動(dòng)加載的方法;
      該方法具體的實(shí)現(xiàn)步驟如下:
      第I步、抓取工業(yè)以太網(wǎng)通信網(wǎng)絡(luò)中主站發(fā)送的識(shí)別數(shù)據(jù)包;
      第1.1步、啟動(dòng)集成從站中的Linux操作系統(tǒng);
      第1.2步、設(shè)置集成從站以太網(wǎng)芯片的工作模式為混雜模式,這樣集成從站就不會(huì)只接受目的地址為它的數(shù)據(jù)包,而是全部經(jīng)過它的數(shù)據(jù)包,方便下面獲得主站發(fā)送來的識(shí)別信息數(shù)據(jù)包。
      [0005]第1.3步、通過socket套接字函數(shù)創(chuàng)建一個(gè)原始套接字的文件描述符;
      第1.4步、利用recv O函數(shù)來接受來自通信網(wǎng)絡(luò)中的數(shù)據(jù)包,并將接收到的數(shù)據(jù)包賦值到一個(gè)字符型指針變量中,方便后續(xù)對(duì)其進(jìn)行分析。
      [0006]第2步、分析抓取到的通信網(wǎng)絡(luò)中的數(shù)據(jù)包;
      第2.1步、將第I步中抓取到的數(shù)據(jù)包劃分格式,因?yàn)樗ト〉臄?shù)據(jù)包賦值給某一變量時(shí)是沒有劃分格式的,數(shù)據(jù)包從左向右依次為以太網(wǎng)報(bào)文頭、IP報(bào)文頭、TCP報(bào)文頭或者UDP報(bào)文頭,在區(qū)分Modbus-TCP和P0WERLINK工業(yè)以太網(wǎng)只需要知道以太網(wǎng)報(bào)文頭即可。將抓取到的數(shù)據(jù)包強(qiáng)制轉(zhuǎn)化為struct ether_header結(jié)構(gòu)體,那么數(shù)據(jù)包的以太網(wǎng)報(bào)文頭便被保留下來。
      [0007]第2.2步、判斷struct ether_header結(jié)構(gòu)體中的ether_type成員變量,如果變量的值為0x0806則可確定數(shù)據(jù)包來自Modbus-TCP主站,與集成從站相連的是Modbus-TCP主站,結(jié)束第2步,進(jìn)入第3步;如果ether_type的值,不為0x0806,繼續(xù)分析數(shù)據(jù)包。
      [0008]第2.3步、繼續(xù)判斷struct ether_header結(jié)構(gòu)體中的ether_type成員變量,如果變量的值為0x88ab則可確定數(shù)據(jù)包來自P0WERLINK主站,與集成從站相連的是P0WERLINK主站,結(jié)束第2步,進(jìn)入第3步;如果ether_type的值,不為0x88ab,繼續(xù)分析數(shù)據(jù)包。
      [0009]第2.4步、拋棄所抓取的數(shù)據(jù)包,返回第I步,重新抓取通信網(wǎng)絡(luò)中其他數(shù)據(jù)包。
      [0010]第3步、根據(jù)第2步的分析結(jié)果,加載相應(yīng)的從站程序;
      此步驟根據(jù)第2步中對(duì)ether_type成員變量的分析判斷結(jié)果不同,選擇加載運(yùn)行不同的工業(yè)以太網(wǎng)從站程序,或者不加載運(yùn)行:
      第3.1步、對(duì)于Modbus-TCP主站,Modbus-TCP作為L(zhǎng)inux下的可執(zhí)行程序,在可執(zhí)行文件中通過system ()函數(shù)來完成Modbus-TCP從站程序的運(yùn)行;
      第3.2步、對(duì)于P0WERLINK主站,POffERLINK從站程序代碼被交叉編譯后生成一個(gè)Linux內(nèi)核模塊,需要通過insmod命令加載到Linux內(nèi)核中才能運(yùn)行;這里,通過編寫一個(gè)shell腳本文件,在可執(zhí)行程序中通過執(zhí)行system()來執(zhí)行腳本文件,從而完成P0WERLINK從站程序的加載運(yùn)行。
      [0011]本發(fā)明的優(yōu)點(diǎn)和有益效果
      通過本發(fā)明采用的技術(shù)方案可以看出,本方法能夠?qū)崿F(xiàn)集成工業(yè)以太網(wǎng)從站對(duì)與之相連接主站進(jìn)行判斷識(shí)別,并加載相應(yīng)的從站程序,與主站建立連接,完成后續(xù)通信的任務(wù)。擺脫了傳統(tǒng)的手動(dòng)選擇方式所帶來的工作量大,不確定因素多等問題?,F(xiàn)在的方法既方便又安全可靠,有更高的實(shí)用價(jià)值。

      【專利附圖】

      【附圖說明】
      [0012]圖1是數(shù)據(jù)包抓取流程圖;
      圖2是以太網(wǎng)控制芯片設(shè)置分析圖;
      圖3是Modbus-TCP和P0WERLINK主站報(bào)文分析圖;
      圖4是Modbus-TCP和P0WERLINK報(bào)文以太網(wǎng)頭分析圖;
      圖5是數(shù)據(jù)包分析流程圖。

      【具體實(shí)施方式】
      [0013]本發(fā)明提供的集成工業(yè)以太網(wǎng)從站自主識(shí)別主站的方法,具體步驟如下:
      第I步、抓取工業(yè)以太網(wǎng)通信網(wǎng)絡(luò)中主站發(fā)送的識(shí)別數(shù)據(jù)包;
      圖1是集成從站嵌入式Linux操作系統(tǒng)下,如何運(yùn)行程序來抓取通信網(wǎng)絡(luò)上的數(shù)據(jù)包。
      [0014]首先啟動(dòng)Linux操作系統(tǒng),提供軟件程序的工作環(huán)境,加載af_packet.ko原始套接字功能模塊,一般的嵌入式Linux操作系統(tǒng)中往往不具有這一模塊,需要自行加載到內(nèi)核中。接著,將與集成從站相連的以太網(wǎng)芯片的工作模式設(shè)置成混雜模式,因?yàn)橐蕴W(wǎng)芯片的缺省工作模式為直接模式或廣播模式,缺省工作模式下,以太網(wǎng)控制芯片會(huì)判斷每個(gè)物理數(shù)據(jù)幀目的地是否為本站地址,如果不是就將它丟棄。然而,集成從站需要在從站程序運(yùn)行前,完成對(duì)通信網(wǎng)絡(luò)中主站發(fā)出的帶有識(shí)別信息的數(shù)據(jù)包進(jìn)行抓取和分析。因此,需要將適配器網(wǎng)卡設(shè)置成為混雜模式,這樣就可以達(dá)到對(duì)于網(wǎng)絡(luò)信息監(jiān)視捕獲的目的。通過命令“ifconfig ethO promise”完成以太網(wǎng)卡模式的修改,圖2上下兩部分顯示出了以太網(wǎng)控制芯片設(shè)置前后的狀態(tài)。
      [0015]第2步、分析抓取到的通信網(wǎng)絡(luò)中的數(shù)據(jù)包;
      這里涉及到的圖3和圖4都是通過wireshark抓包工具,抓取到的來自通信網(wǎng)絡(luò)中數(shù)據(jù)包。
      [0016]圖3中方框標(biāo)注的內(nèi)容分別為Modbus-TCP和P0WERLINK工業(yè)以太網(wǎng)主站發(fā)出的識(shí)別信息數(shù)據(jù)包,觀察比較可知,二者在協(xié)議類型(protocol選項(xiàng))上存在差異,Modbus-TCP是ARP,POffERLINK是印1,以此作為區(qū)標(biāo)志。
      [0017]圖4是這兩種協(xié)議以太網(wǎng)報(bào)文頭的分析圖。本發(fā)明方法對(duì)抓取到的數(shù)據(jù)包進(jìn)行分析,所涉及到的內(nèi)容是在數(shù)據(jù)鏈路層,主要判定以太網(wǎng)報(bào)文頭,對(duì)上層網(wǎng)絡(luò)包括網(wǎng)絡(luò)層和傳輸層,不作分析判定。Modbus-TCP和P0WERLINK為兩種工業(yè)以太網(wǎng)通信協(xié)議,使用的均為Ethernet II幀格式,這里之所以要突出是使用的Ethernet II型數(shù)據(jù)幀,是因?yàn)樗?2字節(jié)之后為類型選項(xiàng),而Modbus-TCP和P0WERLINK這兩種協(xié)議在這里有所區(qū)分。Modbus-TCP協(xié)議是基于TCP/IP的工業(yè)以太網(wǎng),它的以太網(wǎng)報(bào)文頭中此項(xiàng)內(nèi)容為0x0806 ;P0WERLINK協(xié)議不是基于TCP/IP的以太網(wǎng),它有自己的數(shù)據(jù)鏈路層協(xié)議標(biāo)準(zhǔn),因此它的以太網(wǎng)報(bào)文頭的類型內(nèi)容為0x88ab。因此,就可以通過判斷抓取到的數(shù)據(jù)包的以太網(wǎng)數(shù)據(jù)報(bào)文類型,來確定與集成從節(jié)點(diǎn)相連接的通信主站類型。
      [0018]圖5是分析判斷所抓取到數(shù)據(jù)包的流程圖。首先,根據(jù)數(shù)據(jù)包的構(gòu)成形式,將抓取到的數(shù)據(jù)包劃分格式,因?yàn)樗ト〉臄?shù)據(jù)包給某一變量是沒有劃分格式的,數(shù)據(jù)包從左向右依次為以太網(wǎng)報(bào)文頭、IP報(bào)文頭、TCP報(bào)文頭或者UDP報(bào)文頭,根據(jù)上面的分析,可知區(qū)分Modbus-TCP和P0WERLINK工業(yè)以太網(wǎng)只需要知道以太網(wǎng)報(bào)文頭即可。將數(shù)據(jù)包賦值到某一字符指針變量中,并將此變量強(qiáng)制轉(zhuǎn)化為struct ether_header結(jié)構(gòu)體,那么數(shù)據(jù)包的以太網(wǎng)報(bào)文頭便被保留下來。struct ether_header結(jié)構(gòu)體是以太網(wǎng)報(bào)文頭的函數(shù)體形式,具體構(gòu)成如下:
      氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺
      struct ether—header
      {
      u_int8_t ether_dhost[ΕΤΗ—ALEN];
      u_int8_t ether_shost[ETH—ALEN];
      u_intl6_t ether—type;
      };
      接著,通過判斷語句,判斷以太網(wǎng)報(bào)文頭中的ether_type這一項(xiàng),根據(jù)圖3的報(bào)文分析可知,如果以太網(wǎng)頭的類型為0x0806,就是Modbus-TCP主站的識(shí)別信息,那么就加載Modbus-TCP從站程序;如果以太網(wǎng)頭的類型為0x88ab,就是P0WERLINK主站的識(shí)別信息,那么就加載P0WERLINK從站程序;如果不是這兩種的一個(gè),那么就是垃圾包,將其丟棄,并通過while函數(shù)返回到第I步,重新抓取分析數(shù)據(jù)包。
      [0019]第3步、根據(jù)第2步的分析結(jié)果,加載相應(yīng)的從站程序
      此步驟根據(jù)第2步中對(duì)ether_type成員變量的分析判斷結(jié)果不同,選擇加載運(yùn)行不同的工業(yè)以太網(wǎng)從站程序,或者不加載運(yùn)行。由于Modbus-TCP和P0WERLINK的從站程序的特點(diǎn)不同,它們運(yùn)行的方式也是不同的。Modbus-TCP作為L(zhǎng)inux下的可執(zhí)行程序,在可執(zhí)行文件中通過system ()函數(shù)來完成Modbus-TCP從站程序的運(yùn)行;而POWERLINK從站程序代碼被交叉編譯后生成一個(gè)Linux內(nèi)核模塊,需要通過insmod命令加載到Linux內(nèi)核中才能運(yùn)行,但是,從可執(zhí)行文件中是無法執(zhí)行insmod命令來加載內(nèi)核模塊,這里,通過編寫一個(gè)shell腳本文件,在可執(zhí)行程序中通過執(zhí)行system O來執(zhí)行腳本文件,從而間接地完成POffERLINK從站程序的加載運(yùn)行。
      【權(quán)利要求】
      1.一種集成工業(yè)以太網(wǎng)從站自主識(shí)別主站的方法,該方法應(yīng)用在工業(yè)控制現(xiàn)場(chǎng),運(yùn)行有嵌入式Linux操作系統(tǒng)的集成工業(yè)以太網(wǎng)從站,以下簡(jiǎn)稱集成從站;所述的集成從站集成了 Modbus-TCP和POWERLINK從站程序;此方法通過分析判斷來自通信網(wǎng)絡(luò)中的主站識(shí)別信息,來確定與集成從站相連接的主站類型,從而選擇加載運(yùn)行對(duì)應(yīng)的集成從站程序,實(shí)現(xiàn)了集成從站對(duì)主站類型的自主識(shí)別和集成從站程序的自動(dòng)加載,擺脫了傳統(tǒng)的手動(dòng)加載的方法;此方法的具體實(shí)現(xiàn)步驟如下: 第I步、抓取工業(yè)以太網(wǎng)通信網(wǎng)絡(luò)中主站發(fā)送的識(shí)別數(shù)據(jù)包; 第1.1步、啟動(dòng)集成從站中的Linux操作系統(tǒng); 第1.2步、設(shè)置集成從站以太網(wǎng)芯片的工作模式為混雜模式,這樣集成從站就不會(huì)只接受目的地址為它的數(shù)據(jù)包,而是全部經(jīng)過它的數(shù)據(jù)包,方便獲得主站發(fā)送來的識(shí)別信息數(shù)據(jù)包; 第1.3步、通過socket套接字函數(shù)創(chuàng)建一個(gè)原始套接字的文件描述符; 第1.4步、利用recv O函數(shù)來接受來自通信網(wǎng)絡(luò)中的數(shù)據(jù)包,并將接收到的數(shù)據(jù)包賦值到一個(gè)字符型指針變量中,方便后續(xù)對(duì)其進(jìn)行分析; 第2步、分析抓取到的通信網(wǎng)絡(luò)中的數(shù)據(jù)包; 第2.1步、將第I步中抓取到的數(shù)據(jù)包劃分格式,因?yàn)樗ト〉臄?shù)據(jù)包賦值給某一變量時(shí),是沒有劃分格式的,數(shù)據(jù)包從左向右依次為以太網(wǎng)報(bào)文頭、IP報(bào)文頭、TCP報(bào)文頭或者UDP報(bào)文頭,在區(qū)分Modbus-TCP和POWERLINK工業(yè)以太網(wǎng)只需要知道以太網(wǎng)報(bào)文頭即可;將數(shù)據(jù)包所復(fù)制的變量強(qiáng)制轉(zhuǎn)化為struct ether_header結(jié)構(gòu)體,那么數(shù)據(jù)包的以太網(wǎng)報(bào)文頭便被保留下來; 第2.2步、判斷struct ether_header結(jié)構(gòu)體中的ether_type成員變量,如果變量的值為0x0806則可確定數(shù)據(jù)包來自Modbus-TCP主站,與集成從站相連的是Modbus-TCP主站,結(jié)束第2步,進(jìn)入第3步;如果ether_type的值,不為0x0806,繼續(xù)分析數(shù)據(jù)包; 第2.3步、繼續(xù)判斷struct ether_header結(jié)構(gòu)體中的ether_type成員變量,如果變量的值為0x88ab則能夠確定數(shù)據(jù)包來自POWERLINK主站,與集成從站相連的是POWERLINK主站,結(jié)束第2步,進(jìn)入第3步;如果ether_type的值,不為0x88ab,繼續(xù)分析數(shù)據(jù)包; 第2.4步、拋棄所抓取的數(shù)據(jù)包,返回第I步,重新抓取通信網(wǎng)絡(luò)中其他數(shù)據(jù)包; 第3步、根據(jù)第2步的分析結(jié)果,加載相應(yīng)的從站程序; 此步驟根據(jù)第2步中對(duì)ether_type成員變量的分析判斷結(jié)果不同,選擇加載運(yùn)行不同的工業(yè)以太網(wǎng)從站程序,或者不加載運(yùn)行: 第3.1步、對(duì)于Modbus-TCP主站,Modbus-TCP作為L(zhǎng)inux下的可執(zhí)行程序,在可執(zhí)行文件中通過system ()函數(shù)來完成Modbus-TCP從站程序的運(yùn)行; 第3.2步、對(duì)于POWERLINK主站,POWERLINK從站程序代碼被交叉編譯后生成一個(gè)Linux內(nèi)核模塊,需要通過insmod命令加載到Linux內(nèi)核中才能運(yùn)行;這里,通過編寫一個(gè)shell腳本文件,在可執(zhí)行程序中通過執(zhí)行system()來執(zhí)行腳本文件,從而完成POWERLINK從站程序的加載運(yùn)行。
      【文檔編號(hào)】G05B19/418GK104503390SQ201410703498
      【公開日】2015年4月8日 申請(qǐng)日期:2014年11月30日 優(yōu)先權(quán)日:2014年11月30日
      【發(fā)明者】陳在平, 孫遜, 賈超, 倪建云 申請(qǐng)人:天津理工大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1