linuxOS_AP06/external/rk_ethercat_release/demo/Rockchip_MADHT1505BA1.h
2025-06-03 12:28:32 +08:00

111 lines
3.9 KiB
C

#include "ecrt.h"
/*****************************************************************************/
/* Master 0, Slave 0, "MADHT1505BA1"
* Vendor ID: 0x0000066f
* Product code: 0x515050a1
* Revision number: 0x00010000
*/
// process data
const int MADHT1505BA1_vendor = 0x0000066f;
const int MADHT1505BA1_product_code = 0x515050a1;
// offsets for PDO entries
typedef struct {
unsigned int control_word;
unsigned int modes_of_operation;
unsigned int target_position;
unsigned int touch_probe_function;
unsigned int error_code;
unsigned int status_word;
unsigned int modes_of_operation_display;
unsigned int position_actual_value;
unsigned int touch_probe_status;
unsigned int touch_probe_pos1_pos_value;
unsigned int following_error_actual_value;
unsigned int digital_inputs;
unsigned int current_velocity;
unsigned int target_velocity;
unsigned int profile_velocity;
unsigned int end_velocity;
unsigned int profile_acceleration;
unsigned int end_deceleration;
unsigned int alias;
unsigned int position;
ec_slave_config_t *sc;
ec_slave_config_state_t sc_state;
ec_domain_t *domain;
ec_domain_state_t domain_state;
uint8_t *domain_pd;
ec_pdo_entry_reg_t domain_regs[19];
uint16_t status;
int8_t opmode;
int32_t cur_velocity;
int curpos;
int user_set_pos;
int user_velocity;
bool change_pos;
}MADHT1505BA1_object;
ec_pdo_entry_info_t slave_0_pdo_entries[] = {
{0x6040, 0x00, 16}, /* Controlword */
{0x6060, 0x00, 8}, /* Modes of operation */
{0x607a, 0x00, 32}, /* Target position */
{0x60b8, 0x00, 16}, /* Touch probe function */
{0x60ff, 0x00, 32}, /* target_velocity */
{0x6081, 0x00, 32}, /* profile_velocity */
{0x6082, 0x00, 32}, /* end_velocity */
{0x6083, 0x00, 32}, /* profile_acceleration */
{0x6084, 0x00, 32}, /* end_deceleration */
{0x603f, 0x00, 16}, /* Error code */
{0x6041, 0x00, 16}, /* Statusword */
{0x6061, 0x00, 8}, /* Modes of operation display */
{0x6064, 0x00, 32}, /* Position actual value */
{0x60b9, 0x00, 16}, /* Touch probe status */
{0x60ba, 0x00, 32}, /* Touch probe pos1 pos value */
{0x60f4, 0x00, 32}, /* Following error actual value */
{0x60fd, 0x00, 32}, /* Digital inputs */
{0x606c, 0x00, 32}, /* current_velocity */
};
ec_pdo_info_t slave_0_pdos[] = {
{0x1600, 9, slave_0_pdo_entries + 0}, /* Receive PDO mapping 1 */
{0x1a00, 9, slave_0_pdo_entries + 9}, /* Transmit PDO mapping 1 */
};
ec_sync_info_t slave_0_syncs[] = {
{0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
{1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
{2, EC_DIR_OUTPUT, 1, slave_0_pdos + 0, EC_WD_ENABLE},
{3, EC_DIR_INPUT, 1, slave_0_pdos + 1, EC_WD_DISABLE},
{0xff}
};
/*****************************************************************************/
int MADHT1505BA1_master_init(int bind_core);
int MADHT1505BA1_slaves_init(MADHT1505BA1_object *object);
int MADHT1505BA1_master_activate(void);
int MADHT1505BA1_slaves_activate(MADHT1505BA1_object *object);
int MADHT1505BA1_master_deinit(void);
int MADHT1505BA1_slave_start(int cnt, ...);
int MADHT1505BA1_check_motor(MADHT1505BA1_object *object); // 1 is true -1 is false
// int MADHT1505BA1_motor_start(MADHT1505BA1_object *object, int velocity);
// int MADHT1505BA1_motor_stop(MADHT1505BA1_object *object);
uint32_t MADHT1505BA1_time_statistics_latency_min_ns(void);
uint32_t MADHT1505BA1_time_statistics_latency_max_ns(void);
uint32_t MADHT1505BA1_time_statistics_period_min_ns(void);
uint32_t MADHT1505BA1_time_statistics_period_max_ns(void);
int MADHT1505BA1_run_position_acquisition(MADHT1505BA1_object *object);
void MADHT1505BA1_motor_set_position_run(int user_position, MADHT1505BA1_object *object);
void MADHT1505BA1_position_reset(MADHT1505BA1_object *object);