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

        ?

        PROFINET IO設(shè)備中DCP協(xié)議的研究與應(yīng)用

        2023-02-06 10:12:32朱瑞華
        計算機(jī)測量與控制 2023年1期
        關(guān)鍵詞:分配設(shè)備

        榮 鋒,朱瑞華

        (1.天津工業(yè)大學(xué) 電子與信息工程學(xué)院,天津 300387;2.天津市光電檢測技術(shù)與系統(tǒng)重點實驗室,天津 300387)

        0 引言

        PROFINET是工業(yè)控制領(lǐng)域廣泛應(yīng)用的一種工業(yè)以太網(wǎng),具備成熟的解決方案[1]。在HMS Networks對工業(yè)網(wǎng)絡(luò)市場研究報告中發(fā)現(xiàn)PROFINET的市場份額位居首位,尤其是在工廠自動化、過程自動化、安全應(yīng)用領(lǐng)域[2]。截止到2022年初,PROFINET約已連接1 600萬個節(jié)點,足以證明PROFINET的應(yīng)用是如此廣泛。而國內(nèi)在“中國制造2025”的國家戰(zhàn)略推動下,PROFINET也將有更大的發(fā)展,因此對PROFINET的研究也應(yīng)該更深層次和多方面。

        對于PROFINET的研究可大致分為性能分析、產(chǎn)品開發(fā)、診斷、安全等。張國棟等人對PROFINET RT和IRT的數(shù)據(jù)轉(zhuǎn)發(fā)方式進(jìn)行了分析,并利用公式推導(dǎo)出了IO設(shè)備的刷新時間[3]。KLEINES H等人通過數(shù)值模擬PROFINET IO網(wǎng)絡(luò)性能[4]。劉柯等人對RT通信幀的結(jié)構(gòu)、周期組成以及通信周期的相關(guān)參數(shù)計算進(jìn)行了研究[5]。對于PROFINET IO設(shè)備的開發(fā),從原理上普通以太網(wǎng)網(wǎng)卡不能完全實現(xiàn)PROFINET IO功能,目前市場上廣泛應(yīng)用的解決方案是依賴西門子公司的ERTEC芯片、瑞薩公司的TPS-1芯片、赫優(yōu)訊公司的Netx51/52芯片等專用網(wǎng)絡(luò)控制芯片來實現(xiàn)PROFINET IO通信。如閆菲等人用ERTEC200P芯片開發(fā)了PROFINET IO工業(yè)以太網(wǎng)接口[6]。徐建明等人基于TPS-1芯片設(shè)計了一種PROFINET耦合器設(shè)備[7]。劉振杰以NETX51芯片設(shè)計了一款PROFINET從站接口模塊[8]。但這些方案開發(fā)成本較高,對于一些非運動控制領(lǐng)域有一定的冗余性。因此本文利用普通網(wǎng)卡通過軟件設(shè)計實現(xiàn)PROFINET IO通信的NRT、RT功能。為證明廣泛性,在樹莓派3B+硬件平臺上移植協(xié)議棧,實現(xiàn)樹莓派接入PROFINET網(wǎng)絡(luò)。PROFINET IO協(xié)議棧依照設(shè)備類型Class B進(jìn)行設(shè)計,支持非同步實時數(shù)據(jù)交換,可以實現(xiàn)LLDP、DCP、SNMP協(xié)議。本設(shè)計可以實現(xiàn)對實時性要求不苛刻的非運動控制領(lǐng)域的工業(yè)控制。

        PROFINET通信系統(tǒng)中,DCP在系統(tǒng)啟動時分配設(shè)備名稱和IP地址,是PROFINET網(wǎng)絡(luò)中數(shù)據(jù)交互的基礎(chǔ),對于PROFINET的研究和實現(xiàn)通信功能離不開DCP。因此本文在實現(xiàn)PROFINET IO通信功能的基礎(chǔ)上對協(xié)議棧中的DCP子協(xié)議進(jìn)行深入研究,從DCP協(xié)議的原理出發(fā),對DCP在PROFINET系統(tǒng)中的作用及軟件實現(xiàn)進(jìn)行研究和分析。利用西門子PLC S7-1200控制器搭建通信測試平臺,驗證DCP協(xié)議在PROFINET中的作用及樹莓派RT和NRT通信的實現(xiàn),并將Wireshark軟件抓取到的數(shù)據(jù)幀解析,得出IO設(shè)備的更新時間抖動。本文的研究將會幫助自動化工程師加深對PROFINET協(xié)議棧的理解,從而更好的去應(yīng)用PROFINET。

        1 PROFINET IO

        PROFINET根據(jù)不同的應(yīng)用類型提供了兩種解決方案,PROFINET CBA和PROFINET IO[9]。其中PROFINET CBA主要用于實現(xiàn)控制器之間的通信,而PROFINET IO主要用于實現(xiàn)控制器與IO設(shè)備之間的通信。

        PROFINET IO定義了3個設(shè)備角色:IO控制器、IO監(jiān)控器和IO設(shè)備。

        1)IO設(shè)備是構(gòu)成自動化過程接口的外圍現(xiàn)場設(shè)備,分為塊IO設(shè)備和模塊化IO設(shè)備兩種類型。塊IO設(shè)備具有固定模塊配置,而模塊化IO設(shè)備可靈活添加和刪除模塊。

        2)IO控制器用于控制自動化過程,負(fù)責(zé)其相關(guān)的現(xiàn)場設(shè)備的 IP 地址分配、配置、參數(shù)設(shè)置、警報處理。

        3)IO監(jiān)視器用于完成對設(shè)備的遠(yuǎn)程控制、檢查、維護(hù)或參數(shù)化 IO設(shè)備的客戶端功能,通過在監(jiān)視器禁用IO控制器來臨時強制過程輸出值,通常是HMI、工程工具充當(dāng)監(jiān)視器。

        PROFINET IO設(shè)備在應(yīng)用層定義了插槽/子插槽的設(shè)備模型,其中插槽表示設(shè)備的物理或邏輯模塊,又被分為多個子插槽,子插槽相當(dāng)于過程數(shù)據(jù)的接口,每個插槽的IO數(shù)據(jù)、報警、診斷數(shù)據(jù)都被分配到這些子插槽中[10]。IO設(shè)備不同模塊和子模塊在通用站點描述文件(GSD,general station description)中描述。塊IO設(shè)備具有通用站點描述文件中描述的固定模塊配置,而模塊化IO設(shè)備允許根據(jù)需要添加和刪除模塊,GSD文件中包含所有可能的模塊,但I(xiàn)O設(shè)備的實際模塊需要在工程工具中定義,下載到控制器后,由控制器告訴IO設(shè)備需要的配置。

        PROFINET IO針對數(shù)據(jù)對實時性不同的要求,劃分為標(biāo)準(zhǔn)通道,實時通道和等實時通道[11]。標(biāo)準(zhǔn)通道是基于UDP/IP,用于上下文管理,處理IO設(shè)備的配置和診斷。實時通道(RT)用于傳輸循環(huán)過程數(shù)據(jù)、事件和警報,它在標(biāo)準(zhǔn)通道的基礎(chǔ)上,將實時數(shù)據(jù)幀嵌入到以太網(wǎng)幀中,不使用任何高層協(xié)議。也就是直接在數(shù)據(jù)鏈路層進(jìn)行封裝,在以太網(wǎng)報文頭后加上PROFINET報文頭,因此能繞過UDP/IP堆棧,直接由PROFINET的協(xié)議棧處理,以此來減少數(shù)據(jù)的開銷量,高效利用帶寬,提高PROFINET的實時性能。等實時通道用于對時間要求嚴(yán)格的通信,如運動控制,它通過特殊的IRT硬件使IRT數(shù)據(jù)在預(yù)先配置和計劃的時隙中發(fā)送,從而達(dá)到更高實時性。

        2 DCP發(fā)現(xiàn)和基本配置協(xié)議

        DCP為“發(fā)現(xiàn)和基本配置協(xié)議”是一種數(shù)據(jù)鏈路層協(xié)議,它為PROFINET提供多種服務(wù),例如用于PROFINET網(wǎng)絡(luò)中的發(fā)現(xiàn)識別設(shè)備,配置設(shè)備名稱、配置IP地址等[12]。

        2.1 DCP的主要功能

        為實現(xiàn)這些服務(wù)DCP提供了“Identify All”、“Identify”、“Set”、“Set-Flash”、“Set-Reset to Factory”、“Get”和“Hello”作為主要功能。PROFINET工程工具、控制器和設(shè)備中都集成了DCP服務(wù),但他們所側(cè)重的功能不同,如在IO設(shè)備上要能對控制器所發(fā)布的命令做出響應(yīng),要能主動利用Hello功能向控制器發(fā)送消息,而IO控制器要能利用Identify功能來查找具體設(shè)備。主要功能具體描述如下。

        Identify All:識別全部設(shè)備。以廣播的方式向整個網(wǎng)絡(luò)發(fā)送消息,所有設(shè)備收到消息都要做出響應(yīng)。工程工具中利用此功能可以獲得所有設(shè)備信息列表來確定網(wǎng)絡(luò)中是否存如下問題:1)設(shè)備有無連接;2)設(shè)備名稱是否設(shè)置;3)設(shè)備中有無重復(fù)的IP地址或重復(fù)的設(shè)備名稱;4)設(shè)備名稱和IP地址設(shè)置是否合規(guī);5)設(shè)備類型或供應(yīng)商是否正確,利用Identify All功能工程工具可以輕松實現(xiàn)網(wǎng)絡(luò)管理。

        Identify:查找具體設(shè)備和檢查設(shè)備參數(shù)設(shè)置。系統(tǒng)啟動前,IO控制器會用它來識別設(shè)備,通過設(shè)備名稱來進(jìn)行查找,具有該設(shè)備名稱的設(shè)備進(jìn)行響應(yīng),但如果查找的設(shè)備名稱長度為零則所有未分配名稱的設(shè)備都要做出響應(yīng)。

        Get:獲取設(shè)備信息。比如獲取設(shè)備名稱、IP地址和制造商信息等。

        Set:向設(shè)備寫入?yún)?shù)。將設(shè)備名稱和IP地址寫入尋址到的設(shè)備中,可以在一個幀中依次請求多個條件,用來找到相匹配的設(shè)備。

        Set-Flash:讓指定IO設(shè)備的LED燈閃爍,當(dāng)同一網(wǎng)絡(luò)中有多個同類設(shè)備時,可以通過閃爍LED的方式來確定要操作的對象。

        Hello:IO設(shè)備主動給IO控制器發(fā)送信息。主要在快速啟動時使用Hello功能,表示IO設(shè)備已經(jīng)準(zhǔn)備就緒,從而縮短控制器查找IO設(shè)備的時間,實現(xiàn)系統(tǒng)的快速啟動。

        2.2 DCP在PROFINET中的典型用法

        DCP是PROFINET重要的組成部分,實現(xiàn)PROFINET IO系統(tǒng)啟動時設(shè)備名稱、IP地址的分配,是PROFINET網(wǎng)絡(luò)中數(shù)據(jù)交互的基礎(chǔ)[13]。同時DCP使PROFINET IO設(shè)備實現(xiàn)無需組態(tài)工具替換成為可能。

        2.2.1 啟動時的DCP

        DCP協(xié)議是實現(xiàn)PROFINET IO通信的條件,在系統(tǒng)組態(tài)時,工程工具會先給IO控制器分配IP地址,然后給組態(tài)好的IO設(shè)備分配設(shè)備名稱。隨后將組態(tài)好的信息下載到IO控制器中,這樣IO控制器就擁有尋址IO設(shè)備和數(shù)據(jù)交換所需的所有信息。IO控制器在根據(jù)設(shè)備名稱為IO設(shè)備分配IP地址。IP地址和設(shè)備名稱的分配都依賴于DCP子協(xié)議,在系統(tǒng)通電后,IO控制器與IO設(shè)備建立通信關(guān)系和應(yīng)用關(guān)系,然后IO控制器和IO設(shè)備交換過程數(shù)據(jù)、報警和非循環(huán)數(shù)據(jù)。從組態(tài)到系統(tǒng)啟動的步驟如圖1所示。

        圖1 組態(tài)到系統(tǒng)啟動

        PROFINET系統(tǒng)中,指定DCP協(xié)議分配設(shè)備名稱和IP地址。每個PROFINET設(shè)備會根據(jù)DNS和IP地址分配唯一的設(shè)備名稱。這個設(shè)備名稱用于系統(tǒng)啟動時的PROFINET IO設(shè)備尋址。設(shè)備名稱和IP地址的成功分配是控制器和設(shè)備之間正常通信的前提。DCP協(xié)議分配IO設(shè)備名稱和IP地址的具體步驟如下。

        1)IO設(shè)備分配名稱。

        自動化系統(tǒng)啟動時需要進(jìn)行基于符號名稱的設(shè)備地址解析,在IO控制器和IO設(shè)備真正建立連接之前,IO設(shè)備就已經(jīng)分配了名字,該名稱是由IO監(jiān)視器分配并保存在IO設(shè)備中。這個名稱用作設(shè)備運行期間對它明確的標(biāo)識。具體流程如圖2所示。

        圖2 DCP分配設(shè)備名稱

        2) IO設(shè)備分配IP地址。

        IO控制器以設(shè)備名稱作為尋址標(biāo)準(zhǔn)向IO設(shè)備發(fā)送請求,具有該名字的設(shè)備發(fā)送響應(yīng)。ARP請求在子網(wǎng)內(nèi)以廣播的方式發(fā)送,用于尋找對應(yīng)IP地址,該IP地址的設(shè)備發(fā)送自己的MAC地址作為響應(yīng),以此來檢查IP地址所對應(yīng)的MAC地址。如果沒有接收到ARP響應(yīng),則代表該IP地址的設(shè)備在此子網(wǎng)內(nèi)不存在或者沒有處在活動的狀態(tài)。然后利用DCP_Set設(shè)置IP地址并等待IO設(shè)備發(fā)送相應(yīng)響應(yīng)進(jìn)行確認(rèn)。具體步驟如圖3所示。

        圖3 DCP分配IP地址

        PROFINET 網(wǎng)絡(luò)中也可以選用動態(tài)主機(jī)配置協(xié)議(DHCP)對IO設(shè)備進(jìn)行地址分配[14]。但DHCP在地址分配時,依賴一個可以使用的服務(wù)器,通常在自動化應(yīng)用的范圍外,服務(wù)器會因為各種原因關(guān)閉導(dǎo)致地址分配不成功。PROFINET網(wǎng)絡(luò)依賴于靜態(tài)地址,而DHCP提供的是動態(tài)地址這使設(shè)備更換困難。MAC地址通常與DHCP服務(wù)器進(jìn)行綁定,如果需要更換一個設(shè)備,MAC地址即發(fā)生改變,這會阻止新設(shè)備獲取地址,并且使進(jìn)程處于停滯狀態(tài),直到重新配置DHCP服務(wù)器。而使用DCP可以本地化管理地址,IP地址不會過期,并且設(shè)備名稱對每個設(shè)備來說都是唯一的,DCP可以在不使用組態(tài)工具的情況下完成設(shè)備替換。

        2.2.2 設(shè)備替換

        DCP和LLDP結(jié)合使用可以實現(xiàn)“無需組態(tài)工具的設(shè)備替換”[15]。LLDP通過交換機(jī)端口交換鄰居設(shè)備的信息,LLDP幀中包括發(fā)送端口的端口ID、發(fā)送設(shè)備的MAC地址或設(shè)備名稱、目的端口等。現(xiàn)場設(shè)備接通后,相鄰設(shè)備之間會周期性的發(fā)送LLDP幀用于交換設(shè)備信息。設(shè)備解析收到的LLDP報文,將端口ID和設(shè)備名稱結(jié)合形成設(shè)備別名,這個別名將用于替換設(shè)備的尋址。

        如果設(shè)備發(fā)生故障,則將停止與其鄰居設(shè)備循環(huán)交換LLDP幀,這樣可以檢測出設(shè)備故障。當(dāng)響應(yīng)超時,鄰居設(shè)備會刪除故障設(shè)備的信息,控制器也將檢測出這個設(shè)備不再“可尋址”。更換設(shè)備后,控制器會循環(huán)的嘗試用原設(shè)備名稱和新設(shè)備建立聯(lián)系。因為新設(shè)備的設(shè)備名稱為空,所以不能成功建立聯(lián)系,此時控制器使用DCP_Identify服務(wù),設(shè)置請求參數(shù)“Alias Name Of Station”,通過設(shè)備別名詢問設(shè)備,新設(shè)備進(jìn)行應(yīng)答,控制器再通過DCP_Set將新設(shè)備重新命名。

        3 PROFINET IO協(xié)議棧設(shè)計與實現(xiàn)

        3.1 PROFINET IO軟件總體架構(gòu)

        PROFINET IO提供了主要用于IO控制器和IO設(shè)備之間通信的服務(wù)和協(xié)議[16]。PROFINET IO協(xié)議是由一組協(xié)議機(jī)器定義,協(xié)議??偧軜?gòu)如圖4所示[17]。圖3描繪了IO設(shè)備內(nèi)提供應(yīng)用關(guān)系應(yīng)用服務(wù)元素(AR ASE,Application Relationship Application Service Element)行為的協(xié)議機(jī)器及協(xié)議機(jī)器之間的交互?;疑驗镻ROFINET IO協(xié)議中主要的協(xié)議機(jī)器,箭頭代表協(xié)議機(jī)器之間的主要交互。本文所實現(xiàn)的PROFINET IO協(xié)議棧以RT為最高通信標(biāo)準(zhǔn)實現(xiàn)數(shù)據(jù)收發(fā)和診斷報警功能。

        圖4 PROFINET IO 協(xié)議總架構(gòu)

        圖5 PROFINET IO數(shù)據(jù)交互流程

        PROFINET IO用戶通過IO設(shè)備的應(yīng)用層服務(wù)協(xié)議映射機(jī)(FSPM,F(xiàn)AL service protocol machines)發(fā)布或接收服務(wù)原語。IO設(shè)備上下文協(xié)議機(jī)(CMDEV, context management protocol machine device)用于控制通信關(guān)系的建立和啟動停止其他協(xié)議機(jī)。上下文管理RPC設(shè)備協(xié)議機(jī)(CMRPC, context management RPC protocol machine)中映射并封裝了與遠(yuǎn)程過程調(diào)用協(xié)議(DCE RPC,distributed computing environment remote procedure call)相關(guān)的服務(wù)。管理IP和名稱分配協(xié)議機(jī)器(CMINA,context management Ip and name assignment)主要用于處理站名和IP地址的分配,幫助處理DCP_Set和DCP_Identify請求和管理發(fā)送DCP_HELLO請求。消費者協(xié)議機(jī)器(CPM,consumer protocol machine)處理接收循環(huán)數(shù)據(jù),為傳入的實時數(shù)據(jù)幀注冊處理程序并監(jiān)視傳入的數(shù)據(jù)幀。提供者協(xié)議機(jī)器(PPM,provider protocol machine)處理數(shù)據(jù)的循環(huán)發(fā)送并初始化傳輸緩沖區(qū)。報警協(xié)議啟動機(jī)器(ALPMI,alarm protocol machine initiator)用于觸發(fā)警報。報警協(xié)議應(yīng)答機(jī)器(ALPMR,alarm protocol machine responder)用于響應(yīng)傳入的警報。非循環(huán)協(xié)議接收機(jī)器(APMR,acyclic protocol machine receiver)用于接收傳入的報警幀。非循環(huán)協(xié)議發(fā)送機(jī)器(APMS,acyclic protocol machine sender)用于向IO控制器發(fā)送報警以太網(wǎng)幀。

        3.2 PROFINET IO數(shù)據(jù)交換模塊設(shè)計

        在PROFINET IO通信中,發(fā)送數(shù)據(jù)調(diào)度是周期進(jìn)行,網(wǎng)絡(luò)中的每個設(shè)備的數(shù)據(jù)傳輸開始于循環(huán)RT數(shù)據(jù),隨后是傳輸非循環(huán)RT數(shù)據(jù),例如警報數(shù)據(jù),最后才傳輸NRT數(shù)據(jù)。

        PROFINET配置階段,控制器告訴IO設(shè)備實際的模塊和子模塊。IO設(shè)備會在app_plug_dap()函數(shù)中利用app_get_module_cfg()函數(shù)、app_get_submodule_cfg()函數(shù)、app_get_parameter_cfg函數(shù)獲取所需要模塊、子模塊、參數(shù)配置,再調(diào)用pnet_plug_module()、pnet_plug_submodule()將特定模塊插入特定的插槽,特定子插槽插入特定的子模塊,最終實現(xiàn)IO設(shè)備的實際應(yīng)用模塊所有與組態(tài)信息相一致的模塊信息。配置完成后,IO設(shè)備和控制器之間連續(xù)交換循環(huán)數(shù)據(jù)。

        PROFINET IO設(shè)備和IO控制器之間的實際數(shù)據(jù)傳輸只能通過應(yīng)用關(guān)系(AR,application relationship)建立通信,而一個AR中可以包含一個或者多個用于交換數(shù)據(jù)的通信關(guān)系(CR,communication relationship)。CR在多個隊列或緩沖區(qū)之間建立,用于交換不同的數(shù)據(jù),循環(huán)RT數(shù)據(jù)使用IO數(shù)據(jù)CR,配置和其他非循環(huán)數(shù)據(jù)在記錄數(shù)據(jù)CR中交換,實時報警在報警CR中交換??刂破髋cIO設(shè)備之間的數(shù)據(jù)交互根據(jù)不同事件調(diào)用不同的回調(diào)函數(shù)進(jìn)行處理,反復(fù)調(diào)用Events_Stata()函數(shù)判斷不同事件。PROFINET數(shù)據(jù)交互流程如圖5所示。

        PROFINET IO通信是按照生產(chǎn)者/消費者的模式進(jìn)行,在循環(huán)數(shù)據(jù)交換時,不僅要包含數(shù)據(jù)單元還要包含兩個數(shù)據(jù)狀態(tài)屬性,輸入輸出生產(chǎn)者狀態(tài)(IOPS,input output provider status)和輸入輸出消費者狀態(tài)(IOCS,input output consumer status)。IOCS和IOPS狀態(tài)指示收到或發(fā)送的數(shù)據(jù)是否有效。

        當(dāng)IO設(shè)備向IO控制器發(fā)送輸入數(shù)據(jù)時,IO設(shè)備即是生產(chǎn)者也是消費者。作為生產(chǎn)者時,Set_Output_Data()函數(shù)發(fā)送過程數(shù)據(jù)并利用Set_Output_IOPS()函數(shù)為輸入數(shù)據(jù)設(shè)置IOPS狀態(tài),然后通過輸出數(shù)據(jù)CR將過程數(shù)據(jù)提供給IO控制器。作為消費者時,用Set_Intput_IOCS()函數(shù)向控制器報告自己之前接收到的數(shù)據(jù)是否可以使用。

        當(dāng)IO控制器向IO設(shè)備發(fā)送輸出數(shù)據(jù)時,IO設(shè)備調(diào)用Get_Intput_Data()函數(shù)獲取輸入緩沖區(qū)中數(shù)據(jù),Get_Intput_IOPS()函數(shù)讀取指定模塊的IOPS狀態(tài),Get_Output_IOCS()函數(shù)獲取IO控制器報告的接收到的數(shù)據(jù)是否可用信息。Data_Status_Changed()函數(shù)通知應(yīng)用程序接收到的數(shù)據(jù)狀態(tài)已更改。循環(huán)數(shù)據(jù)交換過程如圖6所示。

        圖6 循環(huán)數(shù)據(jù)交互過程

        4 DCP協(xié)議程序?qū)崿F(xiàn)

        PROFINET IO設(shè)備中集成的DCP協(xié)議實現(xiàn)程序主要包括處理DCP_Identify請求程序、處理DCP_Set請求程序、處理DCP_Get請求程序、處理DCP_Hello請求程序、閃爍信號燈、重置設(shè)置等。要求IO設(shè)備能夠?qū)刂破靼l(fā)出的DCP服務(wù)請求作出正確的響應(yīng)。IO控制器和IO設(shè)備上電后,IO設(shè)備接收到來自控制器的數(shù)據(jù)包,先判斷此包是否為PROFINET數(shù)據(jù)包,數(shù)據(jù)類型是否等于0x8892。再將接收到的數(shù)據(jù)包解析,根據(jù)frame ID發(fā)送到不同處理程序。本節(jié)主要分析DCP_Identify請求程序和處理DCP_Set請求程序的具體實現(xiàn)過程。

        4.1 DCP中使用的選項和子選項

        DCP是一種通過不同過濾判據(jù)進(jìn)行讀取和寫入設(shè)備參數(shù)及發(fā)現(xiàn)設(shè)備的協(xié)議。DCP服務(wù)的實現(xiàn)是根據(jù)設(shè)備選項進(jìn)行過濾判斷再執(zhí)行,IO控制器中發(fā)送的請求命令中包含篩選條件,滿足篩選條件的設(shè)備才會作出響應(yīng)。因此協(xié)議中定義了很多選項和子選項,選項及子選項如表1所示。

        表1 DCP用到的選項及子選項

        4.2 處理DCP_Identify請求程序

        DCP_Identify_Req()是處理傳入的DCP_Identify請求函數(shù),是實現(xiàn)構(gòu)造響應(yīng)并發(fā)送響應(yīng)的過程。請求中包含篩選條件,只有所有的條件都匹配的設(shè)備才發(fā)送響應(yīng)。接收到請求中的frame ID=0xfefe時,表示接收到的是DCP_Identify請求需要發(fā)送DCP_Identify響應(yīng)。

        先獲取本設(shè)備的MAC地址并給響應(yīng)分配緩沖區(qū),從接收到的請求幀中讀取信息準(zhǔn)備構(gòu)造響應(yīng)幀,其中響應(yīng)幀中的目的地址就是請求幀中的源地址,響應(yīng)幀中的源地址就是本設(shè)備的MAC地址。構(gòu)造響應(yīng)幀的報文頭,從請求幀的報文頭中修改所需要的內(nèi)容,包括以太網(wǎng)報文頭、PROFINET報文頭、DCP報文頭,DCP block報文頭。通過DCP_Get_Req_()函數(shù)來讀取請求幀中block頭中的選項和子選項。如果Option為PF_DCP_OPT_ALL并且子選項為PF_DCP_SUB_ALL時,則將變量Identify_all賦值為ture,表示請求幀是要尋址所有設(shè)備,不過濾此條信息,IO設(shè)備也準(zhǔn)備做出響應(yīng)。根據(jù)讀取請求幀中的Option的值來改變變量match和ret的值,當(dāng)ret=0并且match=true時,PF_dcp_Get_Req()函數(shù)插入Device_Option的元素個數(shù)個block構(gòu)造響應(yīng)幀。造響應(yīng)幀的流程圖如圖7所示。

        圖7 處理DCP_Identify請求程序

        4.3 處理DCP_Set請求程序

        DCP_Get_Set()是處理DCP_Set請求程序函數(shù),發(fā)送DCP_Set響應(yīng)的流程圖如圖8所示。使用Get_Device_Macaddr()函數(shù)檢查請求幀中的目的地址與本設(shè)備的MAC地址是否相匹配,如果匹配則修改請求幀為構(gòu)造響應(yīng)幀做準(zhǔn)備。包括在響應(yīng)幀中插入frame ID,設(shè)置以太網(wǎng)報頭,并從請求幀中復(fù)制DCP頭等。然后判斷請求幀中的Service_ID是否為PF_DCP_SERVICE_SET,在響應(yīng)中插入塊構(gòu)造完成響應(yīng)后發(fā)送響應(yīng),再通過DCP_Set_Commit()函數(shù)提交對ip_suite的更改。

        圖8 處理DCP_Set請求程序

        5 GSD描述文件的設(shè)計

        GSD是由元素和屬性構(gòu)成,基于可擴(kuò)展標(biāo)記語言(XML,eXtensible markup language)的通用工作站標(biāo)識語言(GSDML,general station description markup language )編寫,用來描述PROFINET設(shè)備功能的文件[18]。該文件主要描述了可在PROFINET IO設(shè)備中使用的可插拔硬件模塊類型,但設(shè)備實際要使用的硬件模塊需要在工程工具中進(jìn)行配置。配置好的組態(tài)信息下載到控制器中,控制器會告訴IO設(shè)備需要插入的IO模塊的類型,只有IO設(shè)備中所插入的模塊與組態(tài)信息中的配置模塊一致才能控制器和IO設(shè)備才能組態(tài)成功。GSD文件由、兩部分構(gòu)成,頭里的內(nèi)容一般是固定不變的,描述設(shè)備的信息。里的用于設(shè)置制造商ID、設(shè)備ID和制造商的名稱,設(shè)置為“I/0”,主要用于處理通信設(shè)置。GSD文件的結(jié)構(gòu)圖如圖9所示。

        圖9 GSD文件結(jié)構(gòu)圖

        中的描述IO設(shè)備中所有的模塊的信息。圖10是一字節(jié)輸入一字節(jié)輸出模塊GSD文件描述。

        圖10 GSD文件

        用來聲明一個模塊,控制器與IO設(shè)備通信時通過模塊的ID來建立AR關(guān)系,所以每個模塊的ID需是唯一;用來描述模塊名稱和硬軟件版本信息;一些子模塊是模塊固定不變的部分稱之為虛擬子模塊,就是描述這些子模塊的輸入輸出數(shù)據(jù)和記錄數(shù)據(jù)。用來聲明一個子模塊,其中“IDSM_132”用于外部文本列表中的賦值,“0x0132”為子模塊的ID。是對輸入輸出數(shù)據(jù)的描述,Type=“Unsigned8”表示輸入的數(shù)據(jù)類型為8位無符號數(shù);UseAsBits=“true”表示可以在工程工具中顯示每一位。 用來命名各個位,最低有效位的偏移量為 0,之后偏移量加一。對子模塊參數(shù)進(jìn)行描述,其中Index=“123”利用Index=“123”的索引值可以找到對應(yīng)的模塊進(jìn)行非實時數(shù)據(jù)的讀寫操作,Length=“4”定義了參數(shù)長度為四字節(jié)。

        6 系統(tǒng)測試

        PROFINET是在標(biāo)準(zhǔn)以太網(wǎng)的基礎(chǔ)上精簡協(xié)議棧,不僅提高了實時性還使PROFINET的實現(xiàn)更加簡單[19]。這種優(yōu)化是在軟件層面,因此主要要求硬件平臺能夠接受和發(fā)送以太網(wǎng)二層的數(shù)據(jù)幀就可以實現(xiàn)作為 IO設(shè)備接入PROFINET網(wǎng)絡(luò)中。本文選用Raspberry Pi 3B+(樹莓派)作為硬件平臺,它是基于Linux系統(tǒng)的Cortex-A53架構(gòu)微型電腦主板,搭配千兆網(wǎng)卡LAN7515,不僅可以實現(xiàn)數(shù)據(jù)幀的收發(fā)還可以實現(xiàn)PC的基本功能[20]。樹莓派和PLC通過交換機(jī)連接,但此次測試采用的交換機(jī)不是鏡像交換機(jī),因此需要在樹莓派上運行Wireshark軟件來抓取硬件平臺和IO控制器之間的數(shù)據(jù)交互。系統(tǒng)測試連接如圖11所示。

        圖11 實驗平臺結(jié)構(gòu)

        6.1 從組態(tài)到運行系統(tǒng)

        在工程工具TAL Portal V15中對PROFINET IO系統(tǒng)進(jìn)行組態(tài),將IO設(shè)備的GSD文件加載到工程工具中[21]。組態(tài)連接如圖12所示。

        圖12 TAL Portal組態(tài)

        6.2 啟動期間的數(shù)據(jù)交換

        控制器上電后發(fā)送DCP廣播消息,子網(wǎng)上的所有IO設(shè)備用其MAC地址應(yīng)答。控制器向IO設(shè)備發(fā)送帶有特定MAC地址的DCP消息,其中包含IO設(shè)備應(yīng)使用的IP地址和站名。IO設(shè)備相應(yīng)地設(shè)置自己的IP地址和站名。 然后,PLC使用在IP上的UDP運行的DCE/RPC協(xié)議啟動IO設(shè)備的實際配置。配置完成后,IO設(shè)備和控制器之間連續(xù)交換循環(huán)數(shù)據(jù)。

        樹莓派上運行Wireshark對設(shè)備和控制器之間的通信進(jìn)行抓包分析。在設(shè)備剛啟動時,控制器先通過設(shè)備名稱“pndev”尋址設(shè)備并通過DCP_Set服務(wù)分配IP地址,ARP確認(rèn)過設(shè)備后開始建立連接。系統(tǒng)的初始化數(shù)據(jù)是NRT非實時數(shù)據(jù),通過IP地址傳輸,其中192.168.0.1為PLC控制器的IP地址,192.168.0.50是樹莓派的IP地址。IO控制器和IO設(shè)備之間的連接建立分為四步:第一步建立AR和CR,控制器發(fā)送連接請求,樹莓派對建立連接的請求進(jìn)行響應(yīng),只有在能保證建立連接的時候才會發(fā)送響應(yīng),然后開始建立數(shù)據(jù)交互所需的AR和CR。第二步傳輸參數(shù),控制器發(fā)送寫請求,樹莓派進(jìn)行響應(yīng)后給IO設(shè)備傳輸參數(shù),每個模塊或子模塊的參數(shù)都要進(jìn)行傳輸。第三步傳輸結(jié)束,控制器發(fā)出“DControl”請求也就代表著控制器對參數(shù)的傳輸結(jié)束,樹莓派進(jìn)行響應(yīng)后連接就完全建立起來了。第四步確認(rèn),樹莓派在發(fā)送“CControl”請求對連接的建立進(jìn)行確認(rèn),收到控制器的響應(yīng)后就開始進(jìn)行數(shù)據(jù)交換。Wireshark在啟動期間的抓包如圖13所示。

        圖13 啟動期間的數(shù)據(jù)交換

        6.3 設(shè)備發(fā)送周期及抖動性分析

        在工程工具中組態(tài)時設(shè)置IO設(shè)備的更新時間為4 ms,利用Wireshark軟件對系統(tǒng)數(shù)據(jù)交互進(jìn)行抓包,組態(tài)工具中的更新時間如圖14所示。將抓取到的數(shù)據(jù)進(jìn)行篩選,篩選出IO設(shè)備發(fā)送給控制器的RT數(shù)據(jù)并導(dǎo)出為CSV文件。在Excel中處理數(shù)據(jù),計算出相鄰兩個數(shù)據(jù)的發(fā)送時間差值得到更新時間,再計算相鄰兩個更新時間的差值得到更新時間抖動值。利用Matlab繪制更新時間折線圖和抖動折線圖,如圖15所示發(fā)送周期在所設(shè)置的4 ms上下浮動,并且可以看到抖動值不超過50 μs,所實現(xiàn)的IO設(shè)備符合PROFINET RT實時性的要求。

        圖14 工程工具中的更新時間

        圖15 更新時間及抖動值

        7 結(jié)束語

        PROFINET是工業(yè)實時以太網(wǎng)絡(luò)中的典型代表,在PROFINET應(yīng)用廣泛的今天,對PROFINET的研究應(yīng)該更加深入和多面化。針對同類設(shè)備依賴特定芯片,成本較高,可移植性差的問題,通過軟件設(shè)計在普通網(wǎng)卡下實現(xiàn)PROFINET IO的RT和NRT通信。為證明廣泛性,在樹莓派硬件平臺上移植協(xié)議棧實現(xiàn)樹莓派接入PROFINET網(wǎng)絡(luò)。本文在實現(xiàn)通信功能的基礎(chǔ)上對PROFIENT協(xié)議棧中的DCP協(xié)議進(jìn)行重點研究。闡述了DCP協(xié)議的功能、原理和在PROFINET網(wǎng)絡(luò)中所起的作用,對DCP的軟件程序進(jìn)行了設(shè)計與實現(xiàn)。最后為所設(shè)計的IO設(shè)備搭建了一套測試系統(tǒng),并完成硬件組態(tài)。驗證了從組態(tài)到系統(tǒng)啟動中DCP的作用和IO設(shè)備所實現(xiàn)的RT和NRT通信功能。通過在樹莓派上運行Wireshark抓包軟件對IO設(shè)備和控制器PLC建立通信前的流程和DCP的功能實現(xiàn)過程進(jìn)行分析,對所抓取的數(shù)據(jù)進(jìn)行了篩選分析,得出了IO設(shè)備更新時間的抖動值,設(shè)備的實時性及可靠性滿足自動化生產(chǎn)控制中的需要,具有廣泛的應(yīng)用前景。本文對PROFINET IO通信的實現(xiàn)和對集成協(xié)議DCP的分析與研究,可以幫助從事相關(guān)方向的工程師掌握PROFINET技術(shù)的應(yīng)用。

        猜你喜歡
        分配設(shè)備
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        基于可行方向法的水下機(jī)器人推力分配
        應(yīng)答器THR和TFFR分配及SIL等級探討
        遺產(chǎn)的分配
        一種分配十分不均的財富
        基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
        績效考核分配的實踐與思考
        基于MPU6050簡單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        500kV輸變電設(shè)備運行維護(hù)探討
        如何在設(shè)備采購中節(jié)省成本
        中文字幕精品一区二区三区| 国产91中文| 国产一级在线现免费观看| 国产少妇一区二区三区| 国产av久久在线观看| 欧美精品黑人粗大免费| 欧美末成年videos在线观看| 国产午夜亚洲精品不卡免下载| 日日噜噜噜夜夜狠狠久久蜜桃| 色欲色香天天天综合vvv| 东京热加勒比无码少妇| 免费无码又爽又刺激高潮的视频网站 | 国产无套粉嫩白浆在线观看| 国产成人综合久久精品免费| 国产成人香蕉久久久久| 精品女厕偷拍视频一区二区区| 久久99国产精品久久| 亚洲av无码国产剧情| 精品国产一区二区三区亚洲人| 超碰青青草手机在线免费观看| 少妇高潮惨叫久久久久电影69| 亚洲国产无套无码av电影| 久久露脸国产精品WWW| 无码91 亚洲| 中文日本强暴人妻另类视频| 色一情一乱一伦一视频免费看| 人人妻人人爽人人做夜欢视频九色 | 亚洲自拍愉拍| 免费看黄片视频在线观看| 中文字幕亚洲欧美在线不卡| 久久国产精久久精产国| AV在线中出| 日本人妻精品有码字幕| 精品伊人久久大香线蕉综合| 爱我久久国产精品| 日本一区二区高清视频在线| 亚洲av无码成人精品国产| 亚洲一区精品无码色成人| 亚洲国产精品无码久久九九大片健| 丝袜美腿国产一区二区| 日本精品无码一区二区三区久久久|