导航:首页 > 操作系统 > 单片机做的电机控制器

单片机做的电机控制器

发布时间:2023-06-06 08:14:02

⑴ 如何用单片机实现对四个步进电机的速度控制呢

推荐你使用表控,型号TPC4-4TD就可以满足你的要求。

表控可以同时控制4个步进电机,对于你说的速度控制讲解如下:

上图是表控的表格设置界面,省去了麻烦的编程,轻松实现步进电机控制。

图中,第2行工作模式设置为“脉冲”模式,光标在脉冲模式的第2行时,脉冲频率项及脉冲个数输入项分别显示脉冲个数的单位,数据输入框显示为绿色。脉冲输出单位为:百万、十万、万、千、百、十、个,脉冲频率的单位为赫兹。示例中频率设置为500赫兹,脉冲个数为1101616个脉冲(一百一十万一千六百一十六)。

⑵ 基于PIC单片机的无刷直流电机控制器的设计 毕业设计怎么做

摘要
I
Abstract
II
第1章
绪论
1
1.1
课题背景及意义
1
1.1.1课题背景
1
1.1.2课题意义
2
1.2
无刷电机功率驱动发展
3
1.3
课题主要研究内容
4
第2章
无刷直流电动机的工作过程
5
2.1
无刷直流电动机基本组成
5
2.1.1电动机本体
5
2.1.2
转子位置传感器
6
2.1.3电子换向电路
7
2.2
无刷直流电动机的工作原理
8
2.3
无刷直流电动机的数学模型
9
2.3.1电压平衡方程
9
2.3.2转矩方程
10
2.3.3传递函数
10
2.4
无刷直流电机的调速方法和机械特性
11
2.4.1电势和调速方法
11
2.4.2电磁转矩
12
2.4.3机械特性
13
2.4无刷直流电机双闭环系统
13
2.4.1双闭环控制系统组成
13
2.4.2双闭环控制系统动态数学模型
14
第3章
调速系统方案确定
16
3.1无刷电机样机参数
16
3.2主控单元
16
3.2.1
PIC单片机简介
16
3.2.2
PIC单片机的结构
16
3.2.2
PIC单片机的特点
18
3.3
系统的组成
19
第4章
基于单片机的调速系统硬件设计
20
4.1
供电电源设计
20
4.2
检测电路设计
21
4.2.1位置检测
21
4.2.2整形电路
22
4.2.3
正反转控制
23
4.2.4电流检测电路
24
4.3
主功率和驱动电路
25
4.3.1主功率电路
25
4.3.2功率驱动电路
27
4.4
过流过压保护电路
30
4.4.1过流保护电路
30
4.4.2过压、欠压保护电路
30
4.5
键盘与显示电路
31
4.5.1键盘电路
31
4.5.2显示电路
32
第5章
基于单片机的调速系统软件设计
34
结论
36
参考文献
37
致谢
39
有具体的思路和内容可以给你浏览一下...........

⑶ 如何用单片机控制直流电机

通过与单片机相连的按键控制直流电机停启的电路如下图所示,通过P3.6口按键触发启动直流电机,P3.7口的按键触发停止直流电机的运行。由图可知,当P1.0输出高电平“1”时,NPN型三极管导通,直流电机得电转动;当P1.0输出低电平“0”时,NPN型三极管截止,直流电机停止转动。

(3)单片机做的电机控制器扩展阅读:

通过单片机产生PWM波控制直流电机程序

#include"reg52.h"


#defineucharunsignedchar


#defineuintunsignedint


