实验报告2
1.利用C++语言和运动控制卡库函数,采用逐点比较法编写直线插补程序。
打开F盘下dll文件夹,将 GT400data.h,GT400.lib,GT400.dll , userlib.h 4个文件拷贝到F盘中experiment_1文件夹中,打开文件夹中扩展名为dsw的文件,进入VC++中,找到已经建立的模版,在模版中有进给按钮XRun(-)、XRun(+)、YRun(-)、YRun(+)、直线插补按钮、初始化按钮、抬笔、压笔、以及打开伺服按钮PowerOn、关上伺服按钮PowerOff。双击任意一个按钮后可添加相应的程序。
void CTest3Dlg::OnBPowerOff()//关上伺服
{
for(int i=1;i<3;i++)
{
GT_Axis(i);//选择当前轴
GT_AbptStp();//立即停止当前轴的运动,将实际速度设置为零 GT_AxisOff();//关闭当前轴
Sleep(200); //重新初始化轴状态
GT_ClrSts();//清除当前轴状态
GT_Update();
GT_SetPos(0);
GT_SetVel(0);
GT_SetAcc(0);
GT_Update();
GT_ZeroPos();
}
}
void CTest3Dlg::OnBPowerOn() //打开伺服
{
for(int i=1;i<3;i++)
{
GT_Axis(i);
GT_SetKp(3);
GT_SetKd(10);//设置比例和微分参数
GT_Update();
GT_AxisOn();//打开当前轴
Sleep(100);
}
}
void CTest3Dlg::OnExit() //退出
{
OnBPowerOff();
GT_Close();
this->CloseWindow();
this->DestroyWindow();
}
void CTest3Dlg::OnInit() //初始化
{
GT_Close();
Sleep(200);
GT_Open();
Sleep(200);//使运动控制器复位
GT_LmtSns(0);// 置限位开关的有效电平,0为高电平触发 Sleep(200);
for(int i =1;i<3;i++)
{
GT_Axis(i);
GT_SetIntrMsk(0);// 设置当前轴中断屏蔽字,设置为0表示允许中断事
件向主机申请中断
GT_ClrSts(); //清除当前轴状态
GT_PrflT();//设置当前轴运动控制模式为梯形曲线模式
GT_Update();
}
}
void CTest3Dlg::OnBXRunMinus() //X向负方向进给一步
{
GT_ZeroPos();//目标位置清零
GT_Update();
GT_Axis(1);//选定X轴
//设置目标位置、速度、加速度
GT_SetPos(-1000);
GT_SetAcc(0.2);
GT_SetVel(5);
GT_Update();
}
void CTest3Dlg::OnBYRunAdd() // Y向正方向进给一步
{
GT_ZeroPos();
GT_Update();
GT_Axis(2);
GT_SetPos(1000);
GT_SetAcc(0.2);
GT_SetVel(5);
GT_Update();
}
void CTest3Dlg::OnBYRunMinus() // Y向负方向进给一步 {
GT_ZeroPos();
GT_Update();
GT_Axis(2);
GT_SetPos(-10000);
GT_SetAcc(0.2);
GT_SetVel(5);
GT_Update();
}
void CTest3Dlg::OnBXRunAdd()//X向正方向进给一步 {
GT_ZeroPos();
GT_Update();
GT_Axis(1);
GT_SetPos(10000);
GT_SetAcc(0.2);
GT_SetVel(5);
GT_Update();
}
void CTest3Dlg::OnPenUp() //抬笔
{
GT_ExOpt(0xff);
}
void CTest3Dlg::OnPenDown() //压笔
{
GT_ExOpt(0x0);
}
void CTest3Dlg::OnLineXY() //直线插补
{
int x=500,y=500;//直线终点坐标
int End_Flag=x+y;//进给完成判别
int Fij=0;
while(End_Flag)
{
if(Fij>=0)
{
//向X正方向进给一步 OnBXRunAdd(); Fij=Fij-y;
End_Flag=End_Flag-1; }
else
{
//向+y方向进给一步 OnBYRunAdd(); Fij=Fij+x;
End_Flag=End_Flag-1; }
}
}
实验报告3
利用C++和运动控制卡库函数采用数字积分(DDA)法在实验二编写的程序的基础上编写直线和圆弧插补程序。
程序清单:
void CExperiment_1Dlg::OnLineXY() // DDA直线插补
{
unsigned short Jvx,Jkx,Jvy,Jky;//定义累加器Jvx、Jvy和被积函数寄存器Jkx、Jky unsigned short x=6,y=4; //定义直线终点坐标
int n=3;//定义累加器和被积函数寄存器的位数
int j=pow(2,n);//终点判别j=2n
int p=j;//p用于判断累加器是否溢出
Jvx=x;Jvy=y;Jky=0;Jkx=0;//初始化累加器Jvx、Jvy和被积函数寄存器Jkx、Jky while(j>=0)//当终点判别j≥0时循环
{
Jkx=Jkx+Jvx;
Jky=Jky+Jvy;//累加器进行累加
if (Jkx>=p)//Jvx累加器有溢出时x向正方向进给一步
{
OnBXRunAdd();
}
if(Jky>=p)// Jvy累加器有溢出时y向正方向进给一步
{
OnBYRunAdd();
}
Sleep(1000);//延时
j=j-1;
Jkx=(Jkx&0x0007);
Jky=(Jky&0x0007);//保留被积函数寄存器前三位
}
}
void CExperiment_1Dlg::OnButton1() // DDA圆弧插补实验
{
unsigned short Jvx,Jkx,Jvy,Jky;// 累加器Jvx、Jvy和被积函数寄存器Jkx、Jky
unsigned short Xe=0,Ye=5,Xo=5,Yo=0;//终点坐标(0,5)和起点坐标(5,0) int jx=abs(Xe-Xo);int jy=abs(Ye-Yo);//终点判别
Jvx=Xe;Jvy=Ye;Jky=0;Jkx=0;// 初始化累加器Jvx、Jvy和被积函数寄存器Jkx、
Jky
While((jx+jy)>=0)
{
Jkx=Jkx+Jvx;
if(jx>0)
{
if (Jkx>=8) // 累加器Jvx是否有溢出
{
OnBXRunMinus();
Jvy=Jvy-1;
jx=jx-1;
}
}
Jky=Jky+Jvy;
if(jy>0)
{
if(Jky>=8) // 累加器Jvy是否有溢出
{
OnBYRunAdd();
Jvx=Jvx+1;
jy=jy-1;
}
}
Sleep(100);
Jkx=(Jkx&0x0007);
Jky=(Jky&0x0007);// 保留被积函数寄存器前三位 }
}
数控车床的操作与加工实验报告书
班级: 07 级 姓名: 小强 学号:---------
数控铣床的操作与加工实验报告书
班级: 07级 姓名:小强 学号:----------
姓名学院班级班学号指导老师姚国强实训地点15号楼一实验目的数控机床加工程序编制简称数控编程课程是机械和机电等各类专业本专科教学计划…
数控加工程序编制实验1、实验目的(1)熟悉数控机床的构成及其功能,了解加工及工艺过程(2)熟悉并掌握数控机床常用指令及加工程序编制…
实验报告21利用C语言和运动控制卡库函数采用逐点比较法编写直线插补程序打开F盘下dll文件夹将GT400datahGT400lib…
实验一1实验目的1熟悉数控机床的构成及其功能了解加工及工艺过程2熟悉并掌握数控机床常用指令及加工程序编制过程3了解并掌握数控机床控…
西安交通大学数控技术课程实验班级机自91姓名周吉文学号09011025指导老师徐学武一实验目的1加深对数控机床的认识2进一步理解数…
近年来,随着计算机控制技术的发展,数字控制技术已经广泛应用于工业控制的各个领域,尤其是机械制造业中,由于数控化加工可以让机械加工行…
数控机床是人类进行生产劳动的重要工具,也是社会生产力发展水平的重要标志,数控车床和数控铣床是数字程序控制车铣床的简称,它集通用性好…
数实控验报班级姓名:学号:机告床书《》实验一:《宇航数控加工仿真系统》功能熟悉实验二:数控车床编程与仿真操作1.数控车床由哪几部分…
数控机床实习报告目名院业级号导教师数控实习张翼工学院机械设计制造及其自动化机制0233110216张翼杜婉邴瑞泽陈元兴陈庚张正伟吴…
数控实习报告院系专业班级姓名学号指导老师机械工程20xx年月日1目录1前言32实习目的及意义33实习要求34实习单位介绍45实习安…