臧 峰,吳 波,牛洪海,陳 俊
(南京南瑞繼保電氣有限公司,江蘇 南京 211102)
數據采集廣泛應用于狀態監控、故障診斷、誤差補償等工業過程控制領域的各個階段。伴隨中國制造2025 的提出,工業化和信息化融合進入了全新階段[1-2]。以太網作為當今局域網通信的通用標準,得到了廣泛的應用,并且應用于工業控制領域,形成了工業以太網。實時工業以太網作為工業過程控制通信領域研究的熱點[3],具有傳輸距離長、抗干擾能力強、性價比高等一系列優點,因此廣泛應用于工業過程控制領域。文獻[4]介紹了幾種常用的工業以太網及其協議接口分析。文獻[5]提出了工業實時以太網(ethernet powerlink,EPL)協議的分析,設計并實現了三軸電機的通信控制和實時性能測試。文獻[6]提出了一種基于ARM 的工業監控系統,并通過無線傳輸實現溫濕度數據的上送。以上文獻只考慮了本地數據的采集和控制,沒有考慮當現場設備距離控制器較遠時,無法實現對現場數據的實時采集和控制指令的輸出。因此,本文提出了一種基于工業以太網的遠程數據采集和控制的方法,以解決遠程設備的監控問題。
隨著科學技術的進步和工業控制技術的發展,對現場設備進行遠程控制的需求越來越強烈,而現場的控制環境也隨之復雜化。輸入輸出(input output,I/O)模塊的應用使得對現場設備的控制得以實現。并行冗余協議(parallet redundancy protocol,PRP)系統結構如圖1 所示。

圖1 PRP 系統結構圖Fig.1 Structure of PRP system
I/O 模塊通常包括開關量輸入(digital input,DI)、開關量輸出(digital output,DO)、模擬量輸入(analog input,AI)、模擬量輸出(analog output,AO)和串口通信(serial communication,SC)模塊,是分布式采集系統中的關鍵部件。通過I/O 模塊可以采集現場設備就地數據,有效提高數據采集的品質;同時,通過指令輸出,實現對設備的現場控制。使用I/O 模塊對現場設備進行控制和數據采集過程中,存在一定的局限性。高可用性無縫冗余協議(high availability seamless redundancy,HSR)系統結構如圖2 所示。

