CAN總線協(xié)議到EtherCAT從站協(xié)議的轉(zhuǎn)換網(wǎng)關(guān)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:本文通過(guò)對(duì)實(shí)時(shí)工業(yè)以太網(wǎng)通信協(xié)議EtherCAT的研究,設(shè)計(jì)了CAN總線主站協(xié)議轉(zhuǎn)換為EtherCAT從站協(xié)議的通信協(xié)議轉(zhuǎn)換網(wǎng)關(guān)設(shè)備,解決了工業(yè)自動(dòng)化現(xiàn)場(chǎng)CAN總線通信設(shè)備與EtherCAT主站控制系統(tǒng)的互連問(wèn)題,從而保證現(xiàn)場(chǎng)總線設(shè)備數(shù)據(jù)更加高效、快速地傳遞到中央監(jiān)控系統(tǒng)。
關(guān)鍵詞:EtherCAT從站;CAN總線;網(wǎng)關(guān);協(xié)議轉(zhuǎn)換
引言
隨著工業(yè)自動(dòng)化的發(fā)展,大量現(xiàn)場(chǎng)設(shè)備的信息傳遞不再采用模擬信號(hào)電纜傳送,而是替換為智能化現(xiàn)場(chǎng)設(shè)備,通過(guò)通信方式傳遞設(shè)備的狀態(tài)和控制信息。在這個(gè)過(guò)程中,現(xiàn)場(chǎng)總線設(shè)備得到了大量的應(yīng)用。而現(xiàn)場(chǎng)總線設(shè)備的多樣性,導(dǎo)致在一個(gè)大型的自動(dòng)化控制系統(tǒng)中設(shè)備的通信協(xié)議不同、通信速率不同、網(wǎng)絡(luò)拓?fù)湫问讲煌?,給中央監(jiān)控系統(tǒng)和這些現(xiàn)場(chǎng)設(shè)備之間的信息交互帶來(lái)困擾。
為了更好地解決控制系統(tǒng)內(nèi)自動(dòng)化數(shù)據(jù)傳輸及互連的問(wèn)題,部分國(guó)際自動(dòng)化系統(tǒng)廠家借助以太網(wǎng)現(xiàn)有協(xié)議框架及其100M的帶寬資源,在現(xiàn)有的以太網(wǎng)協(xié)議上進(jìn)行相應(yīng)的修改,推出了不同的實(shí)時(shí)工業(yè)以太網(wǎng)技術(shù),比較流行的有EtherCAT、Sercos III、Profinet、Powerlink、Ethernet/IP等。其中,EtherCAT(Ethernet for Control Automation Technology)是開(kāi)放的實(shí)時(shí)工業(yè)以太網(wǎng)通信協(xié)議,最初由德國(guó)倍福自動(dòng)化有限公司研發(fā)。它基于標(biāo)準(zhǔn)的以太網(wǎng)技術(shù),支持多種設(shè)備連接拓?fù)浣Y(jié)構(gòu),具有配置簡(jiǎn)單、有效數(shù)據(jù)率高、全雙工、數(shù)據(jù)傳輸容量大、傳輸速度快、時(shí)鐘同步性高、成本低、開(kāi)放性好等特點(diǎn),是一種用于工業(yè)自動(dòng)化的實(shí)時(shí)、高速以太網(wǎng)通信協(xié)議。EtherCAT協(xié)議使用全雙工100 Mbps以太網(wǎng),系統(tǒng)由一個(gè)通信主站和若干從站通信節(jié)點(diǎn)組成,主站發(fā)送以太網(wǎng)幀給各從站,從站從數(shù)據(jù)幀中抽取數(shù)據(jù)或?qū)?shù)據(jù)插入數(shù)據(jù)幀。主站使用標(biāo)準(zhǔn)的以太網(wǎng)控制器,協(xié)議和驅(qū)動(dòng)程序由軟件實(shí)現(xiàn),從站通信節(jié)點(diǎn)使用專門的EtherCAT從站控制器。
本文設(shè)計(jì)了CAN總線主站協(xié)議轉(zhuǎn)換為EtherCAT從站協(xié)議的協(xié)議轉(zhuǎn)換網(wǎng)關(guān)設(shè)備(以下簡(jiǎn)稱CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)),實(shí)現(xiàn)了工業(yè)自動(dòng)化現(xiàn)場(chǎng)CAN總線通信設(shè)備與EtherCAT主站控制系統(tǒng)的互連通信。
1 系統(tǒng)總體網(wǎng)絡(luò)架構(gòu)
CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)存在兩個(gè)方向的外部接口,對(duì)上通過(guò)以太網(wǎng)與EtherCAT主站進(jìn)行數(shù)據(jù)交換,通信協(xié)議符合EtherCAT實(shí)時(shí)工業(yè)以太網(wǎng)技術(shù)規(guī)范要求;對(duì)下與CAN總線從站設(shè)備實(shí)現(xiàn)通信,包括實(shí)時(shí)數(shù)據(jù)通信、故障診斷恢復(fù)和冗余切換處理等。系統(tǒng)總體的網(wǎng)絡(luò)架構(gòu)如圖1所示。
2 CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)
2.1 CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)核心器件選型
CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)硬件包括EtherCAT從站協(xié)議控制器、從站MCU、CAN總線協(xié)議控制器等。EtherCAT協(xié)議控制器實(shí)現(xiàn)EtherCAT的物理層與數(shù)據(jù)鏈路層的協(xié)議。從站MCU主要負(fù)責(zé)運(yùn)行用戶的應(yīng)用程序,實(shí)現(xiàn)EtherCAT和CAN總線協(xié)議之間的協(xié)議及數(shù)據(jù)轉(zhuǎn)換。CAN總線協(xié)議控制器實(shí)現(xiàn)CAN總線的物理層與數(shù)據(jù)鏈路層的協(xié)議。
現(xiàn)在市場(chǎng)上有多種EtherCAT協(xié)議控制器可供使用,如Beckhoff公司的ASIC芯片ET1100、ET1200,德國(guó)Hilscher公司的ComX—CA—RE模塊,也可以使用IP—Core將EtherCAT通信功能集成到設(shè)備控制FPGA中。ET1200是簡(jiǎn)化版,只提供1個(gè)RJ45接口,不能滿足開(kāi)發(fā)需求。ComX模塊提供了方便易用的接口,可以簡(jiǎn)化硬件設(shè)計(jì),但是價(jià)格較高。FPGA可提供針對(duì)Altera和Xilinx公司的IP核,但是價(jià)格高,開(kāi)發(fā)難度大。
考慮到實(shí)際應(yīng)用中,開(kāi)發(fā)成本及軟硬件設(shè)計(jì)的實(shí)現(xiàn)復(fù)雜度,EtherCAT從站協(xié)議控制器選用ET1100。ET1100是一款強(qiáng)大的EtherCAT從站控制器ESC專用芯片,具有豐富的接口資源。它具有4個(gè)數(shù)據(jù)收發(fā)端口、8個(gè)FMMU單元、8個(gè)SM、4 KB控制寄存器、8 KB過(guò)程數(shù)據(jù)存儲(chǔ)器、支持64位的分布時(shí)鐘。
從站MCU選用LPC2292芯片。LPC2292是一款基于16/32位ARM7TDMI—S核,支持實(shí)時(shí)仿真和跟蹤的MCU。LPC2292自帶2路高級(jí)CAN總線通道,可節(jié)省設(shè)計(jì)成本。
2.2 CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)硬件設(shè)計(jì)
CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)主要由通信控制回路、Ethernet回路、CAN總線回路3部分電路構(gòu)成。CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)硬件框圖如圖2所示。
在EtherCAT回路中,EtherCAT協(xié)議控制器ET1100可選擇使用SPI或8位、16位總線與LPC2292連接。ET1100的相關(guān)信息保存在EEPROM中。數(shù)據(jù)收發(fā)端口使用PORT0和PORT1,采用MII方式連接PHY芯片,經(jīng)過(guò)網(wǎng)絡(luò)變壓器隔離,通過(guò)RJ45接口與主站或其他從站連接。
通信管理控制回路由MCU(LPC2292)、狀態(tài)顯示電路、外部存儲(chǔ)器及單片機(jī)外圍電路構(gòu)成。CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)的配置信息、通信數(shù)據(jù)使用256 KB外部RAM或F-RAM存儲(chǔ),可以顯示運(yùn)行狀態(tài)和通信狀態(tài)等信息。
CAN總線第3方通信協(xié)議中,使用LPC2292的內(nèi)置CAN總線控制器,可根據(jù)需要使用1路或2路CAN總線。為了提高CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)的電磁兼容性EMC,使用高速光耦對(duì)CAN總線通信信號(hào)進(jìn)行隔離。
3 CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)軟件設(shè)計(jì)
CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)軟件由EtherCAT從站通信處理模塊和CAN總線主站通信處理模塊組成。CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)軟件在功能上實(shí)現(xiàn)EtherCAT從站通信協(xié)議和CAN總線主站通信協(xié)議功能。
CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)軟件基于不帶操作系統(tǒng)的硬件平臺(tái),采用C語(yǔ)言編寫。應(yīng)用程序各任務(wù)串行執(zhí)行,可以直接操作硬件的中斷和定時(shí)器,保證了任務(wù)執(zhí)行的速度和系統(tǒng)的性能。
3.1 EtherCAT從站報(bào)文幀結(jié)構(gòu)
EtherCAT協(xié)議數(shù)據(jù)直接使用以太網(wǎng)數(shù)據(jù)幀傳輸,數(shù)據(jù)幀類型為0x88A4。數(shù)據(jù)區(qū)最大可達(dá)1 498字節(jié)。數(shù)據(jù)區(qū)由1個(gè)或多個(gè)EtherCAT子報(bào)文組成,每個(gè)子報(bào)文對(duì)應(yīng)獨(dú)立的設(shè)備或從站存儲(chǔ)區(qū)域。EtherCAT從站子報(bào)文幀結(jié)構(gòu)如圖3所示。
每個(gè)EtherCAT子報(bào)文包括子報(bào)文頭、數(shù)據(jù)區(qū)和相應(yīng)的工作計(jì)數(shù)器(Working Counter,WKC)。發(fā)送子報(bào)文的WKC初始值為0,子報(bào)文被CAN /EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)正確處理后,增加一個(gè)增量,主站根據(jù)WKC是否正確,來(lái)判斷該子報(bào)文是否被正確響應(yīng)。
3.2 EtherCAT從站通信處理模塊
EtherCAT從站通信處理模塊實(shí)現(xiàn)與EtherCAT主站之間的通信,EtherCAT從站通信處理模塊以EtherCAT從站控制器為核心,從站協(xié)議控制器實(shí)現(xiàn)EtherCAT數(shù)據(jù)的接收、發(fā)送以及錯(cuò)誤處理。從站MCU操作EtherCAT從站協(xié)議控制器,實(shí)現(xiàn)應(yīng)用層協(xié)議。
EtherCAT協(xié)議有2種數(shù)據(jù)交換形式:一種是周期性過(guò)程數(shù)據(jù)通信,另一種是非周期性郵箱數(shù)據(jù)通信。周期性過(guò)程數(shù)據(jù)通信用來(lái)傳輸數(shù)據(jù)刷新率要求較高的輸入輸出數(shù)據(jù),非周期性郵箱數(shù)據(jù)通信則用來(lái)配置或讀取從站的參數(shù)信息。
自動(dòng)化控制系統(tǒng)中,系統(tǒng)一般要求先采集下面設(shè)備的輸入數(shù)據(jù),對(duì)輸入數(shù)據(jù)進(jìn)行相應(yīng)的邏輯處理,然后產(chǎn)生輸出控制信號(hào),發(fā)送到輸出設(shè)備。EtherCAT協(xié)議的狀態(tài)機(jī)通信模式很好地解決了這個(gè)問(wèn)題,保證了通信的安全可靠。
CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)支持4種狀態(tài):初始化(Init)、預(yù)運(yùn)行(Pre-Operational)、安全運(yùn)行(Safe-Operational)和運(yùn)行(Operation al)。各狀態(tài)之間的轉(zhuǎn)換關(guān)系如圖4所示。狀態(tài)機(jī)依次在不同的狀態(tài)及狀態(tài)轉(zhuǎn)換期間完成不同的任務(wù)。
CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)處于初始化狀態(tài)時(shí),主站初始化EtherCAT從站控制器的一些配置寄存器、配置郵箱通道參數(shù)。預(yù)運(yùn)行狀態(tài)下,CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)與主站使用郵箱通信交換通信配置信息,此時(shí),不允許過(guò)程數(shù)據(jù)通信。安全運(yùn)行狀態(tài)下,CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)應(yīng)用程序讀入輸入數(shù)據(jù),但不產(chǎn)生輸出信號(hào),設(shè)備無(wú)輸出,處于“安全狀態(tài)”。運(yùn)行狀態(tài)下,CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)應(yīng)用程序讀入輸入數(shù)據(jù),此時(shí),主站應(yīng)用程序發(fā)出的輸出數(shù)據(jù)有效,CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)產(chǎn)生輸出信號(hào)。
3.3 CAN總線主站通信處理模塊
CAN總線主站通信處理模塊主要實(shí)現(xiàn)與CAN總線從站設(shè)備之間的數(shù)據(jù)交換、參數(shù)配置和故障診斷等。數(shù)據(jù)的收發(fā)采用定時(shí)器和中斷相配合的模式。
上電硬件初始化,配置好CAN總線通信的參數(shù)后,CAN總線主站通信處理模塊首先請(qǐng)求下面各CAN總線從站設(shè)備的輸入數(shù)據(jù),所有輸入數(shù)據(jù)掃描完成后,置輸入數(shù)據(jù)掃描完成標(biāo)志,EtherCAT主站接收到該標(biāo)志后,轉(zhuǎn)換CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)狀態(tài)到運(yùn)行狀態(tài)。此時(shí),輸出數(shù)據(jù)有效,CAN總線主站通信處理模塊發(fā)送輸出數(shù)據(jù)到相關(guān)CAN總線從站設(shè)備。所有的從站一輪掃描結(jié)束后,判斷統(tǒng)計(jì)是否有從站出現(xiàn)通信故障,并進(jìn)行相應(yīng)的處理。
3.4 CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)對(duì)象字典設(shè)計(jì)
EtherCAT協(xié)議使用對(duì)象字典實(shí)現(xiàn)標(biāo)準(zhǔn)的參數(shù)信息配置和輸入、輸出數(shù)據(jù)讀寫操作,每個(gè)對(duì)象字典有一個(gè)主索引和多個(gè)子索引。在CAN/Et herCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)采用協(xié)議轉(zhuǎn)換網(wǎng)關(guān)和CAN總線從站設(shè)備的多級(jí)對(duì)象字典設(shè)計(jì)模式,如圖5所示。
CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)和CAN總線從站設(shè)備1的對(duì)象字典輸出數(shù)據(jù)(RxPDo)的主索引為十六進(jìn)制數(shù)據(jù)0x1600~0x16FF,每個(gè)輸出主索引的子索引為0x7xx0~0x7xxF,最多16個(gè)子索引;輸入(TxPDo)的主索引為十六進(jìn)制數(shù)據(jù)0x1A00~0x1AFF,每個(gè)輸入主索引的子索引為0x6xx0~0x6xxF,也是最多16個(gè)子索引。每個(gè)CAN總線從站設(shè)備通信配置信息主索引為0x8xx0~0x8xxF。CAN總線主站通信參數(shù)對(duì)象字典主索引為0xF 800。CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)和CAN從站設(shè)備的PDo對(duì)象字典映射關(guān)系如圖6所示。
4 CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)性能
EtherCAT主站采用Beckhoff公司的TwinCAT軟件,與4個(gè)CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)進(jìn)行通信,采用wireshark網(wǎng)絡(luò)封包分析軟件,擷取EtherCAT網(wǎng)絡(luò)通信報(bào)文幀,共擷取10次,每次1萬(wàn)幀。TwinCAT軟件與CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)全部數(shù)據(jù)刷新時(shí)間如圖7所示。當(dāng)輸入數(shù)據(jù)為128字節(jié)、輸出數(shù)據(jù)為100字節(jié)時(shí),通過(guò)對(duì)擷取的請(qǐng)求報(bào)文時(shí)間戳和響應(yīng)報(bào)文時(shí)間戳進(jìn)行差值計(jì)算得出:TwinCAT主站軟件與CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)之間報(bào)文平均響應(yīng)時(shí)間為200μs左右。CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)具有較高的可靠性、安全性和快速響應(yīng)特性。CAN總線主站與CAN總線從站設(shè)備通信波特率設(shè)為1 Mbps,一般一幀報(bào)文為8個(gè)字節(jié)有效數(shù)據(jù),數(shù)據(jù)幀刷新時(shí)間平均為2 ms。
TwinCAT軟件與CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)全部數(shù)據(jù)刷新時(shí)間取決于TwinCAT軟件報(bào)文掃描周期和CAN總線從站設(shè)備的數(shù)量、數(shù)據(jù)的多少。假設(shè)每個(gè)CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)下面連接10個(gè)CAN總線設(shè)備,每個(gè)設(shè)備的數(shù)據(jù)為16字節(jié),那么所有CAN總線數(shù)據(jù)掃描一周的時(shí)間為40 ms。
結(jié)語(yǔ)
CAN/EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)通過(guò)LPC2292實(shí)現(xiàn)了EthercAT協(xié)議控制器與CAN總線控制器之間的協(xié)議轉(zhuǎn)換和數(shù)據(jù)交換,解決了EtherCAT實(shí)時(shí)工業(yè)以太網(wǎng)與CAN總線之間通信的互聯(lián)問(wèn)題,保證了CAN現(xiàn)場(chǎng)總線設(shè)備數(shù)據(jù)可以更加高效、快速地傳遞到EtherCAT中央監(jiān)控系統(tǒng)中。