导航:首页 > 机械知识 > c如何控制机械运动案例

c如何控制机械运动案例

发布时间:2022-07-28 23:00:47

Ⅰ 如何用电脑控制机械运动

电脑控制电路机械运动,那就要使使用编程来实现把编程的程序,然后嵌入。嵌入到机械中,然后电脑输入指令机械就运动。

Ⅱ 电脑软件运行过程中,如何将某变量数值的变化来控制外界硬件的机械运动

LZ,你的问题比较大,仔细说的话不知道可以写多少本书了。
所以只能简单的说一点,希望你能自己多多查阅相关的资料,机械和自动化行业的知识过于博大精深,要积累一定的基础才能方便我们理解的。
首先你的问题集中在自动化领域,这个领域相比纯机械领域来说更加的高深,因为不仅仅限于机械系统的运动,还有大量的电子设备用于机械系统的解算和伺服。要学习这个领域,是要静下心,花费很多精力的,否则不可能学的精通。
对于你的问题~
1.机械设备的电控中心通俗来说也就是专用的电脑,它里面的软件都是小而精细的,编程效率和稳定性都相当的高,为了提高运算效率,降低硬件占用(因为在工业PLC中,像我们家用电脑这样动不动就2.4GHZ以上运算速度,2GB以上的物理内存这样恐怖的容量是很少见到的,很多都是只有几MHZ,十几KB甚至更小的容量),所以程序要短小精悍。以前像我们熟悉的51单片机系列的PLC,很多都是直接以汇编语言进行编程的,当然现在随着硬件容量的上升,为了减少从底层开始编程的负担,用C进行编程的单片机也是非常的成熟了。
而由PLC解算出来的执行代码,如何用于伺服作业机构,这就需要专门的设备。由于PLC输出的执行代码是数字的信号,这个信号很弱,无法用于驱动,更无法被工作装置所识别。所以需要一些特定的设备,作为PLC和工作装置中间的“翻译官”,这个翻译官用处就是把PCL输出的数字信号转换成工作机构能识别的伺服信号,并为工作机构提供动力。
由于这个东西说起来博大精深,我就从过程上简单的说吧,可能你理解起来会更加的容易一些。整个系统的运转过程就是:各种传感器(比如限位开关,压力传感器,速度传感器,加速度传感器....等等)把设备实时的工作压力,速度,加速度,温度等等信号转化为电信号(就是原始的电流的大小,压降等最原始的模拟信号)传给数模转换电路,这个电路其实也就是一些专用用于转换的电子电路和专用的单片机组成的(光这个就很复杂了,可以写十几本书了,但是你现在只需要有个印象就可以了),然后模拟信号就转变成了PLC可以识别的也就是0和1编码的数字信号,然后PLC对这些信号进行实时解算,或者有些流处理的单片机就把这些信号和单片机内存(COMS)里面预先烧录的数据库控制表单进行对比,然后提取出最近似工况的数据作为伺服输出(非流处理器的是通过控制函数和数据库综合分辨后输出),比如编程中你要液压缸在这个位置上快进,那么PLC在收到限位开关传输来的液压缸到达了那个位置的信号后,提取程序所需的在那个位置液压缸所需要的压力和流量信号,作为伺服信号输出。输出的伺服信号也是数字的,同样也要通过数模转换电路进行转换,转换成所需的可以直接被使用的原始信息(电流大小,电压大小,持续时间等等),然后这些电流就去驱动相关的电机,或者电磁阀,实现所需要的控制。
上面所说的只是原始的,你先简单的理解。实际的要比这个复杂的多。由于现在技术的进步,同时加工和各种精密机械对于稳定和精确控制需求。加上各种精密伺服设备比如步进电机,伺服电机,高精度和灵敏度的传感器和电磁阀,高精度滑轨的使用。使得现在使用数字直接控制成为主流,也就是输出的电子信号通过专用的单片机,精细分割变成数字脉冲信号,然后输送到步进电机驱动器上面去,由驱动器控制步进电机动力源按每一个小脉冲进行动作,使角度和速度都相当的精确。虽然复杂了,原理还是上面说说的那样,就是把以前简单的电路换成了专用的PLC和电路,把模拟控制变成细化分割的数字控制。
要学习的知识就太多了,如果你不是专门从事这个领域的,只需要了解就够了,事实上我现在从事的基本是纯机械领域为主,对于机电的了解还是很有限的,只停留在了稍微了解的水平上而已。
这方面相关的资料,要入门的大概有:自动化原理,控制原理,过程控制,电子技术,电机与电力拖动等等
然后要有点兴趣,多网上查阅相关资料,把各种电机,传感器,开关,电磁阀等了解清楚,然后学一下汇编和C。但是首先提醒的是,如果不是专门从业的就算了,了解一下就可以了,如果是要靠这个吃饭的话,要戒骄戒躁,不要把毯子铺大,看准一个方向学深入,因为机电的东西几辈子都是学不完的。
2.至于你的第二个问题,其实上面的回答已经略微提到了。
对于PLC控制的方式,基本原理就是两种,专业的名词我也忘了,反正一种是查表,另一种是实时解算。
所谓查表的方式,我先打个比方,比如给你一块三角形的蛋糕,让你在一堆盘子里面找出一个盘子来放,而你手中有一张详细的哪个形状的蛋糕应该放在哪种盘子里面的一张表单,所以你需要做的,就是对号入座,把相应的盘子找出来就可以了。在PLC中,查表的方式就是,把系统每个工况下所需要的控制数据放在ROM里面,然后在接收到传感器传来的系统在当前工况下的运行数据,比如温度,压力,速度等后,在数据库中查找相对于的此工况的表单,然后提取控制数据用于输出。这样的优点是对系统的要求比较低,因为PLC所作的工作其实就是匹配数据而已。另一个很明显的优点就是可以做到变精度的控制,比如说要实现温度1-100度的控制,对于控制精度要求不高的系统,可以每隔10度设立一个表单,只需要10个表单就够了。而对于要求高的系统,可以每1度设立一个,更高要求的系统,可以继续往下分割。还有一个明显的优点就是扩充性能好,就是升级性能好,当需要更高的精度的时候,不用更换PLC系统,可以增加运算单元和存储单元芯片的数目,如果有了更加准确的数据库,只需要把原来在ROM里面的数据擦除后重新烧录就可以了。而那些数据哪里来的呢?就是世界上N个牛X的专家和N个工程研究团队经过大量经验和实验,标准化整理之后由专业的编程人员编入控制程序的数据库之中的。
第二种就是解算,解算就是实时的运算控制。就是把传感器传来的信号,通过综合了系统定量和变量的函数库进行解算,将算出的结果输出进行控制。这对系统的运算速度要求比较高,而且需要一定的反馈机制,要不算出的结果和需要的可能不一致。而那些函数库哪来的呢,同样也是大量的牛X专家和教授多年的心血,别以为哈佛剑桥麻省理工的博士们天天就无聊了发表论文,他们的论文其中很多就用在这里了。
真正实际中应用的PLC控制方式,是上面两种的综合,并加上了反馈机制,就是查表+解算+反馈。因为单片机相对于大型的计算机系统来说是极为弱小的,甚至相对于LZ现在正在使用的微机来说都是相当弱小的,它不能提供如此高的解算速度。但是工业控制中,又要求单片机以如此弱小的身子骨来承担精确的控制。所以综合的控制方式不可避免。但是要实现综合控制,PLC的数据表单里面需要增加经过控制后系统应该运行在何种工况下的对应工况数据。过程是这样的:PLC在接收到传感器传来的系统工况数据之后,与表单数据进行匹配,选择最近似控制数据进行输出,输出后再通过传感器接收系统在经过控制之后的工况数据,与表单中系统应该运行的理论数据进行对比,找出偏差值,然后将第二次匹配到的输出值与此偏差值代入相应的修正函数库进行解算,将数据经过函数修正后输出,再重新监测系统在控制后的运行情况,再修正,再输出,如此反复,直到系统工况与理论工况无法再继续接近为止。
上面的东西只是简单的描述,实际的东西比这个复杂多了,说这个仅用于留有印象也不过分。鉴于你现在对于自动化了解还不深,就不像一楼那样子说的更专业了,当然他说的也是很实在的,只是怕你现在可能还无法了解,慢慢学,以后就好了。当然如果不是从事相关专业领域的话,也不需要了解的那么深,因为从底层开始学习进入控制领域的话,这条路过于漫长了,因为像西门子,三菱等,他们上千人的团队几十年的经验已经把单片机模块化,标准化了,我们作为用户只需要了解和使用就可以了。
3.你的第三个问题,我现在的工作就是与液压相关的,虽然不是专业人士,但是和液压实在是走的太近了,在这里可以略微回答你的问题。
你在问题补充里面提到了可以不用液压系统改用电机拖动,但是我可以说,液压系统和电机系统使用领域的偏差还是比较大的,两种在很多场合下,基本没有互换使用的。液压的精髓在于低速重载,以小功率输出巨大的作用力;而电机在于精确,快速的运行和控制。如果只是一般的使用,电机系统就够了,毕竟液压系统不用则以,用起来过于复杂,成本也会高出很多,而且一般的设计也不太需要用到液压。
看你是使用在那个东西上面的。一般的液压系统,回路结构都已经很成熟了,具体你可以查阅相关的资料,因为液压系统的设计图纸才是真正的语言,我在这里文字表达有限,实在是说不了很清楚。
至于你提到的需要哪些设备,就看你设计的东西了。高压系统除了你提到的液压泵,比例阀,液压缸之外,还必须设计先导回路。先导回路也是标准液压回路的综合,要用到的东西就多了,比如先导阀,油源阀,安全阀,平衡阀,电磁比例阀,蓄能器组件和滤清系统,分流集流块;高压工作系统就需要用到变量柱塞泵,背压阀,由三向六通阀加上平衡阀组合的多路换向阀,制动阀,减压阀,多级调速阀,液压油缸等等。而标准的液压回路有基本换向回路和卸载回路,差动增速回路,多缸顺序控制回路,减速增压回路,补油回路,平衡保压回路等等,加上自动化的变量控制系统,太多了...说不完。每一种回路的都可以使用上述的阀门进行组合实现,都各有优缺点,要根据实际情况择优选用。希望你自己能多多查阅这方面的资料。
对于你的设计,步进电机的简单系统就可以满足需求,在有了一定的了解之后,相关的电路和设备可以查阅相关的机电设计手册,完全可以解答你的问题,我在这里就不多说了。
最近头脑比较混乱,先这样吧...望对你多少有点帮助。
谢谢

