📄 adt8940.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 + -