视频展示

联系我们

东莞市久亿机械维修配件服务中心

  联系人:方向盘

  手  机:13686053925

  邮  箱:sales@jixieshouwx.com

  邮  编:523872

  地  址:广东省东莞市长安镇
  上沙管理区中富街北横路

您现在的位置:首页 > 新闻技术篇 > 技术文章
机械手基本程序编写
作者:信息发布员 发布于:2013/6/26 8:58:49

/****机械手在工位1、2处分别抓球一次项目程序(使用端口7、8)*******/

/***项目接线表***/

/* 物料搬运装置 传感器模块 主机模块

4 IN0 OUT0 P1.0

5 IN1 OUT1 P1.1

6 IN2 OUT2 P1.2

7 IN3 OUT3 P1.3

8 IN4 OUT4 P1.4

9 IN5 OUT5 P1.5

物料搬运装置 继电器模块 主机模块

13 KA1 P3.0

14 KA2 P3.1

15 KA3 P3.2

16 KA4 P3.3

17 KA5 P3.4 

*/

#include

#define uint unsigned int

#define uchar unsigned char

uchar num=0,num1=0,num2=0,num3=0,a=0,num4=0,num5=0;

/*****信号检测口***********/

sbit dk4=P1^0;//工位1

sbit dk5=P1^1;//工位2

sbit dk6=P1^2;//工位3

sbit dk7=P1^3;//上升到位

sbit dk8=P1^4;//下降到位

sbit dk9=P1^5;//抓紧到位

sbit dk10=P1^6;//抓手是否有物料

/*****控制端口**************/

sbit dk13=P3^0;//左移

sbit dk14=P3^1;//右移

sbit dk15=P3^2;//抓紧

sbit dk16=P3^3;//放松

sbit dk17=P3^4;//上下 #define jxs_sd dk13=1;dk14=1; //电机停止

#define jxs_zy dk13=0;dk14=1;//左移

#define jxs_yy dk13=1;dk14=0;//右移

#define jxs_zj dk15=0;dk16=1;//抓紧 

#define jxs_fs dk15=1;dk16=0;//放松

#define jxs_bc dk15=1;dk16=1;//抓手保持

#define jxs_ss dk17=1;//上升

#define jxs_xj dk17=0;//下降

void cx(cxms) //延时子程序

{

uchar a,b;

for(a=210;a>0;a--)

for(b=cxms;b>0;b--);

}

void jxs_gw2()//到达工位2(为在工位2抓球做准备)

{

while(num2)

{

if(dk5==0)

{

jxs_sd;

cx(100);

num=1;

num2=0;

}

}

}

void jxs_gw3()//机械手到工位3放球

{

while(num2) 

{

if(dk7==0) //当机械手上升到位后才能进行左右移动

{

jxs_zy;//机械手左移 

if(dk6==0)//当机械手到达工位3就执行以下程序

{

jxs_sd;//电机停止移动

cx(100);

jxs_fs; //抓手释放球

num2=0;

num3=1;

}

}

}

}

void jxs_gw33()//机械手到工位3放球

{

while(num5) 

{

if(dk7==0) //当机械手上升到位后才能进行左右移动

{

jxs_zy;//机械手左移 

if(dk6==0)//当机械手到达工位3就执行以下程序

{

jxs_sd;//电机停止移动

cx(100);

jxs_fs; //抓手释放球

num5=0;

num=1;

}

}

}

}

void jxs_zq()//机械手下降抓球

{

while(num1)

{

jxs_xj; //下降

while(dk8);// 下降到位检测

if(dk8==0)

{

while(dk10);//判断抓手是否有物料

jxs_zj; //抓紧

cx(200);

jxs_bc; //抓手保持

cx(100);

while(dk10)

{

jxs_fs;//抓手放松 

cx(100);

while(dk10);//再次判断抓手是否有物料

jxs_zj; //抓紧

cx(200);

jxs_bc; //抓手保持

cx(100);

}

while(dk9); //夹紧到位检测(只有当抓手把球抓紧后,程序才往下执行)

jxs_ss;//上升

while(dk7); //上升到位(如果机械手没有上升到位,程序将停在此处)

num1=0;

num2=1;

cx(255);

}

}

}

void jxs_zq1()//机械手下降抓球

{

while(num4)

{

jxs_xj; //下降

while(dk8);// 下降到位检测

if(dk8==0)

{

while(dk10);//判断抓手是否有物料

jxs_zj; //抓紧

cx(200);

jxs_bc; //抓手保持

cx(100);

while(dk10)

{

jxs_fs;//抓手放松 

cx(100);

while(dk10);//再次判断抓手是否有物料

jxs_zj; //抓紧

cx(200);

jxs_bc; //抓手保持

cx(100);

}

while(dk9); //夹紧到位检测(只有当抓手把球抓紧后,程序才往下执行)

jxs_ss;//上升

while(dk7); //上升到位(如果机械手没有上升到位,程序将停在此处)

num4=0;

num5=1;

cx(255);

}

}

void init_gw1()//到到达工位1(为在工位1抓球做准备)

{

while(num)

{

if(dk4==0)//工位1检测点

{

jxs_sd;

cx(100);

jxs_sd;

num=0;

num1=1;//只有当机械手到达工位1停下之后,机械手才执行下降抓球程序

cx(200);

}

if(dk5==0)//工位2检测点

{

jxs_sd;

cx(100);

jxs_yy;//右移

cx(200);

if(dk6==0)//工位3检测点

{

jxs_sd;

cx(100);

jxs_yy; //右移

cx(200);

}

}

}

void init_gw2()//在工位2抓球初始化

{

while(num3)

{

if(dk6==0)

{

jxs_yy;

cx(100); 

}

if(dk5==0)

{

jxs_sd;

cx(100);

num3=0;

num4=1;

}

}

}

void init()//系统初始化

{

jxs_sd; //电机停止

cx(255);

jxs_fs;//抓手放松

cx(255);

num=1;

if(dk6==0)//判断机械手,然后使其到达工位1

{

jxs_yy; //如果机械手在工位3,则使机械手右移 (以到达工位1)

cx(100);

}

else

{

jxs_zy;//如果机械手没在工位3,则使机械手左移

cx(100);

}

}

void main()

{

init();//系统初始化函数

while(1)

{

init_gw1(); //移动至工位1停下子函数

jxs_zq(); //机械手抓球子函数

jxs_gw3();//到工位3释放球 init_gw2();//使机械手右移(到达工位2停下)

jxs_zq1();//机械手抓球字函数

jxs_gw33(); //机械手到工位3释放球 

 

上一篇:机械手分类详细阐述

下一篇:三轴伺服机械手的说明

网站首页 | 关于我们 | 维修范围 | 配件经营类 | 资料下载 | 新闻技术篇 | 联系我们 | 网站地图

地址:广东省东莞市长安镇上沙管理区中富街北横路 服务热线:13686053925
Copyrigh @2012 版权所有 东莞市久亿自动化科技有限公司


收缩