亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Libnodave庫(kù)的TCP協(xié)議剖析

        2018-03-20 09:10:25夏正龍

        夏正龍,耿 浩

        (1.江蘇師范大學(xué) 電氣工程及其自動(dòng)化學(xué)院,江蘇 徐州 221116;2.徐州上若科技有限公司 自動(dòng)化事業(yè)部,江蘇 徐州 221116)

        1 概 述

        現(xiàn)代工控領(lǐng)域多采用數(shù)字化智能裝置代替?zhèn)鹘y(tǒng)的模擬儀表作為前端控制器,而數(shù)字智能裝置一般都具備獨(dú)自監(jiān)測(cè)監(jiān)控功能,能實(shí)時(shí)向上位集控后臺(tái)實(shí)時(shí)上傳工作狀態(tài)。當(dāng)前工控領(lǐng)域的集控方式由集中控制向分散控制,由分散管理向集中管理轉(zhuǎn)變。西門(mén)子公司的PLC(programmable logic controller)設(shè)備在工控領(lǐng)域應(yīng)用廣泛,其產(chǎn)品系列的豐富與可靠已經(jīng)得到了廣大用戶(hù)的信賴(lài)。目前工控領(lǐng)域控制的實(shí)時(shí)性要求越來(lái)越高,自然需要一個(gè)高速的通訊網(wǎng)絡(luò)。

        隨著以太網(wǎng)通訊在工業(yè)控制領(lǐng)域的普及,其通訊速率高、可靠性高,在實(shí)際應(yīng)用中越來(lái)越廣泛。西門(mén)子系列PLC以太網(wǎng)通訊模塊有cp243,cp343,cp443。200SMART和1200自帶以太網(wǎng)口。西門(mén)子以太網(wǎng)協(xié)議眾多,有ISO,ISO-on-TCP,TCP,UDP等。ISO協(xié)議是西門(mén)子早期的以太網(wǎng)通訊協(xié)議,通訊使用的是MAC地址。TCP、UDP協(xié)議,屬于用戶(hù)自定義協(xié)議,PLC端和上位機(jī)都需要用戶(hù)寫(xiě)程序。ISO-on-TCP協(xié)議是在TCP/IP協(xié)議層,按照ISO協(xié)議重新定義,通訊使用的是IP地址。因?yàn)镻LC本身就支持ISO-on-TCP協(xié)議,所以PLC不用添加任何程序,只需要上位機(jī)按照規(guī)定的協(xié)議格式寫(xiě)程序就可以和PLC進(jìn)行數(shù)據(jù)交換。

        西門(mén)子公司開(kāi)源驅(qū)動(dòng)庫(kù)Libnodave是一個(gè)開(kāi)源驅(qū)動(dòng)庫(kù),但該庫(kù)的使用需要硬件匹配,它支持的通訊方式主要由daveProtoMPI(針對(duì)西門(mén)子300/400系列PLC的MPI協(xié)議)、daveProtoMPI2(針對(duì)不帶STX的Andrew版本西門(mén)子300/400系列PLC的MPI協(xié)議)、daveProtoMPI3(針對(duì)step7版本300/400系列PLC的MPI協(xié)議)、daveProtoMPI4(針對(duì)帶STX的Andrew版本西門(mén)子300/400系列PLC的MPI協(xié)議)、daveProtoPPI(針對(duì)西門(mén)子200系列PLC的PPI協(xié)議)、daveProtoAS511(針對(duì)S5編程口協(xié)議)、daveProtoS7online(針對(duì)s70nlinx.dll動(dòng)態(tài)鏈接庫(kù)通信)、daveProtoISOTCP(針對(duì)帶路由功能的ISO on TCP協(xié)議)、daveProtoISOTCP243(針對(duì)西門(mén)子200系列PLC設(shè)備中以太網(wǎng)模塊CP243的ISO on TCP協(xié)議)、daveProtoISOTCPR(針對(duì)具有路由功能的ISO on TCP協(xié)議)、daveProtoMPI_IBH(針對(duì)通過(guò)網(wǎng)關(guān)聯(lián)結(jié)的MPI協(xié)議)、daveProtoPPI_IBH(針對(duì)通過(guò)網(wǎng)關(guān)聯(lián)結(jié)的PPI協(xié)議)、daveProtoNLpro、daveProtoUserTransport組成。上述協(xié)議主要是PPI協(xié)議和ISO on TCP協(xié)議。

        上位機(jī)軟件連接西門(mén)子PLC可以通過(guò)四種方法。一是opc server連接PLC,opc server可以選用Simatic Net、Kepserver等[1]。二是組態(tài)軟件連接PLC。例如組態(tài)王驅(qū)動(dòng)庫(kù),Intouch的DAServer等。三是用自由口實(shí)現(xiàn)通訊[2]。四是編程方式連接PLC,如開(kāi)源的Libnodave和西門(mén)子的prodave庫(kù)[3-4],而PRODAVE是用于上位機(jī)與S7系列PLC之間數(shù)據(jù)連接通信的商業(yè)軟件包,它提供了一個(gè)接口函數(shù)庫(kù),DLL和LIB庫(kù),以此完成PLC與上位機(jī)之間的數(shù)據(jù)通信。使用PRODAVE進(jìn)行控制系統(tǒng)開(kāi)發(fā),需要調(diào)用開(kāi)發(fā)包提供的動(dòng)態(tài)鏈接庫(kù)中的函數(shù)即可實(shí)現(xiàn)通信,而最新發(fā)布的6.2版新增加了對(duì)Window 7操作系統(tǒng)的支持。

        以上四種方法,除了Libnodave是開(kāi)源免費(fèi)的,其他都需要授權(quán)。Libnodave是跨平臺(tái)的庫(kù),其支持MPI協(xié)議和以太網(wǎng)協(xié)議。以太網(wǎng)具有傳輸速率高、傳輸距離遠(yuǎn)、可靠性以及開(kāi)放性較好等優(yōu)點(diǎn)[5-12]。西門(mén)子公司S7系列PLC的通信可以通過(guò)開(kāi)源驅(qū)動(dòng)庫(kù)Libnodave實(shí)現(xiàn)[13-14]。

        文中參考Libnodave庫(kù),去掉MPI等協(xié)議,只保留需要的以太網(wǎng)協(xié)議,直接給出發(fā)包和收包的數(shù)據(jù)格式,代碼結(jié)構(gòu)清晰明了。Libnodave庫(kù)只提供了cp243,cp343的連接方式,文中在其基礎(chǔ)上增加了S7-200smart、西門(mén)子1200系列PLC的連接方式。

        2 研究環(huán)境

        設(shè)計(jì)的Libnodave庫(kù)的TCP協(xié)議解析工作,都是在微軟Windows 7環(huán)境下完成。后臺(tái)PC機(jī)的IP地址為192.168.1.18,子網(wǎng)掩碼為255.255.255.0。

        操作系統(tǒng):Windows 7;

        編程軟件:Visual Studio 2012;

        西門(mén)子S7-200smart編程軟件:S7-200 PC Access;

        西門(mén)子S7-300編程軟件:Step7 v5.5;

        西門(mén)子S7系列PLC:S7-300PLC+cp343,200SMART。

        測(cè)試的PLC的IP地址是192.168.0.25,子網(wǎng)掩碼為255.255.255.0。

        由于西門(mén)子以太網(wǎng)中的ISO on TCP協(xié)議所采用的數(shù)據(jù)傳輸端口為102,所以port設(shè)置為102。

        3 Libnodave程序流程

        在軟件編寫(xiě)方面,鑒于通過(guò)工控組態(tài)軟件或者OPC服務(wù)器/客戶(hù)端的PLC遠(yuǎn)程連接上位機(jī)監(jiān)測(cè)監(jiān)控具有實(shí)時(shí)性較低、實(shí)施成本高等缺點(diǎn),根據(jù)西門(mén)子S7-300與S7-200SMART的實(shí)際對(duì)象,采用西門(mén)子Libnodave開(kāi)源免費(fèi)函數(shù)庫(kù)結(jié)合高級(jí)語(yǔ)言可以開(kāi)發(fā)基于以太網(wǎng)通訊的監(jiān)控軟件,一定程度上優(yōu)化遠(yuǎn)程監(jiān)控計(jì)算機(jī)與PLC之間的通信。該方法對(duì)數(shù)據(jù)的采集與存儲(chǔ)、故障分析與處理非常便利,具有實(shí)施難度低、數(shù)據(jù)交換方式靈活多變、實(shí)時(shí)性高等優(yōu)點(diǎn),具有極高的程序獨(dú)立性,獨(dú)立于西門(mén)子其他任何軟件。

        圖1給出了Libnodave測(cè)試程序流程。

        圖1 Libnodave庫(kù)測(cè)試程序流程

        該程序用socket同步通訊,Libnodave庫(kù)協(xié)議握手需要調(diào)用7個(gè)函數(shù)。函數(shù)首先打開(kāi)通信接口句柄后保存到相應(yīng)變量中,該變量在電泳daveNewInterface時(shí)傳遞給新生成的daveNewInterface結(jié)構(gòu)體。調(diào)用daveNewConnection時(shí)需要把已經(jīng)生成的daveInterface結(jié)構(gòu)體指針傳送到新生成的daveConnection結(jié)構(gòu)中保存。在調(diào)用其他功能函數(shù)時(shí),硬件連接方面的信息通過(guò)daveConnection來(lái)傳遞,實(shí)現(xiàn)功能函數(shù)調(diào)用的協(xié)議不相關(guān)性。由上可見(jiàn),發(fā)送的數(shù)據(jù)包分布在多個(gè)結(jié)構(gòu)體中初始化,牽扯到多個(gè)函數(shù)的調(diào)用,代碼結(jié)構(gòu)紛繁復(fù)雜。

        4 改進(jìn)后的庫(kù)函數(shù)

        文中參考Libnodave庫(kù),改進(jìn)后的庫(kù)只有握手、讀包、寫(xiě)包三個(gè)函數(shù)。數(shù)據(jù)包以u(píng)nsigned char數(shù)組的形式給出,并標(biāo)識(shí)出每一位的含義,代碼清晰明了,方便移植。

        由于所有的數(shù)據(jù)都是從PLC的內(nèi)部存儲(chǔ)空間獲取,主要包括數(shù)據(jù)庫(kù)DB、位存儲(chǔ)區(qū)M、輸入映像區(qū)Inputs和輸出映像區(qū)Outputs。針對(duì)上述四個(gè)區(qū)域,開(kāi)發(fā)讀取功能,并通過(guò)位邏輯BOOL、字節(jié)BYTE、整形INT、雙字節(jié)WORD、長(zhǎng)整型DINT、雙字DWORD以及實(shí)數(shù)REAL7中形式讀取。

        下面是封裝的函數(shù)列表:

        BOOL ConnectPLC();

        BOOL ReadBytes(int area, int db, int start, int len, unsigned char* buffer);

        BOOL WriteBytes(int area, int db, int start, int len, unsigned char* buffer);

        area:讀取的數(shù)據(jù)區(qū),m區(qū)是0x83,DB區(qū)0x84。

        db:m區(qū),值為0;db區(qū),值為db區(qū)號(hào)。

        start:讀取的數(shù)據(jù)地址開(kāi)始位置。

        len:讀取幾個(gè)字節(jié)。

        buffer:讀取到的數(shù)值保存的緩沖區(qū)。

        如:讀取“DB1,W10”的數(shù)據(jù),(W表示一個(gè)字,所以是2個(gè)字節(jié)),函數(shù)應(yīng)該寫(xiě)為:ReadBytes(0x84,1,10,2,buffer)。

        4.1 握手?jǐn)?shù)據(jù)包

        每種以太網(wǎng)通訊模塊的握手?jǐn)?shù)據(jù)包都不相同。發(fā)送接收串都是unsigned char類(lèi)型的數(shù)據(jù)??蛻?hù)端向PLC發(fā)送握手?jǐn)?shù)據(jù)包,如果數(shù)據(jù)包是不匹配的,PLC是不會(huì)回?cái)?shù)據(jù)的。所以接收到數(shù)據(jù)包并且數(shù)據(jù)包的長(zhǎng)度是22,就說(shuō)明握手成功。握手通過(guò)后,就可以和PLC進(jìn)行數(shù)據(jù)交換了。表1給出cp243,cp343,1200,200smart的握手?jǐn)?shù)據(jù)包。所有發(fā)送的數(shù)據(jù)包前2個(gè)字節(jié)都是0x03、0x00,第3和第4字節(jié)表示數(shù)據(jù)包的長(zhǎng)度,計(jì)算公式為:串[2]*256+串[3]。

        表1 cp243,cp343,1200,200smart的握手?jǐn)?shù)據(jù)包

        4.2 讀數(shù)據(jù)包

        表2為讀數(shù)據(jù)包(“口”占一個(gè)字節(jié));表3為讀數(shù)據(jù)返回包。

        表2 讀數(shù)據(jù)包

        如果讀取PLC的數(shù)據(jù)包是不正確的,PLC是不會(huì)回?cái)?shù)據(jù)的。所以接收到數(shù)據(jù)包,說(shuō)明讀取成功。返回的數(shù)據(jù)包中包含了要讀取的數(shù)據(jù)。

        4.3 寫(xiě)數(shù)據(jù)包

        文中設(shè)計(jì)數(shù)據(jù)可以向數(shù)據(jù)庫(kù)DB、位存儲(chǔ)區(qū)M、輸入映像區(qū)Inputs和輸出映像區(qū)Outputs中寫(xiě)入的功能,并可通過(guò)BOOL、BYTE、INT、WORD、DINT、DWORD以及REAL七種形式寫(xiě)數(shù)據(jù)。以BYTE為基本單元,以一幀數(shù)據(jù)為寫(xiě)入數(shù)據(jù)包為例,如表4所示。

        表4 寫(xiě)數(shù)據(jù)包

        如果寫(xiě)入PLC的數(shù)據(jù)包是不正確的,PLC是不會(huì)回?cái)?shù)據(jù)的。所以接收到數(shù)據(jù)包并且數(shù)據(jù)包的長(zhǎng)度是22,就說(shuō)明寫(xiě)入成功。

        寫(xiě)數(shù)據(jù)包返回包0x03,0x00,0x00,0x16,0x02,0xf0,0x80,0x32,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x00,0x05,0x01,0xff

        5 測(cè)試程序

        測(cè)試程序主要有4個(gè)部分,分別為建立端口連接、設(shè)備聯(lián)絡(luò)握手、讀寫(xiě)數(shù)據(jù)以及句柄釋放,詳細(xì)流程如圖2所示。

        圖2 測(cè)試程序流程

        (1)建立連接。

        connect(sockClient,(SOCKADDR*)& addrSrv,sizeof(SOCKADDR));

        //tcp 連接與初始化連接與端口號(hào)

        (2)協(xié)議握手。

        ConnectPLC();

        //通過(guò)協(xié)議握手?jǐn)?shù)據(jù)的發(fā)送與接收情況啟動(dòng)相關(guān)校驗(yàn)程序,從而判斷是否握手成功

        (3)數(shù)據(jù)交換。

        unsigned char v2[2]={0};

        daveReadBytes(AREA_DB, 1, 10, 2, (void *)v2);

        unsigned char v4[2]={0};

        Put16(v4,2);

        WriteBytes(AREA_M,0,20,2,(void *)v4);

        //通過(guò)讀寫(xiě)數(shù)據(jù)部分,啟動(dòng)數(shù)據(jù)幀的發(fā)送與接收工作,主要完成上位機(jī)與PLC的數(shù)據(jù)交換與處理。

        (4)斷開(kāi)連接

        closesocket(sockClient);

        //關(guān)閉套接字

        測(cè)試程序截圖如圖3所示。

        圖3 測(cè)試程序截圖

        6 結(jié)束語(yǔ)

        通過(guò)研究西門(mén)子開(kāi)源設(shè)備Libnodave驅(qū)動(dòng)庫(kù),解析西門(mén)子系列PLC通信原理以及該開(kāi)源庫(kù)的編程結(jié)構(gòu),使得根據(jù)不同硬件或者平臺(tái)需求借用源代碼實(shí)現(xiàn)同西門(mén)子系列PLC通信成為可能。鑒于Libnodave驅(qū)動(dòng)庫(kù)的免費(fèi)、開(kāi)源、穩(wěn)定、靈活等特點(diǎn),取代PRODAVE來(lái)開(kāi)發(fā)基于西門(mén)子S7-300與S7-200SMART的監(jiān)控系統(tǒng)軟件,從而降低成本,提高西門(mén)子相關(guān)產(chǎn)品的局限性。Libnodave庫(kù)是C語(yǔ)言編寫(xiě)的開(kāi)源跨平臺(tái)的庫(kù),但是仍然不方便在跨語(yǔ)言方面的移植,比如在VB、C#等中調(diào)用它,需要把Libnodave封裝成二進(jìn)制文件,并提供接口函數(shù)。文中通過(guò)研究西門(mén)子開(kāi)源設(shè)備Libnodave庫(kù),直接給出send,recv的字節(jié)碼,非常方便跨語(yǔ)言、跨平臺(tái)的移植,對(duì)于嵌入式應(yīng)用環(huán)境中有限的運(yùn)算資源是一個(gè)有利的支撐,其研究成果可以為工控行業(yè)各生產(chǎn)企業(yè)現(xiàn)場(chǎng)設(shè)備的升級(jí)改造與建設(shè)提供一定的借鑒,具有一定的參考價(jià)值。

        [1] 任思成,王書(shū)鶴,亓克貴.新一代工業(yè)過(guò)程控制軟件接口標(biāo)準(zhǔn)-OPC技術(shù)[J].儀器儀表學(xué)報(bào),2002,23:265-267.

        [2] 沈世斌.基于PLC自由口通信的應(yīng)用[J].儀表技術(shù)與傳感器,2004(12):26-28.

        [3] 周廣穎,張金金,閆 ?。贚IBNODAVE的上位機(jī)與西門(mén)子PLC的通信[J].微計(jì)算機(jī)信息,2010,26(11-1):28-30.

        [4] 趙 軍,時(shí)良平,黃春陽(yáng).基于Prodave技術(shù)的西門(mén)子PLC監(jiān)控調(diào)試軟件開(kāi)發(fā)[J].自動(dòng)化應(yīng)用,2011(10):26-28.

        [5] 張曉麗,馬 俊,劉軼斐.煉鋼廠實(shí)時(shí)數(shù)據(jù)通信系統(tǒng)的研究與開(kāi)發(fā)[J].儀器儀表學(xué)報(bào),2005,26:553-556.

        [6] 魏立新,馮 曦,王洪慶,等.LIBNODAVE在PLC上位機(jī)監(jiān)控軟件中的運(yùn)用[J].儀表技術(shù)與傳感器,2014(7):82-84.

        [7] DILIP P S,JAGTAP S R.Remote monitoring & controlling of real time industrial parameters with GSM & Ethernet[J].International Journal of Electronics Communication & Instrumentation Engineering Research & Development,2013,3(2):1-10.

        [8] SCHNEIER B.Cryptanalysis of Microsoft’s point-to-point tunneling protocol (PPTP)[C]//Proceedings of the 5th ACM conference on computer and communications security.[s.l.]:ACM,1998:132-141.

        [9] HU M,ZHAO Q,KURAMOTO M,et al.Research and implementation of layer two tunneling protocol (L2TP) on carrier network[C]//4th IEEE international conference on broadband network and multimedia technology.[s.l.]:IEEE,2011:80-83.

        [10] 桂 芳,全書(shū)海.網(wǎng)絡(luò)控制系統(tǒng)傳輸時(shí)延分析與測(cè)試[J].計(jì)算機(jī)應(yīng)用,2005,25(10):2264-2266.

        [11] 張曉倩,宋曉茹,曹建建.基于CAN總線的網(wǎng)絡(luò)控制系統(tǒng)的仿真研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,26(7):192-195.

        [12] 黨安喜,裴少婧,尚耀東,等.以太網(wǎng)時(shí)延仿真與性能分析[J].計(jì)算機(jī)工程與應(yīng)用,2009,45(2):119-121.

        [13] IANNONE F,BERTOCCHI A,BONCAGNI L,et al.Open source solutions in control and data acquisition systems:FTU case studies[J].Fusion Engineering and Design,2010,85(3-4):321-324.

        [14] 孫書(shū)歡,孔祥成,吳雪婷.西門(mén)子PLC設(shè)備開(kāi)源驅(qū)動(dòng)庫(kù)Libnodave的研究與改進(jìn)[J].核電子學(xué)與探測(cè)技術(shù),2013,33(7):847-851.

        国产va在线观看免费| 中文国产乱码在线人妻一区二区| 亚洲乱码中文在线观看| 农村欧美丰满熟妇xxxx| 免费网站国产| 开心五月婷婷综合网站| 在线观看国产白浆一区三区| 无码国产色欲xxxx视频| 精品推荐国产精品店| 国产午夜亚洲精品不卡免下载| 一本久道久久丁香狠狠躁| 亚洲熟妇av一区| 久久丫精品国产亚洲av| 国产V亚洲V天堂A无码| 婷婷久久av综合一区二区三区| 国产综合久久久久久鬼色| 丰满多毛少妇做爰视频| 国产三级国产精品三级在专区| 在线观看国产视频午夜| 国产麻豆精品一区二区三区v视界| 亚洲av无码乱码国产麻豆穿越| 极品人妻少妇一区二区| 午夜精品免费视频一区二区三区| 国产精品无码无在线观看| 亚洲精品国产综合一线久久| 日本变态网址中国字幕| 一区二区三区人妻av| 久久无码av中文出轨人妻| 国产无套视频在线观看香蕉| 亚洲伊人伊成久久人综合| 日韩性爱视频| 久久精品国产亚洲一区二区| 日韩中文字幕久久久经典网| 蜜桃高清视频在线看免费1| 99精品国产丝袜在线拍国语| 亚洲色图+国产精品| 久久久精品国产亚洲av网| 四虎永久在线精品免费一区二区| 国外亚洲成av人片在线观看| 无码a级毛片免费视频内谢| 青青草中文字幕在线播放|