#ifndef _ADLINK_SYSTEMAPI_H #define _ADLINK_SYSTEMAPI_H //#define _MYLINUX //使用Liunx必須要開啟 #ifdef __cplusplus extern "C" { #endif #if defined (_MYWIN32) || defined (_MYRTEVLIB) #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(); I32 FNTYPE APS_version(); #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 ); //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 ); // 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 ); // 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 ); //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 STA_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 ); //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); 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); //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_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 ); //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_start_feeder_move( I32 GroupId ); 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 ); // I32 FNTYPE APS_set_feeder_point_1D( I32 GroupId, PNT_DATA_1D* PtArray, I32 Size, I32 LastFlag ); // I32 FNTYPE APS_set_feeder_point_3D( I32 GroupId, PNT_DATA_3D* PtArray, I32 Size, I32 LastFlag ); //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 ); //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_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 ); //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_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_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 ); // 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 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 ); //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_start_vao( I32 Board_ID, I32 TableNum, I32 Enable ); //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 ); #ifdef __cplusplus } #endif #endif