程天亨,張舞杰
(華南理工大學 機械與汽車工程學院,廣州 510640)
在一些工業自動化流水線生產領域,為了滿足生產需求,需要使用工業相機甚至使用多臺工業相機進行數據測量。面對成像技術不斷發展和進步的新時期,相機分辨率高信息數據量較大,實時性和同步性需求高[1-2],多相機數據傳輸成為新時期迫切需要解決的問題。同時,隨著計算機技術和工業以太網技術的發展與融合,工業以太網由于其速度快、成本低、擴展性好、抗干擾性強等特點取得了廣泛的應用。國際上許多著名的工業自動化公司也相繼提出工業以太網新標準。德國Beckhoff公司提出的 EtherCAT(Ethernet for control automation technology),具有靈活的網絡拓撲結構、系統配置簡單、數據傳輸全雙工、高速高效、總線利用率較高等特點[3-5],可以有效地運用在多相機數據傳輸領域。
然而工業相機的數據接口協議與EtherCAT協議不兼容。為解決工業相機接入EtherCAT網絡系統的問題,在此,提出一種將具有實時采集相機圖像和圖像處理功能的工控機作為從站設備與主站相連的解決方案,并設計了一款基于FPGA和PCI接口的EtherCAT從站網卡,將工控機接收到的圖像原始數據或圖像處理后的數據傳輸到EtherCAT網絡中,實現與EtherCAT主站數據交互的功能。
EtherCAT從站網卡由微處理器、EtherCAT模塊以及網絡物理層模塊組成,其結構如圖1所示。其中,EtherCAT模塊由EtherCAT協議控制器組成,用于實現物理層與數據鏈路層。文中選用倍福公司ET1100作為EtherCAT協議控制器;微處理器由FPGA芯片實現,選用Altera公司Cyclone IV系列的EP4CE6F17C8;物理層網卡芯片采用KS8721BL。

圖1 EtherCAT從站網卡設計框架Fig.1 Design framework of EtherCAT slave network card
系統硬件包括FPGA與ET1100的PDI接口模塊、ET1100與以太網物理層PHY芯片的MII接口模塊和FPGA的PCI通信模塊。ET1100通過MII接口與以太網物理層芯片連接,再通過16位異步微處理的PDI接口與FPGA連接。從站網卡啟動后,接收到來自主站的報文數據,FPGA通過內部運行的狀態機與PCI和ET1100進行通信,完成工控機和主站的數據交互。
過程數據接口 PDI(process data interface)是實現從站控制器和應用之間的接口。ET1100支持3類過程數據接口,分別為數字量I/O,SPI從機、8/16位同步/異步微處理接口。PDI接口類型由寄存器0x0140—0x141進行配置[6]。在此使用16位異步微處理器接口與FPGA相連。
該總線接口使用復用的地址和數據總線,其ET1100和FPGA電路連接如圖2所示。

圖2 ET1100與FPGA硬件接口Fig.2 Hardware interface between ET1100 and FPGA
其工作原理為:當片選信號CS有效時,寫或者讀訪問開始。如果處于寫訪問,地址ADR和數據DATA隨著WR信號的下降沿而被置為有效值;寫訪問能通過WR信號或CS信號被置為無效。如果當前處于讀訪問時,地址ADR信號必須在RD信號的下降沿之前被置為有效值。讀出的數據會保持有效值直到ADR,RD或CS信號變化。
ET1100可提供4個物理通信端口,每個端口都支持MII接口和EBUS接口。MII接口以工業以太網網線作為傳輸介質,可以與工控機直接相連,傳輸距離遠,可有效傳輸100 m[7]。文中采用雙MII接口,其ET1100和PHY芯片電路連接如圖3所示。

圖3 ET1100與PHY芯片硬件接口Fig.3 Hardware interface between ET1100 and PHY chip
外設組件互連標準PCI(peripheral component interconnection),是由Intel公司1991年推出的用于局部總線的標準。PCI總線具有即插即用、中斷共享、高速數據傳輸等功能[8]。其FPGA和PCI總線的電路連接如圖4所示。

圖4 FPGA與PCI總線硬件接口Fig.4 Hardware interface between ET1100 and PCI bus
PCI總線接口控制器設計中用到的信號,按照功能,可分為系統信號、地址數據信號、接口控制信號、錯誤報告信號和中斷信號[9]。系統信號包括CLK和RST信號,提供系統時鐘和系統復位信號。AD引腳為地址和數據的復用引腳。
根據從站網卡設計框架,需要對微處理器FPGA進行模塊化、標準化的編程,其中包括對FPGA頂層模塊框架的結構化設計,并根據邏輯操作需求設計合理的狀態機,提高設計的通用性[10]。
在FPGA頂層模塊的設計中,首先設計接口模塊,使用FPGA提供的IP核構造PCI總線,用于實現讀寫PCI數據的功能。
在FPGA的程序開發中,由于PCI總線、PDI接口以及FPGA頂層狀態機處于3個不同的相互獨立的時鐘中,傳輸速率不匹配,會導致數據丟失的情況發生。為此引入異步FIFO技術,用于存儲、緩沖多個異步時鐘之間的數據傳輸,實現不同時鐘系統之間快速準確地傳輸實時數據[11-12]。使用FPGA提供的IP核,構造2個16位256雙字節大小的雙端口DPRAM模塊用于實現異步FIFO,分別取名為ET_RAM和PCI_RAM。ET_RAM用于存儲通過PDI接口從ET1100讀取到的數據,PCI_RAM用于存儲通過PCI總線讀取到的數據。
由于存在多個數據組合邏輯以及寄存器邏輯,在FPGA的頂層模塊中構建有限狀態機實現預期的數據交互等邏輯操作。最終設計FPGA頂層模塊框架如圖5所示。