圖2 HSR 系統結構圖Fig.2 Structure of HSR system
例如,當現場設備距離控制器較遠時,無法通過控制器實現對現場設備的數據采集和輸出控制。此時需要通過遠程采集和控制,以實現對現場設備的監控。因此,本文提出一種用于遠程數據采集和控制的方法。該方法通過組態工具,根據現場需求進行I/O 模塊配置,能夠提供定制化的配置功能,滿足不同的現場控制需求。同時,采用冗余以太網進行遠程通信,保證控制過程和數據采集過程的高效、可靠。冗余通信可根據組態工具配置實現PRP 或HSR。PRP/HSR 冗余網絡協議的特點是網絡冗余,但是應用層只收到一份數據,從而降低了嵌入式軟件應用層處理報文的壓力[7-9]。
PRP 協議的實現依賴于支持PRP 的網絡節點。每個網絡節點具有2 個獨立運行的網絡物理端口,并且這2 個端口連接2 個獨立的交換機[10]。如圖1 所示,網絡節點應用層通過用戶數據報協議(user datagram protocol,UDP)或傳輸控制協議(transmission control protocol,TCP),通過2 個物理端口把數據獨立發送出去。目的節點把先接收到的數據發送給應用層,后到的數據則丟棄[11]。因此,任何一個網絡端口發生故障,都不會導致網絡通信中斷,且應用層只收到一份數據,也不會增加系統處理報文的負擔。
HSR 實現原理與PRP 基本相同,也是依靠2 個獨立運行的網絡端口實現冗余。只不過這2 個端口是通過環形方式建立連接[12]的。如圖2 所示,支持HSR 的網絡冗余端口同時向環網發送UDP 或TCP 報文。因此,接收方根據不同情況對報文進行處理。
①判斷接收報文是否為廣播報文或組播報文,如是,則接收此報文并通過另外一個端口轉發。
②如不是廣播報文或組播報文,判斷目的地址是不是本地地址。如果不是,通過另外一個端口轉發。如果目的地址是本地地址,則進一步判斷此報文是否是接收到的第一幀報文:如是,則轉發給應用層;如不是,則丟棄。
組態工具根據現場需求進行遠程I/O 模塊的配置,包括I/O 模塊的槽位號、I/O 模塊的類型、子類型和版本號,并把此配置文件下發給控制器。控制器接收到配置文件后進行在線解析,并與內存中存儲的配置文件校驗碼進行對比。如果校驗碼一致,說明是組態工具重復下發的配置文件,不進行內存更新;如果不一致,則更新控制器中的內存信息,并把此配置文件通過冗余以太網轉發給遠程IOLINK 模塊。
遠程IOLINK 模塊接收到控制器通過冗余網絡下發的組態文件后,也進行在線解析配置文件,并與本地內存保存的配置文件校驗碼進行比較。如果校驗碼一致,說明是控制器重復下發的配置文件,不進行內存更新;如果不一致,則更新遠程IOLINK 中的內存信息。遠程IOLINK 在數據交互報文中周期性地上傳本地存儲的配置文件校驗碼信息,以防止因配置文件丟失而導致的控制器與遠程IOLINK 中信息不匹配的問題。
數據交互協議包括兩層協議:①控制器與遠程IOLINK 模塊之間的數據交互;②遠程IOLINK 模塊與I/O 模塊之間的數據交互。
控制器與遠程IOLINK 模塊之間的數據交互包括周期性數據交互和非周期性數據交互。周期性數據交互是指控制器周期性下發給遠程IOLINK 模塊的查詢數據指令和控制輸出指令。遠程IOLINK 接收到控制器下發的指令后,進行數據報文的解析,并把控制指令存儲在本地內存中;同時,把本地內存中采集的I/O 模塊數據組包反饋給控制器。非周期性數據交互是指一些突發性的數據交互。例如:當遠程IOLINK 模塊采集到DI 的事故序列(sequence of event,SOE)時,遠程IOLINK 模塊在周期性反饋報文中置標記位通知控制器有SOE 數據。控制器接收到此標志位后會下發一幀非周期性查詢報文,以采集遠程IOLINK 模塊中存儲的SOE 信息。
遠程IOLINK 模塊與I/O 模塊之間的數據交互也包括周期性和非周期性數據。遠程IOLINK 與I/O 模塊之間通信的實時性和可靠性,主要取決于物理層的通信速率和數據鏈路層的調度策略。應用層實現了I/O 模塊實時數據或非實時數據的解析,數據鏈路層實現了數據的循環冗余校驗(cyclic redundant check,CRC),物理層實現了串口數據的編解碼功能。遠程IOLINK 模塊周期性地下發控制指令和查詢指令,I/O模塊接收到此指令后進行解析并反饋數據。組態工具可以直接與遠程IOLINK 模塊進行交互,發送查詢I/O模塊內存、設置I/O 模塊變量等非周期性數據。I/O模塊包括一個微控制器(micro control unit,MCU),通過DMA 實現了數據的采集和傳輸。詳細設計可參考文獻[13]。
控制器和遠程IOLINK 模塊使用了Xilinx 公司的Zynq 芯片。此芯片具有2 個ARM 芯片和一個現場可編輯邏輯門陣列(field programmable gate array,FPGA)。ARM 芯片運行QNX 實時操作系統,并通過FPGA 擴展6 路冗余I/O 總線。每路總線都實現了5 Mbit/s 的高速串口通信[14]。
為了實現上述功能,需要對各個功能進行詳細分析,并進行軟件設計。組態工具與控制器時序如圖3所示。

