黃昊
摘 要:在傳統(tǒng)工業(yè)實(shí)時(shí)通信模塊的設(shè)計(jì)中,采用的多是PLC編程的方式,以CAN總線作為擴(kuò)展總線,其通信速率無(wú)法滿足工業(yè)現(xiàn)場(chǎng)大型應(yīng)用場(chǎng)合的需求,影響了信息的有效穿在。對(duì)于這種情況,本文提出了一種基于FPGA的工業(yè)實(shí)時(shí)以太網(wǎng)通信模塊,立足標(biāo)準(zhǔn)以太網(wǎng),通過(guò)定時(shí)器實(shí)現(xiàn)PLC主從站之間通信的周期性,可以顯著提升通信速率。
關(guān)鍵詞:FPGA;工業(yè)實(shí)時(shí)通信模塊;設(shè)計(jì)
中圖分類(lèi)號(hào):TP202 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8937(2016)32-0066-02
1 概 述
在當(dāng)前的技術(shù)條件下,PLC內(nèi)部通信采用的多是分層結(jié)構(gòu),將通信分為不同插箱之間的通信以及插箱內(nèi)部各個(gè)模塊之間的通信,而傳統(tǒng)PLC采用的是單層通信模式,在不同插箱之間利用CAN總線實(shí)現(xiàn)串聯(lián)通信,不僅通信距離短,而且通信的速率不高,通常僅能達(dá)到500 Kbps,在這種情況下,系統(tǒng)掃描一個(gè)模件所需的時(shí)間約為1.6 ms,信息傳輸存在著很大的滯后性。如果利用通訊速率100 Mbps的工業(yè)實(shí)時(shí)以太網(wǎng),在同等條件下,完成所有模件掃描的時(shí)間也僅需0.8 ms,通信速率得到了極大的提升。因此,針對(duì)當(dāng)前CAN總線通信效率低下的問(wèn)題,可以結(jié)合FPGA技術(shù),將其升級(jí)為工業(yè)實(shí)時(shí)以太網(wǎng),在提升通信速率的同時(shí),滿足工業(yè)現(xiàn)場(chǎng)的各種復(fù)雜需求。
2 基于FPGA的工業(yè)實(shí)時(shí)通信模塊設(shè)計(jì)
FPGA,全稱(chēng)Field Programmable Gate Array,即現(xiàn)場(chǎng)可編程邏輯門(mén)陣列,屬于一種比較特殊的半導(dǎo)體,在其中含有可以根據(jù)用戶需求進(jìn)行編輯的元件,其在程序編輯方面具有設(shè)計(jì)周期短,便捷方便,修改簡(jiǎn)單等特點(diǎn)。在實(shí)際應(yīng)用中,F(xiàn)PGA相比較ASIC(專(zhuān)用集成短路)的響應(yīng)速度要慢,實(shí)現(xiàn)同樣的功能也需要更大的面積,不過(guò)其同樣具有非常顯著的優(yōu)勢(shì),如能夠?qū)崿F(xiàn)快速成品,成本更加低廉,可以對(duì)程序中存在的錯(cuò)誤進(jìn)行改正等??紤]到通信接口模塊本身的連接的受控模塊較多,其各自的接口形式和通信協(xié)議存在著一定的區(qū)別,加上部分?jǐn)?shù)據(jù)對(duì)于通信延時(shí)有著較高的要求,可以采用具備較強(qiáng)靈活性的FPGA技術(shù),進(jìn)行工業(yè)實(shí)時(shí)以太網(wǎng)通信模塊的設(shè)計(jì),需要從硬件和軟件兩個(gè)方面進(jìn)行考慮[1]。
2.1 硬件結(jié)構(gòu)
主控芯片選擇Xilinx公司的Spartan-6XC6SLX45 FPGA,外部存儲(chǔ)器選擇DDR3 SRAM芯片MT41J64M16LA-187EIT以及Flash芯片25P64V6P。在網(wǎng)路芯片的選擇種,采用了100M單物理層芯片的方案,選擇PHY芯片DP8363SQ,以IP core在FPGA內(nèi)部實(shí)現(xiàn)Ethernet MAC,與PHY芯片通過(guò)RMII接口連接在一起。
這里的Microblaze是基于Xilinx公司FPGA的微處理器IP核,采用RISC架構(gòu)以及哈佛結(jié)構(gòu)的32位指令及數(shù)據(jù)總線,能夠?qū)Υ鎯?chǔ)在片上存儲(chǔ)器和外部存儲(chǔ)器中的程序進(jìn)行全速執(zhí)行,同時(shí)對(duì)其中的數(shù)據(jù)進(jìn)行訪問(wèn)。系統(tǒng)CPU設(shè)置有大量的外部設(shè)備,如SRAM、Flash、MAC等,系統(tǒng)為每一個(gè)設(shè)備分配了獨(dú)有的地質(zhì),CPU對(duì)于各個(gè)設(shè)備的訪問(wèn)可以看做是相應(yīng)地址的操作過(guò)程。
以太網(wǎng)IP core AXI Ethernet Lite MAC支持IEEE802.3標(biāo)準(zhǔn),可以結(jié)合簡(jiǎn)化媒體獨(dú)立結(jié)構(gòu),與工業(yè)標(biāo)準(zhǔn)PHY芯片連接,通過(guò)AXI4-Lite以及Microblaze實(shí)現(xiàn)相互之間的信息傳遞,支持10M乃至100 M的以太網(wǎng)通訊速率。IP核采用同步設(shè)計(jì),為了確保以太網(wǎng)的通信速率能夠達(dá)到最大的100 Mbps,系統(tǒng)時(shí)鐘頻率設(shè)置為50 Mbps。本系統(tǒng)硬件平臺(tái)的搭設(shè)以及軟件應(yīng)用程序的開(kāi)發(fā)都是在嵌入式軟件開(kāi)發(fā)工具EDK中實(shí)現(xiàn)的,硬件平臺(tái)的搭設(shè)環(huán)境為XPS,軟件程度的開(kāi)發(fā)環(huán)境為SDK。
2.2 軟件設(shè)計(jì)
2.2.1 數(shù)據(jù)接收與發(fā)送
在通信模塊中,軟件設(shè)計(jì)主要是實(shí)現(xiàn)PHY芯片的初始化,確保其能夠?qū)σ蕴W(wǎng)接收中斷處理函數(shù)進(jìn)行定義,同時(shí)以實(shí)現(xiàn)以太網(wǎng)接收中斷的初始化。初始化主要是針對(duì)以太網(wǎng)MAC數(shù)據(jù)幀而言,在IEEE802.3標(biāo)準(zhǔn)中,數(shù)據(jù)包的格式類(lèi)型,如圖1所示。
在系統(tǒng)中,以太網(wǎng)接收數(shù)據(jù)端為PHY_dv,在程序運(yùn)行時(shí),會(huì)首先判斷PHY_dv是否置1,如果置1則可以進(jìn)行數(shù)據(jù)幀的接收,接收完成后,MAC會(huì)自動(dòng)進(jìn)行自身目的地地址與數(shù)據(jù)幀目的地地址的對(duì)比,如果無(wú)法匹配,則地址無(wú)效,會(huì)將接收到的數(shù)據(jù)全部丟失,重新接收;如果匹配,MAC會(huì)針對(duì)數(shù)據(jù)幀進(jìn)行CRC計(jì)算,并且繼續(xù)與接收到的數(shù)據(jù)幀的幀校驗(yàn)序列FCS中的CRC進(jìn)行比對(duì),若匹配,完成數(shù)據(jù)接收,若不匹配,表明FCS錯(cuò)誤,重新接收數(shù)據(jù)[2]。
MAC對(duì)于數(shù)據(jù)幀的發(fā)送主要是依照以太網(wǎng)CSMA/CD技術(shù)。
2.2.2 周期同步處理
在標(biāo)準(zhǔn)以太網(wǎng)中,數(shù)據(jù)發(fā)送采用的是CSMA/CD技術(shù),當(dāng)網(wǎng)絡(luò)負(fù)荷不高時(shí),很少發(fā)生沖突,基本上能夠滿足對(duì)于通信實(shí)時(shí)性的要求。但是,在工業(yè)現(xiàn)場(chǎng),具有容量巨大、傳輸速率快、IO點(diǎn)眾多的特點(diǎn),網(wǎng)絡(luò)的負(fù)荷通常都比較重,容易發(fā)生沖突問(wèn)題,從而造成網(wǎng)絡(luò)性能的下降。考慮到?jīng)_突和處理的隨機(jī)性以及網(wǎng)絡(luò)通信延時(shí)的不確定性,想要保證通信的實(shí)時(shí)性非常困難。
因此,在通信模塊的設(shè)計(jì)中,將定時(shí)器定義在頂層應(yīng)用程序,從主站定期向從站發(fā)送數(shù)據(jù),從站在接收到數(shù)據(jù)后,立即向主站回發(fā)數(shù)據(jù)。如果主站在向從站發(fā)送數(shù)據(jù)局后,在設(shè)定好的時(shí)間內(nèi)沒(méi)有接收到從站回發(fā)的數(shù)據(jù),則此次數(shù)據(jù)發(fā)送失敗,產(chǎn)生錯(cuò)誤,主站會(huì)在將錯(cuò)誤的計(jì)數(shù)器加8后,繼續(xù)進(jìn)行下一個(gè)節(jié)點(diǎn)的數(shù)據(jù)傳輸、如果其中一個(gè)從站出現(xiàn)連續(xù)數(shù)據(jù)發(fā)送錯(cuò)誤,在不斷的累計(jì)錯(cuò)誤會(huì)移出,主站就可以判定從站斷線,發(fā)送相應(yīng)的警報(bào)信息,通知工作人員進(jìn)行處理。
2.2.3 以太網(wǎng)收發(fā)測(cè)試
以太網(wǎng)數(shù)據(jù)幀是以一種字節(jié)增序的方式存儲(chǔ)在TX buffer中,AXI Ethernet Lite MAC接受到的以太網(wǎng)數(shù)據(jù)幀同樣會(huì)以增序的方式存儲(chǔ)其中。數(shù)據(jù)發(fā)送的主要程序如下:
int main()
{
Initialize();
u32 i;
while(1)
{
for(i=0;i<1000;i++)
{
EmacRegisterWrite(0x07fc,0x01);
while(EmacRegisterRead(0x07fc)﹠(0x01)){}
}
}
return 0;
}
寄存器0x07FC是發(fā)送控制寄存器,上述程序中的EmacRegisterWrite(0x07fc,0x01)所表述的韓式是對(duì)0x07FC的第0位置1進(jìn)行數(shù)據(jù)的發(fā)送,數(shù)據(jù)幀發(fā)送完成后,該位會(huì)自動(dòng)置1。0x07FC在不同位的功能,見(jiàn)表1。
在程序中,對(duì)于MAC寄存器寫(xiě)入數(shù)據(jù)0a0a0a……即需要通過(guò)以太網(wǎng)發(fā)送的數(shù)據(jù),可以對(duì)其進(jìn)行任意賦值。這里將其賦值為1 038,包含了數(shù)據(jù)幀的頭尾,實(shí)際數(shù)據(jù)長(zhǎng)度為1 024.在程序中,對(duì)于目標(biāo)地址的賦值為ff-ff-ff-ff-ff-ff-ff,源地址賦值00-00-5E-00-00-00。在FPGA中下載程序,結(jié)合wireshark抓包工具,就可以對(duì)發(fā)出的數(shù)據(jù)幀進(jìn)行查看。
當(dāng)PHY接收到一個(gè)數(shù)據(jù)幀后,會(huì)立即回發(fā)五幀數(shù)據(jù),這里的寄存器0x17FC即為接收控制寄存器,其在不同位的功能如下:
0位即狀態(tài)位,0-接收寄存器就緒,1-數(shù)據(jù)正在接收,接收完成自動(dòng)清零;1-2位屬于保留位,對(duì)接收的信息進(jìn)行保留;3位為中斷使能,0-禁止接收中斷,1-允許接收中斷;4-31位同樣為保留位。
對(duì)程序進(jìn)行編輯制定,同樣結(jié)合wireshark抓包工具,可以看到接收一幀數(shù)據(jù)同時(shí)回發(fā)五幀數(shù)據(jù)的過(guò)程[3]。
3 結(jié) 語(yǔ)
綜上所述,本文基于FPGA,針對(duì)工業(yè)實(shí)時(shí)以太網(wǎng)通信模塊進(jìn)行了設(shè)計(jì)和開(kāi)發(fā),利用以太網(wǎng)通信來(lái)取代傳統(tǒng)PLC中的擴(kuò)展總線CAN網(wǎng),能夠極大的提升PLC的通信速率,滿足工業(yè)現(xiàn)場(chǎng)對(duì)于通信實(shí)時(shí)性的需求。經(jīng)過(guò)測(cè)試,本文提出的方案具有良好的實(shí)踐效果。
參考文獻(xiàn):
[1] 張偉.基于FPGA的通信接口模塊設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2012,25(7):
95-98.
[2] 王琦,徐潔,彭文才,等.基于FPGA的工業(yè)實(shí)時(shí)以太網(wǎng)通信模塊設(shè)計(jì)[J].
水電自動(dòng)化與大壩監(jiān)測(cè),2014,38(5):62-66.
[3] 賀永鵬,張向前,張凱,等.一種基于FPGA的嵌入式實(shí)時(shí)以太網(wǎng)[J].電氣 傳動(dòng),2015,45(7):70-73.