您現(xiàn)在的位置:
中國(guó)傳動(dòng)網(wǎng)
>
技術(shù)頻道
>
應(yīng)用方案
>
基于赫優(yōu)訊嵌入式模塊EtherCAT從站設(shè)備的開(kāi)發(fā)
時(shí)間:2009-01-04 14:15:53來(lái)源:dujing
圖1 netX 500結(jié)構(gòu)框圖[/align]
1.2 netX基本功能
netX 500網(wǎng)絡(luò)控制器內(nèi)部集成ARM 926的CPU核,因此可以做為一個(gè)單片系統(tǒng),所有的應(yīng)用都可以在netX上實(shí)現(xiàn)。其次,netX具有雙端口內(nèi)存DPM接口,也可以再外接一個(gè)CPU,實(shí)現(xiàn)雙核系統(tǒng): CPU負(fù)責(zé)處理應(yīng)用程序,netX專門實(shí)現(xiàn)網(wǎng)絡(luò)通訊。
netX500最大的特點(diǎn)就是具有可配置的4個(gè)通信通道,它們建立在兩層結(jié)構(gòu)上,而且相互等同。它們具有專門的ALU,并且有特殊的邏輯單元,通過(guò)Microcode來(lái)實(shí)現(xiàn)各協(xié)議的基本功能。xMAC(Medium-Access-Controller)分別按照各自的總線存取進(jìn)程,發(fā)送和接收數(shù)據(jù),加密或者將它們轉(zhuǎn)化為字節(jié)方式。xPEC(Protocol Execution Controller)負(fù)責(zé)編譯,并將數(shù)據(jù)打包,管理報(bào)文通訊。當(dāng)數(shù)據(jù)量大時(shí),可通過(guò)DMA通道進(jìn)行數(shù)據(jù)交換。而且,每個(gè)通道有一個(gè)雙端口內(nèi)存DPM,可用于保存狀態(tài)信息或本地?cái)?shù)據(jù)。
其中,前兩個(gè)通道集成PHY,可直接用于以太網(wǎng)的連接。并且內(nèi)部已經(jīng)集成了各種實(shí)時(shí)以太網(wǎng)協(xié)議所需的ASIC硬件資源,如Hub、Switch、IEEE1588等,如圖2所示。
[align=center]
圖2 實(shí)時(shí)以太網(wǎng)通道結(jié)構(gòu)圖[/align]
因此,通過(guò)這種智能的通訊ALU,在netX芯片上可以實(shí)現(xiàn)各種不同的通訊協(xié)議,可以是現(xiàn)場(chǎng)總線協(xié)議,也可以是各種實(shí)時(shí)以太網(wǎng)協(xié)議,并且可以自由組合。而且,同步過(guò)程不受CPU響應(yīng)時(shí)間的限制。
2 實(shí)時(shí)以太網(wǎng)設(shè)備的設(shè)計(jì)
在該從站設(shè)備中,使用的是德國(guó)赫優(yōu)訊(Hilscher)自動(dòng)化系統(tǒng)有限公司的嵌入式模塊comX-CA-RE,模塊內(nèi)部已經(jīng)集成專用的ASIC芯片和固化程序Firmware,由該模塊實(shí)現(xiàn)實(shí)時(shí)以太網(wǎng)協(xié)議,主機(jī)CPU通過(guò)嵌入式模塊提供的雙端口內(nèi)存(Dual-Port Memory,DPM)接口與模塊進(jìn)行數(shù)據(jù)通信,用戶不需要關(guān)心協(xié)議的具體實(shí)現(xiàn),只需往DPM接口讀/寫(xiě)數(shù)據(jù)就可以,因此,該模塊就像一個(gè)內(nèi)存,使用起來(lái)特別方便。該模塊的另一個(gè)特點(diǎn)是,同一個(gè)硬件模塊上就能支持各種不同實(shí)時(shí)以太網(wǎng)協(xié)議:Profinet、EtherCAT、Ethernet/IP、SERCOS III、Powerlink和Modbus TCP,并且還支持主站或從站,只需下載不同的協(xié)議堆棧Firmware。因此,減少了硬件開(kāi)發(fā)成本,只需在軟件上更改相關(guān)協(xié)議的API,這大大的保護(hù)了投資,減少了開(kāi)發(fā)的再投入成本。
2.1 硬件設(shè)計(jì)
嵌入式模塊comX-CA-RE提供給用戶的硬件接口只有X1一個(gè)排針連接頭(50根管腳),即雙端口內(nèi)存接口,該連接頭包含了與主機(jī)通信必備的控制線、16位數(shù)據(jù)總線和14位地址總線。
由于該模塊已經(jīng)集成實(shí)現(xiàn)實(shí)時(shí)以太網(wǎng)接口的所有必備電路,因此在外圍電路設(shè)計(jì)的時(shí)候非常簡(jiǎn)單方便,其電路連接與MCU和內(nèi)存的連接相似。實(shí)時(shí)以太網(wǎng)協(xié)議都由模塊內(nèi)部實(shí)現(xiàn),用戶應(yīng)用程序只需通過(guò)提供的API接口和訪問(wèn)方式,對(duì)雙端口內(nèi)存進(jìn)行讀/寫(xiě)操作。嵌入式模塊comX與主機(jī)接口電路如圖3所示。在該設(shè)備中,同時(shí)還設(shè)計(jì)了IO、AD采集電路,DA輸出電路,以及其它的外設(shè)接口電路。
[align=center]
圖3 嵌入式模塊與主機(jī)接口電路[/align]
2.2 軟件設(shè)計(jì)
嵌入式模塊comX提供的主機(jī)接口是雙端口內(nèi)存DPM,用戶應(yīng)用程序通過(guò)DPM接口來(lái)訪問(wèn)該模塊。同時(shí),為了提高整個(gè)系統(tǒng)的實(shí)時(shí)性和可靠性,主機(jī)系統(tǒng)使用的是實(shí)時(shí)多任務(wù)操作系統(tǒng)Linux。因此,在進(jìn)行軟件設(shè)計(jì)時(shí),主要完成驅(qū)動(dòng)程序以及應(yīng)用程序的編寫(xiě)。
2.2.1 雙端口內(nèi)存DPM結(jié)構(gòu)
用戶應(yīng)用程序通過(guò)雙端口內(nèi)存DPM來(lái)訪問(wèn)實(shí)時(shí)以太網(wǎng)嵌入式模塊comX,嵌入式模塊comX提供的雙端口內(nèi)存DPM接口是16 KByte的地址空間,其具體結(jié)構(gòu)如圖4所示。
[align=center]
圖4 雙端口內(nèi)存地址空間[/align]
netX提供的雙端口內(nèi)存最大地址空間是64KByte,分為系統(tǒng)通道、握手通道、通訊通道0~3、應(yīng)用通道0~1。對(duì)于嵌入式模塊comX,實(shí)時(shí)以太網(wǎng)的協(xié)議堆棧(如EtherCAT從站的Firmware)已經(jīng)保存在模塊的Flash中,因此只使用了默認(rèn)的系統(tǒng)通道、握手通道和通訊通道0,16KByte的地址空間。
系統(tǒng)通道512個(gè)字節(jié),位于雙端口內(nèi)存DPM的起始位置,是最重要的通道,總是存在。它包含了系統(tǒng)本身(netX硬件和實(shí)時(shí)操作系統(tǒng)rcX)的關(guān)鍵信息,并且提供一種郵箱的傳輸機(jī)制,用于發(fā)送/接收跟系統(tǒng)相關(guān)的報(bào)文。各功能塊如表1所述。
[align=center]表1 系統(tǒng)通道結(jié)構(gòu)
[/align]
握手通道256字節(jié),從偏移地址0x0200開(kāi)始,提供主機(jī)系統(tǒng)與netX固件(運(yùn)行在netX芯片中的協(xié)議堆棧)之間的數(shù)據(jù)傳輸同步機(jī)制。所有通道的握手寄存器都在此區(qū)域,每個(gè)握手寄存器包含兩類握手信息:系統(tǒng)握手信息和通訊握手信息。系統(tǒng)握手信息與“系統(tǒng)設(shè)備”相關(guān),由主機(jī)應(yīng)用執(zhí)行netX系統(tǒng)相關(guān)的命令,如復(fù)位等。通訊握手信息用于同步循環(huán)或非循環(huán)數(shù)據(jù),同時(shí)向主機(jī)系統(tǒng)提供狀態(tài)變化信息。
通訊通道m(xù)*256字節(jié),從偏移地址0x0300開(kāi)始,現(xiàn)場(chǎng)總線協(xié)議堆棧使用該通道,與主機(jī)系統(tǒng)進(jìn)行循環(huán)數(shù)據(jù)和非循環(huán)數(shù)據(jù)的數(shù)據(jù)交換。共有四個(gè)通訊通道,每個(gè)通訊通道分別對(duì)應(yīng)netX芯片的xMAC/xPEC端口,其結(jié)構(gòu)都相同。通訊通道0的默認(rèn)大小是16KByte,其各功能塊如表2所述。
[align=center]表2 通訊通道結(jié)構(gòu)
[/align]
應(yīng)用通道m(xù)*256字節(jié),根據(jù)實(shí)際的需求,并不一定需要該通道,該通道實(shí)現(xiàn)用戶特殊的信息交互,由客戶定義使用。
2.2.2 驅(qū)動(dòng)程序的設(shè)計(jì)
赫優(yōu)訊提供嵌入式模塊comX的驅(qū)動(dòng)源碼Toolkit,用戶可以根據(jù)實(shí)際的需求,在不同的目標(biāo)系統(tǒng)中集成該Toolkit提供的驅(qū)動(dòng)接口,這樣用戶應(yīng)用程序就能很方便的訪問(wèn)嵌入式模塊comX的雙端口內(nèi)存。Toolkit提供的驅(qū)動(dòng)接口與實(shí)時(shí)以太網(wǎng)協(xié)議無(wú)關(guān),只與comX雙端口內(nèi)存DPM相關(guān),因此,如果基于comX模塊開(kāi)發(fā)多種實(shí)時(shí)以太網(wǎng)協(xié)議(Profinet、EtherCAT、Ethernet/IP主從站等)的設(shè)備,其驅(qū)動(dòng)程序是通用的。
在本系統(tǒng)中,使用Linux實(shí)時(shí)操作系統(tǒng),設(shè)備驅(qū)動(dòng)主要完成對(duì)嵌入式模塊comX雙端口內(nèi)存DPM的訪問(wèn),用戶程序通過(guò)調(diào)用Toolkit提供的接口函數(shù)來(lái)訪問(wèn)實(shí)時(shí)以太網(wǎng)嵌入式模塊comX。Linux設(shè)備驅(qū)動(dòng)的框架如圖5所示。
[align=center]
圖5 Linux設(shè)備驅(qū)動(dòng)框架[/align]
Linux設(shè)備驅(qū)動(dòng)主要實(shí)現(xiàn)的函數(shù)如表3。
[align=center]表3 Linux設(shè)備驅(qū)動(dòng)函數(shù)表
[/align]
2.2.3 應(yīng)用程序的設(shè)計(jì)
由于赫優(yōu)訊提供的嵌入式模塊comX,在同一個(gè)硬件模塊上就能支持各種主流的實(shí)時(shí)以太網(wǎng)協(xié)議:Profinet、EtherCAT、Ethernet/IP、SERCOS III、Powerlink和Modbus TCP,并且還支持主站或從站,只需下載不同的協(xié)議堆棧Firmware。也就是說(shuō),如果開(kāi)發(fā)不同實(shí)時(shí)以太網(wǎng)通訊接口的同類產(chǎn)品,除了不同的實(shí)時(shí)以太網(wǎng)協(xié)議接口不一樣,其它的程序接口都是一樣的。
在本系統(tǒng)中,使用嵌入式模塊COMX-CA-RE/ECS,即EtherCAT從站模塊。因此,應(yīng)用程序主要實(shí)現(xiàn)的功能:模塊的初始化,從站熱啟動(dòng)參數(shù)的下載,外圍采集模塊的數(shù)據(jù)采集,以及與EtherCAT主站設(shè)備的數(shù)據(jù)交換等等。
嵌入式模塊comX的Flash中已經(jīng)保存了EtherCAT從站的協(xié)議堆棧,在系統(tǒng)上電后,會(huì)自動(dòng)加載該協(xié)議堆棧。然后再加載從站的熱啟動(dòng)參數(shù),需應(yīng)用程序加載。不同的實(shí)時(shí)以太網(wǎng)從站,其熱啟動(dòng)參數(shù)是不一樣的,以報(bào)文的方式,通過(guò)雙端口內(nèi)存DPM的系統(tǒng)郵箱發(fā)送給comX。EtherCAT從站關(guān)鍵的熱啟動(dòng)參數(shù)如下,
ptWarmstartReq->tData.ulSystemFlags = 0; /* System Flags */
ptWarmstartReq->tData.ulWatchdogTime=1000; /* Watchdog time */
ptWarmstartReq->tData.ulVendorId = 0x44; /* Vendor Id */
ptWarmstartReq->tData.ulProductCode = 0x7874656E; /* Product code*/
ptWarmstartReq->tData.ulRevisionNumber = 0x0000FFFE; /* Revision number */
ptWarmstartReq->tData.ulSerialNumber = 0; /* Serial number */
ptWarmstartReq->tData.ulProcessDataOutputSize = 4; /* Process Data Output Size */
ptWarmstartReq->tData.ulProcessDataInputSize = 4; /* Process Data Input Size */
熱啟動(dòng)參數(shù)的下載處理代碼如下:
/***** 從站熱啟動(dòng)參數(shù)下載 *****/
if( true != GetWarmstartPacket( ulFirmwareSelection, ulDeviceSelection, &tSendPacket))
{
printf("Error reading WARMSTART packet for the given protocol\r\n");
} else
{
// 發(fā)送包
lRet = ptCifXFnc->pfnChannelPutPacket( hChannel, &tSendPacket, 2000);
if( CIFX_NO_ERROR == lRet)
{
printf("Sending WARMSTART packet: DONE\r\n");
} else
{
printf("Error sending WARMSTART to the device: Error=0x%08X\r\n", lRet);
}
// 接收包
lRet = ptCifXFnc->pfnChannelGetPacket( hChannel, sizeof(tReceivePacket), &tReceivePacket, 2000);
if(CIFX_NO_ERROR != lRet)
{
printf("Error while wait for WARMSTART response: Error=0x%08X\r\n", lRet);
} else if(0 != (lRet = tReceivePacket.tHeader.ulState))
{
printf("Error in WARMSTART response: Error=0x%08X\r\n", tReceivePacket.tHeader.ulState);
} else
{
// 等待,直到BUS位被設(shè)置
CHANNEL_INFORMATION tChannelInfo = {0};
do
{
lRet = ptCifXFnc->pfnChannelInfo( hChannel, sizeof(tChannelInfo), &tChannelInfo);
printf(".");
} while ( (CIFX_NO_ERROR == lRet) &&
(!(tChannelInfo.ulDeviceCOSFlags & (RCX_COMM_COS_RUN | RCX_COMM_COS_READY))) );
}
}
當(dāng)把熱啟動(dòng)參數(shù)下載完成后,通過(guò)xChannelIOWrite()和xChannelIORead()兩個(gè)函數(shù),主機(jī)應(yīng)用程序就可以與comX模塊進(jìn)行數(shù)據(jù)交換了。comX模塊中運(yùn)行的EtherCAT協(xié)議堆棧會(huì)自動(dòng)將主機(jī)應(yīng)用發(fā)來(lái)的循環(huán)數(shù)據(jù)或非循環(huán)數(shù)據(jù)發(fā)送到EtherCAT網(wǎng)絡(luò)上。反之,自動(dòng)截取EtherCAT主站發(fā)送給該從站的數(shù)據(jù),并傳送給主機(jī)應(yīng)用程序。
3 EtherCAT從站模塊在智能設(shè)備的應(yīng)用
[align=center]
圖6 智能分揀系統(tǒng)示意圖[/align]
此智能分揀系統(tǒng)要求以流水方式順序檢測(cè)產(chǎn)品的若干個(gè)質(zhì)量特征,并對(duì)相應(yīng)的質(zhì)量特征作出判別,并由主控制器對(duì)各個(gè)傳感器的檢測(cè)結(jié)果加以匯總從而得到某一產(chǎn)品的分揀結(jié)果,并控制分揀電機(jī)將相應(yīng)的產(chǎn)品分揀到指定的分揀倉(cāng)中,同時(shí)將該產(chǎn)品的質(zhì)量信息存入數(shù)據(jù)庫(kù)中。
在本系統(tǒng)中,傳感器檢測(cè)頻率設(shè)計(jì)為40Hz,由于傳感器位置和處理時(shí)間的原因留給數(shù)據(jù)傳輸?shù)臅r(shí)間要求小于1ms。同時(shí)由于要求質(zhì)量判定結(jié)果要存入數(shù)據(jù)庫(kù),所以單一傳感器的傳輸數(shù)據(jù)量為10~1kByte,因此,要求采用的現(xiàn)場(chǎng)總線的數(shù)據(jù)帶寬不能小于10M。所以,在本系統(tǒng)中選用了EtherCAT實(shí)時(shí)以太網(wǎng)作為數(shù)據(jù)傳輸總線,采用德國(guó)赫優(yōu)訊的comX嵌入式模塊作為從站接入模塊,嵌入式系統(tǒng)通過(guò)DPM與comX通訊,采用輪詢的方式向主控制器發(fā)送檢測(cè)結(jié)果。
4 結(jié)束語(yǔ)
目前,國(guó)內(nèi)廠家多限于對(duì)現(xiàn)場(chǎng)總線產(chǎn)品的開(kāi)發(fā),對(duì)實(shí)時(shí)以太網(wǎng)產(chǎn)品的的研究開(kāi)發(fā)甚少,本文介紹了一種支持所有主流實(shí)時(shí)以太網(wǎng)協(xié)議的嵌入式模塊comX,并詳細(xì)討論了其關(guān)鍵的開(kāi)發(fā)步驟,對(duì)實(shí)時(shí)以太網(wǎng)產(chǎn)品的開(kāi)發(fā)具有借鑒作用。從實(shí)時(shí)工業(yè)以太網(wǎng)技術(shù)發(fā)展形勢(shì)看,實(shí)時(shí)以太網(wǎng)在工業(yè)控制系統(tǒng)中的應(yīng)用必將越來(lái)越廣。
參考文獻(xiàn):
[1] 繆學(xué)勤。20種類型現(xiàn)場(chǎng)總線進(jìn)入IEC61158第四版國(guó)際標(biāo)準(zhǔn)[J]。自動(dòng)化儀表,2007
[2] Hilscher Gesellschaft für Systemautomation mbH. netX Generation of Communication Controller Product Brief [EB/OL].http://www.hilscher.com/support_manuals.html
[3] Hilscher Gesellschaft für Systemautomation mbH. netX Dual-Port Memory Interface Manual [EB/OL].http://www.hilscher.com/support_manuals.html
[4] Hilscher Gesellschaft für Systemautomation mbH. cifX Device Driver [EB/OL].http://www.hilscher.com/support_manuals.html
[5] Hilscher Gesellschaft für Systemautomation mbH. EtherCAT Slave Protocol API [EB/OL]. http://www.hilscher.com/support_manuals.html
標(biāo)簽:
傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動(dòng)網(wǎng)(surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
相關(guān)資訊
產(chǎn)品新聞
更多>2025-10-31
勇梅機(jī)械液壓閘門給煤機(jī)的優(yōu)點(diǎn)
2025-10-22
2025-10-17
2025-10-11
「一體機(jī)性價(jià)比王者」NK290M普及型數(shù)控...
2025-10-09
耐磨管道機(jī)器人檢測(cè)電纜CCTV,水下管道...
2025-09-23