ADT8940控制卡是基于PCI总线的控制卡,它提供了丰富的运动控制函数,可方便基于XY平台的数控系统、机器人系统、雕刻切割系统、座标测量系统的应用(具体在系统中主要用到了单轴运动、两轴联动、三轴联动、两轴直线插补,三轴直线插补等功能。对于XY两轴插补,只需设置X轴的速度曲线,三轴插补需要设置X轴的速度,Z轴的倍率及驱动速度应与X轴设置相同,同时Z轴的初始速度也应设为X轴的驱动速度)。 下面简单介绍系统中所用库函数的功能和使用方法。 a. 初始化卡常用函数 int adt8940_initial(void)—该函数用于检测运动控制卡和复位运动控制卡,这是调用其他函数的前提。函数返回值为ADT8940运动控制卡的数量,返回值<=0,表示初始化失败。 int set_range(int cardno, int axis, long value)—该函数用于设定倍率,倍率是决定速度,加减速度和加减速度变化率的参数。 int set_pulse_mode(int cardno,int axis,int value,int logic,int dir_logic)—该函数用于设置输出脉冲的工作方式,运动控制卡提供独立脉冲和双脉冲的工作方式。 int set_command_pos(int cardno,int axis,long value)—该函数用于设定逻辑计数器的值。 int set_actual_pos(int cardno,int axis,long value)—该函数用于设定实位计数器的值。 b. 运动控制常用函数 int set_startv(int cardno,int axis,long value)—设定起始速度。 int set_speed(int cardno,int axis,long value)—设定驱动速度。 int set_acc(int cardno,int axis,long value)—设定加速度。 int pmove(int cardno,int axis,long pulse)—单轴驱动函数,连续向不同轴发送此指令,即可实现多轴联动。 int inp_move2(int cardno,int no,long pulse1,long pluse2)—两轴插补函数,no的取值决定是前两轴还是后两轴插补。 int inp_move3(int cardno,long pulse1,long pluse2,long pulse3)—两轴插补函数。 c. 状态检查函数 int get_status(int cardno,int axis,int *value)—获取单轴驱动状态,该函数主要用于单轴运动和多轴联动的场合。 int get_inp_stauts(int cardno,int no,int *value)—获取插补驱动状态。 int get_inp_status2(int cardno,int no,int *value)—获取连续插补允许写状态,通过使用该函数可以在当前插补未结束的情况下,插入下一条插补指令,以便保证插补的连续性。 d. 参数检查函数 int get_command_pos(int cardno,int axis,long *value)—获取逻辑计数器的值。 Int get_actual_pos(int cardno,int axis,long *value)—获取 实位计数器(通常为编码器和光栅尺)的值。 int get_speed(int cardno,int axis,long *speed)—获取运动轴的速度 e. 开关量操作函数 int read_bit(int cardno,int number)—读单个输入点状态。 int write_bit(int cardno,int number,int value)—输出单点。 以上函数的详细说明,请参见ADT8940运动控制卡说明书。