單片機與mpc運動控制模塊組成的三軸運動控制系統(tǒng)方案_第1頁
單片機與mpc運動控制模塊組成的三軸運動控制系統(tǒng)方案_第2頁
單片機與mpc運動控制模塊組成的三軸運動控制系統(tǒng)方案_第3頁
單片機與mpc運動控制模塊組成的三軸運動控制系統(tǒng)方案_第4頁
單片機與mpc運動控制模塊組成的三軸運動控制系統(tǒng)方案_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、由單片機和mpc運動控制模塊組成的三軸運動控制系統(tǒng)摘要:以單片機stc 89C 2051和mpc微運動控制模塊為控制系統(tǒng)核心,控制三向步進電機進行運動實驗。單片機向mpc微運動控制模塊發(fā)送指令,模塊信號輸出給步進驅(qū)動器進行高速運動??梢赃M行定點運動、直線插補和圓弧插補。1 .介紹運動控制的應(yīng)用在國內(nèi)已有十多年的歷史,技術(shù)相當成熟。通常運動控制需要運動控制卡、運動控制器等產(chǎn)品,但這些產(chǎn)品價格昂貴,使用復(fù)雜,不適合單片機組成的控制系統(tǒng)。但是,如果單片機直接用于運動控制,由于運動控制對系統(tǒng)性能的要求非常高,而且單片機的速度資源有限,因此很難設(shè)計出性能優(yōu)良的運動控制模型。有限的。因此,本文采用單片機和

2、專業(yè)的mpc微型運動控制模塊組成運動控制系統(tǒng)。MPC微運動控制模塊采用全新的FPGA設(shè)計,集成了實用的運動控制功能,可以通過與普通單片機的串行通訊控制步進電機和伺服電機。具有以下特點: 串行通訊只需少量指令,簡單可靠。 單個模塊最多可輸出6軸,多模塊組網(wǎng)最多可工作120軸。 最大脈沖輸出頻率為2MHz,脈沖輸出采用脈沖+方向方式。 多達六軸獨立運動控制,任意兩軸線性插補,任意兩軸圓弧插補。 每軸一個硬件回原點。 模塊具有1000級指令緩存深度,指令先進先出。 模塊體積小,僅3.5*2.5*1.5cm,雙排直插30針。2.系統(tǒng)硬件設(shè)計硬件系統(tǒng)由四部分組成:單片機部分單片機和模塊只需要三根線連接,

3、分別作為RXD和TXD進行串口通訊,作為模塊緩存滿后輸出的BUSY信號。 P3.7引出一個按鈕進行測試。mpc微運動控制模塊部分mpc微型運動控制模塊采用5V電源供電,RXD、TXD、BUSY與單片機相連。 X0、X1、X2可作為三通電機的原點信號,P1、D1為1軸的脈沖和方向信號。 P2、D2為2軸的脈沖和方向信號。 P3、D3為3軸的脈沖和方向信號。(3) 原點信號輸入部分原點采用光耦隔離輸入,輸入端可接NPN光電開關(guān)作為原點信號。信號輸出部分輸出采用NPN晶體管極電極的開路輸出,分別接電機驅(qū)動器的脈沖和方向信號輸入端。3.系統(tǒng)軟件設(shè)計MPC微動控制模塊與單片機的串行通信速率為115200

4、bps,數(shù)據(jù)位為8位,停止位為0位,無奇偶校驗。使用該功能前,先設(shè)置好單片機的串口功能,并將要使用的功能原型復(fù)制到當前程序中。測試程序如下:#include /-STC 89 C205 1 -sfr IPH = 0XB7;sfr CCON = 0XD8;sfr CMOD = 0XD9;sfr CL = 0XE9;sfr CH =0XF9;sfr CCAP0L = 0XEA;sfr CCAP0H = 0XFA;sfr CCAPM0 = 0XDA;sfr CCAPM1 = 0XDB;sfr P3M1=0XB1;sfr P3M0=0XB2;sfr P1M1=0X91;sfr P1M0=0X92;sf

5、r WAKE_CLKO= 0X8f;sfr BRT = 0 x9c;sfr AUXR = 0 x8E;sfr AUXR1 = 0 xA2;sfr WDT_CONTR = 0 xc1;sfr T2MOD = 0 xC9;/位忙= P3 2;位 s1 = P37;無效初始()P3M1 = 0 x00;P3M0 = 0 x80;P1M1 = 0 x00;P1M0 = 0 xf9;無效的init_uart()PCON &= 0 x7f; /波特率不加倍SCON = 0 x50; /8位數(shù)據(jù),可變波特率BRT = 0 xFD; /設(shè)置獨立波特率發(fā)生器重載值波特率115200bpsAUXR |= 0 x0