Ⅲ 51单片机中如何用c语言控制直流电机正反转

#include"reg52.h"
#include"intrins.h"
#define unint unsigned int
#define unchar unsigned char
#define PLAY_OUT P1
unchar sec=0;
unchar min=0;
unchar count=0;
bit gj=0; //光和遥控的切换
unchar r6,r7;
bit time0=1;
bit time1=1;
sbit PLAY_Q_Q=P3^0;
sbit PLAY_Z=P3^1;
sbit PLAY_Y=P3^4;
sbit PLAY_QH=P3^5;
sbit PLAY_Q_H=P3^6;
sbit PLAY_T=P3^7;
unchar r0,r1,r2=0x00,r3=0x00,r4=0x00,r5=0x00;
unchar code TAB_Q[4]={0xf9,0xf5,0xf6,0xfa};//前进
unchar code TAB_H[4]={0xfa,0xf6,0xf5,0xf9};//后退
unchar code TAB_Y[4]={0x9f,0x5f,0x6f,0xaf};//右转
unchar code TAB_Z[4]={0xaf,0x6f,0x5f,0x9f};//左转
/*************************/
void intiaton(void);
void int_time3(void);
void int_time0(void);
void fanzhuan_Y(void);
void fanzhuan_Z(void);
void zhenzhuan_Q(void);
void zhenzhuan_H(void);
void zhenzhuan_AQ(void);
void zhenzhuan_AH(void);
void cankey(void);
/*************************/
delay(unint t) //0.6ms
{unint i;
for(i=55;i>t;i--) ;

}
/**************************/
delayms(unint k) //k=1延迟0.884毫秒
{unint i;
for(i=80;i>k;i--)
;

}
/*************************/
void delay238(void) //2.38ms
{
unint i,j;
for(j=125;j>0;j--)
for(i=0;i<1;i++);
}
/************************/
void intiaton(void) //初始化
{
TMOD=0x11;
TH1=0XFA;
TL1=0X56;
ET1=1;
TR1=1;
EA=1;
}

