ConsoleApplication1program7
ConsoleApplication1program7
#include <iostream>
#include"gts.h"
#pragma comment(lib,"gts.lib")
int main()
{
short flag;
TTrapPrm trap;
TJogPrm jog;
long pval;
double prfpos;
flag = GT_Open();
flag = GT_Reset();
/**************************************/
//设置异步电机启动和方向
flag = GT_SetDoBit(MC_GPO, 2, 0);
flag = GT_SetDoBit(MC_GPO, 1, 0);
/*************************************/
//轴初始化
flag = GT_SetDoBit(MC_GPO, 4, 1);//关吸盘
flag = GT_AlarmOff(1);
flag = GT_AlarmOff(2);
flag = GT_AlarmOff(3);
flag = GT_AlarmOff(4);
flag = GT_LmtSns(0xffff);
/*************************************/
//轴 3 归位
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfJog(3);
flag = GT_GetJogPrm(3, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(3, &jog);
flag = GT_SetVel(3, -500);
while (1) {
flag = GT_GetDi(MC_NEGATIVE_DIRECTION, &pval);
if ((pval & 0x4) == 0) {
flag = GT_Update(1 << 2);
}
else {
flag = GT_AxisOff(3);
break;
}
}
/*************************************/
//轴 4 归位
flag = GT_ClrSts(4, 1);
flag = GT_AxisOn(4);
flag = GT_PrfJog(4);
flag = GT_GetJogPrm(4, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(4, &jog);
flag = GT_SetVel(4, 10);
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x400) == 0) {
flag = GT_Update(1 << 3);
}
else {
flag = GT_AxisOff(4);
break;
}
}
/*************************************/
//轴 1 归位:先到负限位,再到原点
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfJog(1);
flag = GT_GetJogPrm(1, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(1, &jog);
flag = GT_SetVel(1, -60);
while (1) {
flag = GT_GetDi(MC_NEGATIVE_DIRECTION, &pval);
if ((pval & 0x1) == 0) {
flag = GT_Update(1 << 0);
}
else {
flag = GT_AxisOff(1);
break;
}
}
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfJog(1);
flag = GT_GetJogPrm(1, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(1, &jog);
flag = GT_SetVel(1, 60);
while (1) {
flag = GT_GetDi(MC_HOME, &pval);
if ((pval & 0x1) != 0) {
flag = GT_Update(1 << 0);
}
else {
flag = GT_AxisOff(1);
break;
}
}
/*************************************/
//轴 2 归先走到负限位,再走到原点
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfJog(2);
flag = GT_GetJogPrm(2, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(2, &jog);
flag = GT_SetVel(2, -60);
while (1) {
flag = GT_GetDi(MC_NEGATIVE_DIRECTION, &pval);
if ((pval & 0x2) == 0) {
flag = GT_Update(1 << 1);
}
else {
flag = GT_AxisOff(2);
break;
}
}
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfJog(2);
flag = GT_GetJogPrm(2, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(2, &jog);
flag = GT_SetVel(2, 60);
while (1) {
flag = GT_GetDi(MC_HOME, &pval);
if ((pval & 0x2) != 0) {
flag = GT_Update(1 << 1);
}
else {
flag = GT_AxisOff(2);
break;
}
}
/*************************************/
//等待物料放入,物料放入,气缸动作
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x1000) != 0) {
break;
}
}
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 50000; j++);
flag = GT_SetDoBit(MC_GPO, 3, 0);
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 20000; j++);
flag = GT_SetDoBit(MC_GPO, 3, 1);
/*************************************/
//轴 4 将物料推到一边
flag = GT_ClrSts(4, 1);
flag = GT_ZeroPos(1, 4);
flag = GT_AxisOn(4);
flag = GT_PrfTrap(4);
flag = GT_GetTrapPrm(4, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(4, &trap);
flag = GT_SetPos(4, -14000L);
flag = GT_SetVel(4, 3);
flag = GT_Update(1 << 3);
/*************************************/
//检测物料到位
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x2000) == 0) {
break;
}
}
/*************************************/
//轴 1 对齐工件 premier alignement axe 1
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, 180000L);
flag = GT_SetVel(1, 500);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
//轴 1 对齐工件 premier alignement axe 1
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, 191672L);
flag = GT_SetVel(1, 20);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
/*************************************/
//轴 2 对齐工件 premier alignement axe 2
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfTrap(2);
flag = GT_GetTrapPrm(2, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(2, &trap);
flag = GT_SetPos(2, -594L);
flag = GT_SetVel(2, 60);
flag = GT_Update(1 << 1);
do {
flag = GT_GetSts(2, &pval);
//flag = GT_GetPrfPos(2, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(2);
/*************************************/
flag = GT_SetDoBit(MC_GPO, 4, 0);//开吸盘
//轴 3 对齐工件 premier alignement axe 3
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfTrap(3);
flag = GT_GetTrapPrm(3, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(3, &trap);
flag = GT_SetPos(3, 2334397L);
flag = GT_SetVel(3, 200);
flag = GT_Update(1 << 2);
do {
flag = GT_GetSts(3, &pval);
//flag = GT_GetPrfPos(3, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(3);
/*************************************/
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 20000; j++);
/*************************************/
//轴 3 抬起
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfJog(3);
flag = GT_GetJogPrm(3, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(3, &jog);
flag = GT_SetVel(3, -500);
while (1) {
flag = GT_GetDi(MC_NEGATIVE_DIRECTION, &pval);
if ((pval & 0x4) == 0) {
flag = GT_Update(1 << 2);
}
else {
flag = GT_AxisOff(3);
break;
}
}
/*************************************/
//轴 2 对齐目的地 deuxieme alignement axe 2
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfTrap(2);
flag = GT_GetTrapPrm(2, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(2, &trap);
flag = GT_SetPos(2, -11345L);
flag = GT_SetVel(2, 55);
flag = GT_Update(1 << 1);
do {
flag = GT_GetSts(2, &pval);
flag = GT_GetPrfPos(2, &prfpos);
printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(2);
/*DEUXIEME PIECE*/
/*************************************/
//轴 3 归位
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfJog(3);
flag = GT_GetJogPrm(3, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(3, &jog);
flag = GT_SetVel(3, -500);
while (1) {
flag = GT_GetDi(MC_NEGATIVE_DIRECTION, &pval);
if ((pval & 0x4) == 0) {
flag = GT_Update(1 << 2);
}
else {
flag = GT_AxisOff(3);
break;
}
}
/*************************************/
//轴 4 归位
flag = GT_ClrSts(4, 1);
flag = GT_AxisOn(4);
flag = GT_PrfJog(4);
flag = GT_GetJogPrm(4, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(4, &jog);
flag = GT_SetVel(4, 10);
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x400) == 0) {
flag = GT_Update(1 << 3);
}
else {
flag = GT_AxisOff(4);
break;
}
}
/*************************************/
/*************************************/
//等待物料放入,物料放入,气缸动作
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x1000) != 0) {
break;
}
}
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 50000; j++);
flag = GT_SetDoBit(MC_GPO, 3, 0);
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 20000; j++);
flag = GT_SetDoBit(MC_GPO, 3, 1);
/*************************************/
//轴 4 将物料推到一边
flag = GT_ClrSts(4, 1);
flag = GT_ZeroPos(1, 4);
flag = GT_AxisOn(4);
flag = GT_PrfTrap(4);
flag = GT_GetTrapPrm(4, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(4, &trap);
flag = GT_SetPos(4, -14000L);
flag = GT_SetVel(4, 3);
flag = GT_Update(1 << 3);
/*************************************/
//检测物料到位
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x2000) == 0) {
break;
}
}
/*************************************/
//轴 1 对齐工件 premier alignement axe 1
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, 180000L);
flag = GT_SetVel(1, 500);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
//轴 1 对齐工件 premier alignement axe 1
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, 191672L);
flag = GT_SetVel(1, 20);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
/*************************************/
//轴 2 对齐工件 premier alignement axe 2
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfTrap(2);
flag = GT_GetTrapPrm(2, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(2, &trap);
flag = GT_SetPos(2, -594L);
flag = GT_SetVel(2, 60);
flag = GT_Update(1 << 1);
do {
flag = GT_GetSts(2, &pval);
//flag = GT_GetPrfPos(2, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(2);
/*************************************/
flag = GT_SetDoBit(MC_GPO, 4, 0);//开吸盘
//轴 3 对齐工件 premier alignement axe 3
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfTrap(3);
flag = GT_GetTrapPrm(3, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(3, &trap);
flag = GT_SetPos(3, 2334397L);
flag = GT_SetVel(3, 200);
flag = GT_Update(1 << 2);
do {
flag = GT_GetSts(3, &pval);
//flag = GT_GetPrfPos(3, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(3);
/*************************************/
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 20000; j++);
/*************************************/
//轴 3 抬起
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfJog(3);
flag = GT_GetJogPrm(3, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(3, &jog);
flag = GT_SetVel(3, -500);
while (1) {
flag = GT_GetDi(MC_NEGATIVE_DIRECTION, &pval);
if ((pval & 0x4) == 0) {
flag = GT_Update(1 << 2);
}
else {
flag = GT_AxisOff(3);
break;
}
}
/*************************************/
//轴 2 对齐目的地 deuxieme alignement axe 2 piece 2
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfTrap(2);
flag = GT_GetTrapPrm(2, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(2, &trap);
flag = GT_SetPos(2, 60088L);
flag = GT_SetVel(2, 55);
flag = GT_Update(1 << 1);
do {
flag = GT_GetSts(2, &pval);
flag = GT_GetPrfPos(2, &prfpos);
printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(2);
//轴 1 对齐目的地 deuxieme alignement axe 1 piece 2
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, -15000L);
flag = GT_SetVel(1, 500);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
/*TROISIEME PIECE*/
/*************************************/
//轴 3 归位
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfJog(3);
flag = GT_GetJogPrm(3, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(3, &jog);
flag = GT_SetVel(3, -500);
while (1) {
flag = GT_GetDi(MC_NEGATIVE_DIRECTION, &pval);
if ((pval & 0x4) == 0) {
flag = GT_Update(1 << 2);
}
else {
flag = GT_AxisOff(3);
break;
}
}
/*************************************/
//轴 4 归位
flag = GT_ClrSts(4, 1);
flag = GT_AxisOn(4);
flag = GT_PrfJog(4);
flag = GT_GetJogPrm(4, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(4, &jog);
flag = GT_SetVel(4, 10);
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x400) == 0) {
flag = GT_Update(1 << 3);
}
else {
flag = GT_AxisOff(4);
break;
}
}
/*************************************/
//轴 2 对齐目的地 retour home axe 2
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfTrap(2);
flag = GT_GetTrapPrm(2, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(2, &trap);
flag = GT_SetPos(2, 367L);
flag = GT_SetVel(2, 40);
flag = GT_Update(1 << 1);
do {
flag = GT_GetSts(2, &pval);
flag = GT_GetPrfPos(2, &prfpos);
printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(2);
//轴 1 对齐目的地 retour home axe 1
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, 660L);
flag = GT_SetVel(1, 40);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
/*************************************/
//等待物料放入,物料放入,气缸动作
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x1000) != 0) {
break;
}
}
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 50000; j++);
flag = GT_SetDoBit(MC_GPO, 3, 0);
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 20000; j++);
flag = GT_SetDoBit(MC_GPO, 3, 1);
/*************************************/
//轴 4 将物料推到一边
flag = GT_ClrSts(4, 1);
flag = GT_ZeroPos(1, 4);
flag = GT_AxisOn(4);
flag = GT_PrfTrap(4);
flag = GT_GetTrapPrm(4, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(4, &trap);
flag = GT_SetPos(4, -14000L);
flag = GT_SetVel(4, 3);
flag = GT_Update(1 << 3);
/*************************************/
//检测物料到位
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x2000) == 0) {
break;
}
}
/*************************************/
//轴 1 对齐工件 premier alignement axe 1
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, 180000L);
flag = GT_SetVel(1, 500);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
//轴 1 对齐工件 premier alignement axe 1
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, 191672L);
flag = GT_SetVel(1, 20);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
/*************************************/
//轴 2 对齐工件 premier alignement axe 2
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfTrap(2);
flag = GT_GetTrapPrm(2, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(2, &trap);
flag = GT_SetPos(2, -594L);
flag = GT_SetVel(2, 60);
flag = GT_Update(1 << 1);
do {
flag = GT_GetSts(2, &pval);
//flag = GT_GetPrfPos(2, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(2);
/*************************************/
flag = GT_SetDoBit(MC_GPO, 4, 0);//开吸盘
//轴 3 对齐工件 premier alignement axe 3
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfTrap(3);
flag = GT_GetTrapPrm(3, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(3, &trap);
flag = GT_SetPos(3, 2334397L);
flag = GT_SetVel(3, 200);
flag = GT_Update(1 << 2);
do {
flag = GT_GetSts(3, &pval);
//flag = GT_GetPrfPos(3, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(3);
/*************************************/
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 20000; j++);
/*************************************/
//轴 3 抬起
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfJog(3);
flag = GT_GetJogPrm(3, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(3, &jog);
flag = GT_SetVel(3, -500);
while (1) {
flag = GT_GetDi(MC_NEGATIVE_DIRECTION, &pval);
if ((pval & 0x4) == 0) {
flag = GT_Update(1 << 2);
}
else {
flag = GT_AxisOff(3);
break;
}
}
/*************************************/
//轴 2 对齐目的地 deuxieme alignement axe 2 piece 3
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfTrap(2);
flag = GT_GetTrapPrm(2, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(2, &trap);
flag = GT_SetPos(2, -11345L);
flag = GT_SetVel(2, 55);
flag = GT_Update(1 << 1);
do {
flag = GT_GetSts(2, &pval);
flag = GT_GetPrfPos(2, &prfpos);
printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(2);
//轴 1 对齐目的地 deuxieme alignement axe 1 piece 3
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, 55000L);
flag = GT_SetVel(1, 500);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
/*************************************/
flag = GT_SetDoBit(MC_GPO, 4, 1);//关吸盘
std::cout << "Third Piece is placed!\n";
/*QUATRIEME PIECE*/
/*************************************/
//轴 3 归位
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfJog(3);
flag = GT_GetJogPrm(3, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(3, &jog);
flag = GT_SetVel(3, -500);
while (1) {
flag = GT_GetDi(MC_NEGATIVE_DIRECTION, &pval);
if ((pval & 0x4) == 0) {
flag = GT_Update(1 << 2);
}
else {
flag = GT_AxisOff(3);
break;
}
}
/*************************************/
//轴 4 归位
flag = GT_ClrSts(4, 1);
flag = GT_AxisOn(4);
flag = GT_PrfJog(4);
flag = GT_GetJogPrm(4, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(4, &jog);
flag = GT_SetVel(4, 10);
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x400) == 0) {
flag = GT_Update(1 << 3);
}
else {
flag = GT_AxisOff(4);
break;
}
}
/*************************************/
/*************************************/
//等待物料放入,物料放入,气缸动作
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x1000) != 0) {
break;
}
}
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 50000; j++);
flag = GT_SetDoBit(MC_GPO, 3, 0);
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 20000; j++);
flag = GT_SetDoBit(MC_GPO, 3, 1);
/*************************************/
//轴 4 将物料推到一边
flag = GT_ClrSts(4, 1);
flag = GT_ZeroPos(1, 4);
flag = GT_AxisOn(4);
flag = GT_PrfTrap(4);
flag = GT_GetTrapPrm(4, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(4, &trap);
flag = GT_SetPos(4, -14000L);
flag = GT_SetVel(4, 3);
flag = GT_Update(1 << 3);
/*************************************/
//检测物料到位
while (1) {
flag = GT_GetDi(MC_GPI, &pval);
if ((pval & 0x2000) == 0) {
break;
}
}
/*************************************/
//轴 1 对齐工件 premier alignement axe 1 piece 4
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, 180000L);
flag = GT_SetVel(1, 500);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
//轴 1 对齐工件 premier alignement axe 1 piece 4
flag = GT_ClrSts(1, 1);
flag = GT_AxisOn(1);
flag = GT_PrfTrap(1);
flag = GT_GetTrapPrm(1, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(1, &trap);
flag = GT_SetPos(1, 191672L);
flag = GT_SetVel(1, 20);
flag = GT_Update(1 << 0);
do {
flag = GT_GetSts(1, &pval);
//flag = GT_GetPrfPos(1, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(1);
/*************************************/
//轴 2 对齐工件 premier alignement axe 2 piece 4
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfTrap(2);
flag = GT_GetTrapPrm(2, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(2, &trap);
flag = GT_SetPos(2, -594L);
flag = GT_SetVel(2, 60);
flag = GT_Update(1 << 1);
do {
flag = GT_GetSts(2, &pval);
//flag = GT_GetPrfPos(2, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(2);
/*************************************/
flag = GT_SetDoBit(MC_GPO, 4, 0);//开吸盘
//轴 3 对齐工件 premier alignement axe 3 piece 4
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfTrap(3);
flag = GT_GetTrapPrm(3, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(3, &trap);
flag = GT_SetPos(3, 2334397L);
flag = GT_SetVel(3, 200);
flag = GT_Update(1 << 2);
do {
flag = GT_GetSts(3, &pval);
//flag = GT_GetPrfPos(3, &prfpos);
//printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(3);
/*************************************/
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 20000; j++);
/*************************************/
//轴 3 抬起
flag = GT_ClrSts(3, 1);
flag = GT_AxisOn(3);
flag = GT_PrfJog(3);
flag = GT_GetJogPrm(3, &jog);
jog.acc = 0.1;
jog.dec = 0.1;
flag = GT_SetJogPrm(3, &jog);
flag = GT_SetVel(3, -500);
while (1) {
flag = GT_GetDi(MC_NEGATIVE_DIRECTION, &pval);
if ((pval & 0x4) == 0) {
flag = GT_Update(1 << 2);
}
else {
flag = GT_AxisOff(3);
break;
}
}
/*************************************/
//轴 2 对齐目的地 deuxieme alignement axe 2 piece 4
flag = GT_ClrSts(2, 1);
flag = GT_AxisOn(2);
flag = GT_PrfTrap(2);
flag = GT_GetTrapPrm(2, &trap);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
flag = GT_SetTrapPrm(2, &trap);
flag = GT_SetPos(2, 60088L);
flag = GT_SetVel(2, 55);
flag = GT_Update(1 << 1);
do {
flag = GT_GetSts(2, &pval);
flag = GT_GetPrfPos(2, &prfpos);
printf("sts=0x%-10lxprfpos=%-10.1lf\r", pval, prfpos);
} while (pval & 0x400);
flag = GT_AxisOff(2);
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件