圖5 FPGA頂層模塊設計框架Fig.5 FPGA top-level module design framework
通過狀態機不同狀態遷移實現的邏輯操作如下:讀取PCI總線數據并寫入到PCI_RAM中,從PCI_RAM中獲取數據通過PDI接口輸出;讀取PDI接口數據并寫入到ET_RAM中,從ET_RAM獲取數據通過PCI總線接口輸出。
狀態機是整個軟件設計中最核心的部分,各種控制、數據交換、命令都在狀態機的管理下進行[13]。狀態機一方面將存入FIFO數據結構中的PCI輸入信號通過PDI接口發送出去,另一方面將讀取PDI接口的輸入信號存入FIFO,使應用層用戶能夠順利的執行讀寫操作,完成數據交互。狀態機通過設置數據長度,對多字節數據進行連續的讀寫操作,極大程度地提高讀寫效率。
該狀態機共由13個狀態組成,采用異步復位方式,所有的狀態轉移都發生在時鐘上升沿。具體的控制流程如圖6所示。

圖6 FPGA狀態機Fig.6 FPGA state machine
Altera公司Quartus 16.1軟件中的SignalTapII在線邏輯分析儀,可以在線監視FPGA的數據引腳。Windriver是Jungo公司推出的一套設備驅動程序開發工具,可以對PCI總線進行配置和讀寫。Twin-CAT System Manager為倍福公司的總線配置工具,可以實現解析XML配置文件,管理從站狀態,實現主從站之間數據的傳輸[14]。
測試時,使用Windriver讀寫PCI總線數據,使用TwinCAT與從站網卡設備進行數據通信,使用邏輯分析儀監測FPGA狀態機與PCI和PDI模塊通信時是否正常運行。
首先使用Windriver工具識別PCI設備,再由TwinCAT識別從站設備并使其進入OP狀態。使用Windriver向PCI設備的0xA00地址寫入數據0x12342345。FPGA頂層模塊獲取到PCI數據0x12342345后,根據地址寫入PCI_RAM。觀察邏輯分析儀,當FPGA狀態機進入PRE_WRITE1狀態后,從PCI_RAM中根據地址獲取到1個雙字節數據0x2345;接著WR和CS引腳被置低,數據0x2345通過PDI接口寫入ET1100中,WR和CS恢復高電平,寫操作結束。數據長度為16個雙字節,故此處循環寫入16次。打開TwinCAT從站界面,正確讀取到從站0xA00地址輸出的數據0x12342345。
接著使用TwinCAT工具對地址0x800輸入0x56786789。當FPGA狀態機進入PRE_READ1狀態時,RD和CS引腳被置低,通過PDI接口讀取到ET1100地址輸出0x800,輸出數據0x6789,將此時的數據和地址值存入ET_RAM中,接著RD和CS恢復高電平,寫操作結束。數據長度為16個雙字節,此處循環讀取16次。頂層模塊會獲取ET_RAM相關數據并輸出到PCI總線中。在Windriver工具上正確讀取到0x800地址的數據值0x56786789,測試過程中FPGA狀態機邏輯分析儀讀寫階段的時序如圖7所示。觀察控制信號和數據信號變化,可以看出數據傳輸過程準確且快速。

圖7 FPGA狀態機讀寫階段的時序Fig.7 Timing of FPGA state machine reading and writing phase
為測試相機和工控機作為EtherCAT從站是否能正常工作,搭建了基于EtherCAT總線網絡的機械手流水線抓取系統。工業相機將抓取到的圖像數據通過千兆網卡傳輸到工控機端,經過圖像處理得到機器人坐標值,再通過PCI總線傳輸到從站網卡中,主站通過連接從站網卡和機器人驅動器,實現機器人對流水線目標物體的抓取。經過試驗測試,主站能正常接收到從站網卡發送的坐標值并控制機器人抓取目標物體。
在工控機上安裝Wireshark網絡數據包捕獲軟件,捕獲上述主從站通信過程中收發的EtherCAT數據幀并進行統計分析,數據幀發送到轉發的時間間隔為25 μs至幾μs之間。這個時間包括從站接收數據幀、從站處理數據幀、從站轉發數據幀的時間。可以看出該EtherCAT網絡的實時性能夠滿足設計需求。
作為一種工業實時以太網技術,EtherCAT因其高性能、高靈活性及完全開放性而引人注目。文中闡述了基于FPGA和PCI接口的EtherCAT從站網卡設計方案,并介紹了從站網卡軟硬件設計細節,為開發從站設備提供了有力的參考。使用具有EtherCAT從站功能的FPGA板卡,通過PCI接口將工控機作為具有圖像采集及圖像處理功能的從站模塊接入EtherCAT總線系統中,構建了一種工業相機和工控機融合的EtherCAT從站系統。該方案改變并拓寬了EtherCAT從站形式,通過試驗驗證了該設計從站能夠很好地工作。