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.

276 lines
23 KiB
C

2 years ago
/****************************************************************************/
/* Copyright (c) 1995-2004, ADLink Technology Inc. All rights reserved. */
/* */
/* File Name : HSL_Motion.H */
/* Purpose : Header file for HSL_Motion.C module */
/* Date : 09/07/2004 */
/* Revision : 0.91 */
/* Programmer : Gilbert Yen */
/****************************************************************************/
#ifndef HSL_MOTION_H
#define HSL_MOTION_H
#ifdef __cplusplus
extern "C" {
#endif
#include "type_def.h"
//#define HSL_LINUX
//#define HSL_RTX
#if defined ( HSL_WINDOWS )
#define FNTYPE PASCAL
#elif defined ( HSL_LINUX )
#ifndef FNTYPE
#define FNTYPE
#endif
#elif defined( HSL_RTX )
#define FNTYPE _stdcall
#else
#ifndef FNTYPE
#define FNTYPE PASCAL
#endif
#endif
/****************************************************************************/
/* Function Declerations */
/****************************************************************************/
I16 FNTYPE HSL_M_get_version(I16 card_ID, I16 connect_index, I16 M_No, U8 *CPLD_Ver, U32 *Kernel_Ver, U32 *Software_Ver);
// Pulse I/O Configuration
I16 FNTYPE HSL_M_set_pls_outmode(I16 card_ID, I16 connect_index, I16 AxisNo, I16 pls_outmode);
I16 FNTYPE HSL_M_set_pls_iptmode(I16 card_ID, I16 connect_index, I16 AxisNo, I16 pls_iptmode, I16 pls_logic);
I16 FNTYPE HSL_M_set_feedback_src(I16 card_ID, I16 connect_index, I16 AxisNo, I16 Src);
// Velocity Mode motion
I16 FNTYPE HSL_M_tv_move(I16 card_ID, I16 connect_index, I16 AxisNo, F64 StrVel, F64 MaxVel, F64 Tacc);
I16 FNTYPE HSL_M_sv_move(I16 card_ID, I16 connect_index, I16 AxisNo, F64 StrVel, F64 MaxVel, F64 Tacc, F64 SVacc);
I16 FNTYPE HSL_M_v_change(I16 card_ID, I16 connect_index, I16 AxisNo, F64 NewVel, F64 Tacc);
I16 FNTYPE HSL_M_sd_stop(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Tdec);
I16 FNTYPE HSL_M_emg_stop(I16 card_ID, I16 connect_index, I16 AxisNo);
I16 FNTYPE HSL_M_fix_speed_range(I16 card_ID, I16 connect_index, I16 AxisNo, F64 MaxVel);
I16 FNTYPE HSL_M_unfix_speed_range(I16 card_ID, I16 connect_index, I16 AxisNo);
I16 FNTYPE HSL_M_get_current_speed(I16 card_ID, I16 connect_index, I16 AxisNo, F64 *speed);
I16 FNTYPE HSL_M_verify_speed(I16 card_ID, I16 connect_index, I16 M_No, F64 StrVel, F64 MaxVel, F64 *minAccTime, F64 *maxAccT, F64 MaxSpeed);
// Single Axis Motion
I16 FNTYPE HSL_M_start_tr_move(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Dist, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_ta_move(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Pos, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_sr_move(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Dist, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_sa_move(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Pos, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_set_move_ratio(I16 card_ID, I16 connect_index, I16 AxisNo, F64 move_ratio);
I16 FNTYPE HSL_M_get_move_ratio(I16 card_ID, I16 connect_index, I16 AxisNo, F64 *move_ratio);
I16 FNTYPE HSL_M_p_change(I16 card_ID, I16 connect_index, I16 AxisNo, F64 NewPos);
I16 FNTYPE HSL_M_backlash_comp(I16 card_ID, I16 connect_index, I16 AxisNo, I16 BCompPulse, I16 Mode);
I16 FNTYPE HSL_M_suppress_vibration(I16 card_ID, I16 connect_index, I16 AxisNo, U16 T1, U16 T2);
I16 FNTYPE HSL_M_set_idle_pulse(I16 card_ID, I16 connect_index, I16 AxisNo, I16 idl_pulse);
I16 FNTYPE HSL_M_set_fa_speed(I16 card_ID, I16 connect_index, I16 AxisNo, F64 FA_Speed);
// Point Table
I16 FNTYPE HSL_M_set_point_data(I16 card_ID, I16 connect_index, I16 Dimension, I16 *AxisArray, I16 point_index, I16 cmd_func, F64 *DistArray, F64 MaxVel);
I16 FNTYPE HSL_M_set_arc_data(I16 card_ID, I16 connect_index, I16 *AxisArray, I16 point_index, I16 cmd_func, F64 *CenterArray, F64 *EndArray, I16 DIR, F64 MaxVel);
I16 FNTYPE HSL_M_move_point_range(I16 card_ID, I16 connect_index, I16 Dimension, I16 *AxisArray, I16 start_index, I16 last_index);
I16 FNTYPE HSL_M_move_point_table(I16 card_ID, I16 connect_index, I16 Dimension, I16 *AxisArray, I16 *PointArray, I16 total_points);
I16 FNTYPE HSL_M_set_point_data_DO(I16 card_ID, I16 connect_index, I16 Dimension, I16 *AxisArray, I16 point_index, I16 cmd_func, F64 *DistArray, F64 MaxVel,
I16 DO_Control); //Added by Jack Tseng: 2012.3.27
I16 FNTYPE HSL_M_set_arc_data_DO(I16 card_ID, I16 connect_index, I16 *AxisArray, I16 point_index, I16 cmd_func, F64 *CenterArray, F64 *EndArray, I16 DIR, F64 MaxVel,
I16 DO_Control); //Added by Jack Tseng: 2012.3.27
I16 FNTYPE HSL_M_set_point_as_dwell( I16 card_ID, I16 connect_index, I16 Dimension, I16 *AxisArray, I16 point_index, I16 cmd_func,
F64 miniSecond); //Added by Jack Tseng: 2012.5.9
I16 FNTYPE HSL_M_set_point_as_dwell_DO( I16 card_ID, I16 connect_index, I16 Dimension, I16 *AxisArray, I16 point_index, I16 cmd_func,
F64 miniSecond, //Added by Jack Tseng: 2012.5.9
I16 DO_Control); //Added by Jack Tseng: 2012.5.28
// Linear Interpolated Motion
I16 FNTYPE HSL_M_start_tr_move_xy(I16 card_ID, I16 connect_index, I16 M_No, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_ta_move_xy(I16 card_ID, I16 connect_index, I16 M_No, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_sr_move_xy(I16 card_ID, I16 connect_index, I16 M_No, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_sa_move_xy(I16 card_ID, I16 connect_index, I16 M_No, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_tr_move_zu(I16 card_ID, I16 connect_index, I16 M_No, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_ta_move_zu(I16 card_ID, I16 connect_index, I16 M_No, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_sr_move_zu(I16 card_ID, I16 connect_index, I16 M_No, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_sa_move_zu(I16 card_ID, I16 connect_index, I16 M_No, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_tr_line2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_ta_line2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_sr_line2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 DistX, F64 DistY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_sa_line2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 PosX, F64 PosY, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_tr_line3(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 DistX, F64 DistY, F64 DistZ, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_ta_line3(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 PosX, F64 PosY, F64 PosZ, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_sr_line3(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 DistX, F64 DistY, F64 DistZ, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_sa_line3(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 PosX, F64 PosY, F64 PosZ, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_tr_line4(I16 card_ID, I16 connect_index, I16 M_No, F64 DistX, F64 DistY, F64 DistZ, F64 DistU, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_ta_line4(I16 card_ID, I16 connect_index, I16 M_No, F64 PosX, F64 PosY, F64 PosZ, F64 PosU, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_sr_line4(I16 card_ID, I16 connect_index, I16 M_No, F64 DistX, F64 DistY, F64 DistZ, F64 DistU, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_sa_line4(I16 card_ID, I16 connect_index, I16 M_No, F64 PosX, F64 PosY, F64 PosZ, F64 PosU, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
// Circular Interpolation Motion
I16 FNTYPE HSL_M_start_r_arc_xy(I16 card_ID, I16 connect_index, I16 M_No, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR, F64 MaxVel);
I16 FNTYPE HSL_M_start_a_arc_xy(I16 card_ID, I16 connect_index, I16 M_No, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR, F64 MaxVel);
I16 FNTYPE HSL_M_start_r_arc_zu(I16 card_ID, I16 connect_index, I16 M_No, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR, F64 MaxVel);
I16 FNTYPE HSL_M_start_a_arc_zu(I16 card_ID, I16 connect_index, I16 M_No, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR, F64 MaxVel);
I16 FNTYPE HSL_M_start_r_arc2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR, F64 MaxVel);
I16 FNTYPE HSL_M_start_a_arc2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR, F64 MaxVel);
I16 FNTYPE HSL_M_start_tr_arc_xy(I16 card_ID, I16 connect_index, I16 M_No, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_ta_arc_xy(I16 card_ID, I16 connect_index, I16 M_No, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_sr_arc_xy(I16 card_ID, I16 connect_index, I16 M_No, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_sa_arc_xy(I16 card_ID, I16 connect_index, I16 M_No, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_tr_arc_zu(I16 card_ID, I16 connect_index, I16 M_No, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_ta_arc_zu(I16 card_ID, I16 connect_index, I16 M_No, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_sr_arc_zu(I16 card_ID, I16 connect_index, I16 M_No, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_sa_arc_zu(I16 card_ID, I16 connect_index, I16 M_No, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_tr_arc2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_ta_arc2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec);
I16 FNTYPE HSL_M_start_sr_arc2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
I16 FNTYPE HSL_M_start_sa_arc2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec);
// Home Return Mode
I16 FNTYPE HSL_M_set_home_config(I16 card_ID, I16 connect_index, I16 AxisNo, I16 home_mode, I16 org_logic, I16 ez_logic, I16 ez_count, I16 erc_out);
I16 FNTYPE HSL_M_set_org_offset(I16 card_ID, I16 connect_index, I16 AxisNo, F64 ORG_ESC_Offset);
I16 FNTYPE HSL_M_home_move(I16 card_ID, I16 connect_index, I16 AxisNo, F64 StrVel, F64 MaxVel, F64 Tacc);
I16 FNTYPE HSL_M_escape_home(I16 card_ID, I16 connect_index, I16 AxisNo, F64 StrVel, F64 MaxVel, F64 Tacc);
I16 FNTYPE HSL_M_home_search(I16 card_ID, I16 connect_index, I16 AxisNo, F64 StrVel, F64 MaxVel, F64 Tacc, F64 ORGOffset);
I16 FNTYPE HSL_M_set_home_move_all(I16 card_ID, I16 connect_index, I16 TotalAxes, I16 *AxisArray, F64 *StrVelA, F64 *MaxVelA, F64 *TaccA, I16 mode);
I16 FNTYPE HSL_M_start_home_move_all(I16 card_ID, I16 connect_index, I16 FirstAxisNo);
I16 FNTYPE HSL_M_set_home_search_all(I16 card_ID, I16 connect_index, I16 TotalAxes, I16 *AxisArray, F64 *StrVelA, F64 *MaxVelA, F64 *TaccA, F64 *ORGOffset, I16 mode);
I16 FNTYPE HSL_M_start_home_search_all(I16 card_ID, I16 connect_index, I16 FirstAxisNo);
// Motion Status
I16 FNTYPE HSL_M_motion_done(I16 card_ID, I16 connect_index, I16 AxisNo);
I16 FNTYPE HSL_M_get_abnormal_stop_status(I16 card_ID, I16 connect_index, I16 AxisNo, I32 *status);
// Motion Interface I/O
I16 FNTYPE HSL_M_set_alm(I16 card_ID, I16 connect_index, I16 AxisNo, I16 alm_logic, I16 alm_mode);
I16 FNTYPE HSL_M_set_el(I16 card_ID, I16 connect_index, I16 AxisNo, I16 el_mode);
I16 FNTYPE HSL_M_set_el_logic(I16 card_ID, I16 connect_index, I16 AxisNo, I16 el_logic);
I16 FNTYPE HSL_M_set_inp(I16 card_ID, I16 connect_index, I16 AxisNo, I16 inp_enable, I16 inp_logic);
I16 FNTYPE HSL_M_set_erc(I16 card_ID, I16 connect_index, I16 AxisNo, I16 erc_logic, I16 erc_on_time);
I16 FNTYPE HSL_M_set_servo(I16 card_ID, I16 connect_index, I16 AxisNo, I16 on_off);
I16 FNTYPE HSL_M_set_sd(I16 card_ID, I16 connect_index, I16 AxisNo, I16 enable, I16 sd_logic, I16 sd_latch, I16 sd_mode);
// Motion I/O Monitoring
I16 FNTYPE HSL_M_get_io_status(I16 card_ID, I16 connect_index, I16 AxisNo, U16 *io_sts);
// Position Control and Counters
I16 FNTYPE HSL_M_get_position(I16 card_ID, I16 connect_index, I16 AxisNo, F64 *pos);
I16 FNTYPE HSL_M_set_position(I16 card_ID, I16 connect_index, I16 AxisNo, F64 pos);
I16 FNTYPE HSL_M_get_command(I16 card_ID, I16 connect_index, I16 AxisNo, I32 *cmd);
I16 FNTYPE HSL_M_set_command(I16 card_ID, I16 connect_index, I16 AxisNo, I32 cmd);
I16 FNTYPE HSL_M_get_error_counter(I16 card_ID, I16 connect_index, I16 AxisNo, I16 *error_counter);
I16 FNTYPE HSL_M_reset_error_counter(I16 card_ID, I16 connect_index, I16 AxisNo);
I16 FNTYPE HSL_M_get_general_counter(I16 card_ID, I16 connect_index, I16 AxisNo, F64 *CntValue);
I16 FNTYPE HSL_M_set_general_counter(I16 card_ID, I16 connect_index, I16 AxisNo, I16 CntSrc, F64 CntValue);
I16 FNTYPE HSL_M_get_target_pos(I16 card_ID, I16 connect_index, I16 AxisNo, F64 *pos);
I16 FNTYPE HSL_M_reset_target_pos(I16 card_ID, I16 connect_index, I16 AxisNo, F64 pos);
I16 FNTYPE HSL_M_get_rest_command(I16 card_ID, I16 connect_index, I16 AxisNo, I32 *rest_command);
I16 FNTYPE HSL_M_check_rdp(I16 card_ID, I16 connect_index, I16 AxisNo, I32 *rdp_command);
//Only 7853/4 card & 8ID 4XMO Module use
I16 FNTYPE HSL_M_get_position_ex(I16 card_ID, I16 connect_index, I16 AxisNo, F64 *pos); //RTX NOT SUPPORT
I16 FNTYPE HSL_M_get_io_status_ex(I16 card_ID, I16 connect_index, I16 AxisNo, U16 *io_sts); //RTX NOT SUPPORT
// Position Compare and Latch
I16 FNTYPE HSL_M_set_ltc_logic(I16 card_ID, I16 connect_index, I16 AxisNo, I16 ltc_logic);
I16 FNTYPE HSL_M_get_latch_data(I16 card_ID, I16 connect_index, I16 AxisNo, I16 LatchNo, F64 *Pos);
I16 FNTYPE HSL_M_set_soft_limit(I16 card_ID, I16 connect_index, I16 AxisNo, I32 PLimit, I32 NLimit);
I16 FNTYPE HSL_M_enable_soft_limit(I16 card_ID, I16 connect_index, I16 AxisNo, I16 Action);
I16 FNTYPE HSL_M_disable_soft_limit(I16 card_ID, I16 connect_index, I16 AxisNo);
I16 FNTYPE HSL_M_set_error_counter_check(I16 card_ID, I16 connect_index, I16 AxisNo, I16 Tolerance, I16 On_Off);
I16 FNTYPE HSL_M_set_general_comparator(I16 card_ID, I16 connect_index, I16 AxisNo, I16 CmpSrc, I16 CmpMethod, I16 CmpAction, F64 Data);
I16 FNTYPE HSL_M_set_trigger_comparator(I16 card_ID, I16 connect_index, I16 AxisNo, I16 CmpSrc, I16 CmpMethod, F64 Data);
I16 FNTYPE HSL_M_set_trigger_logic(I16 card_ID, I16 connect_index, I16 AxisNo, I16 Logic);
I16 FNTYPE HSL_M_check_compare_data(I16 card_ID, I16 connect_index, I16 AxisNo, I16 CompType, F64 *Pos);
I16 FNTYPE HSL_M_check_compare_status(I16 card_ID, I16 connect_index, I16 AxisNo, U16 *cmp_sts);
I16 FNTYPE HSL_M_build_compare_table(I16 card_ID, I16 connect_index, I16 AxisNo, F64 *TableArray, I16 ArraySize);
I16 FNTYPE HSL_M_build_compare_function(I16 card_ID, I16 connect_index, I16 AxisNo, F64 StartPosition, F64 EndPosition, F64 Interval);
I16 FNTYPE HSL_M_set_auto_compare(I16 card_ID, I16 connect_index, I16 AxisNo, I16 Enable);
I16 FNTYPE HSL_M_set_compare_dir(I16 card_ID, I16 connect_index, I16 AxisNo, I16 Inverse);
//I16 FNTYPE HSL_M_set_compare_output_type(I16 card_ID, I16 connect_index, I16 AxisNo, I16 Normal_High_or_Low);
// Multiple Axes Simultaneous Operation
I16 FNTYPE HSL_M_set_tr_move_all(I16 card_ID, I16 connect_index, I16 TotalAxes, I16 *AxisArray, F64 *DistA, F64 *StrVelA, F64 *MaxVelA, F64 *TaccA, F64 *TdecA);
I16 FNTYPE HSL_M_set_ta_move_all(I16 card_ID, I16 connect_index, I16 TotalAxes, I16 *AxisArray, F64 *PosA, F64 *StrVelA, F64 *MaxVelA, F64 *TaccA, F64 *TdecA);
I16 FNTYPE HSL_M_set_sa_move_all(I16 card_ID, I16 connect_index, I16 TotalAxes, I16 *AxisArray, F64 *PosA, F64 *StrVelA, F64 *MaxVelA, F64 *TaccA, F64 *TdecA, F64 *SVaccA, F64 *SVdecA);
I16 FNTYPE HSL_M_set_sr_move_all(I16 card_ID, I16 connect_index, I16 TotalAxes, I16 *AxisArray, F64 *DistA, F64 *StrVelA, F64 *MaxVelA, F64 *TaccA, F64 *TdecA, F64 *SVaccA, F64 *SVdecA);
I16 FNTYPE HSL_M_start_move_all(I16 card_ID, I16 connect_index, I16 FirstAxisNo);
I16 FNTYPE HSL_M_stop_move_all(I16 card_ID, I16 connect_index, I16 FirstAxisNo);
I16 FNTYPE HSL_M_set_sync_option(I16 card_ID, I16 connect_index, I16 AxisNo, I16 sync_stop_on, I16 cstop_output_on, I16 sync_option1, I16 sync_option2);
I16 FNTYPE HSL_M_set_sync_stop_mode(I16 card_ID, I16 connect_index, I16 AxisNo, I16 stop_mode);
// General-purposed DIO
I16 FNTYPE HSL_M_write_do(I16 card_ID, I16 connect_index, I16 AxisNo, U16 value);
U16 FNTYPE HSL_M_read_di(I16 card_ID, I16 connect_index, I16 AxisNo);
//ODM Gantry function
I16 FNTYPE HSL_M_GTY_config( I16 card_ID, I16 connect_index, I16 M_No, I16 AxesGroup, I16 LinearAxis, I16 enable );
I16 FNTYPE HSL_M_GTY_set_param( I16 card_ID, I16 connect_index, I16 M_No, I32 Param_No, I32 Param_Val );
I16 FNTYPE HSL_M_GTY_get_param( I16 card_ID, I16 connect_index, I16 M_No, I32 Param_No, I32 *Param_Val );
I16 FNTYPE HSL_M_GTY_tr_move( I16 card_ID, I16 connect_index, I16 M_No, F64 Dist, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec );
I16 FNTYPE HSL_M_GTY_ta_move( I16 card_ID, I16 connect_index, I16 M_No, F64 Pos, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec );
I16 FNTYPE HSL_M_GTY_sr_move( I16 card_ID, I16 connect_index, I16 M_No, F64 Dist, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec );
I16 FNTYPE HSL_M_GTY_sa_move( I16 card_ID, I16 connect_index, I16 M_No, F64 Pos, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec, F64 SVacc, F64 SVdec );
I16 FNTYPE HSL_M_GTY_tv_move( I16 card_ID, I16 connect_index, I16 M_No, F64 StrVel, F64 MaxVel, F64 Tacc );
I16 FNTYPE HSL_M_GTY_sv_move( I16 card_ID, I16 connect_index, I16 M_No, F64 StrVel, F64 MaxVel, F64 Tacc, F64 SVacc );
I16 FNTYPE HSL_M_GTY_stop_move( I16 card_ID, I16 connect_index, I16 M_No );
I16 FNTYPE HSL_M_GTY_tr_linear_move( I16 card_ID, I16 connect_index, I16 M_No, F64 DistG, F64 DistL, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec );
I16 FNTYPE HSL_M_GTY_ta_linear_move( I16 card_ID, I16 connect_index, I16 M_No, F64 PosG, F64 PosL, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec );
I16 FNTYPE HSL_M_GTY_sr_linear_move( I16 card_ID, I16 connect_index, I16 M_No, F64 DistG, F64 DistL, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec , F64 SVacc, F64 SVdec );
I16 FNTYPE HSL_M_GTY_sa_linear_move( I16 card_ID, I16 connect_index, I16 M_No, F64 PosG, F64 PosL, F64 StrVel, F64 MaxVel, F64 Tacc, F64 Tdec , F64 SVacc, F64 SVdec );
I16 FNTYPE HSL_M_GTY_home_config( I16 card_ID, I16 connect_index, I16 M_No, I16 home_mode, I16 org_logic, I16 ez_logic, I16 ez_count, I16 erc_out);
I16 FNTYPE HSL_M_GTY_home_move( I16 card_ID, I16 connect_index, I16 M_No, F64 StrVel, F64 MaxVel, F64 Tacc);
I16 FNTYPE HSL_M_GTY_home_search( I16 card_ID, I16 connect_index, I16 M_No, F64 StrVel, F64 MaxVel, F64 Tacc, F64 ORGOffset);
I16 FNTYPE HSL_M_GTY_get_errcmd( I16 card_ID, I16 connect_index, I16 M_No, I32 *errcmd );
I16 FNTYPE HSL_M_GTY_get_errpos( I16 card_ID, I16 connect_index, I16 M_No, I32 *errpos );
I16 FNTYPE HSL_M_GTY_get_maxerrcmd( I16 card_ID, I16 connect_index, I16 M_No, I32 *maxerrcmd );
I16 FNTYPE HSL_M_GTY_get_maxerrpos( I16 card_ID, I16 connect_index, I16 M_No, I32 *maxerrpos );
I16 FNTYPE HSL_M_GTY_reset_maxerrcmd( I16 card_ID, I16 connect_index, I16 M_No );
I16 FNTYPE HSL_M_GTY_reset_maxerrpos( I16 card_ID, I16 connect_index, I16 M_No );
I16 FNTYPE HSL_M_GTY_set_deviation( I16 card_ID, I16 connect_index, I16 M_No, I32 deviation );
I16 FNTYPE HSL_M_GTY_get_deviation( I16 card_ID, I16 connect_index, I16 M_No, I32 *deviation );
/****************************************************************************/
/* Simplified Function for HSL communication */
/****************************************************************************/
// Parameter Setting
I16 FNTYPE HSL_M_set_str_velocity(I16 card_ID, I16 connect_index, I16 AxisNo, F64 StrVel);
I16 FNTYPE HSL_M_set_max_velocity(I16 card_ID, I16 connect_index, I16 AxisNo, F64 MaxVel);
I16 FNTYPE HSL_M_set_arc_velocity(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Arc_MaxVel);
I16 FNTYPE HSL_M_set_Tacc(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Tacc);
I16 FNTYPE HSL_M_set_Tdec(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Tdec);
I16 FNTYPE HSL_M_set_SVacc(I16 card_ID, I16 connect_index, I16 AxisNo, F64 SVacc);
I16 FNTYPE HSL_M_set_SVdec(I16 card_ID, I16 connect_index, I16 AxisNo, F64 SVdec);
// Single Axis Motion
I16 FNTYPE HSL_M_move_t_distance(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Dist);
I16 FNTYPE HSL_M_move_t_position(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Pos);
I16 FNTYPE HSL_M_move_s_distance(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Dist);
I16 FNTYPE HSL_M_move_s_position(I16 card_ID, I16 connect_index, I16 AxisNo, F64 Pos);
// Linear Interpolated Motion
I16 FNTYPE HSL_M_move_t_distance2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 DistX, F64 DistY);
I16 FNTYPE HSL_M_move_t_position2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 PosX, F64 PosY);
I16 FNTYPE HSL_M_move_s_distance2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 DistX, F64 DistY);
I16 FNTYPE HSL_M_move_s_position2(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 PosX, F64 PosY);
// Circular Interpolation Motion
I16 FNTYPE HSL_M_move_t_arc2_distance(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR);
I16 FNTYPE HSL_M_move_t_arc2_position(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR);
I16 FNTYPE HSL_M_move_s_arc2_distance(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 OffsetCx, F64 OffsetCy, F64 OffsetEx, F64 OffsetEy, I16 DIR);
I16 FNTYPE HSL_M_move_s_arc2_position(I16 card_ID, I16 connect_index, I16 *AxisArray, F64 Cx, F64 Cy, F64 Ex, F64 Ey, I16 DIR);
//Load from a configuration file of Linkmaster
I16 FNTYPE HSL_M_config_from_file(I16 card_ID, I16 connect_index, char *file_name);
2 years ago
#ifdef __cplusplus
}
#endif
#endif