/*********************/
void int_time3() interrupt 3 using 3
{
TH1=0XFA;
TL1=0X56;
sec++;
if(sec==2)
{
sec=0;
min++;
}
}
/*************************/ //光感与按键控制
void cankey()
{
if(gj)
{
if(!PLAY_Q_Q)
{
count=1;
}
if(!PLAY_T)
{
count=2;
}
if(!PLAY_Q_H)
{
count=3;
}
}
if((PLAY_Z==0)||(PLAY_Y==0))
{
delayms(1);
if(PLAY_Z==0)
{
fanzhuan_Z();count=1;
}
else
{
fanzhuan_Y();count=1;
}
}

if(PLAY_QH==0)
{
delayms(10);
if(PLAY_QH==0)
{
count++;
if(count==4)
{
count=0;
}
}
while(PLAY_QH==0);
}
switch(count)
{
case 0: PLAY_OUT=0xff;break;
case 1: zhenzhuan_AQ();break;
case 2: PLAY_OUT=0xff;break;
case 3: zhenzhuan_AH();break;
default :break;
}

}
/*******************************/ //按键前进
void zhenzhuan_AQ(void)
{
for(r6=0;r6<4;r6++)
{
PLAY_OUT=TAB_Q[r6];
while(sec==0);
sec=0;

}

}
/*******************/ //按键后退
void zhenzhuan_AH(void)
{

for(r6=0;r6<4;r6++)
{
PLAY_OUT=TAB_H[r6];
while(sec==0);
sec=0;
}

}
/**********************/ //左转
void fanzhuan_Z(void)
{
unchar i;

for(i=0;i<22;i++)
{
for(r7=0;r7<4;r7++)
{
PLAY_OUT=TAB_Z[r7];
while(sec==0);
sec=0;
}
}
cankey();
}
/**********************/ //右转
void fanzhuan_Y(void)
{
unchar i;
for(i=0;i<22;i++)
{
for(r7=0;r7<4;r7++)
{
PLAY_OUT=TAB_Y[r7];
while(sec==0);
sec=0;
}
}

cankey();
}
/***************************/
void main()
{
intiaton();
while(1)
{
cankey();
}
这是加了感光跟按键控制的智能小车,是读大一时候写的,现在看起来呵呵。。。垃圾代码一大堆,不过好象还可以用。

Ⅳ 如何用C语言控制步进电机 正转后自动反转

中断2,启动-停止切换(通过切换flag_status),显示状态。do-while是延时。
中断1,计数器count增1,如果达到预设的数值tab[sp],计数器归零,标志flag置1。这个好像与速度有关。通过调整延时时间来调整速度。
中断0,读键盘。没有scan_key()的源代码,不知道里面有些什么操作。
while(1){...}循环是电机运转,flag_status是状态,1转动,0停止。
没有看到与正转反转有关的代码。也许在motor_cw_ccw();函数里面,这个就是电机动一下的函数。

原程序不完整,没有相应函数、变量的定义及意义说明。难以确切理解。

Ⅳ 用单片机控制直流电动机的正反转、加减速的程序如何用C语言写啊

参考一下这个例子吧。
#include<reg52.h>

#define uchar unsigned char
#define uint unsigned int

sbit PW1=P2^0 ;
sbit PW2=P2^1 ; //控制电机的两个输入
sbit accelerate=P2^2 ; //调速按键
sbit stop=P2^3 ; //停止按键
sbit left=P2^4 ; //左转按键
sbit right=P2^5 ; //右转按键

#define right_turn PW1=0;PW2=1 //顺时针转动
#define left_turn PW1=1;PW2=0 //逆向转动
#define end_turn PW1=1;PW2=1 //停转

uint t0=25000,t1=25000; //初始时占空比为50%
uint a=25000; // 设置定时器装载初值 25ms 设定频率为20Hz
uchar flag=1; //此标志用于选择不同的装载初值
uchar dflag; //左右转标志
uchar count; //用来标志速度档位

void keyscan(); //键盘扫描
void delay(uchar z);
void time_init(); //定时器的初始化
void adjust_speed(); //通过 调整占空比来调整速度
//**********************************//
void main()
{
time_init(); //定时器的初始化
while(1)
{

keyscan(); //不断扫描键盘程序,以便及时作出相应的响应

}
}
//*************************************//
void timer0() interrupt 1 using 0
{

if(flag)
{
flag=0;
end_turn;
a=t0; //t0的大小决定着低电平延续时间
TH0=(65536-a)/256;
TL0=(65536-a)%256; //重装载初值
}
else
{
flag=1; //这个标志起到交替输出高低电平的作用
if(dflag==0)
{
right_turn; //右转
}
else
{
left_turn; //左转
}
a=t1; //t1的大小决定着高电平延续时间
TH0=(65536-a)/256;
TL0=(65536-a)%256; //重装载初值
}

}

void time_init()
{
TMOD=0x01; //工作方式寄存器 软件起动定时器 定时器功能 方式1 定时器0
TH0=(65536-a)/256;
TL0=(65536-a)%256; //装载初值
ET0=1; //开启定时器中断使能
EA=1; // 开启总中断
TR0=0;
}

//****************************************//
void delay(uchar z) //在12M下延时z毫秒
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

//******************************//
void keyscan()
{

if(stop==0)
{
TR0=0; //关闭定时器0 即可停止转动
end_turn;

}
if(left==0)
{
TR0=1;
dflag=1; //转向标志置位则左转
}
if(right==0)
{
TR0=1;
dflag=0; //转向标志复位则右转
}
if(accelerate==0)
{
delay(5) ; //延时消抖
if(accelerate==0)
{
while(accelerate==0) ; //等待松手
count++;
if(count==1)
{
t0=20000;
t1=30000; //占空比为百分之60
}
if(count==2)
{
t0=15000;
t1=35000; //占空比为百分之70
}
if(count==3)
{
t0=10000;
t1=40000; //占空比为百分之80
}
if(count==4)
{
t0=5000;
t1=45000; //占空比为百分之90
}
if(count==5)
{
count=0;
}
}

}
}

Ⅵ 单片机C语言程序怎么控制电动机

步进电机(5V)与在单片机之间要加个驱动芯片,如ULN2803等,单片机通过程序产生PWM输出四拍或八拍控制波,( 四拍的驱动正转顺序为A-B-C-D-A,八拍的驱动正转顺序为A-AB-B-BC-C-CD-D-DA-A),步进电机就转起来了。
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

Ⅶ 计算机程序如何控制机械运动的

1.人用高级语言(如JC语言)编写控制程序,并编译为计算机能识别的机器码(由0和1组成)
2.将机器码程序复制或者写入机器人的存储器中(存放数据的地方,比如硬盘)
3.机器人加电启动后会自动运行服务程序。自带的解释程序将机器码程序解释成各种控制信号(它知道你这些0和1代表什么,想要做什么)
4.由机器人处理器将控制信号转换成电信号
5.电信号被送到伺服系统(如四轮驱动系统、双足系统、履带驱动系统等)进行信号放大
6.放大的信号经驱动系统(如电动机)控制机器人运动。
7.当有传感器捕捉到信号后,传送至处理器,会中断服务程序要求处理,如果满足你编写的程序的条件,则会执行相应的程序,以实现相应的动作或者功能。

这里面涉及到许多行业约定俗成的法则,不是想当然就可以的。
机器人目前并不具体人的思维的能力,你现在感觉像是人的思维的程序,实际上是一组逻辑和模糊判断的集合,这就是算法。(别问我算法哈,我已经打了够多字了)机器人只能根据给定的条件,做一些有限的已知的判断和选择,由不同的算法决定机器人思维的模式和结果。如果允许做无限的推测,有可能死机,如果允许做未知的推测,行为结果将不可预料即失控。
OK,有兴趣可自己查阅 自动控制理论 及 机器人学 微机原理等相关专业的资料

Ⅷ 怎么用C语言编程来控制硬件如何写啊

处理器对周边硬件的操作,实际上就是读取该硬件上寄存器的信息和向其寄存器写入信息的操作。抽象的看,就是对硬件上寄存器对应的地址空间进行操作。当然由于硬件种类繁多,结构不一,一般情况下,硬件的生产厂商会为对应的操作系统提供一组控制函数,这些函数用以实现操作系统厂商为某一类硬件定义的一组规范的必须实现的接口,这就是驱动,通常厂商还会提供更多的函数以支持更高级的功能。

所以,对硬件的操作,方式方法是多种的,要怎么做,取决于你要操作什么样的东西,达到什么样的效果。当有了目标,请查阅该硬件设备的SDK。记住一点就好,只要设备能够被操作,我们也能对其状态寄存器,控制寄存器进行读写操作,那么就可以控制,至于怎么弄,那不正是你去上学要学的、学完需要思考得么?

Ⅸ 数控立车C轴极坐标编举个案例。谢谢各位。

c轴是将主轴的圆周作为一个轴(主轴作位置控制方式时),360等分,配合锁紧装置可以将被加工材料精确旋转到一个所需要的度数(角度),如:c180.0或者c150.0等。

阅读全文

与c如何控制机械运动案例相关的资料

热点内容
steam令牌换设备了怎么办 浏览:246
新生测听力仪器怎么看结果 浏览:224
化学试验排水集气法的实验装置 浏览:156
家用水泵轴承位置漏水怎么回事 浏览:131
羊水镜设备多少钱一台 浏览:125
机械制图里型钢如何表示 浏览:19
测定空气中氧气含量实验装置如图所示 浏览:718
超声波换能器等级怎么分 浏览:800
3万轴承是什么意思 浏览:110
鑫旺五金制品厂 浏览:861
苏州四通阀制冷配件一般加多少 浏览:153
江北全套健身器材哪里有 浏览:106
水表阀门不开怎么办 浏览:109
花冠仪表盘怎么显示时速 浏览:106
洗砂机多少钱一台18沃力机械 浏览:489
超声波碎石用什么材料 浏览:607
组装实验室制取二氧化碳的简易装置的方法 浏览:165
怎么知道天然气充不了阀门关闭 浏览:902
公司卖旧设备挂什么科目 浏览:544
尚叶五金机电 浏览:59