?? gtcardapi.cpp
字號:
{
return 1;
}
}
axis_mode = 1;
if(mode)
{
if(GT_StrtList())
return 1;
/*for(i = 0 ; i< Sys_Max_Axis_Num ; i++)
{
if(get_axis_pos(i+1 , &Pos))
return 1;
axisMapBuf[i] = Pos;
axisMapBuf[i] /= 1000.0;
}
if(GT_MvXYZA(axisMapBuf[0] , axisMapBuf[1] , axisMapBuf[2] ,axisMapBuf[3] , speed_syn , acc_syn))
return 1;*/
}
return 0;
}
// 功 能:該函數(shù)設(shè)置運(yùn)動控制器以圓弧插補(bǔ)(圓心角度)方式運(yùn)動
//
// 參 數(shù): 是所要運(yùn)動到指定的位置,單位為mm
//
// 返回值: 1表示有錯(cuò)誤發(fā)生
// 0表示命令執(zhí)行成功
int Gt_Card_Api::add_conti_blk_circle_center(double xC=0 , double yC=0 , double zC=0 ,double angle=0 , int direction=1, int circle_cb_mode=2, double synvel=0, double synacc=0 )
{
int rtn=0;
rtn=GT_SetSynVel(synvel);
rtn=GT_SetSynAcc(synacc);
switch(circle_cb_mode)
{
case 2 :
rtn=(GT_ArcXY(xC,yC,direction*angle));
break;
case 3 :
rtn=(GT_ArcYZ(yC,zC,direction*angle));
break;
case 4 :
rtn=(GT_ArcZX(zC,xC,direction*angle));
break;
}
return rtn;
}
// 功 能:該函數(shù)設(shè)置運(yùn)動控制器以圓弧插補(bǔ)(終點(diǎn)半徑)方式運(yùn)動
//
// 參 數(shù): 是所要運(yùn)動到指定的位置,單位為mm
//
// 返回值: 1表示有錯(cuò)誤發(fā)生
// 0表示命令執(zhí)行成功
int Gt_Card_Api::add_conti_blk_circle_radius(double xT=0 , double yT=0 , double zT=0 , double radius=0 ,int direction=1, int circle_cb_mode=5, double synvel=0, double synacc=0)
{
int rtn=0;
rtn=GT_SetSynVel(synvel);
rtn=GT_SetSynAcc(synacc);
switch(circle_cb_mode)
{ case 5 :
rtn=(GT_ArcXYP(xT,yT,radius,direction));
break;
case 6 :
rtn=(GT_ArcYZP(yT,zT,radius,direction));
break;
case 7 :
rtn=(GT_ArcZXP(zT,xT,radius,direction));
break;
}
return rtn;
}
// 功 能:該函數(shù)設(shè)置運(yùn)動控制器以XYZ插補(bǔ)方式運(yùn)動到指定的位置
//
// 參 數(shù): xyz是所要運(yùn)動到指定的位置,單位為mm
//
// 返回值: 1表示有錯(cuò)誤發(fā)生
// 0表示命令執(zhí)行成功
int Gt_Card_Api::add_conti_blk_XYZ(double x=0 , double y=0 ,double z=0 , int line_cb_mode=0)
{
int rtn=0;
//rtn=GT_SetSynVel(synvel);
//rtn=GT_SetSynAcc(acc);
if(line_cb_mode)
rtn=GT_LnXYZ(x , y ,z);
else
rtn=GT_LnXY(x , y );
return rtn;
}
// 功 能:在當(dāng)前運(yùn)動模式為緩沖區(qū)連續(xù)運(yùn)動模式時(shí)啟動緩沖區(qū)命令的執(zhí)行
//
// 返回值: 1表示有錯(cuò)誤發(fā)生
// 0表示命令執(zhí)行成功
int Gt_Card_Api::run_conti_mode(void)
{
if(GT_StrtMtn())
return 1;
return 0;
}
// 功 能:在當(dāng)前運(yùn)動模式為緩沖區(qū)連續(xù)運(yùn)動模式時(shí)重新打開命令緩沖區(qū)
//
// 返回值: 1表示有錯(cuò)誤發(fā)生
// 0表示命令執(zhí)行成功
int Gt_Card_Api::add_conti_mode(void)
{
if(GT_AddList())
return 1;
return 0;
}
// 功 能: 該函數(shù)按照當(dāng)前的合成速度減速策略停止基于坐標(biāo)系的多軸協(xié)調(diào)運(yùn)動命令
// 在當(dāng)前運(yùn)動模式為緩沖區(qū)連續(xù)運(yùn)動模式時(shí)暫停緩沖區(qū)命令的執(zhí)行
//
// 返回值: 1表示有錯(cuò)誤發(fā)生
// 0表示命令執(zhí)行成功
int Gt_Card_Api::stop_conti_mode(void)
{
if(GT_StpMtn())
return 1;
return 0;
}
// 功 能:該函數(shù)立即停止基于坐標(biāo)系的多軸協(xié)調(diào)運(yùn)動命令。該函數(shù)執(zhí)行后沒有減速過
// 程,當(dāng)前運(yùn)動合成速度和目標(biāo)合成速度立即為零。
// 在當(dāng)前運(yùn)動模式為緩沖區(qū)連續(xù)運(yùn)動模式時(shí)暫停緩沖區(qū)命令的執(zhí)行
// 在立即命令輸入執(zhí)行狀態(tài),運(yùn)動停止后將丟棄當(dāng)前運(yùn)動信息。
//
// 返回值: 1表示有錯(cuò)誤發(fā)生
// 0表示命令執(zhí)行成功
int Gt_Card_Api::Estop_conti_mode(void)
{
if(GT_EStpMtn())
return 1;
return 0;
}
// 功 能:在當(dāng)前運(yùn)動模式為緩沖區(qū)連續(xù)運(yùn)動模式時(shí)關(guān)閉緩沖區(qū)
//
// 返回值: 1表示有錯(cuò)誤發(fā)生
// 0表示命令執(zhí)行成功
int Gt_Card_Api::end_conti_mode(void)
{
if(GT_EndList())
return 1;
return 0;
}
// 功 能:檢查連續(xù)插補(bǔ)緩沖區(qū)是否空
//
// 返回值:1表示沒有空
// 0表示空
// -1表示檢測時(shí)出錯(cuò)
int Gt_Card_Api::check_conti_buffer_done(void)
{
unsigned short status;
if(GT_GetCrdSts(&status))
return -1;
if(status & 0x2000)
return 0;
return 1;
}
// 功 能:檢查坐標(biāo)系模式運(yùn)動時(shí)是否出錯(cuò)
//
// 返回值:1表示出錯(cuò)
// 0表示沒有出錯(cuò)
// -1表示檢測時(shí)出錯(cuò)
int Gt_Card_Api::check_conti_run_error(void)
{
unsigned short status;
if(GT_GetCrdSts(&status))
return -1;
if(status & 0x404) //2 1=伺服周期過小,引起運(yùn)動錯(cuò)誤(該位置1 時(shí), 請立即修改伺服周期)
return 1; //10 1=坐標(biāo)系運(yùn)動發(fā)生異常錯(cuò)誤(正常情況下該標(biāo)志不會置起,除非運(yùn)動
return 0;
}
// 功 能:獲取系統(tǒng)當(dāng)前的運(yùn)行速度(合成速度)
//
// 參 數(shù): *aCurSpeed 返回當(dāng)前的合成速度
//
// 返回值:1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::get_cur_speed(double * aCurSpeed)
{
int i;
double Speed = 0.0;
*aCurSpeed = 0.0;
if(axis_mode)
{
;//GT_GetSynVel(aCurSpeed);
}
else
{
for( i =1 ; i <= Sys_Max_Axis_Num ; i++)
{
if(GT_Axis(i))//設(shè)置第i 軸為當(dāng)前軸
{
*aCurSpeed = 0.0;
return 1;
}
if(GT_GetVel(&Speed))
{
*aCurSpeed = 0.0;
return 1;
}
*aCurSpeed += Speed*Speed;
}
*aCurSpeed = sqrt(*aCurSpeed);
}
return 0;
}
//功 能:獲得軸狀態(tài)字
//
// 參 數(shù): *pAxis_state 返回坐標(biāo)系狀態(tài)字
//
// 返回值:-1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::get_cur_axis_state(int axis, unsigned short *pAxis_state)
{
*pAxis_state = 0;
if(GT_Axis(axis+1))
return -1;
if(GT_GetSts(pAxis_state))
return -1;
return 0;
}
//功 能:獲得坐標(biāo)系狀態(tài)字
//
// 參 數(shù): *axis_state 返回坐標(biāo)系狀態(tài)字
//
// 返回值:-1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::get_cur_cordinate_state(unsigned short *axis_state)
{
*axis_state=0;
if(GT_GetCrdSts(axis_state))
return -1;
return 0;
}
int Gt_Card_Api::Outport(unsigned short wOutport)
{
return GT_ExOpt(wOutport);
}
//將軸模式寄存器中的運(yùn)動出錯(cuò)自動停止標(biāo)志位置1
//參數(shù)
//返回值:1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::AuStopOn(int axis)
{
short rtn;
rtn=GT_Axis(axis);
rtn=GT_AuStpOn();
return rtn;
}
//參數(shù)自動更新
//參數(shù)Mask各位表示0:1號軸;1:2號軸;2:3號軸
//返回值:1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::MultiUpdate(unsigned short Mask)
{
short rtn;
rtn=GT_MltiUpdt(Mask);
return rtn;
}
//設(shè)置坐標(biāo)系狀態(tài)下軸異常自動停止有效
//映射到各軸的運(yùn)動全部停止
//返回值:1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::SetAutoAbruptOn()
{
return (GT_CrdAuStpOn());
}
//設(shè)置坐標(biāo)系狀態(tài)下軸異常自動停止關(guān)閉
//映射到各軸的運(yùn)動不自動全部停止
//返回值:1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::SetAutoAbruptOff()
{
return (GT_CrdAuStpOff());
}
//設(shè)置坐標(biāo)系狀態(tài)下緩沖區(qū)內(nèi)起始點(diǎn)XY位置和參數(shù)
//x為起點(diǎn)x坐標(biāo),y起點(diǎn)y坐標(biāo),vel為速度,acc為加速度
//返回值:1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::SetXYOriginPointInCordinates(double x=0, double y=0, double vel=0, double acc=0)
{
return (GT_MvXY(x,y,vel,acc));
}
//設(shè)置坐標(biāo)系狀態(tài)下緩沖區(qū)內(nèi)起始點(diǎn)XYZ位置和參數(shù)
//x為起點(diǎn)x坐標(biāo),y起點(diǎn)y坐標(biāo),z起點(diǎn)z坐標(biāo),vel為速度,acc為加速度
//返回值:1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::SetXYZOriginPointInCordinates(double x=0, double y=0, double z=0, double vel=0, double acc=0)
{
return (GT_MvXYZ(x,y,z,vel,acc));
}
/////Gt_Card_Api Implemantation///////////////////////////////////////////////////
//設(shè)置通訊窗口句柄.
void Gt_Card_Api::SetMainWnd(HWND hWnd)
{
}
//初始系統(tǒng)參數(shù)
int Gt_Card_Api::InitSystem()
{
return 0;
}
//找某軸的限位值,nAixs=1為X軸,2為Y軸,3為Z軸
int Gt_Card_Api::FindLimit(int nAixs)
{
return 0;
}
//找系統(tǒng)的三軸光柵的RI點(diǎn),找到后并將該點(diǎn)作為系統(tǒng)的機(jī)械坐標(biāo)系原點(diǎn)
int Gt_Card_Api::FindRI()
{
return 0;
}
//得到X,Y,Z三軸的光柵尺的Counter
void Gt_Card_Api::GetXYZCounter(long &x,long &y,long &z)
{
}
//得到X,Y,Z三軸的坐標(biāo)值
void Gt_Card_Api::GetXYZCrd(double &dX,double &dY,double &dZ)
{
return ;
}
//以合成的速度和加速度運(yùn)動到(dX,dY,dZ)點(diǎn),注:該點(diǎn)為坐標(biāo)系下的值
int Gt_Card_Api::MoveTo(double dX,double dY,double dZ,double dAcc,double dSpeed)
{
return 0;
}
//設(shè)置合成的加速度
int Gt_Card_Api::SetCombAcc(double dAcc )
{
return 0;
}
//設(shè)置合成的速度
int Gt_Card_Api::SetCombSpeed(double dSpeed )
{
return 0;
}
//以設(shè)置的速度和加速度運(yùn)動到(x,y,z)點(diǎn),注:該點(diǎn)為機(jī)械坐標(biāo)系下的值
int Gt_Card_Api::MoveTo(double x,double y,double z)
{
return 0;
}
//禁止操縱桿
void Gt_Card_Api::DisableJoyStick()
{
return ;
}
//使能操縱桿
void Gt_Card_Api::EnableJoyStick()
{
return ;
}
//得到光源的各燈的亮度值,pData為亮度值,nLength為數(shù)據(jù)長度
void Gt_Card_Api::GetNightData(BYTE *pData,int nLength)
{
return ;
}
//設(shè)置光源的各燈的亮度值,pData為亮度值,nLength為數(shù)據(jù)長度
void Gt_Card_Api::SetNightData(BYTE *pData,int nLength)
{
return ;
}
//得到系統(tǒng)狀態(tài)
CNCMSTATE Gt_Card_Api::GetSysState()
{
CNCMSTATE temp;
return temp;
}
//設(shè)置光柵的計(jì)數(shù)方向,1為正向,-1為負(fù)向,注意只有1和-1
void Gt_Card_Api::SetLinearDirect(int nX,int nY,int nZ)
{
return ;
}
//設(shè)置X軸的軟件限位值,dZ為正限位值,dF為負(fù)限位值,注意dZ和dF都是機(jī)械坐標(biāo)系下坐標(biāo)值
BOOL Gt_Card_Api::SetSoftLimit_X(double dZ,double dF)
{
return 0;
}
//設(shè)置Y軸的軟件限位值,dZ為正限位值,dF為負(fù)限位值,注意dZ和dF都是機(jī)械坐標(biāo)系下坐標(biāo)值
BOOL Gt_Card_Api::SetSoftLimit_Y(double dZ,double dF)
{
return 0;
}
//設(shè)置Z軸的軟件限位值,dZ為正限位值,dF為負(fù)限位值,注意dZ和dF都是機(jī)械坐標(biāo)系下坐標(biāo)值
BOOL Gt_Card_Api::SetSoftLimit_Z(double dZ,double dF)
{
return 0;
}
//如果出錯(cuò)時(shí),得到錯(cuò)誤代碼
int Gt_Card_Api::GetErrorCode()
{
return 0;
}
//該函數(shù)為在軟件上通過鼠標(biāo)快速移動XYZ三軸,dXSpeed,dYSpeed,dZSpeed分別為速度大小,正負(fù)為方向,單位為mm/s
int Gt_Card_Api::QuickMove(double dXSpeed,double dYSpeed,double dZSpeed)
{
return 0;
}
//得到系統(tǒng)的類型,0:HuaGong_1,1:WanHao_1,2:WanHao_2,.....
int Gt_Card_Api::GetSysType()
{
return 0;
}
short Gt_Card_Api::SetLmtsOn(int axis)
{
return 0;
}
//功 能:獲得獲得當(dāng)前軸模式狀態(tài)字
//
// 參 數(shù): *pMode 返回當(dāng)前軸狀態(tài)字
//
// 返回值:-1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::GetAxisMode(int axis,unsigned short *pMode)
{
*pMode=0;
if(GT_Axis(axis+1))
return -1;
if(GT_GetMode(pMode))
return -1;
return 0;
}
// 功 能:關(guān)閉運(yùn)動控制器設(shè)備
//
// 返回值: 非0表示有錯(cuò)誤發(fā)生
// 0表示沒有有錯(cuò)誤發(fā)生
int Gt_Card_Api::CloseCard()
{
int rtn = 0;
if( GT_Close( ) )//關(guān)閉運(yùn)動控制器設(shè)備
rtn = 1;
return rtn;
}
int Gt_Card_Api::InitialAxis(int axis)
{
int i;
int k;
int rtn = 0;
unsigned short status;
if(axis > Sys_Max_Axis_Num)
return 1;
if(axis <= 0)
{
i = 1;
k = Sys_Max_Axis_Num;
}
else
{
i = axis;
k = axis;
}
//if(GT_EncOn())
// rtn = 1;
for( ; i <= k ; i++)
{
if(GT_Axis(i))//設(shè)置第i 軸為當(dāng)前軸
rtn = 1;
if(GT_ClrSts()) //清除當(dāng)前軸不正確狀態(tài)
rtn = 1;
if(GT_AuStpOff()) //設(shè)置當(dāng)前軸運(yùn)動出錯(cuò)時(shí)電機(jī)自動停止標(biāo)識
rtn = 1;
if(GT_AuUpdtOn()) //該函數(shù)使當(dāng)前軸模式寄存器的自動刷新標(biāo)志位置1
rtn = 1;
if(GT_CrdAuStpOff()) //該函數(shù)設(shè)置坐標(biāo)系狀態(tài)寄存器的軸異常自動停止允許標(biāo)志
rtn = 1;
if(GT_BrkOff()) //該函數(shù)清除當(dāng)前軸已設(shè)置的但未被觸發(fā)的斷點(diǎn)
rtn = 1;
if(GT_StepPulse()) //設(shè)置輸出正負(fù)脈沖信號
rtn = 1;
if(GT_LmtsOn()) //函數(shù)使運(yùn)動控制器開始監(jiān)視當(dāng)前軸的限位開關(guān)狀態(tài)
rtn = 1;
if(GT_LmtSns(0xFFFF)) //函數(shù)使運(yùn)動控制器開始監(jiān)視當(dāng)前軸的限位開關(guān)狀態(tài)
rtn = 1;
if(GT_SynchPos()) //指令位置和實(shí)際位置同步
rtn = 1;
if(GT_Update()) //刷新參數(shù)
rtn = 1;
// while(i==1)//如果電機(jī)伺服驅(qū)動器報(bào)警標(biāo)志位為1,則復(fù)位驅(qū)動器
// {
if(GT_GetSts(&status))
{
rtn = 1;
// continue;
}
if(status&0x2)
{
if(GT_DrvRst()) //調(diào)用該函數(shù)后,控制器向軸驅(qū)動器發(fā)出復(fù)位信號使驅(qū)動器復(fù)位
rtn = 1;
}
// else
// break;
if(GT_Update()) //刷新參數(shù)
rtn = 1;
// }
if(set_axis_on_off(i, Axis_On_Mode))//打開軸
rtn = 1;
}
return rtn;
}
//設(shè)置坐標(biāo)系映射參數(shù)
//參數(shù)axis為欲映射的軸,MapPara為映射參數(shù)
//返回值:1表示出錯(cuò)
// 0表示沒有出錯(cuò)
int Gt_Card_Api::SetMapAxis(int axis ,double *MapPara)
{
short rtn=0;
rtn=GT_MapAxis(axis,MapPara);
return rtn;
}
///////////////////////////////////////////////////////////
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -