IgH设置DC接口说明 应用程序设置DC周期、偏移量、使能控制字。 void ecrt_slave_config_dc( ec_slave_config_t *sc, / Slave configuration. */ uint16_t assign_activate, /* AssignActivate word. / uint32_t sync0_cycle, / SYNC
应用程序设置DC周期、偏移量、使能控制字。
void ecrt_slave_config_dc(
ec_slave_config_t *sc, /< Slave configuration. */
uint16_t assign_activate, /*< AssignActivate word. /
uint32_t sync0_cycle, /< SYNC0 cycle time [ns]. */
int32_t sync0_shift, /< SYNC0 shift time [ns]. */
uint32_t sync1_cycle, /*< SYNC1 cycle time [ns]. /
int32_t sync1_shift /< SYNC1 shift time [ns]. */
);
ecrt_slave_config_dc(_G_pScServo[i], 0x300, PERIOD_NS, 1000000, 0, 0);
assign_activate一般为0x0300,设置的是0x980~0x981寄存器,使能DC-SYNC0同步信号输出。
图 1.1 同步信号寄存器
sync0_cycle即为sync0的循环周期,和主栈的周期任务的循环周期保持一致。
sync0_shift为启动sync0同步信号的偏移时间。
一般不使用sync1同步信号,可设置为0。
在从站间的系统时间同步后,还需要设置sync0产生的相位一致,从站间的sync0信号才能保持同步。
设置sync启动时间在fsm_slave_config.c文件的 void ec_fsm_slave_config_enter_dc_cycle ()函数中。
图 2.1 设置sync循环周期计算sync0启动时间在fsm_slave_config.c文件的ec_fsm_slave_config_state_dc_sync_check()函数中。