黃俊杰,汪 濤,王文爍,胡丹暉
(國網(wǎng)湖北省電力公司電力科學(xué)研究院,國家電網(wǎng)公司高壓電氣設(shè)備現(xiàn)場實驗技術(shù)重點實驗室,湖北武漢 430077)
工業(yè)控制系統(tǒng)中很多部分起著關(guān)鍵性作用,例如信號采集和控制系統(tǒng)的數(shù)據(jù)交換可以說關(guān)系著整個工業(yè)工廠系統(tǒng)的可靠與穩(wěn)定。目前工業(yè)網(wǎng)絡(luò)結(jié)構(gòu)越來越向安全性、可控性和擴展性發(fā)展[1],因此開發(fā)一種基于多種網(wǎng)絡(luò)的總體拓撲系統(tǒng)。
工業(yè)網(wǎng)絡(luò)有集中式控制和分布式控制,而且目前分布式控制方法種類繁多,因此開發(fā)一種針對通用工業(yè)網(wǎng)絡(luò)的系統(tǒng)[2],可以應(yīng)用在數(shù)據(jù)采集與工業(yè)數(shù)據(jù)交換的嵌入式網(wǎng)絡(luò)交換機中。
針對工業(yè)多信息交換網(wǎng)絡(luò)的嵌入式系統(tǒng),先采用ERTEC200P開發(fā)出PROFINET協(xié)議,經(jīng)過RS485協(xié)議與STM32進行通訊,在STM32上開發(fā)出USB、RJ32、RS232、CAN和RS485等多種接口的下位機系統(tǒng),完成硬件模塊基礎(chǔ)上開發(fā)出多種協(xié)議驅(qū)動程序。
控制系統(tǒng)是為適配目前多樣的工業(yè)網(wǎng)絡(luò),即把越來越多的工業(yè)網(wǎng)絡(luò)應(yīng)用到嵌入式開發(fā)系統(tǒng)中,目前生產(chǎn)應(yīng)用之間的通信主要是通過工業(yè)以太網(wǎng)交換信息[3],由于其擁有更好的抗干擾性已經(jīng)被很多廠家應(yīng)用在自己的系統(tǒng)中。在開發(fā)嵌入式工業(yè)多信息交換系統(tǒng)中首先要考慮系統(tǒng)可以兼容主流的工業(yè)接口,且通信協(xié)議與工業(yè)標準統(tǒng)一。除了開發(fā)一般的工業(yè)系統(tǒng)外還針對嵌入式開發(fā)板上常用到的接口進行開發(fā),由于嵌入式系統(tǒng)使用起來比工業(yè)通信復(fù)雜,因此對目前的程序進行固化,保證擴展的外部設(shè)備可以很快接入到工業(yè)信息網(wǎng)絡(luò)中。
如圖1所示,主站控制系統(tǒng)是西門子通信專用的ENTEC200p開發(fā)版,硬件已經(jīng)集成了MCU、外擴的SDRAM存儲部分、快速存儲、工業(yè)以太網(wǎng)接口、電源、常用在線調(diào)試接口、多路DIO和最小系統(tǒng)組件等硬件電路[4],已經(jīng)移植的eCos軟件操作系統(tǒng)可以對PROFINET 3層網(wǎng)絡(luò)中任一協(xié)議棧進行修改,用戶可以開發(fā)出加密性能更好的協(xié)議來保護工業(yè)設(shè)備被盜用。除此之外STM32通過常用RS485通信接口擴展更多的工業(yè)設(shè)備,軟件部分通過移植UCOS的操作系統(tǒng)來實現(xiàn)多任務(wù)管理功能,從而更能保證多信號之間的無干擾通信。
圖1 工業(yè)多信息網(wǎng)絡(luò)交換系統(tǒng)
在設(shè)計網(wǎng)絡(luò)信息交換系統(tǒng)中,既有關(guān)于網(wǎng)關(guān)和協(xié)議的硬件架構(gòu),整體網(wǎng)絡(luò)系統(tǒng)網(wǎng)關(guān)硬件是用來保證ERTEC200P與系統(tǒng)進行數(shù)據(jù)交換協(xié)議的主站系統(tǒng),可以通過以太網(wǎng)接口和PROFINET控制器的I/O口連接[5],也可以通過Modbus協(xié)議把擴展板定義為從站通過11路GPIO與主站進行硬件連接。針對拓展板開發(fā)的硬件電路主要是設(shè)計硬件接口,包括RS485接口、UART接口、CAN接口和以太網(wǎng)接口。
PROFINET網(wǎng)絡(luò)中把被控系統(tǒng)的I/O控制器定義為協(xié)議主站,而把使用的200P硬件電路板設(shè)計為協(xié)議從站?;贛odbus的網(wǎng)絡(luò)中擴展板作為協(xié)議主站設(shè)備,而從站只要是支持RS485接口的工業(yè)設(shè)備都可以接入到系統(tǒng)中。
如圖2所示,以此介紹信號傳遞過程,當(dāng)PLC或同類控制器通過工業(yè)網(wǎng)絡(luò)接口發(fā)送連接請求到ENTEC200P開發(fā)板中,當(dāng)?shù)玫綇恼镜幕貞?yīng)后系統(tǒng)開始在兩個設(shè)備之間建立通信聯(lián)系[6]。當(dāng)工業(yè)應(yīng)用中的控制器把協(xié)議數(shù)據(jù)包傳輸?shù)綇恼緯r,從站對傳輸過來的信息進行協(xié)議解析并存儲到內(nèi)存中,并把一部分解析包反饋給主站后再對另一從站進行控制數(shù)據(jù)和協(xié)議數(shù)據(jù)包的發(fā)送。如圖2所示2個電路板之間通信一共用到了11路I/O口,其中8路用來傳輸MODBUS協(xié)議數(shù)據(jù)和地址信號,另外3路分別作為讀入讀出信號的使能引腳和傳輸?shù)刂返倪x擇引腳。同理串口主從站之間的通信過程也類似。
圖2 主從站I/O引腳連接示意圖
在工業(yè)強干擾環(huán)境下由于232單端特性其傳輸距離非常近,對于站點較遠、速度要求較高場合RS232并不是最好的選擇[7]。RS485接口采用平衡驅(qū)動器和差分接收器的組合,具有接口簡單、組網(wǎng)方便、傳輸距離遠等優(yōu)點,數(shù)據(jù)傳輸速率能達到10 Mbit/s,因此使用抗擾動效果更好的RS485模塊實現(xiàn)主單片機與遠端站點MCGS觸摸屏的數(shù)據(jù)通信,這樣能夠保證從站設(shè)備信息顯示和反饋信號的實時性。圖3為RS485接口電路,電路采用兼容3.3 V邏輯電平的 MAX485(ESA)芯片。
圖3 RS485通信硬件電路設(shè)計
其中芯片的傳輸信號主要由STM32提供串口通信開始和結(jié)束的TTL電平信號,包括數(shù)據(jù)傳輸信號、起始位等,在MCU與通信電路之間加入了一個高速光耦電路進行隔離來保證信號更加可靠。串口采用差分的形式,差分電壓設(shè)置在-5~+5 V之間,接收信號靈敏度為0.1 V左右,而且選用MAX485芯片可以防止高壓靜電放電的沖擊??紤]到工業(yè)應(yīng)用環(huán)境非常復(fù)雜,為了增強線路阻抗特性匹配并防止芯片被擊穿采用2個20 Ω電阻來提高電路實用性。
CAN通信是一種串行的通信協(xié)議,其一開始被應(yīng)用到汽車電子行業(yè)中,由于成本低且可靠性高,CAN通信協(xié)議已經(jīng)被汽車行業(yè)作為標準協(xié)議[8]。隨著工業(yè)信息發(fā)展,現(xiàn)場總線已經(jīng)成為目前工業(yè)中的熱點,CAN總線作為局域網(wǎng)已經(jīng)被各大工業(yè)公司接受并應(yīng)用,硬件設(shè)計電路如圖4所示。
圖4 CAN通信硬件電路
CAN電路主要有2個部分。一個是MCU和芯片之間的高速信號轉(zhuǎn)換電路采用6N137,其 VE使能引腳接高電平或者懸空,將分別產(chǎn)生正邏輯和負邏輯,此處使用正邏輯控制。為了更好地適應(yīng)工業(yè)環(huán)境,在電源引腳處接入一個0.1 μF去耦電容,在顯示電路部分接入限流電阻,另外采用上拉電阻R55來提高驅(qū)動能力。另一個就是CAN總線與處理器的連接,首先使用2個高速光耦實現(xiàn)光信號轉(zhuǎn)化來減少電路中的高頻噪聲,VP230可以實現(xiàn)穩(wěn)定的電平轉(zhuǎn)換,在信號輸入側(cè)接入2個22 Ω電阻用來完成信號路線的阻抗匹配。
在通訊電路板中運行著2個通訊程序,一個是200p電路的eCos系統(tǒng)[9],另一個是STM32電路的uCos系統(tǒng),這2個系統(tǒng)都處于軟件架構(gòu)中的頂層設(shè)計,即通過移植操作系統(tǒng)才能發(fā)揮芯片最大的多信息網(wǎng)絡(luò)交換。第二層主要是確認系統(tǒng)的應(yīng)用程序可以正常讀取協(xié)議之間的協(xié)議寄存器,并通過通訊設(shè)置向電路之間讀取或者寫入數(shù)據(jù)。第三層應(yīng)用層即向用戶展示函數(shù)封裝和調(diào)用。本文主要針對第二和第三層進行設(shè)計包括協(xié)議層面的內(nèi)容。
在標準協(xié)議中所有網(wǎng)絡(luò)節(jié)點都需要通過依靠識別機器碼地址來區(qū)分設(shè)備,即每個設(shè)備都有一個自己的名字,而在PROFINET中采用的是給每個設(shè)備定義一個專用地址,在這個網(wǎng)絡(luò)中可以隨時呼叫來識別網(wǎng)絡(luò)中的節(jié)點。
在操作系統(tǒng)和協(xié)議寄存器之間需要有一個適應(yīng)層,可以實現(xiàn)隔離系統(tǒng)的調(diào)用從而保護操作系統(tǒng)。此軟件設(shè)計的主要目的除了應(yīng)用到工業(yè)網(wǎng)絡(luò)中,另一個重要目的就是使PROFINET和Modbus協(xié)議實現(xiàn)無縫信號傳輸,基于PNPB層主要是做用戶開發(fā)使用,在信息交換過程中RS485支持半雙工[10],而PROFINET支持全雙工,因此設(shè)計的軟件網(wǎng)關(guān)可以實現(xiàn)半雙工數(shù)據(jù)交換。
Modbus-RTU數(shù)據(jù)傳輸模式的幀格式包括地址、功能代碼、數(shù)據(jù)和差錯校驗4部分,如表1所示。
表1 Modbus-RTU幀格式
其中地址為8位數(shù),主設(shè)備和子設(shè)備的通訊主要通過內(nèi)部寄存器的地址與來進行設(shè)備的選取,設(shè)備之間的響應(yīng)和回應(yīng)主要通過設(shè)備中的地址域數(shù)據(jù)進行呼應(yīng)。
功能代碼占一個字節(jié)為8位,其中序號代表了設(shè)備要進行的動作[11]。通過讀取寄存器的狀態(tài)判斷設(shè)備的狀態(tài)和程序運行,Modbus協(xié)議規(guī)定的常見功能碼,作用及其數(shù)據(jù)類型如表2所示。
表2 數(shù)據(jù)幀定義
數(shù)據(jù)占0~252字節(jié)可為N x 8位,由RTU字符組成。差錯校驗占2個字節(jié)為16位,在RTU模式中對整個報文的傳輸信號進行CRC校驗。
Modbus-RTU數(shù)據(jù)傳輸模式的消息幀沒有明確的起始幀和結(jié)束幀,協(xié)議發(fā)送有自己的命名格式包括開始幀和結(jié)束幀的定義范圍,通過校驗傳送數(shù)據(jù)幀尾判斷發(fā)送數(shù)據(jù)的正確性。數(shù)據(jù)傳送時間必須按要求嚴格控制即波特率的設(shè)置,時間間隔示意圖如圖5所示。
圖5 Modbus-RTU幀間隔示意圖
利用上述方法,Modbus-RTU幀被重新構(gòu)造為有起始和結(jié)束標志的新數(shù)據(jù)幀,重構(gòu)后的Modbus-RTU幀格式如表3所示。
表3 重構(gòu)后Modbus-RTU幀格式
信號測試方式比較抽象,很難通過系統(tǒng)的測試來確定信息交換流,因此通過2個方面驗證系統(tǒng),一是通過測試系統(tǒng)的傳輸信號的錯誤率,二是直接觀察協(xié)議寄存器內(nèi)的數(shù)據(jù)狀態(tài)。圖6為PROFINET與Modbus通信站。
圖6 PROFINET與Modbus通信站
通過把PLC與交換系統(tǒng)連接后進行測試,工控網(wǎng)關(guān)中數(shù)據(jù)誤碼率測試結(jié)果如表4所示。把基于工業(yè)以太網(wǎng)的波特率設(shè)定為100 Mbit/s,PLC刷新時間設(shè)定為1 s,通過測試發(fā)現(xiàn)系統(tǒng)確實處于半雙工方式,當(dāng)速率繼續(xù)上升時系統(tǒng)就開始出現(xiàn)錯誤。
表4 PROFINET網(wǎng)關(guān)數(shù)據(jù)誤碼率測試結(jié)果
在系統(tǒng)上電后把協(xié)議全部配置完成,讓電路屬于正常工作狀態(tài)時,通過在線調(diào)試JTAG接口把系統(tǒng)與PC機相連。在系統(tǒng)處于正常工作時讀取Modbus的信息寄存器,不僅能看到采集卡的網(wǎng)絡(luò)名稱,還能通過系統(tǒng)采樣率等信息,驗證發(fā)現(xiàn)系統(tǒng)可以實現(xiàn)穩(wěn)定的數(shù)據(jù)交換。圖7為PROFINET與Modbus通信站的數(shù)據(jù)交換。
圖7 PROFINET與Modbus通信站的數(shù)據(jù)交換
本文通過雙CPU的嵌入應(yīng)用系統(tǒng),把PROFINET與常用工業(yè)網(wǎng)絡(luò)連接在一起。設(shè)計工業(yè)網(wǎng)絡(luò)的硬件接口電路,對工業(yè)設(shè)備常用的工業(yè)協(xié)議進行改造來增強通信系統(tǒng)的可靠性,并把設(shè)計電路融入到工業(yè)信息交換系統(tǒng)中輔以高效的操作系統(tǒng)實現(xiàn)多信號的可靠傳輸。實驗證明此系統(tǒng)可以實現(xiàn)多種工業(yè)信息網(wǎng)絡(luò)的數(shù)據(jù)交換,并且能高效可靠地保證多種工業(yè)設(shè)備的實時交互。