單片機(jī)與mpc006運(yùn)動(dòng)控制模塊組成的三軸運(yùn)動(dòng)控制系統(tǒng)
摘要:采用單片機(jī)stc89C2051和mpc006微型運(yùn)動(dòng)控制模塊作為控制系統(tǒng)的核心,控制三路步進(jìn)電機(jī)做運(yùn)動(dòng)實(shí)驗(yàn)。單片機(jī)發(fā)送指令給mpc006微型運(yùn)動(dòng)控制模塊,模塊信號(hào)輸出給步進(jìn)驅(qū)動(dòng)器作高速度運(yùn)動(dòng)?梢远c(diǎn)運(yùn)動(dòng),直線插補(bǔ)和圓弧插補(bǔ)。
1.引言
運(yùn)動(dòng)控制的應(yīng)用在國(guó)內(nèi)已有十幾年的歷史,技術(shù)也相當(dāng)成熟。通常運(yùn)動(dòng)控制都需要用到運(yùn)動(dòng)控制卡,運(yùn)動(dòng)控制器等產(chǎn)品,但這些產(chǎn)品價(jià)格高昂,使用復(fù)雜,也不適合由單片機(jī)構(gòu)成的控制系統(tǒng)。而如果直接采用單片機(jī)來做運(yùn)動(dòng)控制,由于運(yùn)動(dòng)控制對(duì)系統(tǒng)性能要求非常高,單片機(jī)速度資源有限,難以設(shè)計(jì)出性能優(yōu)良的運(yùn)動(dòng)控制模型。因此,本文采用單片機(jī)和專業(yè)的mpc006微型運(yùn)動(dòng)控制模塊構(gòu)成運(yùn)動(dòng)控制系統(tǒng)。
MPC006微型運(yùn)動(dòng)控制模塊采用新型FPGA設(shè)計(jì),集成實(shí)用運(yùn)動(dòng)控制功能,可與普通單片機(jī)通過串口通訊對(duì)步進(jìn)電機(jī)和伺服電機(jī)控制。具有如下特點(diǎn):
◆ 串口通訊,僅需使用幾條指令,簡(jiǎn)單可靠。
◆ 單模塊最高六軸輸出,多個(gè)模塊組網(wǎng)工作可達(dá)120軸。
◆ 最大脈沖輸出頻率為2MHz,脈沖輸出使用脈沖+方向方式。
◆ 最高六軸獨(dú)立運(yùn)動(dòng)控制,任意兩軸直線插補(bǔ),任意兩軸圓弧插補(bǔ)。
◆ 每軸一路硬件回原點(diǎn)。
◆ 模塊帶1000級(jí)指令緩存深度,指令先進(jìn)先出。
◆ 模塊體積小巧,僅3.5*2.5*1.5cm,雙排直插30腳。
2,系統(tǒng)硬件設(shè)計(jì)
硬件系統(tǒng)由四部分構(gòu)成:
- 單片機(jī)部分
單片機(jī)與模塊只需三根線連接,用作串口通訊的RXD和TXD,用作模塊緩存滿輸出的BUSY信號(hào)。P3.7引出一按鍵作為測(cè)試使用。

- mpc006微型運(yùn)動(dòng)控制模塊部分
mpc006微型運(yùn)動(dòng)控制模塊采用5V電源供電,RXD,TXD,BUSY與單片機(jī)連接。X0,X1,X2可作為三路電機(jī)的原點(diǎn)信號(hào),P1,D1為1軸的脈沖和方向信號(hào)。P2,D2為2軸的脈沖和方向信號(hào)。P3,D3為3軸的脈沖和方向信號(hào)。

(3)原點(diǎn)信號(hào)輸入部分
原點(diǎn)采用光藕隔離輸入,輸入端可接NPN型光電開關(guān)來作為原點(diǎn)信號(hào)。

