资源描述:
《运动控制卡C++程序示例》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、F2.VC编程示例2.1准备工作(1)新建一个项目,保存为“VCExample.dsw”;(2)根据前面讲述的方法,将静态库“8840.lib”加载到项目中;2.2运动控制模块(1)在项目中添加一个新类,头文件保存为“CtrlCard.h”,源文件保存为“CtrlCard.cpp”;(2)在运动控制模块中首先自定义运动控制卡初始化函数,对需要封装到初始化函数中的库函数进行初始化;(3)继续自定义相关的运动控制函数,如:速度设定函数,单轴运动函数,差补运动函数等;(4)头文件“CtrlCard.h”代码如下:#ifndef__ADT8840__CARD__#define__ADT8840_
2、_CARD__/***********************运动控制模块********************为了简单、方便、快捷地开发出通用性好、可扩展性强、维护方便的应用系统,我们在控制卡函数库的基础上将所有库函数进行了分类封装。下面的示例使用一块运动控制卡********************************************************/#defineMAXAXIS4//最大轴数classCCtrlCard{public:intSetup_HardStop(intvalue,intlogic);intSetup_Stop1Mode(intaxis,
3、intvalue,intlogic);(设置stop1信号方式)intSetup_Stop0Mode(intaxis,intvalue,intlogic);(设置stop0信号方式)intSetup_LimitMode(intaxis,intvalue1,intvalue2,intlogic);(设置限位信号方式)intSetup_PulseMode(intaxis,intvalue);(设置脉冲输出方式)intSetup_Pos(intaxis,longpos,intmode);(设置位置计数器)intWrite_Output(intnumber,intvalue);(输出单点函数)i
4、ntRead_Input(intnumber,int&value);(读入点)intGet_CurrentInf(intaxis,long&LogPos,long&ActPos,long&Speed);(获取运动信息)intGet_Status(intaxis,int&value,intmode);(获取轴的驱动状态)intStopRun(intaxis,intmode);(停止轴驱动)intInterp_Move4(longvalue1,longvalue2,longvalue3,longvalue4);(四轴差补函数)intInterp_Move3(intaxis1,intaxis2
5、,intaxis3,longvalue1,longvalue2,longvalue3);(三轴差补函数)intInterp_Move2(intaxis1,intaxis2,longvalue1,longvalue2);(双轴差补函数)intAxis_Pmove(intaxis,longvalue);(单轴驱动函数)intAxis_Cmove(intaxis,longvalue);(单轴连续驱动函数)intSetup_Speed(intaxis,longstartv,longspeed,longadd);(设置速度模块)intInit_Board(intdec_num);(函数初始化)(设
6、置速度模块)CCtrlCard();(定义了一个同名的无参数的构造函数)intResult;//返回值};#endif(5)源文件“CtrlCard.cpp”代码如下:#include"stdafx.h"#include"DEMO.h"#include"CtrlCard.h"#include"adt8840.h"intdevnum=-1;CCtrlCard::CCtrlCard()(构造函数,为什么是空的?){}/*******************初始化函数************************该函数中包含了控制卡初始化常用的库函数,这是调用其他函数的基础,所以必须在示例程
7、序中最先调用返回值<=0表示初始化失败,返回值>0表示初始化成功*****************************************************/intCCtrlCard::Init_Board(intdevnum){/***********************************************************/intmode=0;//应答模式为1时,响应串口接收有效,0时无效if