You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mitlib.pub/MITLIB/Include/APS168.h

608 lines
40 KiB
C

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

#ifndef _ADLINK_SYSTEMAPI_H
#define _ADLINK_SYSTEMAPI_H
//#define _MYLINUX //¨Ï¥ÎLiunx¥²¶·­n¶}±Ò
#ifdef __cplusplus
extern "C" {
#endif
#if defined (_MYWIN32) || defined (_MYRTEVLIB)
#include <windows.h>
#define FNTYPE PASCAL
#elif defined (_MYLINUX)
#ifndef FNTYPE
#define FNTYPE
#endif
#elif defined(_MYRTE)
#define FNTYPE _stdcall
#elif defined(_RTX)
#define FNTYPE _stdcall
#else
#ifndef FNTYPE
#define FNTYPE PASCAL
#endif
#endif
#include "type_def.h"
// System & Initialization
I32 FNTYPE APS_initial( I32 *BoardID_InBits, I32 Mode );
#if defined (_MYLINUX)
I32 FNTYPE APS_close(void);
I32 FNTYPE APS_version(void);
#else
I32 FNTYPE APS_close(void);
I32 FNTYPE APS_version(void);
#endif
I32 FNTYPE APS_device_driver_version( I32 Board_ID );
I32 FNTYPE APS_get_axis_info( I32 Axis_ID, I32 *Board_ID, I32 *Axis_No, I32 *Port_ID, I32 *Module_ID );
I32 FNTYPE APS_set_board_param( I32 Board_ID, I32 BOD_Param_No, I32 BOD_Param );
I32 FNTYPE APS_get_board_param( I32 Board_ID, I32 BOD_Param_No, I32 *BOD_Param );
I32 FNTYPE APS_set_axis_param( I32 Axis_ID, I32 AXS_Param_No, I32 AXS_Param );
I32 FNTYPE APS_get_axis_param( I32 Axis_ID, I32 AXS_Param_No, I32 *AXS_Param );
I32 FNTYPE APS_get_system_timer( I32 Board_ID, I32 *Timer );
I32 FNTYPE APS_get_device_info( I32 Board_ID, I32 Info_No, I32 *Info );
I32 FNTYPE APS_get_card_name( I32 Board_ID, I32 *CardName );
I32 FNTYPE APS_disable_device( I32 DeviceName );
I32 FNTYPE APS_get_first_axisId( I32 Board_ID, I32 *StartAxisID, I32 *TotalAxisNum );
I32 FNTYPE APS_set_security_key( I32 Board_ID, I32 OldPassword, I32 NewPassword );
I32 FNTYPE APS_check_security_key( I32 Board_ID, I32 Password );
I32 FNTYPE APS_reset_security_key( I32 Board_ID );
I32 FNTYPE APS_load_param_from_file( const char *pXMLFile );
//Virtual board settings [Only for PCI-8254/8]
I32 FNTYPE APS_register_virtual_board( I32 VirCardIndex, I32 Count );
I32 FNTYPE APS_get_virtual_board_info( I32 VirCardIndex, I32 *Count );
//Parameters setting by float [Only for PCI-8254/8]
I32 FNTYPE APS_set_axis_param_f( I32 Axis_ID, I32 AXS_Param_No, F64 AXS_Param );
I32 FNTYPE APS_get_axis_param_f( I32 Axis_ID, I32 AXS_Param_No, F64 *AXS_Param );
//Control driver mode [Only for PCI-8254/8]
I32 FNTYPE APS_get_curr_sys_ctrl_mode( I32 Axis_ID, I32 *Mode );
//Only support PCI-7856/MoionNet series
I32 FNTYPE APS_save_param_to_file( I32 Board_ID, const char *pXMLFile );
// Flash function [Only for PCI-8253/56, PCI-8392(H)]
I32 FNTYPE APS_save_parameter_to_flash( I32 Board_ID );
I32 FNTYPE APS_load_parameter_from_flash( I32 Board_ID );
I32 FNTYPE APS_load_parameter_from_default( I32 Board_ID );
// SSCNET-3 functions [Only for PCI-8392(H)]
I32 FNTYPE APS_start_sscnet( I32 Board_ID, I32 *AxisFound_InBits );
I32 FNTYPE APS_stop_sscnet( I32 Board_ID );
I32 FNTYPE APS_get_sscnet_servo_param( I32 Axis_ID, I32 Para_No1, I32 *Para_Dat1, I32 Para_No2, I32 *Para_Dat2 );
I32 FNTYPE APS_set_sscnet_servo_param( I32 Axis_ID, I32 Para_No1, I32 Para_Dat1, I32 Para_No2, I32 Para_Dat2 );
I32 FNTYPE APS_get_sscnet_servo_alarm( I32 Axis_ID, I32 *Alarm_No, I32 *Alarm_Detail );
I32 FNTYPE APS_reset_sscnet_servo_alarm( I32 Axis_ID );
I32 FNTYPE APS_save_sscnet_servo_param( I32 Board_ID );
I32 FNTYPE APS_get_sscnet_servo_abs_position( I32 Axis_ID, I32 *Cyc_Cnt, I32 *Res_Cnt );
I32 FNTYPE APS_save_sscnet_servo_abs_position( I32 Board_ID );
I32 FNTYPE APS_load_sscnet_servo_abs_position( I32 Axis_ID, I32 Abs_Option, I32 *Cyc_Cnt, I32 *Res_Cnt );
I32 FNTYPE APS_get_sscnet_link_status( I32 Board_ID, I32 *Link_Status );
I32 FNTYPE APS_set_sscnet_servo_monitor_src( I32 Axis_ID, I32 Mon_No, I32 Mon_Src );
I32 FNTYPE APS_get_sscnet_servo_monitor_src( I32 Axis_ID, I32 Mon_No, I32 *Mon_Src );
I32 FNTYPE APS_get_sscnet_servo_monitor_data( I32 Axis_ID, I32 Arr_Size, I32 *Data_Arr );
I32 FNTYPE APS_set_sscnet_control_mode( I32 Axis_ID, I32 Mode );
I32 FNTYPE APS_set_sscnet_abs_enable( I32 Board_ID, I32 Option);
I32 FNTYPE APS_set_sscnet_abs_enable_by_axis( I32 Axis_ID, I32 Option);
// Motion IO & motion status
I32 FNTYPE APS_get_command( I32 Axis_ID, I32 *Command );
I32 FNTYPE APS_set_command(I32 Axis_ID, I32 Command);
I32 FNTYPE APS_motion_status( I32 Axis_ID );
I32 FNTYPE APS_motion_io_status( I32 Axis_ID );
I32 FNTYPE APS_set_servo_on( I32 Axis_ID, I32 Servo_On );
I32 FNTYPE APS_get_position( I32 Axis_ID, I32 *Position );
I32 FNTYPE APS_set_position(I32 Axis_ID, I32 Position);
I32 FNTYPE APS_get_command_velocity(I32 Axis_ID, I32 *Velocity );
I32 FNTYPE APS_get_feedback_velocity(I32 Axis_ID, I32 *Velocity );
I32 FNTYPE APS_get_error_position( I32 Axis_ID, I32 *Err_Pos );
I32 FNTYPE APS_get_target_position( I32 Axis_ID, I32 *Targ_Pos );
// Monitor functions by float [Only for PCI-8254/8]
I32 FNTYPE APS_get_command_f( I32 Axis_ID, F64 *Command );
I32 FNTYPE APS_set_command_f( I32 Axis_ID, F64 Command );
I32 FNTYPE APS_get_position_f( I32 Axis_ID, F64 *Position );
I32 FNTYPE APS_set_position_f(I32 Axis_ID, F64 Position);
I32 FNTYPE APS_get_command_velocity_f(I32 Axis_ID, F64 *Velocity );
I32 FNTYPE APS_get_target_position_f( I32 Axis_ID, F64 *Targ_Pos );
I32 FNTYPE APS_get_error_position_f( I32 Axis_ID, F64 *Err_Pos );
I32 FNTYPE APS_get_feedback_velocity_f(I32 Axis_ID, F64 *Velocity );
//Motion queue status [Only for PCI-8254/8]
I32 FNTYPE APS_get_mq_free_space( I32 Axis_ID, I32 *Space );
I32 FNTYPE APS_get_mq_usage( I32 Axis_ID, I32 *Usage );
//Motion Stop Code [Only for PCI-8254/8]
I32 FNTYPE APS_get_stop_code( I32 Axis_ID, I32 *Code );
// Single axis motion
I32 FNTYPE APS_relative_move( I32 Axis_ID, I32 Distance, I32 Max_Speed );
I32 FNTYPE APS_absolute_move( I32 Axis_ID, I32 Position, I32 Max_Speed );
I32 FNTYPE APS_velocity_move( I32 Axis_ID, I32 Max_Speed );
I32 FNTYPE APS_home_move( I32 Axis_ID );
I32 FNTYPE APS_stop_move( I32 Axis_ID );
I32 FNTYPE APS_emg_stop( I32 Axis_ID );
I32 FNTYPE APS_relative_move2( I32 Axis_ID, I32 Distance, I32 Start_Speed, I32 Max_Speed, I32 End_Speed, I32 Acc_Rate, I32 Dec_Rate );
I32 FNTYPE APS_absolute_move2( I32 Axis_ID, I32 Position, I32 Start_Speed, I32 Max_Speed, I32 End_Speed, I32 Acc_Rate, I32 Dec_Rate );
I32 FNTYPE APS_home_move2( I32 Axis_ID, I32 Dir, I32 Acc, I32 Start_Speed, I32 Max_Speed, I32 ORG_Speed );
I32 FNTYPE APS_home_escape( I32 Axis_ID );
//JOG functions [Only for PCI-8392, PCI-8253/56]
I32 FNTYPE APS_set_jog_param( I32 Axis_ID, JOG_DATA *pStr_Jog, I32 Mask );
I32 FNTYPE APS_get_jog_param( I32 Axis_ID, JOG_DATA *pStr_Jog );
I32 FNTYPE APS_jog_mode_switch( I32 Axis_ID, I32 Turn_No );
I32 FNTYPE APS_jog_start( I32 Axis_ID, I32 On );
// Interpolation
I32 FNTYPE APS_absolute_linear_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Position_Array, I32 Max_Linear_Speed );
I32 FNTYPE APS_relative_linear_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Distance_Array, I32 Max_Linear_Speed );
I32 FNTYPE APS_absolute_arc_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_Pos_Array, I32 Max_Arc_Speed, I32 Angle );
I32 FNTYPE APS_relative_arc_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_Offset_Array, I32 Max_Arc_Speed, I32 Angle );
// Helical interpolation [Only for PCI-8392, PCI-8253/56]
I32 FNTYPE APS_absolute_helix_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_Pos_Array, I32 Max_Arc_Speed, I32 Pitch, I32 TotalHeight, I32 CwOrCcw );
I32 FNTYPE APS_relative_helix_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_PosOffset_Array, I32 Max_Arc_Speed, I32 Pitch, I32 TotalHeight, I32 CwOrCcw );
// Circular interpolation( Support 2D and 3D ) [Only for PCI-8392, PCI-8253/56]
I32 FNTYPE APS_absolute_arc_move_3pe(I32 Dimension, I32 *Axis_ID_Array, I32 *Pass_Pos_Array, I32 *End_Pos_Array, I32 Max_Arc_Speed );
I32 FNTYPE APS_relative_arc_move_3pe(I32 Dimension, I32 *Axis_ID_Array, I32 *Pass_PosOffset_Array, I32 *End_PosOffset_Array, I32 Max_Arc_Speed );
// Interrupt functions
#if defined (_MYLINUX)
//I32 FNTYPE APS_int_enable( I32 Board_ID, I32 Enable );
I32 FNTYPE APS_int_enable( I32 Board_ID, I32 Enable, void (*event_handler)(int));
I32 FNTYPE APS_get_int_status( I32 Board_ID, I32 Item_No, I32 Factor_No, I32 *Event_int_status );
#else
I32 FNTYPE APS_int_enable( I32 Board_ID, I32 Enable );
#endif
I32 FNTYPE APS_set_int_factor( I32 Board_ID, I32 Item_No, I32 Factor_No, I32 Enable );
I32 FNTYPE APS_get_int_factor( I32 Board_ID, I32 Item_No, I32 Factor_No, I32 *Enable );
I32 FNTYPE APS_set_field_bus_int_factor_di( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 bitsOfCheck );
I32 FNTYPE APS_get_field_bus_int_factor_di( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *bitsOfCheck );
//[Only for PCI-7856 motion interrupt]
I32 FNTYPE APS_set_field_bus_int_factor_motion( I32 Axis_ID, I32 Factor_No, I32 Enable );
I32 FNTYPE APS_get_field_bus_int_factor_motion( I32 Axis_ID, I32 Factor_No, I32 *Enable );
I32 FNTYPE APS_set_field_bus_int_factor_error( I32 Axis_ID, I32 Factor_No, I32 Enable );
I32 FNTYPE APS_get_field_bus_int_factor_error( I32 Axis_ID, I32 Factor_No, I32 *Enable );
I32 FNTYPE APS_reset_field_bus_int_motion( I32 Axis_ID );
I32 FNTYPE APS_wait_field_bus_error_int_motion( I32 Axis_ID, I32 Time_Out );
#if defined (_MYLINUX)
//HANDLE FNTYPE APS_set_int_factorH( I32 Board_ID, I32 Item_No, I32 Factor_No, I32 Enable );
#else
HANDLE FNTYPE APS_set_int_factorH( I32 Board_ID, I32 Item_No, I32 Factor_No, I32 Enable );
HANDLE FNTYPE APS_int_no_to_handle( I32 Int_No );
I32 FNTYPE APS_wait_single_int( I32 Int_No, I32 Time_Out );
I32 FNTYPE APS_wait_multiple_int( I32 Int_Count, I32 *Int_No_Array, I32 Wait_All, I32 Time_Out );
I32 FNTYPE APS_reset_int( I32 Int_No );
I32 FNTYPE APS_set_int( I32 Int_No );
//[Only for PCI-8154/58]
I32 FNTYPE APS_wait_error_int( I32 Board_ID, I32 Item_No, I32 Time_Out );
#endif
// Sampling functions [Only for PCI-8392, PCI-8253/56, PCI-82548]
I32 FNTYPE APS_set_sampling_param( I32 Board_ID, I32 ParaNum, I32 ParaDat );
I32 FNTYPE APS_get_sampling_param( I32 Board_ID, I32 ParaNum, I32 *ParaDat );
I32 FNTYPE APS_wait_trigger_sampling( I32 Board_ID, I32 Length, I32 PreTrgLen, I32 TimeOutMs, STR_SAMP_DATA_4CH *DataArr );
I32 FNTYPE APS_wait_trigger_sampling_async( I32 Board_ID, I32 Length, I32 PreTrgLen, I32 TimeOutMs, STR_SAMP_DATA_4CH *DataArr );
I32 FNTYPE APS_get_sampling_count( I32 Board_ID, I32 *SampCnt );
I32 FNTYPE APS_stop_wait_sampling( I32 Board_ID );
I32 FNTYPE APS_auto_sampling( I32 Board_ID, I32 StartStop );
I32 FNTYPE APS_get_sampling_data( I32 Board_ID, I32 *Length, STR_SAMP_DATA_4CH *DataArr, I32 *Status );
// Sampling functions extension[Only for PCI-82548 for up to 8 channel]
I32 FNTYPE APS_set_sampling_param_ex( I32 Board_ID, SAMP_PARAM *Param );
I32 FNTYPE APS_get_sampling_param_ex( I32 Board_ID, SAMP_PARAM *Param );
I32 FNTYPE APS_wait_trigger_sampling_ex( I32 Board_ID, I32 Length, I32 PreTrgLen, I32 TimeOutMs, STR_SAMP_DATA_8CH *DataArr );
I32 FNTYPE APS_wait_trigger_sampling_async_ex( I32 Board_ID, I32 Length, I32 PreTrgLen, I32 TimeOutMs, STR_SAMP_DATA_8CH *DataArr );
I32 FNTYPE APS_get_sampling_data_ex( I32 Board_ID, I32 *Length, STR_SAMP_DATA_8CH *DataArr, I32 *Status );
//DIO & AIO
I32 FNTYPE APS_write_d_output(I32 Board_ID, I32 DO_Group, I32 DO_Data);
I32 FNTYPE APS_read_d_output(I32 Board_ID, I32 DO_Group, I32 *DO_Data);
I32 FNTYPE APS_read_d_input(I32 Board_ID, I32 DI_Group, I32 *DI_Data);
//PCI-82548 Only for channel I/O
I32 FNTYPE APS_write_d_channel_output(I32 Board_ID, I32 DO_Group, I32 Ch_No, I32 DO_Data);
I32 FNTYPE APS_read_d_channel_output(I32 Board_ID, I32 DO_Group, I32 Ch_No, I32 *DO_Data);
I32 FNTYPE APS_read_d_channel_input(I32 Board_ID, I32 DI_Group, I32 Ch_No, I32 *DI_Data );
I32 FNTYPE APS_read_a_input_value(I32 Board_ID, I32 Channel_No, F64 *Convert_Data);
I32 FNTYPE APS_read_a_input_data(I32 Board_ID, I32 Channel_No, I32 *Raw_Data);
I32 FNTYPE APS_write_a_output_value(I32 Board_ID, I32 Channel_No, F64 Convert_Data);
I32 FNTYPE APS_write_a_output_data(I32 Board_ID, I32 Channel_No, I32 Raw_Data);
//New AIO [Only for PCI-82548]
I32 FNTYPE APS_read_a_output_value(I32 Board_ID, I32 Channel_No, F64 *Convert_Data);
//Point table move
I32 FNTYPE APS_set_point_table( I32 Axis_ID, I32 Index, POINT_DATA *Point );
I32 FNTYPE APS_get_point_table( I32 Axis_ID, I32 Index, POINT_DATA *Point );
I32 FNTYPE APS_get_running_point_index( I32 Axis_ID, I32 *Index );
I32 FNTYPE APS_get_start_point_index( I32 Axis_ID, I32 *Index );
I32 FNTYPE APS_get_end_point_index( I32 Axis_ID, I32 *Index );
I32 FNTYPE APS_set_table_move_pause( I32 Axis_ID, I32 Pause_en );
I32 FNTYPE APS_set_table_move_repeat( I32 Axis_ID, I32 Repeat_en );
I32 FNTYPE APS_get_table_move_repeat_count( I32 Axis_ID, I32 *RepeatCnt );
I32 FNTYPE APS_point_table_move( I32 Dimension, I32 *Axis_ID_Array, I32 StartIndex, I32 EndIndex );
I32 FNTYPE APS_set_point_tableEx( I32 Axis_ID, I32 Index, PNT_DATA *Point );
I32 FNTYPE APS_set_point_tableEx_2D( I32 Axis_ID, I32 Axis_ID_2, I32 Index, PNT_DATA_2D *Point );
//I32 FNTYPE APS_get_point_tableEx( I32 Axis_ID, I32 Index, PNT_DATA *Point );
I32 FNTYPE APS_set_point_table_4DL( I32 *Axis_ID_Array, I32 Index, PNT_DATA_4DL *Point );
//Point table + IO - Pause / Resume
I32 FNTYPE APS_set_table_move_ex_pause( I32 Axis_ID );
I32 FNTYPE APS_set_table_move_ex_rollback( I32 Axis_ID, I32 Max_Speed );
I32 FNTYPE APS_set_table_move_ex_resume( I32 Axis_ID );
//Only for PCI-8392 to replace APS_set_point_table & APS_get_point_table
I32 FNTYPE APS_set_point_table_ex( I32 Axis_ID, I32 Index, POINT_DATA_EX *Point );
I32 FNTYPE APS_get_point_table_ex( I32 Axis_ID, I32 Index, POINT_DATA_EX *Point );
//Point table Feeder (Only for PCI-825x)
I32 FNTYPE APS_set_feeder_group( I32 GroupId, I32 Dimension, I32 *Axis_ID_Array );
I32 FNTYPE APS_get_feeder_group( I32 GroupId, I32 *Dimension, I32 *Axis_ID_Array );
I32 FNTYPE APS_free_feeder_group( I32 GroupId );
I32 FNTYPE APS_reset_feeder_buffer( I32 GroupId );
I32 FNTYPE APS_set_feeder_point_2D( I32 GroupId, PNT_DATA_2D* PtArray, I32 Size, I32 LastFlag );
I32 FNTYPE APS_set_feeder_point_2D_ex( I32 GroupId, PNT_DATA_2D_F64* PtArray, I32 Size, I32 LastFlag );
I32 FNTYPE APS_start_feeder_move( I32 GroupId );
I32 FNTYPE APS_get_feeder_status( I32 GroupId, I32 *State, I32 *ErrCode );
I32 FNTYPE APS_get_feeder_running_index( I32 GroupId, I32 *Index );
I32 FNTYPE APS_get_feeder_feed_index( I32 GroupId, I32 *Index );
I32 FNTYPE APS_set_feeder_ex_pause( I32 GroupId );
I32 FNTYPE APS_set_feeder_ex_rollback( I32 GroupId, I32 Max_Speed );
I32 FNTYPE APS_set_feeder_ex_resume( I32 GroupId );
I32 FNTYPE APS_set_feeder_cfg_acc_type( I32 GroupId, I32 Type );
//Point table move2
I32 FNTYPE APS_set_point_table_mode2( I32 Axis_ID, I32 Mode );
I32 FNTYPE APS_set_point_table2( I32 Dimension, I32 *Axis_ID_Array, I32 Index, POINT_DATA2 *Point );
I32 FNTYPE APS_point_table_continuous_move2( I32 Dimension, I32 *Axis_ID_Array );
I32 FNTYPE APS_point_table_single_move2( I32 Axis_ID, I32 Index );
I32 FNTYPE APS_get_running_point_index2( I32 Axis_ID, I32 *Index );
I32 FNTYPE APS_point_table_status2( I32 Axis_ID, I32 *Status );
I32 FNTYPE APS_point_table_setting_continuous_move2( I32 Dimension, I32 *Axis_ID_Array, I32 TotalPoints, POINT_DATA2 *Point );
I32 FNTYPE APS_set_point_table2_maximum_speed_check( I32 Dimension, I32 *Axis_ID_Array, I32 Index, POINT_DATA2 *Point );
//Point table Only for HSL-4XMO
I32 FNTYPE APS_set_point_table3( I32 Dimension, I32 *Axis_ID_Array, I32 Index, POINT_DATA3 *Point );
I32 FNTYPE APS_point_table_move3( I32 Dimension, I32 *Axis_ID_Array, I32 StartIndex, I32 EndIndex );
I32 FNTYPE APS_set_point_table_param3( I32 FirstAxid, I32 ParaNum, I32 ParaDat );
// Gantry functions. [Only for PCI-8392, PCI-8253/56]
I32 FNTYPE APS_set_gantry_param( I32 Board_ID, I32 GroupNum, I32 ParaNum, I32 ParaDat );
I32 FNTYPE APS_get_gantry_param( I32 Board_ID, I32 GroupNum, I32 ParaNum, I32 *ParaDat );
I32 FNTYPE APS_set_gantry_axis( I32 Board_ID, I32 GroupNum, I32 Master_Axis_ID, I32 Slave_Axis_ID );
I32 FNTYPE APS_get_gantry_axis( I32 Board_ID, I32 GroupNum, I32 *Master_Axis_ID, I32 *Slave_Axis_ID );
I32 FNTYPE APS_get_gantry_error( I32 Board_ID, I32 GroupNum, I32 *GentryError );
// Digital filter functions. [Only for PCI-8253/56]
I32 FNTYPE APS_set_filter_param( I32 Axis_ID, I32 Filter_paramNo, I32 param_val );
I32 FNTYPE APS_get_filter_param( I32 Axis_ID, I32 Filter_paramNo, I32 *param_val );
//Field bus master fucntions For PCI-8392(H)
I32 FNTYPE APS_set_field_bus_param( I32 Board_ID, I32 BUS_No, I32 BUS_Param_No, I32 BUS_Param );
I32 FNTYPE APS_get_field_bus_param( I32 Board_ID, I32 BUS_No, I32 BUS_Param_No, I32 *BUS_Param );
I32 FNTYPE APS_start_field_bus( I32 Board_ID, I32 BUS_No, I32 Start_Axis_ID );
I32 FNTYPE APS_stop_field_bus( I32 Board_ID, I32 BUS_No );
I32 FNTYPE APS_get_field_bus_device_info( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Info_No, I32 *Info );
I32 FNTYPE APS_get_field_bus_last_scan_info( I32 Board_ID, I32 BUS_No, I32 *Info_Array, I32 Array_Size, I32 *Info_Count );
I32 FNTYPE APS_get_field_bus_master_type( I32 Board_ID, I32 BUS_No, I32 *BUS_Type );
I32 FNTYPE APS_get_field_bus_slave_type( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *MOD_Type );
I32 FNTYPE APS_get_field_bus_slave_name( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *MOD_Name );
I32 FNTYPE APS_get_field_bus_slave_serialID( I32 Board_ID, I32 BUS_No, I32 MOD_No, I16 *Serial_ID ); //Added by Jack Tseng: 2012.12.7
I32 FNTYPE APS_get_field_bus_slave_first_axisno( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *AxisNo, I32 *TotalAxes );
//Field bus slave general functions
I32 FNTYPE APS_set_field_bus_slave_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 ParaNum, I32 ParaDat );
I32 FNTYPE APS_get_field_bus_slave_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 ParaNum, I32 *ParaDat );
I32 FNTYPE APS_get_slave_connect_quality( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *Sts_data );
I32 FNTYPE APS_get_slave_online_status( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *Live );
//Field bus DIO slave fucntions For PCI-8392(H)
I32 FNTYPE APS_set_field_bus_d_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 DO_Value );
I32 FNTYPE APS_get_field_bus_d_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *DO_Value );
I32 FNTYPE APS_get_field_bus_d_input( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *DI_Value );
I32 FNTYPE APS_set_field_bus_d_channel_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 DO_Value );
I32 FNTYPE APS_get_field_bus_d_channel_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 *DO_Value );
I32 FNTYPE APS_get_field_bus_d_channel_input( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 *DI_Value );
//Modules be 64 bits gpio
I32 FNTYPE APS_set_field_bus_d_output_ex( I32 Board_ID, I32 BUS_No, I32 MOD_No, DO_DATA_EX DO_Value );
I32 FNTYPE APS_get_field_bus_d_output_ex( I32 Board_ID, I32 BUS_No, I32 MOD_No, DO_DATA_EX *DO_Value );
I32 FNTYPE APS_get_field_bus_d_input_ex( I32 Board_ID, I32 BUS_No, I32 MOD_No, DI_DATA_EX *DI_Value );
//Field bus AIO slave function
I32 FNTYPE APS_set_field_bus_a_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 AO_Value );
I32 FNTYPE APS_set_field_bus_a_output_plc( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 AO_Value, I16 RunStep );
I32 FNTYPE APS_get_field_bus_a_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AO_Value );
I32 FNTYPE APS_get_field_bus_a_input( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AI_Value );
I32 FNTYPE APS_get_field_bus_a_input_plc( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AI_Value, I16 RunStep );
//Field bus Comparing trigger functions
I32 FNTYPE APS_set_field_bus_trigger_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Param_No, I32 Param_Val );
I32 FNTYPE APS_get_field_bus_trigger_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Param_No, I32 *Param_Val );
I32 FNTYPE APS_set_field_bus_trigger_linear( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 LCmpCh, I32 StartPoint, I32 RepeatTimes, I32 Interval );
I32 FNTYPE APS_set_field_bus_trigger_table( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TCmpCh, I32 *DataArr, I32 ArraySize );
I32 FNTYPE APS_set_field_bus_trigger_manual( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TrgCh );
I32 FNTYPE APS_set_field_bus_trigger_manual_s( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TrgChInBit );
I32 FNTYPE APS_get_field_bus_trigger_table_cmp( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TCmpCh, I32 *CmpVal );
I32 FNTYPE APS_get_field_bus_trigger_linear_cmp( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 LCmpCh, I32 *CmpVal );
I32 FNTYPE APS_get_field_bus_trigger_count( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TrgCh, I32 *TrgCnt );
I32 FNTYPE APS_reset_field_bus_trigger_count( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TrgCh );
I32 FNTYPE APS_get_field_bus_linear_cmp_remain_count( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 LCmpCh, I32 *Cnt );
I32 FNTYPE APS_get_field_bus_table_cmp_remain_count( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TCmpCh, I32 *Cnt );
I32 FNTYPE APS_get_field_bus_encoder( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 EncCh, I32 *EncCnt );
I32 FNTYPE APS_set_field_bus_encoder( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 EncCh, I32 EncCnt );
// Comparing trigger functions
I32 FNTYPE APS_set_trigger_param( I32 Board_ID, I32 Param_No, I32 Param_Val );
I32 FNTYPE APS_get_trigger_param( I32 Board_ID, I32 Param_No, I32 *Param_Val );
I32 FNTYPE APS_set_trigger_linear( I32 Board_ID, I32 LCmpCh, I32 StartPoint, I32 RepeatTimes, I32 Interval );
I32 FNTYPE APS_set_trigger_table( I32 Board_ID, I32 TCmpCh, I32 *DataArr, I32 ArraySize );
I32 FNTYPE APS_set_trigger_manual( I32 Board_ID, I32 TrgCh );
I32 FNTYPE APS_set_trigger_manual_s( I32 Board_ID, I32 TrgChInBit );
I32 FNTYPE APS_get_trigger_table_cmp( I32 Board_ID, I32 TCmpCh, I32 *CmpVal );
I32 FNTYPE APS_get_trigger_linear_cmp( I32 Board_ID, I32 LCmpCh, I32 *CmpVal );
I32 FNTYPE APS_get_trigger_count( I32 Board_ID, I32 TrgCh, I32 *TrgCnt );
I32 FNTYPE APS_reset_trigger_count( I32 Board_ID, I32 TrgCh );
I32 FNTYPE APS_enable_trigger_fifo_cmp( I32 Board_ID, I32 FCmpCh, I32 Enable );
I32 FNTYPE APS_get_trigger_fifo_cmp( I32 Board_ID, I32 FCmpCh, I32 *CmpVal );
I32 FNTYPE APS_get_trigger_fifo_status( I32 Board_ID, I32 FCmpCh, I32 *FifoSts );
I32 FNTYPE APS_set_trigger_fifo_data( I32 Board_ID, I32 FCmpCh, I32 *DataArr, I32 ArraySize, I32 ShiftFlag );
I32 FNTYPE APS_set_trigger_encoder_counter( I32 Board_ID, I32 TrgCh, I32 TrgCnt );
I32 FNTYPE APS_get_trigger_encoder_counter( I32 Board_ID, I32 TrgCh, I32 *TrgCnt );
I32 FNTYPE APS_start_timer( I32 Board_ID, I32 TrgCh, I32 Start );
I32 FNTYPE APS_get_timer_counter( I32 Board_ID, I32 TmrCh, I32 *Cnt );
I32 FNTYPE APS_set_timer_counter( I32 Board_ID, I32 TmrCh, I32 Cnt );
I32 FNTYPE APS_start_trigger_timer( I32 Board_ID, I32 TrgCh, I32 Start );
I32 FNTYPE APS_get_trigger_timer_counter( I32 Board_ID, I32 TmrCh, I32 *TmrCnt );
I32 FNTYPE APS_set_trigger_point_2D( I32 Board_ID, I32 PointX, I32 PointY, I32 Tolerance, I32 Option );
//I32 FNTYPE APS_get_trigger_number_2D( I32 Board_ID, I32 *TrigNum, U16 *IsEmpty, U16 *IsFull,
//U32 *usage, U32 *free, I32 *xPos, I32 *yPos, I32 *tolerance, U32 *pwm, I32 *xEncoder, I32 *yEncoder );
I32 FNTYPE APS_get_trigger_number_2D( I32 Board_ID, I32 *TrigNum );
// Multi-dimension comparator function
I32 FNTYPE APS_set_multi_trigger_table( I32 Board_ID, I32 Dimension, MCMP_POINT *DataArr, I32 ArraySize, I32 Window );
I32 FNTYPE APS_get_multi_trigger_table_cmp( I32 Board_ID, I32 Dimension, MCMP_POINT *CmpVal );
// Pulser counter function
I32 FNTYPE APS_get_pulser_counter( I32 Board_ID, I32 *Counter );
I32 FNTYPE APS_set_pulser_counter( I32 Board_ID, I32 Counter );
// Reserved functions[Legacy functions]
I32 FNTYPE APS_field_bus_slave_set_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 ParaNum, I32 ParaDat );
I32 FNTYPE APS_field_bus_slave_get_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 ParaNum, I32 *ParaDat );
I32 FNTYPE APS_field_bus_d_set_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 DO_Value );
I32 FNTYPE APS_field_bus_d_get_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *DO_Value );
I32 FNTYPE APS_field_bus_d_get_input( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *DI_Value );
I32 FNTYPE APS_field_bus_A_set_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 AO_Value );
I32 FNTYPE APS_field_bus_A_set_output_plc( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 AO_Value, I16 RunStep );
I32 FNTYPE APS_field_bus_A_get_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AO_Value );
I32 FNTYPE APS_field_bus_A_get_input( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AI_Value );
I32 FNTYPE APS_field_bus_A_get_input_plc( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AI_Value, I16 RunStep );
I32 FNTYPE APS_get_eep_curr_drv_ctrl_mode( I32 Board_ID, I32 *ModeInBit );
//Dpac Function
I32 FNTYPE APS_rescan_CF( I32 Board_ID );
I32 FNTYPE APS_get_battery_status( I32 Board_ID, I32 *Battery_status);
//DPAC Display & Display Button
I32 FNTYPE APS_get_display_data( I32 Board_ID, I32 displayDigit, I32 *displayIndex);
I32 FNTYPE APS_set_display_data( I32 Board_ID, I32 displayDigit, I32 displayIndex);
I32 FNTYPE APS_get_button_status( I32 Board_ID, I32 *buttonstatus);
//nv RAM funciton
I32 FNTYPE APS_set_nv_ram( I32 Board_ID, I32 RamNo, I32 DataWidth, I32 Offset, I32 Data );
I32 FNTYPE APS_get_nv_ram( I32 Board_ID, I32 RamNo, I32 DataWidth, I32 Offset, I32 *Data );
I32 FNTYPE APS_clear_nv_ram( I32 Board_ID, I32 RamNo );
//VAO function(Laser function) [Only for PCI-8253/6]
I32 FNTYPE APS_set_vao_param( I32 Board_ID, I32 Param_No, I32 Param_Val );
I32 FNTYPE APS_get_vao_param( I32 Board_ID, I32 Param_No, I32 *Param_Val );
I32 FNTYPE APS_set_vao_table( I32 Board_ID, I32 Table_No, I32 MinVelocity, I32 VelInterval, I32 TotalPoints, I32 *MappingDataArray );
I32 FNTYPE APS_switch_vao_table( I32 Board_ID, I32 Table_No );
I32 FNTYPE APS_start_vao( I32 Board_ID, I32 Output_Ch, I32 Enable );
I32 FNTYPE APS_get_vao_status( I32 Board_ID, I32 *Status );
I32 FNTYPE APS_check_vao_param( I32 Board_ID, I32 Table_No, I32 *Status );
I32 FNTYPE APS_set_vao_param_ex( I32 Board_ID, I32 Table_No, VAO_DATA* VaoData );
I32 FNTYPE APS_get_vao_param_ex( I32 Board_ID, I32 Table_No, VAO_DATA* VaoData );
//PWM function
I32 FNTYPE APS_set_pwm_width( I32 Board_ID, I32 PWM_Ch, I32 Width );
I32 FNTYPE APS_get_pwm_width( I32 Board_ID, I32 PWM_Ch, I32 *Width );
I32 FNTYPE APS_set_pwm_frequency( I32 Board_ID, I32 PWM_Ch, I32 Frequency );
I32 FNTYPE APS_get_pwm_frequency( I32 Board_ID, I32 PWM_Ch, I32 *Frequency );
I32 FNTYPE APS_set_pwm_on( I32 Board_ID, I32 PWM_Ch, I32 PWM_On );
//Simultaneous move [Only for MNET series and 8392]
I32 FNTYPE APS_set_relative_simultaneous_move ( I32 Dimension, I32 *Axis_ID_Array, I32 *Distance_Array, I32 *Max_Speed_Array );
I32 FNTYPE APS_set_absolute_simultaneous_move ( I32 Dimension, I32 *Axis_ID_Array, I32 *Position_Array, I32 *Max_Speed_Array );
I32 FNTYPE APS_start_simultaneous_move ( I32 Axis_ID );
I32 FNTYPE APS_stop_simultaneous_move ( I32 Axis_ID );
I32 FNTYPE APS_set_velocity_simultaneous_move ( I32 Dimension, I32 *Axis_ID_Array, I32 *Max_Speed_Array );
I32 FNTYPE APS_Release_simultaneous_move ( I32 Axis_ID );
I32 FNTYPE APS_release_simultaneous_move ( I32 Axis_ID );
I32 FNTYPE APS_emg_stop_simultaneous_move ( I32 Axis_ID );
//Override functions [Only for MNET series]
I32 FNTYPE APS_speed_override( I32 Axis_ID, I32 MaxSpeed );
//Only for MNET-1XMO/MNET-4XMO
I32 FNTYPE APS_relative_move_ovrd( I32 Axis_ID, I32 Distance, I32 Max_Speed );
I32 FNTYPE APS_absolute_move_ovrd( I32 Axis_ID, I32 Position, I32 Max_Speed );
//New Interface
I32 FNTYPE APS_ptp( I32 Axis_ID, I32 Option, F64 Position, ASYNCALL *Wait);
I32 FNTYPE APS_ptp_v( I32 Axis_ID, I32 Option, F64 Position, F64 Vm, ASYNCALL *Wait);
I32 FNTYPE APS_ptp_all( I32 Axis_ID, I32 Option, F64 Position, F64 Vs, F64 Vm, F64 Ve, F64 Acc, F64 Dec, F64 SFac, ASYNCALL *Wait);
I32 FNTYPE APS_vel( I32 Axis_ID, I32 Option, F64 Vm, ASYNCALL *Wait);
I32 FNTYPE APS_vel_all( I32 Axis_ID, I32 Option, F64 Vs, F64 Vm, F64 Ve, F64 Acc, F64 Dec, F64 SFac, ASYNCALL *Wait);
I32 FNTYPE APS_line( I32 Dimension, I32 *Axis_ID_Array, I32 Option, F64 *PositionArray, F64 *TransPara, ASYNCALL *Wait);
I32 FNTYPE APS_line_v( I32 Dimension, I32 *Axis_ID_Array, I32 Option, F64 *PositionArray, F64 *TransPara, F64 Vm, ASYNCALL *Wait);
I32 FNTYPE APS_line_all( I32 Dimension, I32 *Axis_ID_Array, I32 Option, F64 *PositionArray, F64 *TransPara, F64 Vs, F64 Vm, F64 Ve, F64 Acc,F64 Dec, F64 SFac, ASYNCALL *Wait);
I32 FNTYPE APS_arc2_ca( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 Angle, F64 *TransPara, ASYNCALL *Wait );
I32 FNTYPE APS_arc2_ca_v( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 Angle, F64 *TransPara, F64 Vm, ASYNCALL *Wait );
I32 FNTYPE APS_arc2_ca_all( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 Angle, F64 *TransPara, F64 Vs, F64 Vm, F64 Ve, F64 Acc,F64 Dec, F64 SFac, ASYNCALL *Wait );
I32 FNTYPE APS_arc2_ce( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *EndArray, I16 Dir, F64 *TransPara, ASYNCALL *Wait );
I32 FNTYPE APS_arc2_ce_v( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *EndArray, I16 Dir, F64 *TransPara, F64 Vm, ASYNCALL *Wait );
I32 FNTYPE APS_arc2_ce_all( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *EndArray, I16 Dir, F64 *TransPara, F64 Vs, F64 Vm, F64 Ve, F64 Acc,F64 Dec, F64 SFac, ASYNCALL *Wait );
I32 FNTYPE APS_arc3_ca( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *NormalArray, F64 Angle, F64 *TransPara, ASYNCALL *Wait );
I32 FNTYPE APS_arc3_ca_v( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *NormalArray, F64 Angle, F64 *TransPara, F64 Vm, ASYNCALL *Wait );
I32 FNTYPE APS_arc3_ca_all( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *NormalArray, F64 Angle, F64 *TransPara, F64 Vs, F64 Vm, F64 Ve, F64 Acc,F64 Dec, F64 SFac, ASYNCALL *Wait );
I32 FNTYPE APS_arc3_ce( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *EndArray, I16 Dir, F64 *TransPara, ASYNCALL *Wait );
I32 FNTYPE APS_arc3_ce_v( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *EndArray, I16 Dir, F64 *TransPara, F64 Vm, ASYNCALL *Wait );
I32 FNTYPE APS_arc3_ce_all( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *EndArray, I16 Dir, F64 *TransPara, F64 Vs, F64 Vm, F64 Ve, F64 Acc,F64 Dec, F64 SFac, ASYNCALL *Wait );
I32 FNTYPE APS_spiral_ca( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *NormalArray, F64 Angle, F64 DeltaH, F64 FinalR, F64 *TransPara, ASYNCALL *Wait );
I32 FNTYPE APS_spiral_ca_v( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *NormalArray, F64 Angle, F64 DeltaH, F64 FinalR, F64 *TransPara, F64 Vm, ASYNCALL *Wait );
I32 FNTYPE APS_spiral_ca_all( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *NormalArray, F64 Angle, F64 DeltaH, F64 FinalR, F64 *TransPara, F64 Vs, F64 Vm, F64 Ve, F64 Acc,F64 Dec, F64 SFac, ASYNCALL *Wait );
I32 FNTYPE APS_spiral_ce( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *NormalArray, F64 *EndArray, I16 Dir, F64 *TransPara, ASYNCALL *Wait );
I32 FNTYPE APS_spiral_ce_v( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *NormalArray, F64 *EndArray, I16 Dir, F64 *TransPara, F64 Vm, ASYNCALL *Wait );
I32 FNTYPE APS_spiral_ce_all( I32 *Axis_ID_Array, I32 Option, F64 *CenterArray, F64 *NormalArray, F64 *EndArray, I16 Dir, F64 *TransPara, F64 Vs, F64 Vm, F64 Ve, F64 Acc,F64 Dec, F64 SFac, ASYNCALL *Wait );
//Point table Feeder (Only for PCI-8254/8)
I32 FNTYPE APS_pt_dwell( I32 Board_ID, I32 PtbId, PPTDWL Prof, PPTSTS Status );
I32 FNTYPE APS_pt_line( I32 Board_ID, I32 PtbId, PPTLINE Prof, PPTSTS Status );
I32 FNTYPE APS_pt_arc2_ca( I32 Board_ID, I32 PtbId, PPTA2CA Prof, PPTSTS Status );
I32 FNTYPE APS_pt_arc2_ce( I32 Board_ID, I32 PtbId, PPTA2CE Prof, PPTSTS Status );
I32 FNTYPE APS_pt_arc3_ca( I32 Board_ID, I32 PtbId, PPTA3CA Prof, PPTSTS Status );
I32 FNTYPE APS_pt_arc3_ce( I32 Board_ID, I32 PtbId, PPTA3CE Prof, PPTSTS Status );
I32 FNTYPE APS_pt_spiral_ca( I32 Board_ID, I32 PtbId, PPTHCA Prof, PPTSTS Status );
I32 FNTYPE APS_pt_spiral_ce( I32 Board_ID, I32 PtbId, PPTHCE Prof, PPTSTS Status );
//enable & disable
I32 FNTYPE APS_pt_enable( I32 Board_ID, I32 PtbId, I32 Dimension, I32 *AxisArr );
I32 FNTYPE APS_pt_disable( I32 Board_ID, I32 PtbId );
I32 FNTYPE APS_get_pt_info( I32 Board_ID, I32 PtbId, PPTINFO Info );
I32 FNTYPE APS_pt_set_vs( I32 Board_ID, I32 PtbId, F64 Vs );
I32 FNTYPE APS_pt_get_vs( I32 Board_ID, I32 PtbId, F64 *Vs );
I32 FNTYPE APS_pt_start( I32 Board_ID, I32 PtbId );
I32 FNTYPE APS_pt_stop( I32 Board_ID, I32 PtbId );
I32 FNTYPE APS_get_pt_status( I32 Board_ID, I32 PtbId, PPTSTS Status );
I32 FNTYPE APS_reset_pt_buffer( I32 Board_ID, I32 PtbId );
I32 FNTYPE APS_pt_roll_back( I32 Board_ID, I32 PtbId, F64 Max_Speed );
I32 FNTYPE APS_pt_get_error( I32 Board_ID, I32 PtbId, I32 *ErrCode );
//Cmd buffer setting
I32 FNTYPE APS_pt_ext_set_do_ch( I32 Board_ID, I32 PtbId, I32 Channel, I32 OnOff );
I32 FNTYPE APS_pt_ext_set_table_no( I32 Board_ID, I32 PtbId, I32 CtrlNo, I32 TableNo );
//Profile buffer setting
I32 FNTYPE APS_pt_set_absolute( I32 Board_ID, I32 PtbId );
I32 FNTYPE APS_pt_set_relative( I32 Board_ID, I32 PtbId );
I32 FNTYPE APS_pt_set_trans_buffered( I32 Board_ID, I32 PtbId );
I32 FNTYPE APS_pt_set_trans_inp( I32 Board_ID, I32 PtbId );
I32 FNTYPE APS_pt_set_trans_blend_dec( I32 Board_ID, I32 PtbId, F64 Bp );
I32 FNTYPE APS_pt_set_trans_blend_dist( I32 Board_ID, I32 PtbId, F64 Bp );
I32 FNTYPE APS_pt_set_trans_blend_pcnt( I32 Board_ID, I32 PtbId, F64 Bp );
I32 FNTYPE APS_pt_set_acc( I32 Board_ID, I32 PtbId, F64 Acc );
I32 FNTYPE APS_pt_set_dec( I32 Board_ID, I32 PtbId, F64 Dec );
I32 FNTYPE APS_pt_set_acc_dec( I32 Board_ID, I32 PtbId, F64 AccDec );
I32 FNTYPE APS_pt_set_s( I32 Board_ID, I32 PtbId, F64 Sf );
I32 FNTYPE APS_pt_set_vm( I32 Board_ID, I32 PtbId, F64 Vm );
I32 FNTYPE APS_pt_set_ve( I32 Board_ID, I32 PtbId, F64 Ve );
//Program download - APS
I32 FNTYPE APS_load_amc_program( I32 Board_ID, I32 TaskNum, const char *pFile, I32 Password);
I32 FNTYPE APS_save_amc_program( I32 Board_ID, I32 TaskNum, const char *pFile, I32 Password);
I32 FNTYPE APS_set_task_mode( I32 Board_ID, I32 TaskNum, U8 Mode, U16 LastIP );
I32 FNTYPE APS_get_task_mode( I32 Board_ID, I32 TaskNum, U8 *Mode, U16 *LastIP );
I32 FNTYPE APS_start_task( I32 Board_ID, I32 TaskNum, I32 CtrlCmd );
I32 FNTYPE APS_get_task_info( I32 Board_ID, I32 TaskNum, TSK_INFO *Info );
I32 FNTYPE APS_get_task_msg( I32 Board_ID, U16 *QueueSts, U16 *ActualSize, U8 *CharArr );
//Latch functins
I32 FNTYPE APS_get_encoder( I32 Axis_ID, I32 *Encoder );
I32 FNTYPE APS_get_latch_counter( I32 Axis_ID, I32 Src, I32 *Counter );
I32 FNTYPE APS_get_latch_event( I32 Axis_ID, I32 Src, I32 *Event );
//Raw command counter [Only for PCI-8254/8]
I32 FNTYPE APS_get_command_counter( I32 Axis_ID, I32 *Counter );
//Watch dog timer
I32 FNTYPE APS_wdt_start( I32 Board_ID, I32 TimerNo, I32 TimeOut );
I32 FNTYPE APS_wdt_get_timeout_period( I32 Board_ID, I32 TimerNo, I32 *TimeOut );
I32 FNTYPE APS_wdt_reset_counter( I32 Board_ID, I32 TimerNo );
I32 FNTYPE APS_wdt_get_counter( I32 Board_ID, I32 TimerNo, I32 *Counter );
I32 FNTYPE APS_wdt_set_action_event( I32 Board_ID, I32 TimerNo, I32 EventByBit );
I32 FNTYPE APS_wdt_get_action_event( I32 Board_ID, I32 TimerNo, I32 *EventByBit );
//Multi-axes simultaneuos move start/stop
I32 FNTYPE APS_move_trigger( I32 Dimension, I32 *Axis_ID_Array );
I32 FNTYPE APS_stop_move_multi( I32 Dimension, I32 *Axis_ID_Array );
I32 FNTYPE APS_emg_stop_multi( I32 Dimension, I32 *Axis_ID_Array );
//Gear/Gantry function
I32 FNTYPE APS_start_gear( I32 Axis_ID, I32 Mode );
I32 FNTYPE APS_get_gear_status( I32 Axis_ID, I32* Status );
//Latch Function: for latching multi-points
I32 FNTYPE APS_set_ltc_counter( I32 Board_ID, I32 CntNum, I32 CntValue );
I32 FNTYPE APS_get_ltc_counter( I32 Board_ID, I32 CntNum, I32 *CntValue );
I32 FNTYPE APS_set_ltc_fifo_param( I32 Board_ID, I32 FLtcCh, I32 Param_No, I32 Param_Val );
I32 FNTYPE APS_get_ltc_fifo_param( I32 Board_ID, I32 FLtcCh, I32 Param_No, I32 *Param_Val );
I32 FNTYPE APS_manual_latch( I32 Board_ID, I32 LatchSignalInBits );
I32 FNTYPE APS_enable_ltc_fifo( I32 Board_ID, I32 FLtcCh, I32 Enable );
I32 FNTYPE APS_reset_ltc_fifo( I32 Board_ID, I32 FLtcCh );
I32 FNTYPE APS_get_ltc_fifo_data( I32 Board_ID, I32 FLtcCh, I32 *Data );
I32 FNTYPE APS_get_ltc_fifo_usage( I32 Board_ID, I32 FLtcCh, I32 *Usage );
I32 FNTYPE APS_get_ltc_fifo_free_space( I32 Board_ID, I32 FLtcCh, I32 *FreeSpace );
I32 FNTYPE APS_get_ltc_fifo_status( I32 Board_ID, I32 FLtcCh, I32 *Status );
//For Single latch for PCI8154/58/MNET-4XMO-(C)
I32 FNTYPE APS_manual_latch2( I32 Axis_ID );
I32 FNTYPE APS_get_latch_data2( I32 Axis_ID, I32 LatchNum, I32 *LatchData );
I32 FNTYPE APS_set_backlash_en(I32 Axis_ID, I32 Enable );
I32 FNTYPE APS_get_backlash_en( I32 Axis_ID, I32 *Enable );
//Mechatrolink functions
I32 FNTYPE APS_start_mlink( I32 Board_ID, I32 *AxisFound_InBits );
I32 FNTYPE APS_stop_mlink( I32 Board_ID );
I32 FNTYPE APS_set_mlink_servo_param( I32 Axis_ID, I32 Para_No, I32 Para_Dat);
I32 FNTYPE APS_get_mlink_servo_param( I32 Axis_ID, I32 Para_No, I32 *Para_Dat);
I32 FNTYPE APS_config_mlink( I32 Board_ID, I32 TotalAxes, I32* AxesArray);
I32 FNTYPE APS_get_mlink_rv_ptr(I32 Axis_ID, U32 **rptr);
I32 FNTYPE APS_get_mlink_sd_ptr(I32 Axis_ID, U32 **sptr);
I32 FNTYPE APS_get_mlink_servo_alarm( I32 Axis_ID, I32 Alarm_No, I32 *Alarm_Detail );
I32 FNTYPE APS_reset_mlink_servo_alarm( I32 Axis_ID );
I32 FNTYPE APS_set_mlink_pulse_per_rev( I32 Axis_ID, I32 PPR );
//Apply smooth servo off
I32 FNTYPE APS_smooth_servo_off(I32 Axis_ID, F64 Decay_Rate );
I32 FNTYPE APS_set_smooth_servo_off(I32 Board_ID, I32 Axis_ID, I32 cnt_Max, I32 *cnt_Err );
//Middle ware
I32 FNTYPE APS_relative_move_wait( I32 Axis_ID, I32 Distance, I32 Max_Speed, I32 Time_Out, I32 Delay_Time, I32 *MotionSts );
I32 FNTYPE APS_absolute_move_wait( I32 Axis_ID, I32 Position, I32 Max_Speed, I32 Time_Out, I32 Delay_Time, I32 *MotionSts );
I32 FNTYPE APS_relative_linear_move_wait( I32 Dimension, I32 *Axis_ID_Array, I32 *Distance_Array, I32 Max_Linear_Speed, I32 Time_Out, I32 Delay_Time, I32 *MotionSts );
I32 FNTYPE APS_absolute_linear_move_wait( I32 Dimension, I32 *Axis_ID_Array, I32 *Position_Array, I32 Max_Linear_Speed, I32 Time_Out, I32 Delay_Time, I32 *MotionSts );
I32 FNTYPE APS_relative_move_non_wait( I32 Axis_ID, I32 Distance, I32 Max_Speed, I32 Time_Out, I32 Delay_Time );
I32 FNTYPE APS_absolute_move_non_wait( I32 Axis_ID, I32 Position, I32 Max_Speed, I32 Time_Out, I32 Delay_Time );
I32 FNTYPE APS_relative_linear_move_non_wait( I32 Dimension, I32 *Axis_ID_Array, I32 *Distance_Array, I32 Max_Linear_Speed, I32 Time_Out, I32 Delay_Time );
I32 FNTYPE APS_absolute_linear_move_non_wait( I32 Dimension, I32 *Axis_ID_Array, I32 *Position_Array, I32 Max_Linear_Speed, I32 Time_Out, I32 Delay_Time );
I32 FNTYPE APS_wait_move_done( I32 Axis_ID, I32 *MotionSts );
I32 FNTYPE APS_motion_status_ex( I32 Axis_ID );
I32 FNTYPE APS_motion_io_status_ex( I32 Axis_ID );
//Only for PCI-8158
I32 FNTYPE APS_set_ring_counter( I32 Axis_ID, I32 RingVal );
I32 FNTYPE APS_get_ring_counter( I32 Axis_ID, I32 *RingVal );
// For circular limit
I32 FNTYPE APS_set_circular_limit( I32 Axis_A, I32 Axis_B, F64 Center_A, F64 Center_B, F64 Radius, I32 Stop_Mode, I32 Enable );
I32 FNTYPE APS_get_circular_limit( I32 Axis_A, I32 Axis_B, F64 *Center_A, F64 *Center_B, F64 *Radius, I32 *Stop_Mode, I32 *Enable );
// For Pulser
I32 FNTYPE APS_manual_pulser_start( I32 Board_ID, I32 Enable );
I32 FNTYPE APS_manual_pulser_configuration( I32 Board_ID, I32 Mode, I32 InvPA, I32 InvPB, I32 InvDir, F64 Ratio );
I32 FNTYPE APS_manual_pulser_velocity_move( I32 Axis_ID, F64 MaxVelocity );
I32 FNTYPE APS_manual_pulser_relative_move( I32 Axis_ID, F64 Distance, F64 MaxVelocity );
#ifdef __cplusplus
}
#endif
#endif