6、4; /獨立波特率發(fā)生器的時鐘為Fosc,即1TAUXR |= 0 x01; /串口1選擇獨立的波特率發(fā)生器作為波特率發(fā)生器AUXR |= 0 x10; /啟動獨立波特率發(fā)生器/*串口發(fā)送一個字節(jié),需要根據(jù)使用的單片機改變。*/無效 USART_Txbyte(無符號字符 i)SBUF = 我;而(TI =0); /等待發(fā)送完成TI = 0; /清除串口發(fā)送完成中斷請求標志/*串口接收模塊返回的10字節(jié)數(shù)據(jù)需要根據(jù)使用的單片機做適當?shù)母淖儭?/無效接收(無符號字符 *buf)無符號字符 i;對于(i=0;i10;i+)而(RI=0); RI=0;bufi=SBUF;/*串口發(fā)送一串數(shù)據(jù)。*/vo

7、id USRAT_transmit(unsigned char *fdata, unsigned char len)無符號字符 i;for(i=0;i24;OutByte7 = 脈沖1 16;OutByte8 = 脈沖1 8;OutByte9 = 脈沖1;OutByte10 = 脈沖2 24;OutByte11 = 脈沖2 16;OutByte12 = 脈沖2 8;OutByte13 = 脈沖2;OutByte14 = 模式;OutByte15 =OutByte1 +OutByte2 +OutByte3 +OutByte4+OutByte5 +OutByte6 +OutByte7 +OutBy

8、te8 +OutByte9 +輸出字節(jié)10 +輸出字節(jié)11 + 輸出字節(jié)12 +輸出字節(jié)13 +輸出字節(jié)14;USRAT_transmit(OutByte,16);接收(inbuf);返回 1;/*函數(shù)名:inp_arc功能:兩軸圓弧插補范圍:卡諾卡號no1參與插補X軸的軸號no2插補所涉及的Y軸的軸號x,y圓弧插值(相對于起點),圓周(-8388608+8388607)i,j圓弧插補中心點的位置(相對于起點),圓周(-8388608+8388607)模式 0:順時針插補 1:逆時針插補返回值:0 失敗1 成功*/unsigned char inp_arc(unsigned char card

9、no ,unsigned char no1,unsigned char no2, long X , long y, long i, long j,unsigned char mode )無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)0 = 0 x68;輸出字節(jié)1 = 0 x17;OutByte2 = 卡號;輸出字節(jié)3 = 0 x7;OutByte4 = no1;OutByte5 = no2;OutByte6 = X 24;OutByte7 = X 16;OutByte8 = X 8;輸出字節(jié)9 = X ;OutByte10 = y 24;OutByte 11 = y 16;Out

10、Byte 12 = y 8;輸出字節(jié) 13 = y;OutByte 14 = i 24;OutByte 15 = i 16;OutByte 16 = i 8;輸出字節(jié) 17 = i;OutByte 18 = j 24;OutByte 19 = j 16;OutByte 20 = j 8;輸出字節(jié) 21 = j;OutByte 22 = 模式;OutByte 23 = OutByte 1 + OutByte 2 + OutByte 3 + OutByte 4 + OutByte 5 + OutByte 6 + OutByte 7 + OutByte 8 + OutByte 9 +輸出字節(jié) 10

11、+ 輸出字節(jié) 11 + OutByte 12 + OutByte 13 + OutByte 14 + OutByte 15 + OutByte 16 + OutByte 17 + OutByte 18 + OutByte 19 + OutByte 20 + OutByte 21 +輸出字節(jié)22;USRAT_transmit (OutByte, 24); 接收(inbuf);返回 1;/*函數(shù)名稱:set_speed功能:設(shè)置軸速度范圍:卡諾卡號軸軸號 (1-6)acc 加速時間 (ms)dec 減速時間 (ms)startv 起始頻率 (*100Hz)速度運行頻率(*100Hz)返回值:0 失

12、敗1 成功*/unsigned char set_speed (unsigned char cardno ,unsigned char axis ,unsigned int acc ,unsigned int dec ,unsigned int startv ,unsigned int speed )無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)0 = 0 x68;輸出字節(jié)1 = 0 xD;OutByte2 = 卡號;輸出字節(jié)3 = 1;OutByte4 = 軸;OutByte5 = acc 8;OutByte6 = acc ;OutByte7 = 十進制 8;OutByte8

