/****機(jī)械手在工位1、2處分別抓球一次項(xiàng)目程序(使用端口7、8)*******/
/***項(xiàng)目接線表***/
/* 物料搬運(yùn)裝置 傳感器模塊 主機(jī)模塊
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
物料搬運(yùn)裝置 繼電器模塊 主機(jī)模塊
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;
/*****信號(hào)檢測口***********/
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; //電機(jī)停止
#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) //延時(shí)子程序
{
uchar a,b;
for(a=210;a>0;a--)
for(b=cxms;b>0;b--);
}
void jxs_gw2()//到達(dá)工位2(為在工位2抓球做準(zhǔn)備)
{
while(num2)
{
if(dk5==0)
{
jxs_sd;
cx(100);
num=1;
num2=0;
}
}
}
void jxs_gw3()//機(jī)械手到工位3放球
{
while(num2)
{
if(dk7==0) //當(dāng)機(jī)械手上升到位后才能進(jìn)行左右移動(dòng)
{
jxs_zy;//機(jī)械手左移
if(dk6==0)//當(dāng)機(jī)械手到達(dá)工位3就執(zhí)行以下程序
{
jxs_sd;//電機(jī)停止移動(dòng)
cx(100);
jxs_fs; //抓手釋放球
num2=0;
num3=1;
}
}
}
}
void jxs_gw33()//機(jī)械手到工位3放球
{
while(num5)
{
if(dk7==0) //當(dāng)機(jī)械手上升到位后才能進(jìn)行左右移動(dòng)
{
jxs_zy;//機(jī)械手左移
if(dk6==0)//當(dāng)機(jī)械手到達(dá)工位3就執(zhí)行以下程序
{
jxs_sd;//電機(jī)停止移動(dòng)
cx(100);
jxs_fs; //抓手釋放球
num5=0;
num=1;
}
}
}
}
void jxs_zq()//機(jī)械手下降抓球
{
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); //夾緊到位檢測(只有當(dāng)抓手把球抓緊后,程序才往下執(zhí)行)
jxs_ss;//上升
while(dk7); //上升到位(如果機(jī)械手沒有上升到位,程序?qū)⑼T诖颂帲?/p>
num1=0;
num2=1;
cx(255);
}
}
}
void jxs_zq1()//機(jī)械手下降抓球
{
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); //夾緊到位檢測(只有當(dāng)抓手把球抓緊后,程序才往下執(zhí)行)
jxs_ss;//上升
while(dk7); //上升到位(如果機(jī)械手沒有上升到位,程序?qū)⑼T诖颂帲?/p>
num4=0;
num5=1;
cx(255);
}
}
}
void init_gw1()//到到達(dá)工位1(為在工位1抓球做準(zhǔn)備)
{
while(num)
{
if(dk4==0)//工位1檢測點(diǎn)
{
jxs_sd;
cx(100);
jxs_sd;
num=0;
num1=1;//只有當(dāng)機(jī)械手到達(dá)工位1停下之后,機(jī)械手才執(zhí)行下降抓球程序
cx(200);
}
if(dk5==0)//工位2檢測點(diǎn)
{
jxs_sd;
cx(100);
jxs_yy;//右移
cx(200);
}
if(dk6==0)//工位3檢測點(diǎn)
{
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()//系統(tǒng)初始化
{
jxs_sd; //電機(jī)停止
cx(255);
jxs_fs;//抓手放松
cx(255);
num=1;
if(dk6==0)//判斷機(jī)械手,然后使其到達(dá)工位1
{
jxs_yy; //如果機(jī)械手在工位3,則使機(jī)械手右移 (以到達(dá)工位1)
cx(100);
}
else
{
jxs_zy;//如果機(jī)械手沒在工位3,則使機(jī)械手左移
cx(100);
}
}
void main()
{
init();//系統(tǒng)初始化函數(shù)
while(1)
{
init_gw1(); //移動(dòng)至工位1停下子函數(shù)
jxs_zq(); //機(jī)械手抓球子函數(shù)
jxs_gw3();//到工位3釋放球 init_gw2();//使機(jī)械手右移(到達(dá)工位2停下)
jxs_zq1();//機(jī)械手抓球字函數(shù)
jxs_gw33(); //機(jī)械手到工位3釋放球
下一篇:三軸伺服機(jī)械手的說明
地址:廣東省東莞市長安鎮(zhèn)上沙管理區(qū)中富街北橫路 服務(wù)熱線:13686053925
Copyrigh @2012 版權(quán)所有 東莞市久億自動(dòng)化科技有限公司