- 信號(hào)輸出部分
輸出采用NPN晶體管極電極開路輸出,分別接到電機(jī)驅(qū)動(dòng)器脈沖和方向信號(hào)輸入端。
%605.jpg)
3,系統(tǒng)軟件設(shè)計(jì)
MPC006微型運(yùn)動(dòng)控制模塊與單片機(jī)串口通訊速率為115200bps,數(shù)據(jù)位為8位,停止位0位,無校驗(yàn)。使用函數(shù)前先設(shè)置好單片機(jī)的串口功能,并將需要用到的函數(shù)的原型拷貝到當(dāng)前程序內(nèi)。
試驗(yàn)程序如下:
#include <reg52.h>
//-----STC89C2051-------
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;
sfr WAKE_CLKO= 0X8f;
sfr BRT =0x9c;
sfr AUXR =0x8E;
sfr AUXR1 = 0xA2;
sfr WDT_CONTR = 0xc1;
sfr T2MOD = 0xC9;
//////////////////
sbit busy = P3^2;
sbit s1 = P3^7;
void initial()
{
P3M1 = 0x00;
P3M0 = 0x80;
P1M1 = 0x00;
P1M0 = 0xf9;
}
void init_uart()
{
PCON &= 0x7f; //波特率不倍速
SCON = 0x50; //8位數(shù)據(jù),可變波特率
BRT = 0xFD; //設(shè)定獨(dú)立波特率發(fā)生器重裝值 波特率115200bps
AUXR |= 0x04; //獨(dú)立波特率發(fā)生器時(shí)鐘為Fosc,即1T
AUXR |= 0x01; //串口1選擇獨(dú)立波特率發(fā)生器為波特率發(fā)生器
AUXR |= 0x10; //啟動(dòng)獨(dú)立波特率發(fā)生器
}
/*
串口發(fā)送一個(gè)字節(jié),需根據(jù)所使用的單片機(jī)作適當(dāng)更改。
*/
void USART_Txbyte(unsigned char i)
{
SBUF = i;
while(TI ==0); //等待發(fā)送完成
TI = 0; //清零串口發(fā)送完成中斷請(qǐng)求標(biāo)志
}
/*
串口接收模塊返回的10個(gè)字節(jié)數(shù)據(jù),需根據(jù)所使用的單片機(jī)作適當(dāng)更改。
*/
void receive(unsigned char *buf)
{
unsigned char i;
for(i=0;i<10;i++)
{
while(RI==0);
RI=0;
buf[i]=SBUF;
}
}
/*
串口發(fā)送一串?dāng)?shù)據(jù)。
*/
void USRAT_transmit(unsigned char *fdata,unsigned char len)
{
unsigned char i;
for(i=0;i<len;i++)
{
USART_Txbyte(fdata[i]);
}
}
/*
函數(shù)名: inp_move
功能:二軸直線插補(bǔ)
參數(shù):
cardno 卡號(hào)
no1 X軸軸號(hào)
no2 Y軸軸號(hào)
pulse1,pulse2 X-Y軸移動(dòng)的距離,范圍(-8388608~+8388607)
mode 0:相對(duì)坐標(biāo) 1:絕對(duì)坐標(biāo)
返回值:
0 失敗 1 成功
*/
unsigned char inp_move(unsigned char cardno,unsigned char no1 ,unsigned char no2 , long pulse1 ,long pulse2 ,unsigned char mode )
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68;
OutByte[1] = 0x0F;
OutByte[2] = cardno;
OutByte[3] = 0x7;
OutByte[4] = no1;
OutByte[5] = no2;
OutByte[6] = pulse1>>24;
OutByte[7] = pulse1 >>16;
OutByte[8] = pulse1>> 8;
OutByte[9] = pulse1;
OutByte[10] = pulse2 >>24;
OutByte[11] = pulse2 >>16;
OutByte[12] = pulse2 >>8;
OutByte[13] = pulse2 ;
OutByte[14] = mode;
OutByte[15] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4]+OutByte[5] +OutByte[6] +OutByte[7] +OutByte[8] +OutByte[9] +OutByte[10] +OutByte[11] + \
OutByte[12] +OutByte[13] +OutByte[14];
USRAT_transmit(OutByte,16);
receive(inbuf);
return 1;
}
/*
函數(shù)名: inp_arc
功能:二軸圓弧插補(bǔ)
參數(shù):
cardno 卡號(hào)
no1 參與插補(bǔ)X軸的軸號(hào)
no2 參與插補(bǔ)Y軸的軸號(hào)
x,y 圓弧插補(bǔ)的終點(diǎn)位置(相對(duì)于起點(diǎn)),范圍(-8388608~+8388607)
i,j 圓弧插補(bǔ)的圓心點(diǎn)位置(相對(duì)于起點(diǎn)),范圍(-8388608~+8388607)
mode 0:順時(shí)針插補(bǔ) 1:逆時(shí)針插補(bǔ)
返回值:
0 失敗 1 成功
*/
unsigned char inp_arc(unsigned char cardno ,unsigned char no1,unsigned char no2, long X , long y, long i, long j,unsigned char mode )
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68;
OutByte[1] = 0x17;
OutByte[2] = cardno;
OutByte[3] = 0x7;
OutByte[4] = no1;
OutByte[5] = no2;
OutByte[6] = X >>24;
OutByte[7] = X >>16;
OutByte[8] = X >>8;
OutByte[9] = X ;
OutByte[10] = y >>24;
OutByte[11] = y >>16;
OutByte[12] = y >>8;
OutByte[13] = y ;
OutByte[14] = i >>24;
OutByte[15] = i >>16;
OutByte[16] = i >>8;
OutByte[17] = i ;
OutByte[18] = j >>24;
OutByte[19] = j >>16;
OutByte[20] = j >>8;
OutByte[21] = j ;
OutByte[22] = mode;
OutByte[23] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] +OutByte[5] +OutByte[6] +OutByte[7] +OutByte[8] +OutByte[9] +OutByte[10] +OutByte[11] + \
OutByte[12] +OutByte[13] +OutByte[14] +OutByte[15] +OutByte[16] +OutByte[17] +OutByte[18] +OutByte[19] +OutByte[20] +OutByte[21] +OutByte[22] ;
USRAT_transmit(OutByte,24);
receive(inbuf);
return 1;
}
/*
函數(shù)名: set_speed
功能:設(shè)置軸速度
參數(shù):
cardno 卡號(hào)
axis 軸號(hào)(1-6)
acc 加速時(shí)間(ms)
dec 減速時(shí)間(ms)
startv 啟動(dòng)頻率(*100Hz)
speed 運(yùn)行頻率(*100Hz)
返回值:
0 失敗 1 成功
*/
unsigned char set_speed(unsigned char cardno ,unsigned char axis ,unsigned int acc ,unsigned int dec ,unsigned int startv ,unsigned int speed )
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68;
OutByte[1] = 0xD;
OutByte[2] = cardno;
OutByte[3] = 1;
OutByte[4] = axis;
OutByte[5] = acc >>8;
OutByte[6] = acc ;
OutByte[7] = dec >>8;
OutByte[8] = dec ;
OutByte[9] = startv >>8;
OutByte[10] = startv ;
OutByte[11] = speed >>8;
OutByte[12] = speed ;
OutByte[13] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] +OutByte[5] +OutByte[6] +OutByte[7] +OutByte[8] +OutByte[9] +OutByte[10] +OutByte[11] +
OutByte[12] ;
USRAT_transmit(OutByte,14);
receive(inbuf);
return 1;
}
/*
函數(shù)名: set_soft_limit
功能:設(shè)置軸軟件限位
參數(shù):
cardno 卡號(hào)
axis 軸號(hào)(1-6)
pulse1 負(fù)方向限位脈沖值,范圍(-8388608~0)
pulse2 正方向限位脈沖值,范圍(0~+8388607)
返回值:
0 失敗 1 成功
*/
unsigned char set_soft_limit(unsigned char cardno ,unsigned char axis ,unsigned char mode, long pulse1 , long pulse2 )
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68;
OutByte[1] = 0xE;
OutByte[2] = cardno ;
OutByte[3] = 0x13;
OutByte[4] = axis;
OutByte[5] = mode;
OutByte[6] = pulse1 >>24;
OutByte[7] = pulse1 >>16;
OutByte[8] = pulse1 >>8;
OutByte[9] = pulse1 ;
OutByte[10] = pulse2 >>24;
OutByte[11] = pulse2 >>16;
OutByte[12] = pulse2 >>8;
OutByte[13] = pulse2 ;
OutByte[14] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] +OutByte[5] +OutByte[6] +OutByte[7] +OutByte[8] +OutByte[9] +OutByte[10] +OutByte[11] +
OutByte[12] +OutByte[13] ;
USRAT_transmit(OutByte,15);
receive(inbuf);
return 1;
}
/*
函數(shù)名: pmove
功能:?jiǎn)屋S運(yùn)行
參數(shù):
cardno 卡號(hào)
axis 軸號(hào)(1-6)
pulse 輸出的脈沖數(shù) >0:正方向移動(dòng) <0:負(fù)方向移動(dòng) 范圍(-268435455~+268435455)
mode 0:相對(duì)位置 1:絕對(duì)位置
返回值:
0 失敗 1 成功
*/
unsigned char pmove(unsigned char cardno ,unsigned char axis,long pulse , unsigned char mode)
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68;
OutByte[1] = 0xA ;
OutByte[2] = cardno;
OutByte[3] = 2 ;
OutByte[4] = axis;
OutByte[5] = pulse >>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(OutByte,11);
receive(inbuf);
return 1;
}
/*
函數(shù)名: wait_delay
功能:等待延時(shí)數(shù)
參數(shù):
cardno 卡號(hào)
value 延時(shí)量(1-10000)MS
返回值:
0 失敗 1 成功
*/
unsigned char wait_delay(unsigned char cardno ,unsigned int value)
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68 ;
OutByte[1] = 0x6 ;
OutByte[2] = cardno ;
OutByte[3] = 0xE ;
OutByte[4] = value >>8;
OutByte[5] = value ;
OutByte[6] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] +OutByte[5];
USRAT_transmit(OutByte,7);
receive(inbuf);
return 1;
}
/*
函數(shù)名: set_command_pos
功能: 設(shè)置軸邏輯位置
參數(shù):
cardno 卡號(hào)
axis 軸號(hào)(1-6)
pulse 位置脈沖數(shù),范圍(-268435455~+268435455)
返回值:
0 失敗 1 成功
*/
unsigned char set_command_pos(unsigned char cardno ,unsigned char axis, long value )
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68 ;
OutByte[1] = 0x9 ;
OutByte[2] = cardno ;
OutByte[3] = 0x12 ;
OutByte[4] = axis ;
OutByte[5] = value >>24;
OutByte[6] = value >>16;
OutByte[7] = value >>8;
OutByte[8] = value ;
OutByte[9] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] +OutByte[5] +OutByte[6] +OutByte[7] +OutByte[8] ;
USRAT_transmit(OutByte,10);
receive(inbuf);
return 1;
}
/*
函數(shù)名: wait_pulse
功能:等待軸脈沖數(shù)
參數(shù):
cardno 卡號(hào)
axis 軸號(hào)(1-6)
pulse 位置脈沖數(shù),范圍(-268435455~+268435455)
返回值:
0 失敗 1 成功
*/
unsigned char wait_pulse(unsigned char cardno ,unsigned char axis, long value )
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68;
OutByte[1] = 0x9 ;
OutByte[2] = cardno ;
OutByte[3] = 0x19;
OutByte[4] = axis ;
OutByte[5] = value >>24;
OutByte[6] = value >>16;
OutByte[7] = value >>8;
OutByte[8] = value ;
OutByte[9] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] +OutByte[5] +OutByte[6] +OutByte[7] +OutByte[8] ;
USRAT_transmit(OutByte,10);
receive(inbuf);
return 1;
}
/*
函數(shù)名: write_bit
功能:寫輸出口狀態(tài)
參數(shù):
cardno 卡號(hào)
number 端口號(hào)(0-8) Y0-Y8
value 狀態(tài)(0,1) 0 輸出低電平 1 輸出高電平
返回值:
0 失敗 1 成功
*/
unsigned char write_bit(unsigned char cardno , unsigned char number, unsigned char value)
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68 ;
OutByte[1] = 0x6 ;
OutByte[2] = cardno ;
OutByte[3] = 3 ;
OutByte[4] = number;
OutByte[5] = value;
OutByte[6] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] +OutByte[5] ;
USRAT_transmit(OutByte,7);
receive(inbuf);
return 1;
}
/*
函數(shù)名: sudden_stop
功能: 軸停止
參數(shù):
cardno 卡號(hào)
axis 停止的軸號(hào)(1-6)
返回值:
0 失敗 1 成功
*/
unsigned char sudden_stop(unsigned char cardno ,unsigned char axis)
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68;
OutByte[1] = 0x5;
OutByte[2] = cardno ;
OutByte[3] = 0x17 ;
OutByte[4] = axis ;
OutByte[5] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] ;
USRAT_transmit(OutByte,6);
receive(inbuf);
return 1;
}
/*
函數(shù)名: wait_in
功能: 等待輸入口狀態(tài)
參數(shù):
cardno 卡號(hào)
number 端口號(hào)(0-6) X0-X6
value 狀態(tài)(0,1) 0 輸入低電平 1 輸入高電平
返回值:
0 失敗 1 成功
*/
unsigned char wait_in( unsigned char cardno, unsigned char number, unsigned char value)
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68 ;
OutByte[1] = 0x6 ;
OutByte[2] = cardno;
OutByte[3] = 0xF ;
OutByte[4] = number ;
OutByte[5] = value ;
OutByte[6] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] +OutByte[5];
USRAT_transmit(OutByte,7);
receive(inbuf);
return 1;
}
/*
函數(shù)名: wait_stop
功能:等待軸停止
參數(shù):
cardno 卡號(hào)
axis 需要停止的軸號(hào)
返回值:
0 失敗 1 成功
*/
unsigned char wait_stop(unsigned char cardno ,unsigned char axis)
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68 ;
OutByte[1] = 0x5 ;
OutByte[2] = cardno ;
OutByte[3] = 9 ;
OutByte[4] = axis ;
OutByte[5] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4];
USRAT_transmit(OutByte,6);
receive(inbuf);
return 1;
}
/*
函數(shù)名: get_number
功能:獲取唯一序列號(hào)
參數(shù):
cardno 卡號(hào)
返回值: 32位序列號(hào)
*/
unsigned long get_number(unsigned char cardno )
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68 ;
OutByte[1] = 0x4 ;
OutByte[2] = cardno;
OutByte[3] = 0xC ;
OutByte[4] =OutByte[1] +OutByte[2] +OutByte[3] ;
USRAT_transmit(OutByte,5);
receive(inbuf);
return (unsigned long)inbuf[4]<<24+(unsigned long)inbuf[5]<<16+(unsigned long)inbuf[6]<<8+(unsigned long)inbuf[7];
}
/*
函數(shù)名: get_status
功能:獲取各軸工作狀態(tài)
參數(shù):
cardno 卡號(hào)
返回值: 8位二進(jìn)制,1-6位分別代表1-6軸狀態(tài),0表示停止中,1表示運(yùn)行中。
*/
unsigned char get_status( unsigned char cardno)
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68 ;
OutByte[1] = 0x4 ;
OutByte[2] = cardno ;
OutByte[3] = 5 ;
OutByte[4] =OutByte[1] +OutByte[2] +OutByte[3] ;
USRAT_transmit(OutByte,5);
receive(inbuf);
return inbuf[4];
}
/*
函數(shù)名: get_command_pos
功能: 獲取軸邏輯位置
參數(shù):
cardno 卡號(hào)
axis 軸號(hào)
返回值: 位置脈沖數(shù),范圍(-268435455~+268435455)
*/
unsigned long get_command_pos( unsigned char cardno, unsigned char axis)
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68 ;
OutByte[1] = 0x5 ;
OutByte[2] = cardno ;
OutByte[3] = 6 ;
OutByte[4] = axis ;
OutByte[5] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] ;
USRAT_transmit(OutByte,6);
receive(inbuf);
return (unsigned long)inbuf[5]<<24+(unsigned long)inbuf[6]<<16+(unsigned long)inbuf[7]<<8+(unsigned long)inbuf[8];
}
/*
函數(shù)名: set_cardno
功能:設(shè)置卡號(hào)
參數(shù):
cardno 卡號(hào)(1-255)
返回值:
0 失敗 1 成功
*/
unsigned char set_cardno(unsigned char cardno)
{
unsigned char OutByte[25];
unsigned char inbuf[12];
OutByte[0] = 0x68 ;
OutByte[1] = 5 ;
OutByte[2] = 0 ;
OutByte[3] = 0xFA ;
OutByte[4] = cardno ;
OutByte[5] =OutByte[1] +OutByte[2] +OutByte[3] +OutByte[4] ;
USRAT_transmit(OutByte,6);
receive(inbuf);
return 1;
}
void main(void)
{
initial();
init_uart();
set_cardno(1); //設(shè)卡號(hào)為1
while(1)
{
if(!s1)//按鍵按下
{
set_speed(1 ,1,1000,1000,10,200); // 設(shè)1軸速度
set_speed(1 ,2,1000,1000,10,200); // 設(shè)2軸速度
set_speed(1 ,3,1000,1000,10,200); // 設(shè)3軸速度
/*1軸回原點(diǎn)*/
pmove(1,1,-1000000,0); // 1軸運(yùn)動(dòng)
wait_in(1,0,1); // 等待X0為高
sudden_stop(1,1); // 1軸停止
set_command_pos(1,1,0); // 設(shè)1軸此時(shí)坐標(biāo)為0
pmove(1,2,3200,0); // 2軸運(yùn)動(dòng)
pmove(1,3,-3200,0); // 3軸運(yùn)動(dòng)
while(!s1);
}
}
}
4,結(jié)束語
單片機(jī)和mpc006運(yùn)動(dòng)控制模塊構(gòu)成的系統(tǒng),使單片機(jī)徹底地從復(fù)雜的運(yùn)動(dòng)控制算法中解放出來,單片機(jī)只需簡(jiǎn)單地使用幾條指令來控制模塊便可完成運(yùn)動(dòng)控制,從而能將更多的資源用來參與其它方面的控制,對(duì)構(gòu)建一個(gè)穩(wěn)定的控制系統(tǒng)具有重大意義。
本文來自泰安迪科技:www.mpc000.com 轉(zhuǎn)載請(qǐng)注明出處。
|