圖3 組態工具與控制器時序圖Fig.3 Time sequence diagram of configuration tool and controller
通過組態工具進行I/O 模塊配置,并將配置文件下發給控制器。組態工具是用于可視化生成I/O 模塊配置文件的工具。通過組態工具,可以根據現場的實際需求進行I/O 模塊的可視化配置,并生成對應的配置文件。控制器對接收的配置文件進行在線解析并生成內存鏡像數據。控制器接收到配置文件后,根據自定義格式進行解析,并生成I/O 模塊的類型、輸入數據和輸出數據的內存鏡像。控制器還可以將接收的配置文件存儲在本地存儲器(例如FLASH)中,以便控制器重啟后進行重新解析。此外,控制器還可以根據配置文件對本地文件進行更新。當經過CRC 發現接收到的配置文件與本地存儲的文件不一致時,對本地配置文件進行更新。控制器在收到遠程IOLINK 反饋的采集數據后,將其存儲至控制器內存鏡像。
控制器與遠程IOLINK 時序如圖4 所示。

圖4 控制器與遠程IOLINK 時序圖Fig.4 Time sequcnce diagram of controller and remote IOLINK
控制器收到組態工具下發的配置文件后,將接收的配置文件下發給在線的遠程IOLINK 模塊。控制器首先對遠程IOLINK 模塊進行在線監測,通過在線監測確定遠程IOLINK 模塊是否在線。具體方案如下。
控制器定期向遠程IOLINK 模塊發送數據包進行在線監測。例如,可以間隔1 s 進行一次。控制器收到遠程IOLINK 模塊的響應報文后,將遠程IOLINK 模塊標志為在線。遠程IOLINK 模塊對接收的配置文件進行在線解析并生成遠程IOLINK 的內存鏡像。當遠程IOLINK 模塊接收到控制器下發的配置文件后,首先進行在線解析,生成I/O 模塊在遠程IOLINK 中的內存鏡像,包括輸入數據、輸出數據和參數。與控制器的內存鏡像相比,遠程IOLINK 內存鏡像中多了參數項。其原因是遠程IOLINK 模塊需要把參數數據下發給I/O 模塊,以便I/O 模塊根據參數進行配置和運行。遠程IOLINK 模塊周期性地與其所管轄的I/O 模塊進行高速(例如20 ms)串口通信,實時采集I/O 模塊的數據,并把控制器下發的控制指令下發給I/O 模塊。
針對上述設計的功能,進行在線更新遠程I/O 模塊、冗余網絡、數據傳輸功能測試。
通過組態工具,對在線修改遠程I/O 模塊類型、增加I/O 模塊、刪除I/O 模塊的功能進行測試,并通過組態工具實時監測修改功能是否起效。通過測試發現,I/O 模塊配置文件的在線更新功能正常。
通過組態工具將系統網絡設置為PRP 或HSR 模式,并按照圖1 或圖2 進行網絡架構鏈接。在遠程I/O 模塊數據正常采集的情況下,拔掉任一端口的網絡,測試發現I/O 模塊數據能夠正常刷新,表明冗余網絡可以在網絡單點故障的情況下正常工作。通過網絡抓包工具wireshark 抓包分析可知,不管是在PRP 模式還是HSR 模式,發送側通過2 個端口同時發出數據報文。
通過上述2 個測試,已對周期性數據傳輸功能進行了測試。因此只需要進行非周期性數據的測試。通過DI 模塊進行SOE 功能測試以及wireshark 抓包發現,在DI 進行SOE 功能測試時,遠程IOLINK 上傳了標志位,并且控制器下發了查詢報文。
本文設計并實現了一種基于工業以太網的遠程數據采集和控制方法。該方法實現了遠程I/O 模塊數據的實時采集和控制,擴展了控制器的應用場景。通過對現場數據的實時采集和持久化存儲操作,有利于現場設備數據的分析和優化。