325上位机VC MFC利用固高运动卡控制伺服回原点
325上位机VC MFC利用固高运动卡控制伺服回原点
功能展示
定位控制系统一般都是用PLC输出脉冲到伺服驱动器对电机进行定位控件,但更高端的控制方式是由电脑通过运行卡发出脉冲到驱动器进行激光打字等更多复杂定位控件,我们当前例程演示固高运行卡初始化及回原点功能,效果如图;代码由项目中抽取,点击<初始化运行卡>可对卡进行脉冲方式,IO通道参数等设置,<建立设备坐标>可以建立机台参考坐标;
要点提示
运动控制卡在使用前都要在电脑上安装硬件驱动才能进一步使用开发包函数开发程序。
运行卡在使用前都得对硬件进行参数设置。
定位设备在运行前都要建立设备坐标,即都要进行回原点操作;
实现功能
1.新建基于对话框的应用程序
2.根目录运行卡开发用的三个文件GES.DLL, GES.H,GES.LIB到自己工程,并在主对话框类头文件包含头文件及库文件,再添加自定义变量和自定义函数
#include "math.h"
#include "GES.h"
#pragma comment (lib,"GES.LIB")
#define CVEL 1000 //速度转化参数;
#define CACC 1000000 //加速度转化参数;
#define SAMPLETIME 200 //采样周期200us
#define PAI 3.1415926535897
private:
BOOL m_bMoveSafe;//标识卡是否可安全运动
BOOL m_bIsMotionCardOK;//标识卡是否初始化
unsigned short m_nOutSts; //Output state
double m_dbRange[4]; //安全软件限位
double m_dbHomePos[4];
double m_dbMaxVel;
double m_dbMaxAcc;
double m_dbAxisPPMM[4]; //轴每mm脉冲数
bool m_bIsUseRuler[4]; //是否使用光删尺
unsigned short m_nLmtSns; //各轴传感器电平设置
unsigned short m_nTFpk; //首脉冲抑制时间 GT_EnaFPK
double m_dbRoundtime; //瞻前处理的拐弯时间
public:
void WaitForStop();//等待运动卡完成运动
//>< //必须首先初始化运动卡
BOOL PrepareMotionCard(double dbHomePos[4], //原点方向原点与极限传感器的距离
double dbRange[4], //单轴最大乱离
double dbAxisPPMM[4],//每毫米脉冲数
bool bIsUseRuler[4],//是否使用光栅尺
double dbMaxVel = 160,//最大速度//MM/S
double dbMaxAcc = 1600,//最大加速度MM/s^2
double dbRoundtime=0.01,//拐角用时S
unsigned short nLmtSns = 0x00ff,//IO初始状态
unsigned short nTFpk =10); //首脉冲抑制时间
//-m_dbRange/2----------0----------- m_dbHomePos--- m_dbRange/2 (--》//往正极限传感器 方向回原点)
BOOL PrepareWorkBench (double dbVel,double dbAcc, double dbStartVel=1,unsigned short nAxis = 0x03);//默认1,2轴
BOOL MakeUpHomePos(UINT nAxisIndex,double dbVel,double dbAcc);
3.在程序初始化函数OnInitDialog()中进行运动卡初始化操作
//初始化运动卡
double dbHomePos[4],dbRange[4],dbAxisPPMM[4];
bool bIsUseRuler[4];
dbHomePos[0] = 20;//MM
dbHomePos[1] = 40;
dbHomePos[2] = 50;
dbHomePos[3] = 60;
dbRange[0] = 60;
dbRange[1] = 80;
dbRange[2] = 100;
dbRange[3] = 120;
dbAxisPPMM[0]= 500;
dbAxisPPMM[1]= 500;
dbAxisPPMM[2]= 1000;
dbAxisPPMM[3]= 333;
bIsUseRuler[0] = TRUE;
bIsUseRuler[1] = FALSE;
bIsUseRuler[2] = FALSE;
bIsUseRuler[3] = FALSE;
PrepareMotionCard(dbHomePos,dbRange,dbAxisPPMM,bIsUseRuler);//初始化运行卡
4.添加按钮<初始化运行卡><建立设备坐标(回原点)>实现手动初始化运动卡及回原点操作
void CGkbc8Dlg::OnButton2() //初始化运动卡
{
double dbHomePos[4],dbRange[4],dbAxisPPMM[4];
bool bIsUseRuler[4];
dbHomePos[0] = 20;//MM
dbHomePos[1] = 40;
dbHomePos[2] = 50;
dbHomePos[3] = 60;
dbRange[0] = 60;
dbRange[1] = 80;
dbRange[2] = 100;
dbRange[3] = 120;
dbAxisPPMM[0]= 500;
dbAxisPPMM[1]= 500;
dbAxisPPMM[2]= 1000;
dbAxisPPMM[3]= 333;
bIsUseRuler[0] = TRUE;
bIsUseRuler[1] = FALSE;
bIsUseRuler[2] = FALSE;
bIsUseRuler[3] = FALSE;
PrepareMotionCard(dbHomePos,dbRange,dbAxisPPMM,bIsUseRuler);//初始化运行卡
}
void CGkbc8Dlg::OnButton1()
{
MakeUpHomePos(1,20,30);//轴1回原点
MakeUpHomePos(3,30,40);//轴3回原点
}
5.程序退出时调用函数GT_Close(); 关闭运动卡
我们来演示下功能实现的整个过程C MFC利用固高运动卡控制伺服回原点
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|