時間:2018-01-08 13:15:27來æºï¼šä¼ºæœé›œå¿—6期
摘è¦ï¼šè«–述伺æœé©…å‹•æŽ§åˆ¶å™¨çš„å¯¦ç¾æ–¹æ³•,通éŽå°ARM+FPGA+DSP架構的多CPU控制器的具體分æžå°‡å…¶åŽŸç†å’Œå„ªå‹¢å±•ç¾å‡ºä¾†ï¼›é€™ç¨®æž¶æ§‹æŽ§åˆ¶å™¨ç³»çµ±åˆ†å·¥æ˜Žç¢ºï¼Œæé«˜äº†ç®—法的實時性;æé«˜äº†æŽ§åˆ¶å™¨å°å¤–接å£EtherCAT的實時性;æé«˜äº†ç³»çµ±çš„穩定性。這種架構方案在天津電氣科å¸ç ”究院有é™å…¬å¸çš„伺æœé©…動器產å“ä¸é€²è¡Œäº†å¯¦é©—,ç¾å ´çš„æ‡‰ç”¨å–得了良好的效果,體ç¾å‡ºé€™ç¨®æŠ€è¡“çš„ç¾å¯¦æ„義。
1引言
伺æœé©…動器是用來控制伺æœé›»æ©Ÿçš„一種控制器,一般是通éŽä½ç½®ã€é€Ÿåº¦å’ŒåŠ›çŸ©ä¸‰ç¨®æ–¹å¼å°é›»æ©Ÿé€²è¡ŒæŽ§åˆ¶ï¼Œå¯¦ç¾é«˜ç²¾åº¦çš„系統定ä½ã€‚
ç›®å‰ï¼Œä¼ºæœæŽ§åˆ¶å™¨CPUçš„æž¶æ§‹ä¸»è¦æœ‰ï¼š1å–®CPUæž¶æ§‹ARM(AcornRISCMachine)控制器;2å–®CPUæž¶æ§‹DSP(DigitalSignalProcess)控制器;3ARM+FPGA+DSP架構的多CPU控制器。方法3æ˜¯ç›®å‰æœ€å…ˆé€²çš„æž¶æ§‹ï¼Œå‰å…©ç¨®æ–¹æ³•éƒ½æœ‰å±€é™æ€§ã€‚方法1和方法2這種單CPU架構的控制器,一個CPU集算法ã€é‡‡é›†æŽ§åˆ¶ã€é€šè¨Šã€é¡¯ç¤ºåŠŸèƒ½äºŽä¸€é«”ï¼Œç•¶ç®—æ³•å¾©é›œåº¦å’Œå¯¦æ™‚æ€§è¦æ±‚高時往往會顧æ¤å¤±å½¼ã€‚而方法3的架構ä¸å„個CPU的分工明確,ARMè² è²¬é€šä¿¡å’Œé¡¯ç¤ºåŠŸèƒ½ï¼ŒDSPè² è²¬ç®—æ³•é‹ç®—,FPGAè² è²¬é‡‡é›†å’ŒæŽ§åˆ¶ã€‚æ–¹æ³•3çš„æŠ€è¡“ç“¶é ¸æ˜¯æ»¿è¶³ä¼ºæœæŽ§åˆ¶å™¨çš„å¯¦æ™‚æ€§è¦æ±‚需è¦å¹¾å€‹CPUä¹‹é–“çš„é«˜é€Ÿæ•¸æ“šé€šä¿¡ï¼Œå› æ¤ï¼Œå¦‚æžœèƒ½å¤ æ‰¾åˆ°ä¸€å€‹é«˜é€Ÿçš„é€šä¿¡æ–¹å¼å®Œå…¨å¯ä»¥ç™¼æ®å„個CPU的特性,就åƒä¸€å€‹å¤šæ ¸CPU在工作一樣。
æœ¬ç ”ç©¶åŸºäºŽARM+FPGA+DSP架構,采用并å£é€šä¿¡çš„æ–¹æ³•用于幾個CPU之間的內部高速通信;æ¤å¤–伺æœé©…動器作為伺æœç³»çµ±çš„一部分還需è¦å’Œä¸»æŽ§å™¨å’Œç·¨ç¢¼å™¨é€²è¡Œé«˜é€Ÿé€šä¿¡ï¼Œä¾†æ»¿è¶³æ•´å€‹ä¼ºæœç³»çµ±çš„å¯¦æ™‚æ€§è¦æ±‚,本架構采用EtherCAT和高速485接å£ç”¨äºŽæŽ§åˆ¶å™¨å’Œå…¶ä»–è¨å‚™é€²è¡Œé«˜é€Ÿé€šä¿¡ï¼Œæè¿°äº†ç³»çµ±çš„åŽŸç†æž¶æ§‹å’Œè»Ÿä»¶è¨è¨ˆæž¶æ§‹ã€‚
2多CPU架構控制器原ç†åˆ†æž
æ¤æž¶æ§‹çš„æŽ§åˆ¶å™¨ä¸ARMè² è²¬é€šä¿¡å’Œé¡¯ç¤ºåŠŸèƒ½ï¼ŒDSPè² è²¬ç®—æ³•é‹ç®—,FPGAè² è²¬é‡‡é›†å’ŒæŽ§åˆ¶ï¼Œå¦‚åœ–1所示。FPGA采集相電壓ã€ç›¸é›»æµç‰ç‰©ç†é‡é€šéŽå¹¶å£å‚³çµ¦DSPï¼›ARM通éŽEtherCAT接收主控制器命令,通éŽé«˜é€Ÿ485采集碼盤的速度和ä½ç½®ç‰ä¿¡æ¯ï¼Œé€šéŽå¹¶å£å‚³çµ¦FPGAä¸è½‰ä¸‹å†å‚³åˆ°DSPï¼›DSPä¸åŸ·è¡Œä¼ºæœæŽ§åˆ¶çš„算法,利用FPGAå’ŒARMä¸é‡‡é›†çš„æ•¸æ“šé€²è¡Œè¨ˆç®—ï¼ŒæŠŠè¨ˆç®—çµæžœå†é€šéŽå¹¶å£å‚³çµ¦FPGAå’ŒARM,由FPGAå’ŒARM進行相關的控制æ“作。
圖 1 多 CPU æž¶æ§‹æŽ§åˆ¶å™¨çµæ§‹åœ–
æ¤æž¶æ§‹æŽ§åˆ¶å™¨ä¸å¹¾å€‹CPU之間的雙å£RAM通信:用雙å£RAMä¸å„使•¸æ“šéƒ½æ˜¯å¹¶è¡Œå‚³é€çš„,它通常是以å—節(8ä½ï¼‰çš„æ•´æ•¸å€ç‚ºå–®ä½é€²è¡Œæ•¸æ“šå‚³è¼¸ï¼Œèƒ½å®Œæˆæ•¸æ“šçš„輸入和輸出。用雙å£RAM通信的原ç†å¦‚2所示。用雙å£RAMé€šä¿¡å…·æœ‰å„æ•¸æ“šä½åŒæ™‚å‚³è¼¸ï¼Œå‚³è¼¸é€Ÿåº¦å¿«ã€æ•ˆçŽ‡é«˜çš„ç‰¹é»žï¼Œå¤šç”¨åœ¨å¯¦æ™‚ã€å¿«é€Ÿçš„å ´åˆã€‚
圖2用雙å£RAM通信原ç†åœ–
æ¤æž¶æ§‹æŽ§åˆ¶å™¨çš„å°å¤–æŽ¥å£æœ‰EtherCAT和高速485。碼盤的接å£ä¸€èˆ¬é‡‡ç”¨485接å£ï¼Œæ‰€ä»¥æœ¬æŽ§åˆ¶å™¨ä¹Ÿé‡‡ç”¨485的接å£ï¼Œç”¨DMA來實ç¾ï¼›ä¼ºæœæŽ§åˆ¶å™¨èˆ‡ä¸»æŽ§åˆ¶ä¹‹é–“çš„æŽ¥å£æœ‰EtherCATå’ŒPROFINETç‰å”è°ï¼Œæœ¬æŽ§åˆ¶å™¨é‡‡ç”¨æ‡‰ç”¨æ¯”較廣的EtherCAT接å£ã€‚實時以太網EtherCAT是由å€ç¦é–‹ç™¼çš„一種工æ¥ä»¥å¤ªç¶²æŠ€è¡“。它以高速率ã€é«˜æœ‰æ•ˆæ•¸æ“šåˆ©ç”¨çއã€å®Œå…¨ç¬¦åˆä»¥å¤ªç¶²æ¨™æº–ã€åˆ·æ–°å‘¨æœŸçŸã€åŒæ¥æ€§èƒ½å¥½ç‰å„ªå‹¢,在伺æœé€šè¨Šé ˜åŸŸä¸å¾—到越來越多的應用。其原ç†å¦‚圖3所示。
圖3EtherCATå ±æ–‡
3多CPU架構控制器硬件è¨è¨ˆ
3.1控制器ARMçš„è¨è¨ˆ
主控制器ARM通éŽSTM32F407芯片完æˆä¸Šç¯€ä»‹ç´¹çš„與FPGA的并å£é€šä¿¡ã€EtherCAT通信ã€485通信。STM32F407屬于高端的32ä½ARMå¾®æŽ§åˆ¶å™¨ï¼Œè©²ç³»åˆ—èŠ¯ç‰‡æ˜¯æ„æ³•åŠå°Žé«”(ST)公å¸å‡ºå“ï¼Œå…¶å…§æ ¸æ˜¯Cortex-M4。本次è¨è¨ˆå……分利用其資æºï¼Œå¯¦ç¾äº†å¹¶å£é€šä¿¡ã€therCAT通信ã€485通信。
圖4FSMC框圖
å¹¶å£é€šä¿¡ï¼šSTM32F407具有FSMCåŠŸèƒ½ï¼Œéˆæ´»çš„éœæ…‹å˜å„²å™¨æŽ§åˆ¶å™¨(FSMC)是內置大容é‡çš„外部å˜å„²å™¨æŽ§åˆ¶å™¨ï¼Œä½¿ç”¨é€™å€‹æŽ§åˆ¶å™¨ï¼ŒSTM32å¯ä»¥èˆ‡FPGA或者å˜å„²å™¨é€²è¡Œå¹¶å£é€šä¿¡ã€‚FSMC產生所有驅動這些å˜å„²å™¨ï¼ˆæŠŠFPGAç•¶åšå˜å„²å™¨ä¾†æ“作)的信號時åºï¼š16個數據線和16個地å€ç·š,原ç†å¦‚圖4所示。
圖5數據總線XINTF連接框圖
EtherCAT通信和485通信:EtherCAT通信通éŽèŠ¯ç‰‡ET1100來實ç¾ï¼ŒET1100是一款強大的EtherCAT從站控制器ESC專用芯片,ET1100與ARM的接å£é‡‡ç”¨SPI的方å¼ï¼›485通信速度為2.5Mbps,采用DMA的方å¼ä¾†å¯¦ç¾ï¼ŒDMAçš„å…·é«”å¯¦ç¾æ–¹æ³•åœ¨ä¸‹ç« è»Ÿä»¶è¨è¨ˆä¸è©³è¿°ã€‚
圖6讀æ“作時åº
3.2控制器FPGAå’ŒDSP的并å£é€šä¿¡è¨è¨ˆ
FPGA采用Alteraçš„Cyclone?IV系列FPGAï¼Œå…·æœ‰ä½Žæˆæœ¬ã€ä½ŽåŠŸè€—çš„ç‰¹é»žï¼Œé«˜é”532個用戶I/O,支æŒé«˜é”200MHzçš„DDR2SDRAM接å£ï¼›DSP采用TMS320C28346,通éŽXINTF連接FPGA,實ç¾é›™å‘å¹¶å£é€šä¿¡ã€‚DSPçš„è¼¸å…¥å’Œè¼¸å‡ºé‡‡ç”¨ä¸æ–·æŽ§åˆ¶,ç•¶FPGA準備好數據åŽ,å‘DSP發é€ä¸æ–·ï¼ŒDSPéŸ¿æ‡‰ä¸æ–·åŽè®€å–相應地å€çš„æ•¸æ“šå¹¶å‘å¦å¤–一段地å€å¯«å…¥æ•¸æ“šï¼ŒFPGAç‰å¾…60μsé–‹å§‹è®€æ•¸æ“šã€‚é€™æ¨£å°±èƒ½å¤ å®Œæˆå…©å€‹èŠ¯ç‰‡çš„å¹¶è¡Œé€šä¿¡ã€‚TMS320C28346åž‹DSP芯片有16ä½XINTF數據總線,åšç‚ºç³»çµ±å¤–部接å£,它å¯ä»¥èˆ‡å„種外部å˜å„²å™¨æˆ–者CPU實ç¾ç„¡ç¸«é€£æŽ¥ï¼Œå¦‚圖5所示。在æ¤ç³»çµ±ä¸,將它與FPGAçš„16個用戶å¯å®šç¾©I/O管腳相連,用于實ç¾16ä½å¹¶è¡Œæ•¸æ“šçš„通信。TMS320C28346芯片å¯ç·¨ç¨‹é€šç”¨è¼¸å…¥/輸出引腳,ä»»é¸ä¸€å€‹å’ŒFPGA的用戶I/O管腳相連,作為DSPçš„è®€å¯«ä¸æ–·ã€‚
4多CPU架構控制器軟件è¨è¨ˆ
4.1控制器ARM的軟件è¨è¨ˆ
控制器ä¸ARM與FPGA的并å£é€šä¿¡ç”¨FSMC來實ç¾ï¼Œé‡‡ç”¨éžç¸½ç·šå¾©ç”¨çš„ç•°æ¥NORé–ƒå˜çš„æ–¹å¼ä¾†é©…動,讀時åºå¦‚圖6所示,寫時åºå¦‚圖7所示。
圖7寫æ“作時åº
å¹¶å£é€šä¿¡çš„地å€é¸æ“‡ä½¿ç”¨äº†FSMCçš„BANK1çš„åæ¿å¡Š2,具體程åºä»£ç¢¼å¦‚下:
p.FSMC_AccessMode=FSMC_AccessMode_A;
FSMC_NORSRAMInitStructure.FSMC_Bank=FSMC_Bank1_NORSRAM2;
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM2,ENABLE);
ARM與FPGAé€šä¿¡è§¸ç™¼ç”±å¤–éƒ¨ä¸æ–·ä¾†è§¸ç™¼ï¼Œç•¶FPGA準備好數據åŽçµ¦ARM䏀個䏿–·ï¼Œä¸æ–·å‘¨æœŸç‚º120μs,其ä¸å‰60μs用于ARM從并å£åœ°å€è®€å–數據并且把è¦å‚³çµ¦FPGA的數據寫入相應地å€ï¼ŒåŽ60μs用于FPGA從并å£åœ°å€è®€å–數據,程åºä»£ç¢¼å¦‚下:
pBuf=(s16*)EXT_SRAM_ADDR+31;
for(i=31;i<91;i++)//read
{FPGA_TO_ARM[i]=*pBuf++;}
pBuf=(s16*)EXT_SRAM_ADDR+41;
for(i=41;i<61;i++)//write
{*pBuf++=(FPGA_TO_ARM[i]+1);}
ARM與碼盤通信通éŽ485來實ç¾ï¼Œé€šä¿¡é€Ÿåº¦ç‚º2.5Mbpsï¼Œç”±äºŽé€Ÿåº¦å¿«é‡‡ç”¨ä¸€èˆ¬çš„ä¸æ–·æ–¹å¼å¾ˆé›£æ»¿è¶³éœ€æ±‚,本系統采用DMA來實ç¾ï¼Œç¨‹åºä»£ç¢¼å¦‚下:
DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32_t)(&(USART3->DR));//串å£3接收DMA
DMA_InitStructure.DMA_Memory0BaseAddr=(uint32_t)UART3_DMA_RxBuffer;
DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32_t)(&(USART3->DR));//串å£3發é€DMA
DMA_InitStructure.DMA_Memory0BaseAddr=(uint32_t)UART3_DMA_TxBuffer;
4.2控制器FPGA的軟件è¨è¨ˆ
FPGA與DSP并行總線通訊模塊用于FPGA與DSP之間的并行總線數據交æ›ï¼Œå…¶ä¸åŒ…å«å…©æ®µç¨ç«‹çš„地å€ç©ºé–“,一個空間用于DSP讀FPGA內部數據通é“,å¦ä¸€å€‹ç©ºé–“用于DSPå‘FPGA寫數據通é“。程åºä½¿ç”¨ALTERAæä¾›çš„é›™å£RAMçš„IPæ ¸ã€‚ç¨‹åºæ¨¡å¡Šåœ–如圖8所示。
圖8FPGAç¨‹åºæ¨¡å¡Šåœ–
FPGA與DSP并行總線通訊模塊主時é˜CLKçš„é »çŽ‡æ‡‰æ˜¯DSPç¸½ç·šè®€å¯«é »çŽ‡çš„4å€ä»¥ä¸Šï¼Œä¸€èˆ¬é¸å–120M,這個時é˜ç”±FPGA內部的PLL鎖相環生æˆã€‚由于DSP的地å€ç¸½ç·šä¸€èˆ¬ç‚º16ä½ä»¥ä¸Šï¼ŒADDR_DSP連接DSP地å€ç¸½ç·šçš„低ä½ã€‚RD_DSP連接DSP讀使能,WR_DSP連接DSP寫使能,如果有片é¸ä¿¡è™Ÿï¼ŒDSP讀寫使能信號需è¦èˆ‡ç‰‡é¸ä¿¡è™Ÿå–或åŽå†èˆ‡WR_DSPå’ŒRD_DSP連接。
4.3控制器DSP的軟件è¨è¨ˆ
DSP28346芯片通éŽå¤–部接å£ï¼ˆXINTF)來讀寫外擴å˜å„²å–®å…ƒï¼Œæœ¬ç³»çµ±ä¸å³ç‚ºFPGA的雙å£RAM空間。DSP28346çš„XINTF是一個éžå¾©ç”¨çš„ç•°æ¥ç¸½ç·šã€‚在é…ç½®XINTF時,應該檢測內部XTIMCLK所需è¦çš„與SYSCLKOUT有關的比例。通éŽå¯«XINTFCNF2寄å˜å™¨çš„XTIMCLKä½ï¼Œå¯ä»¥å°‡TIMCLKé…ç½®æˆèˆ‡SYSCLKOUTç›¸ç‰æˆ–者ç‰äºŽSYSCLKOUT/2。XINTF的所有訪å•從XCLKOUTçš„ä¸Šå‡æ²¿é–‹å§‹ï¼Œè€Œå¤–部é‚輯å—到XCLKOUT時é˜çš„æŽ§åˆ¶ã€‚通éŽå¯«XINTFCNF2寄å˜å™¨çš„CLKMODEä½ï¼Œå¯å°‡XCLKOUTé…ç½®æˆèˆ‡å…§éƒ¨XINTF時é˜XTIMCLKæˆæ¯”ä¾‹çš„é »çŽ‡ã€‚ç¨‹åºä»£ç¢¼å¦‚下:
XintfRegs.XINTCNF2.bit.XTIMCLK=0;
XintfRegs.XINTCNF2.bit.WRBUFF=3;
XintfRegs.XINTCNF2.bit.CLKOFF=0;
XintfRegs.XINTCNF2.bit.CLKMODE=0;
XintfRegs.XINTCNF2.bit.BY4CLKMODE=1;
XintfRegs.XTIMING6.bit.XWRLEAD=3;
XintfRegs.XTIMING6.bit.XWRACTIVE=5;
XintfRegs.XTIMING6.bit.XWRTRAIL=2;
XintfRegs.XTIMING6.bit.XRDLEAD=3;
XintfRegs.XTIMING6.bit.XRDACTIVE=5;
XintfRegs.XTIMING6.bit.XRDTRAIL=2;
XintfRegs.XTIMING6.bit.X2TIMING=0;
XintfRegs.XTIMING6.bit.USEREADY=1;
XintfRegs.XTIMING6.bit.READYMODE=1;
5çµè«–
市é¢ä¸Šçš„伺æœé©…動器CPUçš„æž¶æ§‹ä¸»è¦æœ‰å–®ARM控制器和單DSP控制器。單ARM控制器方案在通信和控制方é¢å˜åœ¨å„ªå‹¢ï¼Œä½†æ˜¯å¾©é›œç®—法在實ç¾çš„æ™‚å€™å¾€å¾€æœƒå› ç‚ºé‹ç®—耗時而é™ä½Žæ•´å€‹ç³»çµ±å¯¦æ™‚性;單DSP控制器方案ä¸åœ¨ç®—法ä¸å˜ä¸‹å„ªå‹¢ï¼Œä½†æ˜¯åœ¨å°å¤–通信和控制方é¢å¾€å¾€æœƒå¯¦ç¾èµ·ä¾†æ¯”較復雜。采用ARM+FPGA+DSP架構的多CPU控制器方案完全解決了上述兩種方法的弊端,充分發æ®äº†å„個CPU的優勢。本文論述的架構在本公å¸çš„伺æœé©…動器產å“ä¸é€²è¡Œè©¦é©—å’Œæ‡‰ç”¨ï¼Œè‰æ˜Žäº†â€œARM+FPGA+DSP架構的多CPU控制器架構â€çš„å¯è¡Œæ€§å’ŒæŠ€è¡“優勢。
圖9CPU算法在線仿真圖
如圖9ä¸çš„紅色標記框圖所示,整個伺æœé©…動器系統的CPU使用率在75.22%(A:空跑時優先級最低的計數器個數;B滿算法é‹è¡Œæ™‚優先級最低計數器的個數;CPU使用率=(A-B)/A*100),æ¤CPUæž¶æ§‹é”到了控制CPU使用率和æé«˜ç³»çµ±æ•ˆçŽ‡çš„ç›®æ¨™ã€‚
圖10
如圖10ä¸çš„離線慣é‡è¾¨è˜2s周期(0.5轉速)PIä¸è®Šæ™‚跟隨情æ³ï¼Œé€šé“1是轉速給定,通é“2是電ç£è½‰çŸ©ï¼Œé€šé“3是實際轉速,通é“4是實際A相電æµã€‚速度采集首先通éŽARM的高速485采集碼盤數據,并通éŽå¹¶å£å‚³çµ¦DSPå’ŒFPGA,經éŽç®—法處ç†å†æŠŠæ•¸æ“šä¸‹ç™¼çµ¦ç¢¼ç›¤ï¼Œæ•´å€‹é–‰ç’°éŽç¨‹é€šéŽå¹¶å£å‚³è¼¸ï¼Œæ»¿è¶³äº†ä¼ºæœé©…å‹•å™¨çš„ç®—æ³•å¯¦æ™‚æ€§è¦æ±‚,æ¤CPUæž¶æ§‹é”到了æé«˜æ•´å€‹ç³»çµ±å¯¦æ™‚性的目標。
標簽:
ä¸Šä¸€ç¯‡ï¼šä¼ºæœæŽ§åˆ¶ä¸å†ç”Ÿé›»é˜»çš„é…置計算
下一篇:永ç£äº¤æµä¼ºæœé›»å‹•機轉矩常數...
ä¸åœ‹å‚³å‹•網版權與å…è²¬è²æ˜Žï¼šå‡¡æœ¬ç¶²æ³¨æ˜Ž[來æºï¼šä¸åœ‹å‚³å‹•ç¶²]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Šå‡ç‚ºä¸åœ‹å‚³å‹•ç¶²(www.hysjfh.com)ç¨å®¶æ‰€æœ‰ã€‚如需轉載請與0755-82949061è¯ç³»ã€‚任何媒體ã€ç¶²ç«™æˆ–å€‹äººè½‰è¼‰ä½¿ç”¨æ™‚é ˆæ³¨æ˜Žä¾†æºâ€œä¸åœ‹å‚³å‹•ç¶²â€ï¼Œé•å者本網將追究其法律責任。
本網轉載并注明其他來æºçš„稿件,å‡ä¾†è‡ªäº’è¯ç¶²æˆ–æ¥å…§æŠ•稿人士,版權屬于原版權人。轉載請ä¿ç•™ç¨¿ä»¶ä¾†æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² ç‰ˆæ¬Šæ³•å¾‹è²¬ä»»ã€‚