崔可夫,劉世昌,張 磊,韓 偉,徐東良,李佺威
(山東新松工業(yè)軟件研究院股份有限公司,山東濟南 250101)
傳統(tǒng)制造業(yè)向數(shù)字化、網(wǎng)絡化、智能化方向轉型升級過程中對工業(yè)現(xiàn)場通訊的實時性、可靠性、安全性、抗干擾性及傳輸速度提出了更高的要求。傳統(tǒng)現(xiàn)場總線技術在網(wǎng)絡規(guī)模、傳輸效率、實時性等方面已不能滿足現(xiàn)代工業(yè)控制系統(tǒng)的需求,在具有1 000個以上I/O點的中大規(guī)??刂葡到y(tǒng)中無法保證數(shù)據(jù)準確而實時地刷新,從而影響整體工業(yè)控制系統(tǒng)性能[1]。為解決這樣的問題,許多領先的制造商自主開發(fā)了特定的工業(yè)以太網(wǎng)標準,這類標準通常是基于通用以太網(wǎng)結合其現(xiàn)有的串行現(xiàn)場總線衍生出來的,發(fā)展至今,技術已趨向成熟[2]。如西門子的Profinet、倍福的EtherCAT、三菱主導的CC-Link、羅克韋爾的EtherNet/IP等,這些工業(yè)以太網(wǎng)以其高速傳輸、應用簡單、聯(lián)網(wǎng)快速、潛力巨大的優(yōu)勢迅速擴張,已逐漸覆蓋工業(yè)自動化領域的各個行業(yè)。
各類相關設備制造商如伺服驅動器制造商、傳感器制造商、遠程I/O制造商等為使其產(chǎn)品能夠支持多種工業(yè)以太網(wǎng)協(xié)議從而匹配客戶的不同需求,常用的一種解決方法是為每個工業(yè)以太網(wǎng)協(xié)議開發(fā)專用的接口電路模塊[3]。這種方式開發(fā)周期較長且硬件利用率低,在大規(guī)模生產(chǎn)中不利于芯片采購、材料清單(BOM)管理和印刷電路板(PCB)生產(chǎn)排程。
利用多協(xié)議系統(tǒng)級芯片(SoC)可為工業(yè)以太網(wǎng)適配問題提供另一種解決方案,多協(xié)議SoC具有雙核或多核結構,以獨立的“通信核心”實現(xiàn)特定工業(yè)以太網(wǎng)的從站控制功能,因此能夠在不改變設備硬件結構的條件下僅通過下載不同類型的協(xié)議棧固件切換從站控制功能[4]。
本文以netX 90 SoC為基礎,對Profinet從站遠程I/O系統(tǒng)進行設計,該系統(tǒng)可在單個Profinet從站下靈活配置I/O通道數(shù)量,實現(xiàn)對多個數(shù)字量信號的測量和控制,對工業(yè)自動化領域的設備開發(fā)具有十分重要的借鑒意義。
工業(yè)以太網(wǎng)遠程I/O系統(tǒng)主要由總線適配器與I/O擴展模塊2部分組成,總體結構如圖1所示。這種分離式結構能夠靈活配置I/O數(shù)量,以應對在項目初期無法確定I/O具體數(shù)量和類型的情況。系統(tǒng)中,總線適配器負責與工業(yè)以太網(wǎng)主站通信并對I/O擴展模塊采集和下發(fā)數(shù)據(jù),2個RJ45接口根據(jù)不同工業(yè)以太網(wǎng)類型可分別作為網(wǎng)絡輸入、輸出接口或一對通用網(wǎng)絡接口,通過標準100BASE-TX網(wǎng)線連接主站和其他從站,1路RS232接口作為固件燒寫接口,可通過燒寫固件改變從站類型,集成的穩(wěn)壓電源模塊為整個系統(tǒng)提供電源,1路RS485接口作為擴展應用的通信總線;I/O擴展模塊具備一定數(shù)量的模擬量或數(shù)字量I/O通道,用以讀取終端傳感器數(shù)據(jù)或控制執(zhí)行器動作。每個遠程I/O系統(tǒng)由1個總線適配器和若干個I/O擴展模塊組合而成。遠程I/O系統(tǒng)的上位機為SIMATIC S7-1215C可編程邏輯控制器,應用程序在TIA Portal V16上位機軟件環(huán)境下開發(fā),能夠以在線模式運行,實時監(jiān)控每個I/O通道的狀態(tài)。
圖1 工業(yè)以太網(wǎng)遠程I/O系統(tǒng)總體結構
總線適配器主控芯片使用netX 90集成芯片,芯片結構如圖2所示,芯片面積(10×10) mm2,采用144針BGA封裝,片上提供Flash、2個高速以太網(wǎng)PHY、上電復位電路以及DC-DC轉換器,其主要特點是芯片內(nèi)部具有2個獨立的ARM Cortex-M4核心分別作為通信處理器和應用處理器,令通信任務(即工業(yè)以太網(wǎng)協(xié)議處理)和應用任務(即I/O數(shù)據(jù)和應用處理)邏輯分離,從而限制應用程序對通信核心外設的訪問,提高通信穩(wěn)定性[5]。通信核心主要實現(xiàn)數(shù)據(jù)鏈路層功能,負責主從站之間的協(xié)議處理,應用核心負責解析主站命令并通過現(xiàn)場總線傳達給本地輸出模塊,同時將從現(xiàn)場總線收集到的本地輸入模塊數(shù)據(jù)反饋給主站進行決策。
圖2 netX 90芯片結構
netX 90通過一組通信固件來實現(xiàn)設備的特定應用,通信固件包括Flash設備標簽文件、硬件配置文件和用于通信任務的軟件協(xié)議棧文件。自定義應用程序使用雙端口內(nèi)存(DPM)與協(xié)議棧接口進行數(shù)據(jù)交換,即通信固件通過DPM為各類協(xié)議棧的數(shù)據(jù)交換服務提供了一個標準應用程序接口(API)。這種雙核DPM數(shù)據(jù)交換方式在數(shù)據(jù)吞吐量較大的情況下仍能保持高度的互操作性,相比于SPI或I2C等串行數(shù)據(jù)交換方式,DPM傳輸在短周期、低延遲、多協(xié)議、硬實時應用方面具有優(yōu)勢。
總線適配器的作用是實現(xiàn)工業(yè)以太網(wǎng)主站設備與數(shù)字量、模擬量等擴展模塊之間的通信,硬件架構如圖3所示。處理器外部使用振蕩頻率為25 MHz的晶體作為時鐘源,配置有2路調(diào)試接口,既可以通過JTAG接口直接調(diào)試,也可進入控制臺模式由串口進行調(diào)試。8位撥碼開關用于模式切換,通過調(diào)整IO引腳的初始狀態(tài)來設定系統(tǒng)啟動模式。外部FLASH用于升級和備份固件,通過SPI接口與處理器進行數(shù)據(jù)傳輸,當以“切換”模式啟動設備時,外部FLASH中的新固件將替換原有固件實現(xiàn)升級。netX 90內(nèi)置2路PHY,經(jīng)過網(wǎng)絡變壓器與標準RJ45接口相連,再通過網(wǎng)線連接外部主站或其他從站設備。適配器與擴展模塊通過RS485總線通信,適配器作為RS485通信主站最多可接入64個擴展模塊從站。
圖3 總線適配器硬件架構
I/O擴展模塊硬件框圖如圖4所示,使用STM32F405RGT6微處理器實現(xiàn)多通道數(shù)字量信號的測量及控制,單個擴展模塊可測量8路數(shù)字量輸入信號或控制8路數(shù)字量輸出信號。采用振蕩頻率為12 MHz的晶體與容量為2 MB的FLASH分別為微處理器提供時鐘基準和數(shù)據(jù)存儲空間,處理器通過RS485接口與適配器進行數(shù)據(jù)交互。內(nèi)部控制系統(tǒng)電路與外部傳感器、執(zhí)行器等終端器件通過光耦隔離,由2個獨立的電源模塊分別供電,輸入輸出端口的通斷狀態(tài)可通過LED指示燈顯示。
圖4 I/O擴展模塊硬件框圖
軟件系統(tǒng)主要由2部分組成,即適配器軟件系統(tǒng)和I/O擴展模塊軟件系統(tǒng)。
適配器軟件系統(tǒng)具有3層結構,即驅動層、工業(yè)以太網(wǎng)協(xié)議棧層和I/O數(shù)據(jù)收發(fā)應用層。驅動層主要負責netX 90芯片中通信核與應用核之間數(shù)據(jù)交換;工業(yè)以太網(wǎng)協(xié)議棧層配合主站控制器實現(xiàn)各類工業(yè)以太網(wǎng)協(xié)議數(shù)據(jù)解析功能,本軟件系統(tǒng)以Profinet協(xié)議為例闡述設計方法;I/O數(shù)據(jù)收發(fā)應用層主要功能是收發(fā)I/O擴展模塊的數(shù)據(jù)及處理模塊診斷信息。
I/O擴展模塊軟件系統(tǒng)分為擴展模塊通信層和I/O任務應用層。擴展模塊通信層實現(xiàn)背板總線幀的收發(fā)和數(shù)據(jù)的存?。籌/O任務應用層負責實現(xiàn)輸入數(shù)據(jù)的采集和輸出數(shù)據(jù)的應用。
3.2.1 驅動層
netX 90通信核與應用核之間以DPM交互數(shù)據(jù),可滿足通信核和應用核之間全雙工的數(shù)據(jù)交換需求,DPM最大地址空間為64 KB,分為系統(tǒng)通道、握手通道、通訊通道(0~3)和應用通道(0~1)。
通訊通道0用于循環(huán)數(shù)據(jù)和非循環(huán)數(shù)據(jù)的收發(fā),握手通道用于DPM握手機制,系統(tǒng)通道用于通信核的系統(tǒng)通訊。循環(huán)數(shù)據(jù)區(qū)按照生產(chǎn)者消費者模型劃分為輸入數(shù)據(jù)區(qū)和輸出數(shù)據(jù)區(qū),非循環(huán)數(shù)據(jù)通過接收郵箱和發(fā)送郵箱傳遞[6]。
通訊核將PLC等控制器發(fā)出的輸出數(shù)據(jù)放入DPM輸入數(shù)據(jù)區(qū),再從DPM輸出數(shù)據(jù)區(qū)讀取應用核放置的輸入數(shù)據(jù),并將非循環(huán)數(shù)據(jù)存入接收郵箱,再取走發(fā)送郵箱內(nèi)的數(shù)據(jù),應用核則與其相反。設置Profinet總線最小周期為1 ms,即通訊核與應用核每隔1 ms通過握手機制刷新 DPM循環(huán)數(shù)據(jù)區(qū),確??偩€數(shù)據(jù)不丟失。
3.2.2 Profinet協(xié)議棧
要完成Profinet協(xié)議棧功能,首先應初始化外設、通信核和應用核,然后進行系統(tǒng)熱啟動參數(shù)配置,此過程配置包括廠商名、設備名、模塊識別等組態(tài)信息,建立從地址到實際I/O端口的映射關系[7]。配置完成后協(xié)議棧周期性地將DPM接口數(shù)據(jù)調(diào)入處理,程序對于循環(huán)數(shù)據(jù)和非循環(huán)數(shù)據(jù)采用了不同的處理方式:非循環(huán)數(shù)據(jù)處理主要針對于DPM收發(fā)郵箱數(shù)據(jù),包括Profinet參數(shù)配置和診斷信息等,其數(shù)據(jù)優(yōu)先級較低,通過UDP/IP路徑傳輸;循環(huán)數(shù)據(jù)處理針對于DPM輸出數(shù)據(jù)區(qū)和輸入數(shù)據(jù)區(qū)內(nèi)的數(shù)據(jù),這部分數(shù)據(jù)具有實時性,優(yōu)先級較高,處理完畢后調(diào)用I/O數(shù)據(jù)收發(fā)應用層程序[8],協(xié)議棧運行過程如圖5所示。
(a)主程序流程(b)中斷子程序流程圖5 協(xié)議棧運行流程
3.2.3 I/O數(shù)據(jù)收發(fā)應用層
I/O數(shù)據(jù)收發(fā)應用層負責收發(fā)I/O擴展模塊的周期性數(shù)據(jù)并處理診斷信息,流程如圖6所示。
圖6 I/O數(shù)據(jù)收發(fā)應用層程序流程
RS485通信主站初始化后,為I/O擴展模塊分配設備地址、查詢擴展模塊設備類型并上傳到通訊核。通訊核解析組態(tài)信息與控制器建立連接后即可進行循環(huán)數(shù)據(jù)的收發(fā)。主站每隔一段時間要對從站進行心跳檢測以確認其工作狀態(tài),若有異常則觸發(fā)診斷修復機制。如發(fā)生熱插拔事件時,首先判斷異常類型,然后重新配置從站地址等參數(shù)并將新的組態(tài)信息上傳給協(xié)議棧處理。若不存在異常,則將控制權限交還給通訊核。
3.3.1 I/O擴展模塊程序
I/O擴展模塊作為RS485從站接收來自適配器的數(shù)據(jù)和指令,處理并上傳I/O數(shù)據(jù)。其程序執(zhí)行流程如圖7所示。
(a)主程序流程 (b)中斷子程序流程圖7 I/O擴展模塊流程圖
首先完成初始化配置,當接收中斷收到完整的數(shù)據(jù)幀時,判斷該數(shù)據(jù)幀地址是否與本擴展模塊匹配,然后根據(jù)數(shù)據(jù)幀指令選擇發(fā)送I/O數(shù)據(jù)給主站或處理其他指令。其他指令包括從站狀態(tài)機切換指令、心跳報文回復指令、參數(shù)調(diào)整指令等。若地址不匹配則忽略此幀數(shù)據(jù),刷新I/O數(shù)據(jù)并等待主站的下一幀命令。
3.3.2 I/O擴展模塊狀態(tài)機
I/O擴展模塊狀態(tài)機確保主從站之間協(xié)調(diào)運行,保障輸入輸出的安全。狀態(tài)機包含4個狀態(tài),分別為初始化(INIT)、預運行(PreOP)、停止(STOP)和運行(OP)[9],如圖8所示。
圖8 I/O擴展模塊狀態(tài)機
狀態(tài)機轉換遵循一定的規(guī)律,設備上電默認處于初始化狀態(tài),完成從站地址初始化轉入預運行態(tài),預運行態(tài)用于配置從站參數(shù),可以通信但不能傳輸I/O數(shù)據(jù),從站參數(shù)配置完成后狀態(tài)機自動轉換為運行狀態(tài),可收發(fā)I/O數(shù)據(jù)。當主站檢測到從站異常或從站自檢出現(xiàn)錯誤時,從站會轉入停止狀態(tài)并切斷I/O數(shù)據(jù)傳輸。一個正常的啟動過程設備狀態(tài)依次為初始化狀態(tài)、預操作狀態(tài)及操作狀態(tài),初始化狀態(tài)無法直接切換到運行狀態(tài)或停止狀態(tài)[10]。
小型工業(yè)自動化單個站點I/O數(shù)量一般不超過300點,本遠程I/O系統(tǒng)以1個適配器搭配16個8通道DI模塊和16個8通道DO模塊,組成I/O系統(tǒng)可提供256個I/O點,接入主站網(wǎng)絡后其在西門子博圖軟件中的組態(tài)界面如圖9所示,實際使用中模塊的類型和數(shù)量可根據(jù)需求自由增刪替換。
圖9 遠程I/O系統(tǒng)組態(tài)界面
在某些流程自動化控制領域,對I/O端口的真實響應時間要求較為嚴格。為測得本系統(tǒng)真實響應時間,選取任一DI模塊的一個端口作為信號輸入點,再選取任一DO模塊的一個端口作為信號輸出點,將外部開關量信號連接至信號輸入點,上位機編程將輸入信號變化作為輸出信號的觸發(fā)條件,使用示波器同時監(jiān)測信號輸入點和信號輸出點,測量其時間差值即得到系統(tǒng)響應時間。應用以上方法測試本設備的系統(tǒng)響應時間,并同時測試設備A、設備B兩個同類型設備(采用專用芯片,非SoC方案設計)作為對比參考,分別測量30組響應時間數(shù)據(jù),結果如圖10所示。設備A的系統(tǒng)響應時間平均值為10.0 ms,設備B的系統(tǒng)響應時間平均值為16.5 ms。本設備的系統(tǒng)響應時間平均值為10.44 ms,介于設備A與設備B之間,可以驗證SoC方案相比于專用芯片方案不會降低系統(tǒng)響應速度,能夠滿足實際應用需求。
圖10 系統(tǒng)響應時間測試結果
遠程I/O設備從上電到啟動數(shù)據(jù)服務再到過程數(shù)據(jù)有效的初始化時間能夠反映設備的硬件性能和軟件對資源的利用效率,通過網(wǎng)絡封包分析軟件Wireshark抓取Profinet數(shù)據(jù)幀可以較準確地定位設備初始化通信過程并統(tǒng)計此過程占用的時間。
分別對本設備、設備A和設備B抓取20組初始化數(shù)據(jù)幀,圖11是根據(jù)測試數(shù)據(jù)繪制的設備初始化時間比較圖,通過統(tǒng)計得出本設備平均初始化時間為8.57 s,設備A和設備B的設備平均初始化時間分別為8.85 s和10.33 s,在初始化時間方面本設備對比同類設備具有一定的優(yōu)勢。同時根據(jù)散點分布情況可知本設備初始化時間穩(wěn)定,反映本設備具有良好的系統(tǒng)性能。
圖11 設備初始化時間測試結果
工業(yè)現(xiàn)場對網(wǎng)絡的穩(wěn)定性具有較高的要求,應用Wireshark抓取分析本設備從初始化到運行一段時間的通信數(shù)據(jù),統(tǒng)計結果如表1所示。本設備在30 min的運行過程中Profinet總線通訊速率保持平穩(wěn)且無丟包現(xiàn)象,能夠滿足工業(yè)現(xiàn)場通信要求。
表1 設備Profinet數(shù)據(jù)包收發(fā)統(tǒng)計
本文分析了將SoC應用到工業(yè)以太網(wǎng)遠程I/O系統(tǒng)中的硬件和軟件實現(xiàn),并構建了測試系統(tǒng),分析了設備的性能。本設計方案能夠提高設備的靈活性和擴展性,便于針對特定主站切換工業(yè)以太網(wǎng)協(xié)議以及根據(jù)應用需求配置合適的I/O點數(shù)。測試結果表明系統(tǒng)與主站通信穩(wěn)定快速,適用于工業(yè)自動化生產(chǎn)線、非標設備、機器人等領域,具有良好的應用前景。