⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adt8940.h

📁 运动控制卡的详细开发资料
💻 H
字号:
#ifndef	_ADT8940_H__
#define	_ADT8940_H__

#if  defined _WINDOWS   ||  defined _Windows
    #define  _MSWINDOWS_
#else
    #undef   _MSWINDOWS_   
#endif 

//0x540---BCB4
#if __BORLANDC__  >  0x540
    #define __FORBCB__
#else
    #undef __FORBCB__
#endif    


#ifdef   _MSWINDOWS_
	#ifdef  ADT8940_EXPORTS
		#define ADTDLLAPI __declspec(dllexport)
	#else
		#define ADTDLLAPI __declspec(dllimport)
	#endif
	#define  CALLTYPE  __stdcall
#else
	#define  ADTDLLAPI
	#define  CALLTYPE 
#endif


#ifdef __FORBCB__
extern "C"
{
#endif

ADTDLLAPI int CALLTYPE adt8940_initial(void);
/* 功能:初始化卡
返回值>0时,表示adt8940卡的数量。如果为3,则下面的可用卡号分别为0、1、2;
返回值=0时,说明没有安装adt8940卡;
返回值<0时,-1表示没有安装端口驱动程序,-2表示PCI桥存在故障。
*/

ADTDLLAPI int CALLTYPE get_lib_version(int cardno);
/* 功能:获取当前库版本
返回值为硬件和库版本的版本号的组合
如果为110则表示硬件版本为1,库版本为1.0,依次类推。
如果为220则表示硬件版本为2,库版本为2.0,依次类推。
*/

ADTDLLAPI int CALLTYPE set_pulse_mode(int cardno,int axis,int value,int logic,int dir_logic);
/* 功能:设置输出脉冲的工作方式
cardno	    卡号
axis		轴号(1-4)
value       0:脉冲+脉冲方式	1:脉冲+方向方式
logic		0:	正逻辑脉冲		1:	负逻辑脉冲
dir_logic	0:方向输出信号正逻辑	1:方向输出信号负逻辑
返回值	    0:正确				1:错误
默认模式:脉冲+方向,正逻辑脉冲,方向输出信号正逻辑
*/

ADTDLLAPI int CALLTYPE set_limit_mode(int cardno,int axis,int v1,int v2,int logic);
/*功能:设定正负方向限位输入nLMT信号的模式
参数:
cardno	    卡号
axis		轴号(1-4)
v1          0:正限位有效       1:正限位无效
v2          0:负限位有效       1:负限位无效
logic       0:低电平有效       1:高电平有效
返回值	    0:正确				1:错误 
默认模式为:正限位有效,负限位有效,低电平有效
*/

ADTDLLAPI int CALLTYPE set_stop0_mode(int cardno,int axis,int v,int logic);
/*功能:设定stop0输入信号的模式
cardno	    卡号
axis		轴号(1-4)
v           0:无效             1:有效
logic       0:低电平有效       1:高电平有效
返回值	    0:正确				1:错误 
默认模式为:无效
*/

ADTDLLAPI int CALLTYPE set_stop1_mode(int cardno,int axis,int v,int logic);
/*功能:设定stop1输入信号的模式
cardno	    卡号
axis		轴号(1-4)
v           0:无效             1:有效
logic       0:低电平有效       1:高电平有效
返回值	    0:正确				1:错误 
默认模式为:无效
*/

//----------------------------------------------------//
//               驱动状态检查函数                     //
//----------------------------------------------------//

ADTDLLAPI int CALLTYPE get_status(int cardno,int axis,int *v);
/*功能:获取各轴的驱动状态
cardno	    卡号
axis		轴号(1-4)
v           驱动状态指针
            0:驱动结束         非0:正在驱动
返回值	    0:正确				1:错误 
*/
ADTDLLAPI int CALLTYPE get_inp_status(int cardno,int *v);
/*功能:获取插补的驱动状态
cardno      卡号
v           插补状态指针
            0:插补结束         1:正在插补
返回值	    0:正确				1:错误 
*/

//----------------------------------------------------//
//               运动参数设定函数                     //
//----------------------------------------------------//
ADTDLLAPI int CALLTYPE set_range(int cardno, int axis,long Value);
/*功能:范围指定,设置倍率
在硬件版本为1的卡中必须使用,在硬件版本>1中已经停用
cardno	    卡号
axis		轴号(1-4)
Value       范围(500-2)
返回值	    0:正确				1:错误 
       倍率=500/Value
*/

ADTDLLAPI int CALLTYPE set_acc(int cardno, int axis,long add);
/*功能:加速度设定
cardno	    卡号
axis		轴号(1-4)
add         范围(硬件版本1(1-8000),硬件版本2(1-65536))
返回值	    0:正确				1:错误 
硬件版本1        加速度=add*125*倍率
硬件版本>1       加速度=add*125
*/

ADTDLLAPI int CALLTYPE set_startv(int cardno, int axis,long speed);
/*功能:初始速度设定
cardno	    卡号
axis		轴号(1-4)
speed       范围(硬件版本1(1-8000),硬件版本2(1-2M)
返回值	    0:正确				1:错误 
硬件版本1        初始速度=speed*倍率
硬件版本>1       初始速度=speed
*/

ADTDLLAPI int CALLTYPE set_speed(int cardno, int axis,long speed);
/*功能:驱动速度设定
cardno	    卡号
axis		轴号(1-4)
speed       范围(硬件版本1(1-8000),硬件版本2(1-2M)
返回值	    0:正确				1:错误 
硬件版本1        驱动速度=speed*倍率
硬件版本>1       驱动速度=speed
*/

ADTDLLAPI int CALLTYPE set_command_pos(int cardno, int axis,long pos);
/*功能:逻辑位置设定
cardno	    卡号
axis		轴号(1-4)
pos         范围(-2147483648~+2147483647)
返回值	    0:正确				1:错误 
*/

ADTDLLAPI int CALLTYPE set_actual_pos(int cardno, int axis,long pos);
/*功能:实际位置设定
cardno	    卡号
axis		轴号(1-4)
pos         范围(-2147483648~+2147483647)
返回值	    0:正确				1:错误 
*/

//----------------------------------------------------//
//               运动参数检查函数                     //
//----------------------------------------------------//

ADTDLLAPI int CALLTYPE get_command_pos(int cardno,int axis,long *pos);
/*功能:获取各轴的逻辑位置
cardno	    卡号
axis		轴号(1-4)
pos         逻辑位置的指针
返回值	    0:正确				1:错误 
*/

ADTDLLAPI int CALLTYPE get_actual_pos(int cardno,int axis,long *pos);
/*功能:获取各轴的实际位置
cardno	    卡号
axis		轴号(1-4)
pos         实际位置的指针
返回值	    0:正确				1:错误 
*/

ADTDLLAPI int CALLTYPE get_speed(int cardno,int axis,long *speed);
/*功能:获取各轴的当前驱动速度
cardno	    卡号
axis		轴号(1-4)
speed       当前驱动速度的指针
返回值	    0:正确				1:错误 
*/

//----------------------------------------------------//
//                   驱动函数                         //
//----------------------------------------------------//

ADTDLLAPI int CALLTYPE pmove(int cardno,int axis,long pos);
/*功能:定量驱动
cardno	    卡号
axis		轴号(1-4)
pos         输出的脉冲数(-268435455~+268435455)
            >0:正方向驱动      <0:负方向驱动
返回值	    0:正确				1:错误
*/
ADTDLLAPI int CALLTYPE dec_stop(int cardno,int axis);
/*功能:驱动减速停止
cardno	    卡号
axis		轴号(1-4)
返回值	    0:正确				1:错误
*/

ADTDLLAPI int CALLTYPE sudden_stop(int cardno,int axis);
/*功能:驱动立即停止
cardno	    卡号
axis		轴号(1-4)
返回值	    0:正确				1:错误
*/

ADTDLLAPI int CALLTYPE inp_move2(int cardno,int axis1,int axis2,long pulse1,long pulse2);
/*功能:两轴直线插补
cardno	    卡号
axis1,axis2  参与插补的轴号
pulse1,pulse2 移动的相对距离(-8388608~+8388607)
返回值	    0:正确				1:错误
*/

ADTDLLAPI int CALLTYPE inp_move3(int cardno,int axis1,int axis2,int axis3,long pulse1,long pulse2,long pulse3);
/*功能:三轴直线插补
cardno	    卡号
axis1,axis2,axis3  参与插补的轴号
pulse1,pulse2,pulse3 移动的相对距离(-8388608~+8388607)
返回值	    0:正确				1:错误
*/

ADTDLLAPI int CALLTYPE inp_move4(int cardno,long pulse1,long pulse2,long pulse3,long pulse4);
/*功能:四轴直线插补
cardno	    卡号
pulse1,pulse2,pulse3,pulse4 XYZW四轴移动的相对距离(-8388608~+8388607)
返回值	    0:正确				1:错误
*/

//----------------------------------------------------//
//               开关量输入输出类                     //
//----------------------------------------------------//
ADTDLLAPI int CALLTYPE read_bit(int cardno,int number);
/*功能:读取输入点
cardno	    卡号
number      输入点(0-39)
返回值      0:低电平     1:高电平      -1:错误
*/
ADTDLLAPI int CALLTYPE write_bit(int cardno,int number,int value);
/*功能:输出
cardno	    卡号
number      输出点(0-15)
value       0: 低电平           1: 高电平
返回值	    0:正确				1:错误
*/

ADTDLLAPI int CALLTYPE get_hardware_ver(int cardno);
/*功能:获取硬件版本
cardno       卡号
返回值       1:硬件第一版
             2:硬件第二版
*/

ADTDLLAPI int CALLTYPE set_suddenstop_mode(int cardno,int v, int logic);
/*功能:硬件停止模式设置,硬件版本为1无此功能
cardno       卡号
v            0:无效             1:有效
logic        0:低电平有效       1:高电平有效
返回值	     0:正确			 1:错误
硬件停止信号固定使用P3端子板34引脚(IN31)
*/
ADTDLLAPI int CALLTYPE get_delay_status(int cardno);
/*功能:获取延时状态,硬件版本为1无此功能
cardno       卡号
返回值       0:延时结束          1:延时进行中
*/
ADTDLLAPI int CALLTYPE set_delay_time(int cardno,long time);
/*功能:设定延时时间,硬件版本为1无此功能
cardno       卡号
time          延时时间
返回值	     0:正确			 1:错误
时间单位为1/8us
*/

ADTDLLAPI int CALLTYPE adt8940_init_board(void);
ADTDLLAPI int CALLTYPE home1(int axis,FUNCTION pfn);
ADTDLLAPI int CALLTYPE home2(int axis1,int axis2,FUNCTION pfn);
ADTDLLAPI int CALLTYPE home3(int axis1,int axis2,int axis3,FUNCTION pfn);
ADTDLLAPI int CALLTYPE home4(FUNCTION pfn);
ADTDLLAPI int CALLTYPE work_move1(int axis,float d,int oppmode,int speedmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE work_move2(int axis1,float d1,int axis2,float d2,int oppmode,int speedmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE work_move3(int axis1,float d1,int axis2,float d2,int axis3,float d3,int oppmode,int speedmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE work_move4(float d1,float d2,float d3,float d4,int oppmode,int speedmode,FUNCTION pfn);

ADTDLLAPI int CALLTYPE work_inp2(int axis1,float d1,int axis2,float d2,int oppmode,int speedmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE work_inp3(int axis1,float d1,int axis2,float d2,int axis3,float d3,int oppmode,int speedmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE work_inp4(float d1,float d2,float d3,float d4,int oppmode,int speedmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE work_arc(int axis1,int axis2,float cood[],int speedmode,FUNCTION pfn);

ADTDLLAPI int CALLTYPE hand_move(int axis,int dir,FUNCTION pfn);

ADTDLLAPI int CALLTYPE continue_move1(int axis,int dir,int speedmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE continue_move2(int axis1,int dir1,int axis2,int dir2,int speedmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE continue_move3(int axis1,int dir1,int axis2,int dir2,int axis3,int dir3,int speedmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE continue_move4(int dir1,int dir2,int dir3,int dir4,int speedmode,FUNCTION pfn);

ADTDLLAPI int CALLTYPE free_move1(int axis,float d,float startv,float speed,float addtime,int oppmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE free_move2(int axis1,float d1,float startv1,float speed1,float addtime1,int axis2,float d2,float startv2,float speed2,float addtime2,int oppmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE free_move3(int axis1,float d1,float startv1,float speed1,float addtime1,int axis2,float d2,float startv2,float speed2,float addtime2,int axis3,float d3,float startv3,float speed3,float addtime3,int oppmode,FUNCTION pfn);
ADTDLLAPI int CALLTYPE free_move4(float d1,float startv1,float speed1,float addtime1,float d2,float startv2,float speed2,float addtime2,float d3,float startv3,float speed3,float addtime3,float d4,float startv4,float speed4,float addtime4,int oppmode,FUNCTION pfn);

ADTDLLAPI int CALLTYPE one_stop(int axis,int mode);
ADTDLLAPI int CALLTYPE all_stop(int mode);

ADTDLLAPI float CALLTYPE get_logical_pos(int axis,int mode);
ADTDLLAPI float CALLTYPE get_fact_pos(int axis,int mode);
ADTDLLAPI float CALLTYPE get_move_speed(int axis,int mode);
ADTDLLAPI int CALLTYPE get_input(int number);
ADTDLLAPI int CALLTYPE set_output(int number,int value);

#ifdef __FORBCB__
}              
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -