diff --git a/Include/APS168.h b/Include/APS168.h index e3b65cf..7d72a05 100644 --- a/Include/APS168.h +++ b/Include/APS168.h @@ -30,7 +30,7 @@ extern "C" { I32 FNTYPE APS_initial( I32 *BoardID_InBits, I32 Mode ); #if defined (_MYLINUX) I32 FNTYPE APS_close(void); -I32 FNTYPE APS_version(void); +I32 FNTYPE APS_version(void); #else I32 FNTYPE APS_close(void); I32 FNTYPE APS_version(void); @@ -187,13 +187,7 @@ I32 FNTYPE APS_absolute_arc_move_3pe(I32 Dimension, I32 *Axis_ID_Array, I32 *Pas 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, 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 ); @@ -347,8 +341,8 @@ I32 FNTYPE APS_get_field_bus_od_number( I32 Board_ID, I32 BUS_No, I32 MOD_No, I3 I32 FNTYPE APS_get_field_bus_od_tx( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 SubMOD_No, I32 TxODIndex, PEC_Sub_MODULE_OD_INFO Sub_MODULE_OD_INFO ); I32 FNTYPE APS_get_field_bus_od_rx( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 SubMOD_No, I32 RxODIndex, PEC_Sub_MODULE_OD_INFO Sub_MODULE_OD_INFO ); -I32 FNTYPE APS_set_field_bus_ESC_register( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 RegOffset, I32 DataSize, I32 *DataValue); -I32 FNTYPE APS_get_field_bus_ESC_register( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 RegOffset, I32 DataSize, I32 *DataValue); +I32 FNTYPE APS_set_field_bus_ESC_register( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 RegOffset, I32 DataSize, U32 *DataValue); +I32 FNTYPE APS_get_field_bus_ESC_register( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 RegOffset, I32 DataSize, U32 *DataValue); I32 FNTYPE APS_get_field_bus_master_type( I32 Board_ID, I32 BUS_No, I32 *BUS_Type ); @@ -371,7 +365,9 @@ I32 FNTYPE APS_set_field_bus_slave_state( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 FNTYPE APS_get_field_bus_slave_state( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *State ); I32 FNTYPE APS_set_field_bus_slave_recovery ( I32 Board_ID, I32 BUS_No, I32 MOD_No ); - +//Field bus AIO slave functions [For HSL AIO16AO2] +I32 FNTYPE APS_set_field_bus_slave_config(I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 ParaNum, I32 ParaDat); +I32 FNTYPE APS_get_field_bus_slave_config(I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 ParaNum, I32* ParaDat); //Field bus DIO slave functions [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 ); @@ -558,7 +554,7 @@ I32 FNTYPE APS_set_absolute_simultaneous_move ( I32 Dimension, I32 *Axis_ID_Arr 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 ); @@ -621,6 +617,7 @@ 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_io_map( I32 Board_ID, I32 BUS_No, I32 PtbId, I32 MOD_No, I32 Ch_No, I32 Channel, U32 Option ); 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 ); @@ -760,17 +757,18 @@ I32 FNTYPE APS_absolute_linear_move_2d_compensation( I32 *Axis_ID_Array, F64 *Po I32 FNTYPE APS_get_2d_compensation_command_position( I32 Axis_ID, F64 *CommandX, F64 *CommandY, F64 *PositionX, F64 *PositionY );//Ray // PVT function; -I32 FNTYPE APS_pvt_add_point( I32 Axis_ID, I32 ArraySize, F64 *PositionArray, F64 *VelocityArray, F64 *TimeArray ); +I32 FNTYPE APS_pvt_add_point(I32 Axis_ID, I32 ArraySize, F64* PositionArray, F64* VelocityArray, F64* TimeArray, I32* DoChArray, I32* DoValueArray); I32 FNTYPE APS_pvt_get_status( I32 Axis_ID, I32 *FreeSize, I32 *PointCount, I32 *State ); I32 FNTYPE APS_pvt_start( I32 Dimension, I32 *Axis_ID_Array, I32 Enable ); I32 FNTYPE APS_pvt_reset( I32 Axis_ID ); +I32 FNTYPE APS_pvt_pause(I32 Dimension, I32* Axis_ID_Array, I32 Enable); // PT function; -I32 FNTYPE APS_pt_motion_add_point( I32 Axis_ID, I32 ArraySize, F64 *PositionArray, F64 *TimeArray ); +I32 FNTYPE APS_pt_motion_add_point(I32 Axis_ID, I32 ArraySize, F64* PositionArray, F64* TimeArray, I32* DoChArray, I32* DoValueArray); I32 FNTYPE APS_pt_motion_get_status( I32 Axis_ID, I32 *FreeSize, I32 *PointCount, I32 *State ); I32 FNTYPE APS_pt_motion_start( I32 Dimension, I32 *Axis_ID_Array, I32 Enable ); I32 FNTYPE APS_pt_motion_reset( I32 Axis_ID ); - +I32 FNTYPE APS_pt_motion_pause(I32 Dimension, I32* Axis_ID_Array, I32 Enable); //Get speed profile calculation @@ -801,11 +799,26 @@ I32 FNTYPE APS_set_drive_input_mapping(I32 Board_ID, I32 BUS_No, const char* pFi I32 FNTYPE APS_set_trigger_output_mapping(I32 Board_ID, I32 BUS_No, const char* pFilePath, I32 option); I32 FNTYPE APS_get_msg_size(I32 Board_ID, I32 ArraySize, I32* MsgQueueSizeArr); I32 FNTYPE APS_get_msg_data(I32 Board_ID, I32 MsgNo, I32 MsgNum, I32 MsgSize, I32* ActualMsgNum, char* MsgQueueArr); + +//General API for Field Bus Data Access +I32 FNTYPE APS_get_field_bus_info(U32 Board_ID, U32 IndexLen, U32* IndexArr, U32 InfoLen, U32* InfoArr); +I32 FNTYPE APS_set_field_bus_data(U32 Board_ID, U32 IndexLen, U32* IndexArr, U32 DataLen, U32* DataArr); +I32 FNTYPE APS_get_field_bus_data(U32 Board_ID, U32 IndexLen, U32* IndexArr, U32 DataLen, U32* DataArr); // for AMP-304C and 8364RS I32 FNTYPE APS_get_trigger_table_remain_count(I32 Board_ID, I32 TCmpCh, I32* Cnt); I32 FNTYPE APS_get_trigger_linear_remain_count(I32 Board_ID, I32 LCmpCh, I32* Cnt); I32 FNTYPE APS_load_config_from_file(I32 Board_ID, const char* FilePath, I32 Option); +I32 FNTYPE APS_set_axis_profidrive_table(U32 Axis_ID, U32 ParamNo, U32 DataLen, U32* DataArray); +I32 FNTYPE APS_get_axis_profidrive_table(U32 Axis_ID, U32 ParamNo, U32 DataLen, U32* DataArray); + +// for cycle time param +I32 FNTYPE APS_WriteBootParamToFlash( I32 Board_ID, U32 ParamNo, U32 ParamValue ); +I32 FNTYPE APS_ReadBootParamFromFlash( I32 Board_ID, U32 ParamNo, U32 *ParamValue ); + +// For 8364 PROFIdrive parameter R/W +I32 FNTYPE APS_read_profidrive_param(U32 Board_ID, U32 Device_No, U32 ParamNo, U32 DataType, U32 DataLen, U32* DataArray); +I32 FNTYPE APS_write_profidrive_param(U32 Board_ID, U32 Device_No, U32 ParamNo, U32 DataType, U32 DataLen, U32* DataArray); #ifdef __cplusplus } diff --git a/Include/APS_Define.h b/Include/APS_Define.h index f5c4ee4..f12e7e4 100644 --- a/Include/APS_Define.h +++ b/Include/APS_Define.h @@ -32,15 +32,19 @@ //for 8364RS #define PRB_PT0_MOD_NO ( 0x1C ) #define PRB_PT1_MOD_NO ( 0x1D ) -#define PRB_ECAT_SYNC_OFFSET ( 0x20 ) +#define PRB_SPEED_PROFILE_OPTION ( 0x1E ) // Speed profile option +#define PRB_SAMPLING_LOOP_SELECT ( 0x1F ) // Sampling loop selection +#define PRB_ECAT_SYNC_OFFSET ( 0x20 ) #define PRB_MANUAL_SLAVE_ID_SRC_1ST_GROUP ( 0x21 ) // The first group of setting manual slave ID source by bit format.(Salve 0 to Slave 31) #define PRB_MANUAL_SLAVE_ID_SRC_2ND_GROUP ( 0x22 ) // The second group of setting manual slave ID source by bit format.(Salve 32 to Slave 63) #define PRB_ECAT_CONTI_FRAME_LOSS_CNT ( 0x23 ) // The number of consecutive frame loss. #define PRB_SAMPLING_SRC_AXIS_TYPE ( 0x24 ) // Sampling source axis type. #define PRB_AUTO_CONNECT ( 0x25 ) // Used for PCIe-833x start fieldbus speed up #define PRB_ECAT_DCM_MODE ( 0x26 ) - +#define PRB_EXIT_KEEP_SERVO_ON ( 0x28 ) // Keep servo on state after closing APS library. +#define PRB_ABS_HOME_AUTO_SAVE ( 0x30 ) +#define PRS_RT_LIMIT_RATIO ( 0x31 ) // RT Drive & IO time limit ratio. unit is % #define PRB_WDT0_VALUE (0x10) // Set / Get watch dog limit. #define PRB_WDT0_COUNTER (0x11) // Reset Wdt / Get Wdt_Count_Value @@ -310,6 +314,9 @@ #define PRA_EGEAR (0x84) // E-Gear ratio #define PRA_ENCODER_DIR (0x85) // Encoder direction #define PRA_POS_UNIT_FACTOR (0x86) // position unit factor setting + +#define PRA_RING_LIMIT ( 0x8B )// Ring counter limitation value. +#define PRA_RING_ABS_MOVE_MODE ( 0x8C )// Absolute move mode in ring counter mode #define PRA_ABSENC_FIXOFFSET (0x8F) // Absolute encoder fix offset setting #define PRA_KP_GAIN (0x90) // PID controller Kp gain @@ -330,7 +337,8 @@ #define PRA_KVFF_SHIFT (0x9E) // Velocity feed-forward control result shift #define PRA_KAFF_SHIFT (0x9F) // Acceleration feed-forward control result shift #define PRA_PID_SHIFT (0xA0) // PID control result shift - +#define PRA_PRE_CONTROL (0xA1) // Pre-control +#define PRA_DELAY_TIME (0xA2) // Delay time for balancing filter //following only for V2... #define PRA_VOLTAGE_MAX (0x9B) // Maximum output limit @@ -411,6 +419,8 @@ #define PRA_PSR_ACC (0x168) // reserved #define PRA_PSR_JERK (0x169) // reserved +#define PRA_PVT_PAUSE_DO (0x16A) // (I32) Set DO value when PVT (or PT motion) pause + //Abs Home function #define PRA_SENSOR_TYPE (0x171) // (I32) sensor type; 0: unknown, 1: incremental, 2: single turn, 3: multi-turn #define PRA_PULSE_PER_TURN (0x172) @@ -419,6 +429,25 @@ #define PRA_ENC_2_DETERMINABLE_REVOLUTION (0x175) #define PRA_ABS_HOME_ENABLE (0x176) // Enable absolute home #define PRA_ABS_ENCODER_VALUE (0x177) // absolute encoder value (F64) +//EPOS +#define PRA_REF_SPEED (0x178) // reference speed (rpm) (F64) +#define PRA_GEAR_LU_PER_REV (0x179) // Mechanical gear: LU per revolution (F64) +#define PRA_GEAR_NUMERATOR (0x17A) // Mechanical gear: Numerator (F64) +#define PRA_GEAR_DENOMINATOR (0x17B) // Mechanical gear: Denominator (F64) +#define PRA_HOME_MAP_DI (0x17C) // Link axis ORG to EPOS homing procedure (I32) +#define PRA_ACC_UNIT (0x17D) // Select Acc/Dec unit is pulse/sec^2 or percentage for EPOS function (I32) +#define PRA_VIRTUAL_MULTI_TURN (0x17E) // (I32) virtual multi-turn for absolute home; 0:disable, 1:enable + +#define PRA_HOME_SLWA ( 0x180 ) // (I32) Slow alignment enable +#define PRA_HOME_ACC_2ND ( 0x181 ) // (F64) Second acceleration deceleration rate +#define PRA_HOME_VS_2ND ( 0x182 ) // (F64) Second homing start velocity +#define PRA_HOME_VM_2ND ( 0x183 ) // (F64) Second homing max velocity +#define PRA_HOME_VO_2ND ( 0x184 ) // (F64) Second homing leave sensor velocity + +#define PRA_HOME_GTY_CONFIG ( 0x185 ) // (I32) gantry home configuration +#define PRA_HOME_GTY_OFFSET ( 0x186 ) // (F64) gantry home offset +#define PRA_HOME_GTY_RANGE ( 0x187 ) // (F64) gantry home range + // Axis parameter define (For PCI-8154/58) // Input/Output Mode #define PRA_PLS_IPT_LOGIC (0x200) //Reverse pulse input counting @@ -512,6 +541,9 @@ #define PRA_TRQ_STP_TIME (0x301) // Time to reach zero torque command; Unit is 1ms. Default is 0 (Stop immediately). #define PRA_MODE_CHANGE_STABLE_CNT (0x302) // Stable count when operation mode changing to CSP. +//Mnet-4xmo axis parameter +#define PRA_ACC_DEC_OVERRIDE_EN (0x400) // ACC/DEC override + // PCI-8144 axis parameter define #define PRA_CMD_CNT_EN (0x10000) #define PRA_MIO_SEN (0x10001) @@ -694,6 +726,8 @@ #define DEVICE_NAME_EM_1C00 (50) #define DEVICE_NAME_EM_0A00 (51) #define DEVICE_NAME_EM_1A00 (52) +#define DEVICE_NAME_PCIe_M54 (53) +#define DEVICE_NAME_PCIe_M58 (54) /////////////////////////////////////////////// // HSL Slave module definition /////////////////////////////////////////////// @@ -740,40 +774,54 @@ //#define SLAVE_NAME_PN_DI_ST_16x24V (0x502) //#define SLAVE_NAME_PN_AO_ST_4xUI (0x503) //#define SLAVE_NAME_PN_AI_ST_4xUI (0x504) -#define SLAVE_NAME_PN_DO_MODULE (0x501) -#define SLAVE_NAME_PN_DI_MODULE (0x502) -#define SLAVE_NAME_PN_AO_MODULE (0x503) -#define SLAVE_NAME_PN_AI_MODULE (0x504) +#define SLAVE_NAME_PN_DO_MODULE (0x501) +#define SLAVE_NAME_PN_DI_MODULE (0x502) +#define SLAVE_NAME_PN_AO_MODULE (0x503) +#define SLAVE_NAME_PN_AI_MODULE (0x504) +#define SLAVE_NAME_PN_General_DO_MODULE (0x505) +#define SLAVE_NAME_PN_General_DI_MODULE (0x506) +#define SLAVE_NAME_PN_Drive_ST_DO_As_DO_MODULE (0x507) +#define SLAVE_NAME_PN_Drive_ST_DI_As_DI_MODULE (0x508) +#define SLAVE_NAME_PN_Drive_SST_DO_As_DO_MODULE (0x509) +#define SLAVE_NAME_PN_Drive_SST_DI_As_DI_MODULE (0x50A) /////////////////////////////////////////////// // PCIe-833x Slave module definition /////////////////////////////////////////////// -#define SLAVE_ADLINK_ECAT_EPS_1132 (0x1132) //DI32 -#define SLAVE_ADLINK_ECAT_EPS_2032 (0x2032) //DO32 -#define SLAVE_ADLINK_ECAT_EPS_2132 (0x2132) //DO32 -#define SLAVE_ADLINK_ECAT_EPS_3032 (0x3032) //AI32 -#define SLAVE_ADLINK_ECAT_EPS_3216 (0x3216) //AI16 -#define SLAVE_ADLINK_ECAT_EPS_3504 (0x3504) //AI04 -#define SLAVE_ADLINK_ECAT_EPS_4008 (0x4008) //AO8 -#define SLAVE_ADLINK_ECAT_EPS_2308 (0x2308) //DO8 -#define SLAVE_ADLINK_ECAT_EPS_7002 (0x7002) //MO2 -#define SLAVE_ADLINK_ECAT_EPS_1032 (0x1032) //DI32 -#define SLAVE_ADLINK_ECAT_ESM_A620F (0x516204A0) // AI08 -#define SLAVE_ADLINK_EU_1008 (0x6) //DI8, 8 Channels, PNP -#define SLAVE_ADLINK_EU_1108 (0x9) //DI8, 8 Channels, NPN -#define SLAVE_ADLINK_EU_1016 (0x10) // DI16, 16 Channels, PNP -#define SLAVE_ADLINK_EU_1116 (0xF) // DI16, 16 Channels, NPN -#define SLAVE_ADLINK_EU_2008 (0xB) //11 DO8, 8 Channels, PNP -#define SLAVE_ADLINK_EU_2108 (0xC) //12 DO8, 8 Channels, NPN -#define SLAVE_ADLINK_EU_2016 (0x11) // DO16, 16 Channels, PNP -#define SLAVE_ADLINK_EU_2116 (0x12) // DO16, 16 Channels, NPN -#define SLAVE_ADLINK_EU_3104 (0x31) //49 AI4, Voltage(0-10V), 4 Channels, 16 Bit -#define SLAVE_ADLINK_EU_3304 (0x29) //41 AI4, Current(4-20mA), 4 Channels, 16 Bit -#define SLAVE_ADLINK_EU_4104 (0x32) //50 AO4, Voltage(0-10V), 4 Channels, 16 Bit -#define SLAVE_ADLINK_EU_4304 (0x35) //53 AO4, Current(4-20mA), 4 Channels, 16 Bit - - +#define SLAVE_ADLINK_ECAT_EPS_1132 (0x1132) // DI32 +#define SLAVE_ADLINK_ECAT_EPS_2032 (0x2032) // DO32 +#define SLAVE_ADLINK_ECAT_EPS_2132 (0x2132) // DO32 +#define SLAVE_ADLINK_ECAT_EPS_3032 (0x3032) // AI32 +#define SLAVE_ADLINK_ECAT_EPS_3216 (0x3216) // AI16 +#define SLAVE_ADLINK_ECAT_EPS_3504 (0x3504) // AI04 +#define SLAVE_ADLINK_ECAT_EPS_4008 (0x4008) // AO8 +#define SLAVE_ADLINK_ECAT_EPS_2308 (0x2308) // DO8 +#define SLAVE_ADLINK_ECAT_EPS_7002 (0x7002) // MO2 +#define SLAVE_ADLINK_ECAT_EPS_1032 (0x1032) // DI32 +#define SLAVE_ADLINK_ECAT_ESM_A620F (0x516204A0) // AI08 +#define SLAVE_ADLINK_EU_1008 (0x6) // DI8, 8 Channels, PNP +#define SLAVE_ADLINK_EU_1108 (0x9) // DI8, 8 Channels, NPN +#define SLAVE_ADLINK_EU_1016 (0x10) // DI16, 16 Channels, PNP +#define SLAVE_ADLINK_EU_1116 (0xF) // DI16, 16 Channels, NPN +#define SLAVE_ADLINK_EU_2008 (0xB) // 11 DO8, 8 Channels, PNP +#define SLAVE_ADLINK_EU_2108 (0xC) // 12 DO8, 8 Channels, NPN +#define SLAVE_ADLINK_EU_2016 (0x11) // DO16, 16 Channels, PNP +#define SLAVE_ADLINK_EU_2116 (0x12) // DO16, 16 Channels, NPN +#define SLAVE_ADLINK_EU_3104 (0x31) // 49 AI4, Voltage(0-10V), 4 Channels, 16 Bit +#define SLAVE_ADLINK_EU_3304 (0x29) // 41 AI4, Current(4-20mA), 4 Channels, 16 Bit +#define SLAVE_ADLINK_EU_4104 (0x32) // 50 AO4, Voltage(0-10V), 4 Channels, 16 Bit +#define SLAVE_ADLINK_EU_4304 (0x35) // 53 AO4, Current(4-20mA), 4 Channels, 16 Bit +#define SLAVE_ADLINK_ES_1008 ( 0xE10F ) // Digital input, 8 channels, PNP and NPN +#define SLAVE_ADLINK_ES_1016 ( 0xE10E ) // Digital input, 16 channels, PNP and NPN +#define SLAVE_ADLINK_ES_2016 ( 0xE10A ) // Digital output, 16 channels, PNP +#define SLAVE_ADLINK_ES_2116 ( 0xE106 ) // Digital output, 16 channels, NPN +#define SLAVE_ADLINK_ES_2008 ( 0xE10B ) // Digital output, 8 channels, PNP +#define SLAVE_ADLINK_ES_2108 ( 0xE10E ) // Digital output, 8 channels, NPN +#define SLAVE_ADLINK_ES_3104 ( 0xE209 ) // AI4, Voltage(-10-10V), 4 Channels, 16 Bit +#define SLAVE_ADLINK_ES_3304 ( 0xE20A ) // AI4, Current(0-20mA), 4 Channels, 16 Bit +#define SLAVE_ADLINK_ES_4104 ( 0xE20B ) // AO4, Voltage(-10-10V), 4 Channels, 16 Bit +#define SLAVE_ADLINK_ES_4304 ( 0xE20C ) // AO4, Current(0-20mA), 4 Channels, 16 Bit /////////////////////////////////////////////// @@ -1003,19 +1051,19 @@ #define TGR_CMP_EXTENC2_SRC (0x52) // only ECAT-TRG4 #define TGR_CMP_EXTENC3_SRC (0x53) // only ECAT-TRG4 // 20210326 -#define TGR_TRG0_MAP (0X54) //for AMPC-304C, 8364RS -#define TGR_TRG1_MAP (0X55) //for AMPC-304C, 8364RS -#define TGR_TRG2_MAP (0X56) // only AMP-304C -#define TGR_TRG3_MAP (0X57) // only AMP-304C +#define TGR_TRG0_MAP (0X54) // For AMPC-304C, 8364RS, SuperCAT, PCIe-833x +#define TGR_TRG1_MAP (0X55) // For AMPC-304C, 8364RS, SuperCAT, PCIe-833x +#define TGR_TRG2_MAP (0X56) // For AMP-304C, SuperCAT, PCIe-833x +#define TGR_TRG3_MAP (0X57) // For AMP-304C, SuperCAT, PCIe-833x -// For SuperCAT software compare trigger using. +// For SuperCAT and PCIe-833x software compare trigger using. #define TGR_TRG0_SGN_MAP (0X58) #define TGR_TRG1_SGN_MAP (0X59) #define TGR_TRG2_SGN_MAP (0X5A) #define TGR_TRG3_SGN_MAP (0X5B) -#define TGR_TCMP0_SETTING_TYPE (0x80) // ECAT-4XMO(-MT)/TRG4(-MT)/SuperCAT -#define TGR_TCMP1_SETTING_TYPE (0x81) // ECAT-4XMO(-MT)/TRG4(-MT)/SuperCAT +#define TGR_TCMP0_SETTING_TYPE (0x80) // ECAT-4XMO(-MT)/TRG4(-MT)/SuperCAT, PCIe-833x +#define TGR_TCMP1_SETTING_TYPE (0x81) // ECAT-4XMO(-MT)/TRG4(-MT)/SuperCAT, PCIe-833x #define TGR_TCMP2_SETTING_TYPE (0x82) // ECAT-4XMO/TRG4 #define TGR_TCMP3_SETTING_TYPE (0x83) // ECAT-4XMO/TRG4 #define TGR_MTCMP0_SETTING_TYPE (0x88) // ECAT-4XMO-MT/TRG4-MT @@ -1373,6 +1421,15 @@ #define PRA_HOME_LATCH (0x900) // Select Home latch source [PCI-8353 only] +#define SLV_HSL_AI16AO2_AI_RANGE (0x0000) +#define SLV_HSL_AI16AO2_AI_LAST_CH (0x0001) +#define SLV_HSL_AI16AO2_ADC_EN (0x0002) +#define SLV_HSL_AI16AO2_INPUT_MODE (0x0003) +#define SLV_HSL_AI16AO2_VERSION (0x1001) + +// EtherCAT Master boot parameter [PCIe-833x][SuperCAT] +#define PRBOOT_ECAT_CYCLETIME_OPT (0x00) +#define PRBOOT_ECAT_CYCLETIME_NS (0x01) #endif diff --git a/Include/ErrorCodeDef.h b/Include/ErrorCodeDef.h index f791ca3..97b7217 100644 --- a/Include/ErrorCodeDef.h +++ b/Include/ErrorCodeDef.h @@ -16,12 +16,16 @@ #define ERR_InterruptNotEnable (-8) // Cards' interrupt events not enable or not be initialized #define ERR_TimeOut (-9) // Function time out #define ERR_HandshakeAckTimeout (-90001) // Handshake wait acknowledgement time out. +#define ERR_HandshakeMutexTimeout (-90002) // wait mutex return timeout #define ERR_ParametersInvalid (-10) // Function input parameters are invalid -#define ERR_SetEEPROM (-11) // Set data to EEPROM (or nonvolatile memory) failed -#define ERR_GetEEPROM (-12) // Get data from EEPROM (or nonvolatile memory) failed +#define ERR_InitialModeParamInvalid (-100001) // APS initial input mode invalid +#define ERR_LogFileSizeOverRange (-100002) // Out of log file settings range. +#define ERR_SetEEPROM (-11) // Set data to EEPROM or nonvolatile memory failed +#define ERR_GetEEPROM (-12) // Get data from EEPROM or nonvolatile memory failed #define ERR_FunctionNotAvailable (-13) // Function is not available in this step, The device is not support this function or Internal process failed #define ERR_HandshakeRespNotEqualCmd (-130001) // Handshake command response not equal. #define ERR_NotSupportReuseMode (-130002) // The setting type not support reuse mode. +#define ERR_NoCompatibleResource (-130003) // #define ERR_FirmwareError (-14) // Firmware error, please reboot the system #define ERR_CommandInProcess (-15) // Previous command is in process #define ERR_PushCompareDataNotFinish (-150001) // Last comparison data not push to FIFO completely. @@ -77,11 +81,12 @@ #define ERR_AllocateMemoryFailed (-64) // Allocate memory failed #define ERR_FileSizeIsWrong (-65) // File size is wrong #define ERR_DUPLICATE_DI_CHANNEL (-66) // The mapping DI channel duplicate condition occurrence in motion signal and gpio selection mapping - #define ERR_InitWithoutLicense (-67) // Initial without license #define ERR_NoCompatibleLicense (-68) // Without license #define ERR_KernelClose (-69) // Kernel/ Soft-core encountered an unexpected error then close #define ERR_AttachedProcessExceed (-70) // Attached process quantity is exceed +#define ERR_NotSupportRingCounter (-71) // Not support ring counter mode. + //for EMX-100 #define ERR_Emx_Offset (-899) #define ERR_Smp_App_Existed (-900) @@ -151,19 +156,15 @@ #define EC_SET_SAFEOP_STATE_ERR (-4043) #define EC_SET_OP_STATE_ERR (-4044) #define EC_DE_INIT_MASTER_ERR (-4051) -#define EC_ENI_FOPEN_ERR (-4061) #define EC_ENI_FREAD_ERR (-4062) -#define EC_GEN_EBI_BUSSCAN_ERR (-4063) -#define EC_GEN_EBI_FOPEN_ERR (-4064) -#define EC_GET_EBI_FOPEN_ERR (-4065) -#define EC_GET_EBI_FREAD_ERR (-4066) #define EC_WRITE_DO_OUT_ERR (-4071) #define EC_READ_DI_INP_ERR (-4072) #define EC_CONNECT_SLAVES_ERR (-4073) +#define EC_READ_DO_OUT_ERR (-4074) +#define EC_WRONG_CHANNEL_NO (-4075) #define EC_WRONG_PORT_NO (-4081) #define EC_GET_SLAVE_INFO_ERR (-4091) #define EC_COE_SDO_UPLOAD_ERR (-4101) - #define EC_COE_SDO_HOME_MODE_ERR (-4102) #define EC_COE_SDO_HOME_ACCDEC_ERR (-4103) #define EC_COE_SDO_HOME_VM_SWITCH_ERR (-4104) @@ -172,9 +173,6 @@ #define EC_CONTROL_WORD_HOME_ERR (-4107) #define EC_COE_SDO_STOP_ERR (-4108) #define EC_CONTROL_WORD_STOP_ERR (-4109) -#define EC_SET_OP_MODE_HOME_ERR (-4110) -//#define EC_SET_OP_MODE_STOP_ERR (-4111) -//#define EC_SET_OP_MODE_EMG_STOP_ERR (-4112) #define EC_COE_SDO_DOWNLOAD_REQ_ERR (-4113) #define EC_COE_SDO_DOWNLOAD_RES_ERR (-4114) #define EC_COE_SDO_UPLOAD_REQ_ERR (-4115) @@ -215,6 +213,8 @@ #define EC_FOE_DOWNLOAD_PWD_NOT_VALID (-4608) #define ERR_Win32Error (-1000) // No such INT number, or WIN32_API error, contact with ADLINK's FAE staff. +#define ERR_LinuxError (-1500) // No such INT number, or LINUX_API error, contact with ADLINK's FAE staff. +#define ERR_NotImplemntInLinux (-1501) // Not implement in Linux yet. Need to complete this function in advanced. // DSP Error ( -2001 ~ -3000 ) //Defined in manual #define ERR_DspStart (-2000) // The base for DSP error diff --git a/Include/type_def.h b/Include/type_def.h index 2286c18..7287ca0 100644 --- a/Include/type_def.h +++ b/Include/type_def.h @@ -1,8 +1,14 @@ #ifndef TYPE_DEF - #define TYPE_DEF +#define TYPE_DEF +#if defined (_MYWIN32) #include +#elif defined (_MYLINUX) || (_MYRTLINUX) +#include +#endif + + typedef char I8; typedef unsigned char U8; typedef short I16; @@ -13,6 +19,62 @@ typedef float F32; typedef double F64; typedef unsigned long long U64; +#if defined (_MYLINUX) || (_MYRTLINUX) +#include +typedef unsigned char UCHAR; +typedef unsigned long ULONG; + +typedef const char* LPTSTR; +typedef const char* LPCWSTR; +typedef const char* LPCTSTR; + +typedef char* LPSTR; +typedef char* LPWSTR; + +typedef short SHORT; +typedef unsigned short USHORT; +typedef volatile unsigned long VULONG; +typedef void VOID; +typedef int INT; +typedef unsigned int UINT; + +typedef __uint64_t UINT64; + +typedef unsigned char BYTE; +typedef unsigned int DWORD; +typedef int LONG; +typedef unsigned long long LONGLONG; + + +typedef void* HMODULE; +typedef void* HANDLE; + +#define WINAPI + +#ifndef LARGE_INTEGER +typedef union _LARGE_INTEGER { + struct { + DWORD LowPart; + LONG HighPart; + }; + struct { + DWORD LowPart; + LONG HighPart; + } u; + LONGLONG QuadPart; +} LARGE_INTEGER, *PLARGE_INTEGER; +#endif +#ifndef LPVOID +typedef void* LPVOID; +#endif + +#define TRUE true +#define FALSE false + +#define WAIT_OBJECT_0 0 +#define INFINITE 0xFFFFFFFF + +#endif typedef struct { @@ -670,4 +732,19 @@ typedef struct _AD_MEAS_DESC }AD_MEAS_DESC, *PAD_MEAS_DESC; typedef void (*callback_func)(void); +enum E_ECATCycletime +{ + E_ECAT_CYCLE_125us = 0, + E_ECAT_CYCLE_250us = 1, + E_ECAT_CYCLE_500us = 2, + E_ECAT_CYCLE_1000us = 3, + E_ECAT_CYCLE_2000us = 4, + E_ECAT_CYCLE_4000us = 5, + E_ECAT_CYCLE_100us = 6, + E_ECAT_CYCLE_62_5us = 7, + E_ECAT_CYCLE_50us = 8, + //---------------------------- + E_ECAT_CYCLE_NOTSUPPORT +}; + #endif diff --git a/dll/APS168x64.dll b/dll/APS168x64.dll index b4f6bd7..d09d558 100644 Binary files a/dll/APS168x64.dll and b/dll/APS168x64.dll differ