13、= 十進制;OutByte9 = startv 8;OutByte10 = startv ;OutByte11 = 速度 8;OutByte12 = 速度;OutByte13 =OutByte1 +OutByte2 +OutByte3 +OutByte4 +OutByte5 +OutByte6 +OutByte7 +OutByte8 +OutByte9 +輸出字節(jié)10 +輸出字節(jié)11 +輸出字節(jié)12;USRAT_transmit(OutByte,14);接收(inbuf);返回 1;/*函數(shù)名稱:set_soft_limit功能:設(shè)置軸軟限位范圍:卡諾卡號軸軸號 (1-6)pulse1負限脈沖

14、值,范圍(-83886080)pulse2正限脈沖值,范圍(0+8388607)返回值:0 失敗1 成功*/unsigned char set_soft_limit(unsigned char cardno ,unsigned char 軸 ,unsigned char 模式, long pulse1 , long pulse2 )無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)0 = 0 x68;輸出字節(jié)1 = 0 xE;OutByte 2 = cardno;輸出字節(jié)3 = 0 x13;OutByte 4 = 軸;OutByte 5 = 模式;OutByte 6 = 脈沖 1 2

15、4;OutByte 7 = 脈沖 1 16;OutByte 8 = 脈沖 1 8;OutByte 9 = 脈沖 1;OutByte 10 = 脈沖2 24;OutByte 11 = 脈沖 2 16;OutByte 12 = 脈沖 2 8;OutByte 13 = 脈沖 2;OutByte 14 = OutByte 1 + OutByte 2 + OutByte 3 + OutByte 4 + OutByte 5 + OutByte 6 + OutByte 7 + OutByte 8 + OutByte 9 +輸出字節(jié) 10 + 輸出字節(jié) 11 +輸出字節(jié) 12 + 輸出字節(jié) 13;USRAT_

16、transmit (OutByte, 15);接收(inbuf);返回 1;/*函數(shù)名稱:pmove功能:單軸操作范圍:卡諾卡號軸軸號 (1-6)脈沖輸出脈沖0:正方向運動 24;OutByte 6 = pulse 16;OutByte 7 = pulse 8;OutByte 8 = pulse;OutByte 9 = mode;OutByte 10 = OutByte 1 + OutByte 2 + OutByte 3 + OutByte 4 + OutByte 5 + OutByte 6 + OutByte 7 + OutByte 8 + OutByte 9;USRAT_transmit

17、(OutByte, 11);receive (inbuf);return 1;/ *名 名: wait_delay數(shù) : 等待 延時 數(shù)參數(shù) :cardno卡號value 延時量(1-10000)MS返回值:0 失敗1 成功*/unsigned char wait_delay(unsigned char cardno ,unsigned int value)無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)0 = 0 x68;輸出字節(jié)1 = 0 x6;OutByte2 = 卡號;輸出字節(jié)3 = 0 xE;OutByte4 = 值 8;OutByte5 = 值;OutByte6 =Ou

18、tByte1 +OutByte2 +OutByte3 +OutByte4 +OutByte5;USRAT_transmit(OutByte,7);接收(inbuf);返回 1;/*函數(shù)名: set_command_pos功能:設(shè)置軸邏輯位置范圍:卡諾卡號軸軸號 (1-6)脈沖位置脈沖數(shù),圓周(-268435455+268435455)返回值:0 失敗1 成功*/unsigned char set_command_pos(unsigned char cardno ,unsigned char axis, long value )無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)0 =

19、0 x68;輸出字節(jié)1 = 0 x9;OutByte2 = 卡號;輸出字節(jié)3 = 0 x12;OutByte4 = 軸;OutByte5 = 值 24;OutByte6 = 值 16;OutByte7 = 值 8;OutByte8 = 值;OutByte9 =OutByte1 +OutByte2 +OutByte3 +OutByte4 +OutByte5 +OutByte6 +OutByte7 +OutByte8 ;USRAT_transmit(OutByte,10);接收(inbuf);返回 1;/*函數(shù)名稱:wait_pulse功能:等待軸脈沖數(shù)范圍:卡諾卡號軸軸號 (1-6)脈沖位置脈沖

20、數(shù),圓周(-268435455+268435455)返回值:0 失敗1 成功*/unsigned char wait_pulse(unsigned char cardno ,unsigned char 軸, long value )無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)0 = 0 x68;輸出字節(jié)1 = 0 x9;OutByte2 = 卡號;輸出字節(jié)3 = 0 x19;OutByte4 = 軸;OutByte5 = 值 24;OutByte6 = 值 16;OutByte7 = 值 8;OutByte8 = 值;OutByte9 =OutByte1 +OutByte2 +