ucharcodetable[10]={0x3f,0x06,0x5b,


0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管显示码(0-9)


sbitxiaoshudian=P0^7;


sbitwei1=P2^4;//数码管位选定义


sbitwei2=P2^5;


sbitwei3=P2^6;


sbitwei4=P2^7;


sbitbeep=P2^3;//蜂鸣器控制端


sbitmotor=P1^0;//电机控制


sbits1_jiasu=P1^4;//加速按键


sbits2_jiansu=P1^5;//减速按键


sbits3_jiting=P1^6;//停止/开始按键


uintpulse_count;//INT0接收到的脉冲数


uintnum=0;//num相当于占空比调节的精度


ucharspeed[3];//四位速度值存储


floatbianhuasu;//当前速度(理论计算值)


floatreallyspeed;//实际测得的速度


floatvv_min=0.0;vv_max=250.0;


floatvi_Ref=60.0;//给定值


floatvi_PreError,vi_PreDerror;


uintpwm=100;//相当于占空比标志变量


intsample_time=0;//采样标志


floatv_kp=1.2,v_ki=0.6,v_kd=0.2;//比例,积分,微分常数


voiddelay(uintz)


{


uintx,y;


for(x=z;x>0;x--)


for(y=20;y>0;y--);


}


voidtime_init()


{


ET1=1;//允许定时器T1中断


ET0=1;//允许定时器T0中断


TMOD=0x15;//定时器0计数,模式1;定时器1定时,模式1


TH1=(65536-100)/256;//定时器1值,负责PID中断,0.1ms定时


TL1=(65536-100)%6;


TR0=1;//开定时器


TR1=1;


IP=0X08;//定时器1为高优级


EA=1;//开总中断


}


voidkeyscan()


{


floatj;


if(s1_jiasu==0)//加速


{


delay(20);


if(s1_jiasu==0)


vi_Ref+=10;


j=vi_Ref;


}


while(s1_jiasu==0);


if(s2_jiansu==0)//减速


{


delay(20);


if(s2_jiansu==0)


vi_Ref-=10;


j=vi_Ref;


}


while(s2_jiansu==0);


if(s3_jiting==0)


{


delay(20);


motor=0;


P1=0X00;


P3=0X00;


P0=0x00;


}


while(s3_jiting==0);


}


floatv_PIDCalc(floatvi_Ref,floatvi_SpeedBack)


{


registerfloaterror1,d_error,dd_error;


error1=vi_Ref-vi_SpeedBack;//偏差的计算


d_error=error1-vi_PreError;//误差的偏差


dd_error=d_error-vi_PreDerror;//误差变化率


vi_PreError=error1;//存储当前偏差


vi_PreDerror=d_error;


bianhuasu=(v_kp*d_error+v_ki*vi_PreError+v_kd*dd_error);


return(bianhuasu);


}


voidv_Display()


{


uintsu;


su=(int)(reallyspeed*10);//乘以10之后强制转化成整型


speed[3]=su/1000;//百位


speed[2]=(su00)/100;//十位


speed[1]=(su0)/10;//个位


speed[0]=su;//小数点后一位


wei1=0;//第一位打开


P0=table[speed[3]];


delay(5);


wei1=1;//第一位关闭


wei2=0;


P0=table[speed[2]];


delay(5);


wei2=1;


wei3=0;


P0=table[speed[1]];


xiaoshudian=1;


delay(5);


wei3=1;


wei4=0;


P0=table[speed[0]];


delay(5);


wei4=1;


}


voidBEEP()


{


if((reallyspeed)>=vi_Ref+5||(reallyspeed


{


beep=~beep;


delay(4);


}


}


voidmain()


{


time_init();


motor=0;


while(1)


{


v_Display();


BEEP();


}


if(s3_jiting==0)//对按键3进行扫描,增强急停效果


{


delay(20);


motor=0;


P1=0X00;


P3=0X00;


P0=0x00;


}


while(s3_jiting==0);


}


voidtimer0()interrupt1


{


}


voidtimer1()interrupt3


{


TH1=(65536-100)/256;//1ms定时


TL1=(65536-100)%6;


sample_time++;


if(sample_time==5000)//采样时间0.1ms*5000=0.5s


{


TR0=0;//关闭定时器0


sample_time=0;


pulse_count=TH0*255+TL0;//保存当前脉冲数


keyscan();//扫描按键


reallyspeed=pulse_count/(4*0.6);//计算速度


pwm=pwm+v_PIDCalc(vi_Ref,reallyspeed);


if(pwm


if(pwm>100)pwm=100;


TH0=TL0=0;


TR0=1;//开启定时器0


}


num++;


if(num==pwm)//此处的num值,就是占空比


{


motor=0;


}


if(num==100)//100相当于占空比调节的精度


{


num=0;


motor=1;


}


}



⑷ 单片机是怎样控制电机的

单片机只输出信号,经过隔离电路,再经过功率开关电路驱动电机。

控制普通的三项异步电机可以单片机输出信号经三极管后驱动一个小功率继电器,由继电器来驱动交流接触器,进而控制电机,也可以单片机信号经三极管放大后直接驱动功率继电器。 方法有很多很多。至于驱动伺服,单片机端口的信号经过光耦隔离后可以直接驱动,伺服驱动器本身需要的驱动信号都是弱电信号。

单片机注意事项

一般在单片机的数据手册(Datasheet)中都会提到该单片机需要的复位信号的要求。一般复位信号的宽度应为。复位电平的宽度和幅度都应满足芯片的要求,并且要求保持稳定。还有特别重要的一点就是复位电平应与电源上电在同一时刻发生,即芯片一上电,复位信号就已产生。

不然,由于没有经过复位,单片机中的寄存器的值为随机值,上电时就会按PC寄存器中的随机内容开始运行程序,这样很容易进行误操作或进入死机状态。

⑸ 步进电机单片机控制系统

由于不知道怎么发图片,没有图片。如果想要你采用我的回答,你发EMAIL到[email protected]我回复你。同时再给你1-2篇关于步进电机驱动的论文和资料。希望对你有所帮助

基于L297/L298芯片步进电机的单片机控制
1 引言
步进电动机是一种将电脉冲信号转换成角位移或线位移的精密执行元件,由于步进电机具有控制方便、体积小等特点,所以在数控系统、自动生产线、自动化仪表、绘图机和计算机外围设备中得到广泛应用。微电子学的迅速发展和微型计算机的普及与应用,为步进电动机的应用开辟了广阔前景,使得以往用硬件电路构成的庞大复杂的控制器得以用软件实现,既降低了硬件成本又提高了控制的灵活性,可靠性及多功能性。市场上有很多现成的步进电机控制机构,但价格都偏高。应用SGS公司推出的L297和L298两芯片可方便的组成步进电机驱动器,并结合AT89C52单片机进行控制,即可以实现用相对便宜的价格组成一个性能不错的步进电机驱动电路。
2 工作原理
由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用专用设备-步进电机控制驱动器 典型步进电机控制系统如图1所示:控制器可以发出脉冲频率从几赫兹到几十千赫兹可以连续变化的脉冲信号,它为环形分配器提供脉冲序列。环形分配器的主要功能是把来自控制环节的脉冲序列按一定的规律分配后,经过功率放大器的放大加到步进电机驱动电源的各项输人端,以驱动步进电机的转动。环形分配器主要有两大类:一类是用计算机软件设计的方法实现环分器要求的功能,通常称软环形分配器。另一类是用硬件构成的环形分配器,通常称为硬环形分配器。功率放大器主要对环形分配器的较小输出信号进行放大.以达到驱动步进电机目的。

图1 典型步进电机控制框图
3 硬件组成
文中所控制的步进电机是四相单极式35BY48HJ120减速步进电动机。本文所设计的步进电机控制驱动器的框图如图2所示。它由AT89C52单片机、光电耦和器、集成芯片L297和L298组成。AT89C52是美国ATMEL的低电压、高性能8位CMOS单片机。片内置8K字节可重复擦写的
Flash闪速存储器。256字节RAM。3个16位定时器.可编程串行UART通道。对完成步进电机的简单控制已足以胜任。

图2 本文提出的步进电机控制驱动器框图
L297是步进电动机控制器(包括环形分配器)。L298是双H桥式驱动器。它们所组成的微处理器至双桥式步进电动机的接口如图3所示。这种方式结合的优点是,需要的元件很少.从而使得装配成本低,可靠性高和占空间少。并且通过软件开发。可以简化和减轻微型计算机的负担。另外,L297和L298都是独立的芯片.所以应用是十分灵活的。

L297芯片是一种硬件环分集成芯片.它可产生四相驱动信号,用于计算机控制的两相双极或四相单极步进电机 它的心脏部分是一组译码器它能产生各种所需的相序.这一部分是由两种输入模式控制,方向控制(CW/CCW) 和HALF/FULL 以及步进式时钟CLOCK.它将译码器从一阶梯推进至另一阶梯。译码器有四个输出点连接到输出逻辑部分,提供抑制和斩波功能所需的相序。因此L297能产生三种相序信号,对应于三种不同的工作方式:即半步方式(HALF STEP);基本步距(FULL STEP,整步)一相激励方式;基本步距两相激励方式。脉冲分配器内部是一个3bit可逆计数器,加上一些组合逻辑.产生每周期8步格雷码时序信号,这也就是半步工作方式的时序信号。此时HALF/FULL信号为高电。若HALF/FULL取低电平,得到基本步距工作方式。即双四拍全阶梯工作方式。
L297另一个重要组成是由两个PWM 斩波器来控制相绕组电流,实现恒流斩波控制以获得良好的矩频特性。每个斩波器由一个比较器、一个RS触发器和外接采样电阻组成,并设有一个公用振荡器,向两个斩波器提供触发脉冲信号。图3中,频率f是由外接16脚的RC网络决定的, 当R>10kΩ 时,f=1/0.69RC。当时钟振荡器脉冲使触发器置1,电机绕组相电流上升,采样电阻的R 上电压上升到基准电压Uref时,比
较器翻转,使触发器复位,功率晶体管关断,电流下降,等待下一个振荡脉冲的到来。这样,触发器输出的是恒频PWM信号,调制L297的输出信号,绕组相电流峰值由Uref确定。L297的CONTROL端的输入决定斩波器对相位线A、B、C、D或抑制线INH1和INH2起作用。CONTROL为高电平时,对A、B、C、D有控制作用;而为低电平时,则对INH1和INH2起控制作用,从而可对电动机转向和转矩进行控制。
L298芯片是一种高压、大电流双全桥式驱动器,其设计是为接受标准TTL逻辑电平信号和驱动电感负载的,例如继电器、圆筒形线圈、直流电动机和步进电动机 具有两抑制输入来使器件不受输入信号影响。每桥的三级管的射极是连接在一起的,相应外接线端可用来连接外设传感电阻。可安置另一输入电源,使逻辑能在低电压下工作。L298芯片是具有15个引出脚的多瓦数直插式封装的集成芯片。
图3中.AT89C52通过串口经MAX232电平转换之后与微机相连.接受上位机指令。向L297发出时钟信号、正反转信号、复位信号及使能控制等信号。电路中,电阻R13,R15用来调节斩波器电路的参考电压,该电压将与通过管脚13,14所反馈的电位的大小比较,来确定是否进行斩波控制,以达到控制电机绕组电流峰值、保护步进电机的目的
由于L297内部带有斩波恒流电路,绕组相电流峰值由Uref确定。当采用两片L297通过L298分别驱动步进电机的两绕组,且通过两个D/A转换器改变每相绕组的Uref时,即组成了步进电机细分驱动电路。另外,为了有效地抑制电磁干扰,提高系统的可靠性,在单片机与步进电动机驱动回路中利用两个16引脚光电耦合器件TLP521-4组成如图3所示的隔离电路。其作用是切断了单片机与步进电动机驱动回路之间电的直接联系,实现了单片机与驱动回路系统地线的分别联接.防止处于大电流感性负载下工作的驱动电路产生的干扰信号以及电网负载突变产生的干扰信号通过线路串入单片机,影响单片机的正常工作。
4 软件组成
在该电路中,将P1.0口设为电机开始按钮,P1.1,P1.2,P1.3为速度选择按钮。速度由低到高,P1.4为电机停止按钮。并设三档速度的最高速度依次为500pps、1000pps、2000pps 。RXD,TXD 已由MAX232电平转换接出串口。此外,步进电机其启动,停止的频率较低,一般在100-250Hz之间,而最高运行频率要求较高。通常为1-3kHz,为使其在启动、运行和停止整个过程中,既不会失步,又能够尽快精确地达到目标位置,运行速度都要有一个加速一恒速减速的过程。这里采用常用的离散办法来逼近理想的近似梯形的升降速曲线,如图5所示。即利用定时器中断方式来不断改变定时器装载值的大小.

本例中.为计算方便,把各离散点的速度所需的装载值用公式转化为各自所需的定时时间固化在系统的ROM 中,这里用TH0=(65536-time)/256,TL0=(65536-time)%256来计算装载值,time表示各阶梯所需定时时间。系统在运行中用查表法查出所需的时间,从而大幅度减少占用CPU的时间,提高系统的相应速度。因此.该程序主要由控制主程序、加减速子程序组成,主程序框图如图4所示。

5 结论
本文创新点在于提出应用单片机和L297、L298集成电路构成步进电机控制驱动器。使之具有元件少.可靠性高、占空间少、装配成本低等优点。通过软件开发,可以简化和减轻微型计算机的负担。另外。在上面提出的在加减速程序中定时器的装载值用式子计算不精确,这两条赋值要执行不少的时间.具体做的时候.可直接把初值计算出来或把除号用相加来计算.以达到精确的目的。

⑹ 单片机控制步进电机

这是我自己做过的。源码都给你了

#include<reg52.h>
#include<intrins.h>
#include<absacc.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int

uint count; //当前计数值
uint distance;
bit intt=1;
unsigned char cont=0;
unsigned char co=0;
uchar buf;
//uchar m,lm,cm;
/**************针脚定义************/
sbit rect_wave=P2^0; //晶振控制信号
sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P1^2;
sbit CLR=P1^3;
sbit DATA=P1^4;
sbit CLK=P1^5;
sbit d=P2^1;
sbit cp=P2^2;
sbit dir=P2^3;

/***********************************/

/**************函数声明************/
void time0over(void); //定时器计时程序
void clrlcd(void); //clr LCD
void c_send(unsigned char y); //发命令
void reset(void); // reset LCD
void d_send(unsigned char x); //发数据
void pos(unsigned char pos); //设定显示位置
void l_delay(unsigned int t); //长延时
void trans(j);
void ret(void); //初始化系统
void retcont(void); //定时器复位
void math(void); //计算测量距离

/***************************/
void init(void)
{ TH1=0xf3;
TL1=0xf3;
PCON=0x80;
TR1=1;
SCON=0x50; /*串口初始化设置,波特率4800BPS*/
}

//*******************************//
void send(uchar dat) /*发送子程序*/
{ //uchar i;
/*发送一个数据*/
SBUF=dat;
while(TI==0);
TI=0;

}
/***********************************/
void turn (void) //电机转动控制
{
unsigned char x;
cont++;
cp=~cp;
l_delay(50);
cp=~cp;
co++;
if(co == 3)
{d=~d;
}
if(co == 4)
{d=~d;
co=0;
}
if (cont == 200) //判断是否进行反转复位
{dir=~dir;
cont=0;
for(x=0;x < 200;x++)
{cp=~cp;
l_delay(5);
cp=~cp;
co++;
if(co == 3)
{d=~d;
}
if(co == 4)
{d=~d;
co=0;
}
}
dir=~dir;
cont=0;
}
}
/**************子程序**********************/
void int0 () interrupt 0 //中断0服务程序
{
EX0=0; //关闭中断
TR0=0; //关闭定时器
TF0=0; //标志位清零
rect_wave=0; //停止发送超声波
intt=0;
}

void work(void)
{
if(!intt)
{
intt=1;
if (distance < 400)
{
buf=distance;
send(buf);
turn();
math();} //计算所测得的距离
l_delay(5); //延时
retcont(); //定时器复位
rect_wave=1;
count=0;
}
}

void math(void) //计算所测得的距离
{ uchar m,lm,cm;

cm=distance%10; //取距离的最低位
distance=distance/10; //取距离的次高位
lm=distance%10;
distance=distance/10; //取距离的最高位
m=distance%10;

clrlcd(); //输出计算结果
pos(0);
d_send('d');
d_send('i');
d_send('s');
d_send('=');
//pos(4);
d_send(m+0x30);
d_send(lm+0x30);
d_send(cm+0x30);
d_send('c');
d_send('m');
l_delay(500);
}

void time0over(void) //定时器计时程序
{ TF0=0;
count++;
distance=count;
}

/*
void trans(j)
{
switch(j)
{
case 0: d_send('0');break;
case 1: d_send('1');break;
case 2: d_send('2');break;
case 3: d_send('3');break;
case 4: d_send('4');break;
case 5: d_send('5');break;
case 6: d_send('6');break;
case 7: d_send('7');break;
case 8: d_send('8');break;
case 9: d_send('9');break;
}

}
*/
delay() //延时
{
int i;
for(i=0;i<1000;i++);
}

void l_delay(unsigned int t) //延时
{
unsigned int p;
unsigned int j;

for(j=0;j<t;j++)
{
for(p=0;p<1000;p++);
}
}

void reset(void) // reset LCD
{
delay();
c_send(0x38);
c_send(0x01);
c_send(0x06);
c_send(0x0c);
c_send(0x80);
}

void clrlcd(void) // clr LCD
{
delay();
c_send(0x01);

}

void pos(unsigned char pos) //设定显示位置
{
c_send(pos | 0x80);
}

void c_send(unsigned char y) //发命令
{
unsigned char i;
EN=1;
RS=0;
RW=0;
for(i=0;i<8;i++)
{
if(_crol_(y,i)&0x80)
DATA=1;
else
DATA=0;
CLK=0;
CLK=1;
}
EN=0;
delay();
}

void d_send(unsigned char x) //发数据
{
unsigned char i;
EN=1;
RS=1;
RW=0;
for(i=0;i<8;i++)
{
if(_crol_(x,i)&0x80)
DATA=1;
else
DATA=0;
CLK=0;
CLK=1;
}
EN=0;
delay();
}

void ret(void) //初始化计数器

{ TMOD=0x22; //设置定时器计数器1为工作方式2
TH0=0xc6; //设置计数初值高字节
TL0=0xc6; //设置计数初值低字节
count=0;
IE=0x00; //禁止中断
TF0=0; //溢出标志位清零
TR0=1; //打开定时器1
rect_wave=1;

EA=1; //打开中断
IP=0x01; //外部中断0为高中断优先级
IT0=0; //外部中断低电平触发シ?
EX0=1;
}
void retcont(void)
{ TF0=0; //溢出标志位清零
TR0=1; //打开定时器1
EA=1; //打开中断
IP=0x01; //外部中断0为高中断优先级
IT0=0; //外部中断下降沿触发
EX0=1;
rect_wave=1;

}
/**************主程序************/
void main(void)
{ rect_wave=0;
reset();
l_delay(10);
ret();
init();
math();
for(;;)
{
if(TF0)
{
time0over();
}
work();
}
}

⑺ 基于MCS-51系列单片机AT89C51,设计一个步进电机控制器

由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用专业设备----步进电机控制驱动器,典型步进电机控制系统如图1所示:控制器可以发出脉冲频率从几赫兹到几千赫兹可以连续变化的脉冲信号,它为环形分配器提供脉冲序列,环形分配器的主要功能是把来自控制环节的脉冲序列按一定的规律分配后,经过功率放大器的放大加到步进电机驱动电源的各项输入端,以驱动步进电机的转动,环形分配器主要有两大类:一类是用计算机软件设计的方法实现环形分配器要求的功能,通常称软环形分配器。另一类是用硬件构成的环形分配器,通常称硬环形分配器。功率放大器主要对环形分配器的较小输出信号进行放大,以达到驱动步进电机的目的,步进电机的基本控制包括转向控制和速度控制两个方面。从结构上看,步进电机分为三相单三拍、三相双三拍和三相六拍3种,其基本原理如下:
http://wenku..com/link?url=_X1AbHnS-_AXJSOeGwziD56L7zztQEm_

⑻ 如何利用51系列单片机控制电机

小功率电机,玩具车上的,可用单片机接三极管来驱动。

阅读全文

与单片机做的电机控制器相关的资料

热点内容
交警app怎么绑定本人几辆车 浏览:985
彩虹六号如何人工服务器 浏览:632
mc服务器地址怎么登入 浏览:556
苹果app怎么扫描二维码下载 浏览:959
css文件在线解压 浏览:154
36岁程序员近况 浏览:283
哪里可以下载不加密的歌 浏览:934
隐藏文件夹是什么梗 浏览:918
插件注册命令 浏览:497
梁一端加密一端不加密规范 浏览:82
代码行数统计命令 浏览:104
单片机中2K表示什么 浏览:482
紫禁城为什么会断开服务器 浏览:580
华为手机的方舟编译器在哪呢 浏览:124
下载压缩虐杀原形2 浏览:907
linux脚本cd 浏览:168
间架结构pdf 浏览:844
重庆农村商业银行app怎么老出问题 浏览:473
慧编程配置要求 浏览:675
数控机床编程与操作视频 浏览:462