简易机械手动作模拟
本设计要求采用 MCS-51 等嵌入式控制器实现,完成PROTEUS仿真模拟调试。下图为机械手工作原理:机械手将A工位上的工件搬运到B工位,原位→下降→夹紧 →上升→右移→左移→ 上升→放松→下降.
上升/下降和左移/右移的执行用双线圈二位电磁阀推动气缸完成。当某个电磁阀线圈通电,就一直保持现有的机械动作,例如一旦下降的电磁阀线圈通电,机械手下降,即使线圈再断电,仍保持现有的下降动作状态,直到相反方向的线圈通电为止。另外,夹紧/放松由单线圈二位电磁阀推动气缸完成,线圈通电执行夹紧动作,线圈断电时执行放松动作。设备装有上、下限位和左、右向的线圈通电为止。另外,夹紧/放松由单线圈二位电磁阀推动气缸完成,线圈通电执行夹紧动作,线圈断电时执行放松动作。设备装有上、下限位和左、右限位开关为了确保安金,机械手右移到位后,必须在右工作台(B)上无工件时才能下降,若上次搬到右工作台上的工件尚未移走,机械手应自动暂停,等待。为此设置了一个光电开关,以检测“无工件”信号。动作设计为单步运行和单周期运行
单步运行:利用按钮对机械手每一步进行控制。
单周期运行:原点处,按下启动按钮自动完成一个周期回原位停止。
紧急状态:按下紧急按钮,机械手停止在当前状态,当故障排除后,可接着工作至本周期结束。要求设置功能按键控制系统运行.
/*
实验接线:
物料搬运装置 传感器配接模块 8255扩展模块 主机模块 继电器模块 物料搬运
(端子号4) IN0 OUT0 PB.0 D0 P0.0
(5) IN1 OUT1 PB.1 D1 P0.1
(6) IN2 OUT2 PB.2 D2 P0.2
(7) IN3 OUT3 PB.3 D3 P0.3
(8) IN4 OUT4 PB.4 D4 P0.4
(9) IN5 OUT5 PB.5 D5 P0.5
(10) IN6 OUT6 PB.6 D6 P0.6
(11) IN7 OUT7 PB.7 D7 P0.7
(12) IN0 OUT0 PA.7
P1.0 K3 NO(端子号13)
P1.1 K4 NO (14)
P1.2 K5 NO (15)
K5 NC (16)
P1.3 K6 NO (17)
物料搬运装置 传感器配接模块 继电器模块 8255扩展模块
红端接+24V COM(2个)接+24V 12V和5V要接 CS接主机P2.7
黑端接24V地 COM+(2个)接+5V COM(4个)接24V地 A1接主机P2.6
COM-(2个)接5V地 A0接主机P2.5
RST接主机RST
WR接主机P3.6
RD接主机P3.7
*/
#include "reg52.h"
#include "absacc.h"
#define uint unsigned int
#define PA XBYTE[0x1fff]
#define PB XBYTE[0x3fff]
#define PC XBYTE[0x5fff]
#define COM XBYTE[0x7fff]
#define left handleft=0,handright=1
#define right handleft=1,handright=0
#define stop handleft=1,handright=1
#define close handcloseloose=0
#define loose handcloseloose=1
#define down handupdown=0
#define up handupdown=1
#define yigw while(PB&0x01)
#define ergw while(PB&0x02)
#define sangw while(PB&0x04)
#define ss while(PB&0x08)
#define xj while(PB&0x10)
#define jj while(PB&0x20)
#define yw while(PB&0x40)
#define yigwyw while(PB&0x80)
#define ergwyw while(PA&0x80)
sbit handleft=P1^0;//左移
sbit handright=P1^1;//右移
sbit handcloseloose =P1^2;//夹紧、放松
sbit handupdown= P1^3;//上升、下降
void mdelay(uint t)
{
uint i;
while (t--)
{
for (i=0;i<125;i++)
{
}
}
}
void jxs_initail()
{
COM=0x92;8255,A口和B口输入。
left;
sangw;
stop;
mdelay(500);
// yigwyw;
right;右移到1工位,手爪下降抓球,上升,左移,放3工位物料口。
yigw;
stop;
down;
xj;
mdelay(500);
close;
jj;
up;
ss;
mdelay(500);
left;
sangw;
stop;
mdelay(500);
loose;
// ergwyw;
right;///右移到2工位,手爪下降抓球,上升,左移,放3工位物料口。
ergw;
stop;
down;
xj;
mdelay(500);
close;
jj;
up;
ss;
mdelay(500);
left;
sangw;
stop;
mdelay(500);
loose;
}
void main()
{
jxs_initail();
while (1)
{
}
}