21、OutByte3 +OutByte4 +OutByte5 +OutByte6 +OutByte7 +OutByte8 ;USRAT_transmit(OutByte,10);接收(inbuf);返回 1;/*函數(shù)名:write_bit功能:寫輸出端口狀態(tài)范圍:卡諾卡號number 端口號 (0-8) Y0-Y8value state (0,1) 0 輸出低電平 1 輸出高電平返回值:0 失敗1 成功*/unsigned char write_bit(unsigned char cardno, unsigned char number, unsigned char value)無符號字符輸出字節(jié)

22、25;無符號字符 inbuf12;輸出字節(jié)0 = 0 x68;輸出字節(jié)1 = 0 x6;OutByte2 = 卡號;輸出字節(jié)3 = 3 ;OutByte4 = 數(shù)字;OutByte5 = 值;OutByte6 =OutByte1 +OutByte2 +OutByte3 +OutByte4 +OutByte5 ;USRAT_transmit(OutByte,7);接收(inbuf);返回 1;/*函數(shù)名稱:突然停止功能:軸停止范圍:卡諾卡號軸停止軸號(1-6)返回值:0 失敗1 成功*/無符號字符突然停止(無符號字符卡號,無符號字符軸)無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)

23、0 = 0 x68;輸出字節(jié)1 = 0 x5;OutByte2 = 卡號;輸出字節(jié)3 = 0 x17;OutByte4 = 軸;OutByte5 =OutByte1 +OutByte2 +OutByte3 +OutByte4 ;USRAT_transmit(OutByte,6);接收(inbuf);返回 1;/*函數(shù)名:wait_in功能:等待輸入端口狀態(tài)范圍:卡諾卡號number 端口號 (0-6) X0-X6值狀態(tài) (0,1) 0 輸入低電平 1 輸入高電平返回值:0 失敗1 成功*/unsigned char wait_in(unsigned char cardno, unsigned

24、char number, unsigned char value)無符號字符輸出字節(jié)25;unsigned char inbuf12;OutByte0 = 0 x68 ;OutByte1 = 0 x6 ;OutByte2 = cardno;OutByte3 = 0 xF ;OutByte4 = number ;OutByte5 = value;OutByte6 =OutByte1 +OutByte2 +OutByte3 +OutByte4 +OutByte5;USRAT_transmit(OutByte,7);receive(inbuf);return 1;/*函數(shù)名: wait_stop功能

25、:等待軸停止參數(shù):cardno 卡號axis The axis number that needs to be stoppedreturn value:0 failure 1 success*/unsigned char wait_stop(unsigned char cardno ,unsigned char 軸)無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)0 = 0 x68;輸出字節(jié)1 = 0 x5;OutByte2 = 卡號;輸出字節(jié)3 = 9 ;OutByte4 = 軸;OutByte5 =OutByte1 +OutByte2 +OutByte3 +OutByte4;U

26、SRAT_transmit(OutByte,6);接收(inbuf);返回 1;/*函數(shù)名:get_number功能:獲取唯一序列號范圍:卡諾卡號返回值:32位序列號*/unsigned long get_number(unsigned char cardno)無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)0 = 0 x68;輸出字節(jié)1 = 0 x4;OutByte2 = 卡號;輸出字節(jié)3 = 0 xC ;OutByte4 =OutByte1 +OutByte2 +OutByte3 ;USRAT_transmit(OutByte,5);接收(inbuf);返回 (unsigned

27、 long)inbuf424+(unsigned long)inbuf516+(unsigned long)inbuf68+(unsigned long)inbuf7;/*函數(shù)名稱:get_status功能:獲取各軸的工作狀態(tài)范圍:卡諾卡號返回值:8位二進制,1-6位分別代表1-6軸的狀態(tài),0表示停止,1表示運行。*/unsigned char get_status(unsigned char cardno)無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)0 = 0 x68;輸出字節(jié)1 = 0 x4;OutByte2 = 卡號;輸出字節(jié)3 = 5 ;OutByte4 =OutByt

28、e1 +OutByte2 +OutByte3 ;USRAT_transmit(OutByte,5);接收(inbuf);返回 inbuf4;/*函數(shù)名:get_command_pos功能:獲取坐標軸邏輯位置范圍:卡諾卡號軸軸數(shù)返回值:位置脈沖數(shù),范圍(-268435455+268435455)*/unsigned long get_command_pos(unsigned char cardno, unsigned char axis)無符號字符輸出字節(jié)25;無符號字符 inbuf12;輸出字節(jié)0 = 0 x68;輸出字節(jié)1 = 0 x5;OutByte2 = 卡號;輸出字節(jié)3 = 6 ;OutB

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論