一種基于FPGA的EtherCAT主站裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本實(shí)用新型屬于工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線通信領(lǐng)域,具體涉及一種基于FPGA的EtherCAT主站裝置。
【背景技術(shù)】
[0002]隨著電子和通信技術(shù)的進(jìn)步,工業(yè)自動(dòng)化控制由傳統(tǒng)的點(diǎn)對(duì)點(diǎn)的集中控制模式逐漸轉(zhuǎn)變?yōu)榛诰W(wǎng)絡(luò)化的現(xiàn)場(chǎng)總線通信控制模式。現(xiàn)場(chǎng)總線控制系統(tǒng)將工業(yè)現(xiàn)場(chǎng)的控制、監(jiān)測(cè)等設(shè)備通過串行信號(hào)的方式集成在一個(gè)通信網(wǎng)絡(luò)中,具有全數(shù)字、雙向和串行多節(jié)點(diǎn)等優(yōu)點(diǎn)?;诠I(yè)以太網(wǎng)的現(xiàn)場(chǎng)總線通信系統(tǒng)可以實(shí)現(xiàn)百兆以太網(wǎng)的高速、低抖動(dòng)的控制,廣泛應(yīng)用于各種高速高精度的運(yùn)動(dòng)控制系統(tǒng)當(dāng)中。
[0003]EtherCAT是一種基于工業(yè)以太網(wǎng)的現(xiàn)場(chǎng)總線通信協(xié)議,因其廣泛的適用性、刷新周期短和同步性能好等優(yōu)點(diǎn),已在各類控制系統(tǒng)中得到了廣泛的認(rèn)可和應(yīng)用。
[0004]專利文獻(xiàn)CN201310344639.7公開了一種基于Linux的EtherCAT主/從站控制系統(tǒng)及方法,其EtherCAT主站采用帶有網(wǎng)卡的Intel X86硬件平臺(tái),用于將相關(guān)控制指令發(fā)送給EtherCAT主站模塊,然后編碼為EtherCAT報(bào)文后由以太網(wǎng)口發(fā)送以實(shí)現(xiàn)數(shù)控系統(tǒng)的控制運(yùn)算任務(wù)。
[0005]專利文獻(xiàn)201310542835.5公開了一種基于EtherCAT網(wǎng)絡(luò)的監(jiān)控系統(tǒng),其采用PC機(jī)作為主站,與多個(gè)從站串聯(lián)組成一個(gè)網(wǎng)絡(luò),用于實(shí)現(xiàn)遠(yuǎn)距離情況下對(duì)所視環(huán)境的監(jiān)控及執(zhí)行機(jī)構(gòu)的遠(yuǎn)程控制操作。
[0006]專利文獻(xiàn)201310385168.4公開了一種EtherCAT現(xiàn)場(chǎng)總線的信息智能終端系統(tǒng),包括EtherCAT主站和具有EtherCAT總線接口的信息智能終端,能直接采集、傳遞與監(jiān)控車間生產(chǎn)信息。
[0007]現(xiàn)有的EtherCAT主站的實(shí)現(xiàn)方案大部分是采用倍福公司在Windows操作系統(tǒng)下基于PC機(jī)的解決方案,當(dāng)然也有基于Linux操作系統(tǒng)和Android操作系統(tǒng)的嵌入式解決方案。其硬件方案絕大部分采用處理器CPU外擴(kuò)網(wǎng)卡的芯片的通用體系架構(gòu),CPU用來分別處理EtherCAT協(xié)議的數(shù)據(jù)鏈路層和應(yīng)用層。但是現(xiàn)有的這種EtherCAT主站實(shí)現(xiàn)方案利用CPU和網(wǎng)卡配合來處理數(shù)據(jù)幀的收發(fā)操作,降低了數(shù)據(jù)幀收發(fā)的穩(wěn)定性,同時(shí)網(wǎng)卡單緩存的操作模式也降低了數(shù)據(jù)收發(fā)的效率,造成了應(yīng)用于工業(yè)環(huán)境的穩(wěn)定性問題和效率問題;其次,這種主站方案的EtherCAT主站不能廣泛地兼容各種操作系統(tǒng),移植難度較大,造成了平臺(tái)資源的兼容性問題;最后,對(duì)于實(shí)時(shí)性要求嚴(yán)格的控制系統(tǒng),利用軟件中斷確保實(shí)時(shí)并不能滿足工業(yè)要求,造成了實(shí)時(shí)性的丟失,不利于高精度的實(shí)時(shí)控制系統(tǒng)。
【實(shí)用新型內(nèi)容】
[0008]針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本實(shí)用新型目的在于提出一種基于FPGA的EtherCAT主站實(shí)現(xiàn)裝置,其通過利用FPGA并行處理和硬件實(shí)現(xiàn)特性,基于硬件實(shí)現(xiàn)EtherCAT協(xié)議,實(shí)現(xiàn)了高效率和高穩(wěn)定性的EtherCAT協(xié)議處理,同時(shí)基于FPGA實(shí)現(xiàn)的通信裝置還分別集成了 PCI接口和ARM接口,可以方便地兼容不同的操作系統(tǒng)平臺(tái)。
[0009]為實(shí)現(xiàn)上述目的,本實(shí)用新型采用的具體技術(shù)方案如下:
[0010]一種基于FPGA的EtherCAT主站實(shí)現(xiàn)方法及裝置,其通過利用FPGA的硬件特性和并行處理特性處理EtherCAT協(xié)議的數(shù)據(jù)鏈路層和應(yīng)用層,從而實(shí)現(xiàn)在FPGA上集成EtherCAT的通信功能,并靈活地接入不同種類的CPU操作系統(tǒng)中集成具有EtherCAT工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線通信接口的功能,其特征在于,
[0011]該裝置包括PCI/ARM擴(kuò)展接口、FPGA模塊、PHY芯片、網(wǎng)絡(luò)隔離變壓器和EtherCAT總線接口 RJ45,其中,
[0012]所述FPGA模塊分別與所述擴(kuò)展接口模塊和PHY芯片連接,其通過所述擴(kuò)展接口模塊接收CPU傳送給FPGA模塊的數(shù)據(jù),并通過其內(nèi)部的EtherCAT協(xié)議驅(qū)動(dòng)模塊將CPU的指令數(shù)據(jù)按照EtherCAT協(xié)議進(jìn)行封裝和調(diào)度,組成EtherCAT數(shù)據(jù)幀在FPGA模塊內(nèi)通過數(shù)據(jù)幀發(fā)送模塊發(fā)送給PHY芯片;所述PHY芯片與網(wǎng)絡(luò)隔離變壓器連接,網(wǎng)絡(luò)隔離變壓器通過EtherCAT總線接口 RJ45與對(duì)應(yīng)的從站連接,所述PHY芯片用于將接收到的EtherCAT數(shù)據(jù)幀轉(zhuǎn)換為差分信號(hào),并通過網(wǎng)絡(luò)隔離變壓器后將其發(fā)送至EtherCAT網(wǎng)絡(luò)之中,并利用所述EtherCAT總線接口 RJ45輸入各從站;各個(gè)從站收到EtherCAT數(shù)據(jù)幀后進(jìn)行相應(yīng)的處理后返回主站,在經(jīng)過網(wǎng)絡(luò)隔離變壓器和PHY芯片后,進(jìn)入到FPGA模塊中,在該FPGA模塊中數(shù)據(jù)幀被解析,以供CPU進(jìn)行讀取狀態(tài)和反饋數(shù)據(jù)。
[0013]作為本實(shí)用新型的改進(jìn),所述FPGA模塊包括CPU接口選擇操作模塊、CPU應(yīng)用程序操作接口、EtherCAT協(xié)議驅(qū)動(dòng)模塊、數(shù)據(jù)幀收發(fā)操作接口、數(shù)據(jù)幀收發(fā)及驗(yàn)算模塊和PHY芯片收發(fā)數(shù)據(jù)接口;其中,所述CPU接口選擇操作模塊與CPU相連,為CPU操作CPU應(yīng)用程序操作接口提供交互通道;所述CPU應(yīng)用程序操作接口可同時(shí)供CPU和EtherCAT協(xié)議驅(qū)動(dòng)模塊進(jìn)行讀寫訪問,作為CPU與所述FPGA模塊交互信息的操作接口 ;所述EtherCAT協(xié)議驅(qū)動(dòng)模塊為EtherCAT應(yīng)用程序處理核心,用于響應(yīng)CPU應(yīng)用程序操作接口的指令及有效數(shù)據(jù),完成對(duì)相應(yīng)的指令數(shù)據(jù)按照EtherCAT標(biāo)準(zhǔn)協(xié)議進(jìn)行調(diào)度、組幀和解幀的過程,實(shí)現(xiàn)數(shù)據(jù)幀與CPU應(yīng)用程序操作接口的數(shù)據(jù)交互功能;所述數(shù)據(jù)幀收發(fā)操作接口用于接收來自EtherCAT協(xié)議驅(qū)動(dòng)模塊的組幀數(shù)據(jù)幀,同時(shí)也可以接收來自數(shù)據(jù)幀收發(fā)及驗(yàn)算模塊從網(wǎng)絡(luò)中接收到的數(shù)據(jù)幀;所述數(shù)據(jù)幀收發(fā)及驗(yàn)算模塊將數(shù)據(jù)幀收發(fā)操作接口中的發(fā)送緩沖區(qū)有效數(shù)據(jù)按照網(wǎng)絡(luò)通信協(xié)議依次發(fā)送出去,并同時(shí)計(jì)算本幀數(shù)據(jù)的CRC32驗(yàn)算值,接收數(shù)據(jù)幀在同時(shí)寫入數(shù)據(jù)幀收發(fā)操作接口的同時(shí)計(jì)算CRC32驗(yàn)算值,并與幀尾CRC32進(jìn)行比較來判定數(shù)據(jù)幀的有效性;所述PHY芯片收發(fā)數(shù)據(jù)接口與PHY芯片進(jìn)行數(shù)據(jù)交互,完成數(shù)據(jù)流之間的交互。
[0014]作為本實(shí)用新型的改進(jìn),所述應(yīng)用程序操作接口包括控制指令數(shù)據(jù)緩存區(qū)、狀態(tài)反饋數(shù)據(jù)緩存區(qū)和過程數(shù)據(jù)緩存區(qū),其中,所述控制指令數(shù)據(jù)緩存區(qū)是CPU往應(yīng)用程序接口寫入的指令配置數(shù)據(jù),包括控制數(shù)據(jù)和中斷設(shè)置指令;所述狀態(tài)反饋數(shù)據(jù)緩存區(qū)是CPU讀取應(yīng)用程序接口狀態(tài)的數(shù)據(jù)緩存區(qū),狀態(tài)數(shù)據(jù)緩存區(qū)反映的是EtherCAT網(wǎng)絡(luò)對(duì)CPU寫入指令的命令狀態(tài)響應(yīng)情況,包括狀態(tài)機(jī)信息、程序診斷信息和郵箱通信命令的反饋,同時(shí)所述狀態(tài)反饋數(shù)據(jù)緩存區(qū)還包括丟包數(shù)反饋、指令錯(cuò)誤反饋和診斷信息反饋等總線狀態(tài)的反饋;所述過程數(shù)據(jù)緩存區(qū)包括各個(gè)從站的實(shí)時(shí)指令數(shù)據(jù)和實(shí)時(shí)反饋數(shù)據(jù),其緩存區(qū)的更新周期由CPU設(shè)定的中斷周期來確定。
[0015]作為本實(shí)用新型的改進(jìn),所述控制數(shù)據(jù)用于完成非周期性的狀態(tài)機(jī)切換命令和郵箱通信服務(wù)命令的操作接口,所述中斷設(shè)置指令可以完成CPU對(duì)所述FPGA模塊2內(nèi)的中斷進(jìn)行設(shè)置和使能控制。
[0016]作為本實(shí)用新型的改進(jìn),所述數(shù)據(jù)幀收發(fā)操作接口包括配置數(shù)據(jù)幀發(fā)送緩存區(qū)、數(shù)據(jù)幀接收反饋緩存區(qū)和收發(fā)的數(shù)據(jù)幀緩存區(qū),其中,配置數(shù)據(jù)幀發(fā)送緩存區(qū)包括發(fā)送緩沖區(qū)使能控制寄存器、第一發(fā)送緩沖區(qū)發(fā)送長(zhǎng)度設(shè)置寄存器、第二發(fā)送緩沖區(qū)2發(fā)送長(zhǎng)度設(shè)置寄存器、定時(shí)發(fā)送周期設(shè)置寄存器、第一頁(yè)緩沖區(qū)重發(fā)次數(shù)設(shè)置寄存器和硬件中斷控制寄存器;所述數(shù)據(jù)幀接收反饋緩存區(qū)包括接收到有效數(shù)據(jù)幀更新寄存器、一個(gè)周期內(nèi)接收到的數(shù)據(jù)幀數(shù)寄存器、CRC32有效標(biāo)志位寄存器、數(shù)據(jù)幀中的CRC32中的低16位寄存器、計(jì)算所得的CRC32中的低16位狀態(tài)寄存器;所述收發(fā)的數(shù)據(jù)幀緩存區(qū)包括第一發(fā)送緩存區(qū)、第二發(fā)送緩存區(qū)、第一接收緩存區(qū)和第二接收緩存區(qū),其分別對(duì)應(yīng)周期性發(fā)送緩存區(qū)、非周期性發(fā)送緩存區(qū)、周期性接收緩存區(qū)和非周期性接收緩存區(qū)。
[0017]作為本實(shí)用新型的改進(jìn),所述EtherCAT協(xié)議驅(qū)動(dòng)模塊包括反饋數(shù)據(jù)幀處理模塊、周期性指令處理模塊、應(yīng)用程序命令響應(yīng)模塊、應(yīng)用程序命令處理模塊、生成數(shù)據(jù)幀命令模塊和控制收發(fā)數(shù)據(jù)幀寄存器啟動(dòng)數(shù)據(jù)幀發(fā)送模塊,其中,所述反饋數(shù)據(jù)幀處理模塊接收到CPU配置FPGA產(chǎn)生的中斷周期信號(hào)后,首先進(jìn)行上一周期返回周期性反饋數(shù)據(jù)的處理,然后根據(jù)接收寄存器的接收到的幀數(shù)來判斷是否有非周期性數(shù)據(jù)幀,如果有則處理相應(yīng)的非周期性反饋數(shù)據(jù);當(dāng)所述反饋數(shù)據(jù)幀處理模塊處理完反饋數(shù)據(jù)傳遞給應(yīng)用程序操作接口時(shí),利用FPGA并行處理的特性同時(shí)觸發(fā)所述周期性指令處理模塊和所述應(yīng)用程序命令響應(yīng)模塊,所述周期性指令處理模塊從所述應(yīng)用程序操作接口中的所述過程數(shù)據(jù)緩存區(qū)中取出有效數(shù)據(jù)并按照EtherCAT幀標(biāo)準(zhǔn)生產(chǎn)周期性過程數(shù)據(jù)幀,同時(shí)所述應(yīng)用程序命令響應(yīng)模塊從應(yīng)用程序操作接口中的緩存數(shù)據(jù)中檢查有無指令操作,如果有則進(jìn)行響應(yīng)模塊的觸發(fā)處理,進(jìn)而組成本周期的非周期性數(shù)據(jù)幀,如無則