运动控制器9:脱机输出和限位输入

2017-12-28  本文已影响0人  吴松乾

脱机输出

脱机输出的函数如下:

void MotorsEnable(char motors){

if(motors & (1 << 0))  MOTOR1_ENABLE;

else     MOTOR1_DISABLE;

…… _delay_us(5);}

在下面两个地方有调用此函数:GC_EXECUTE_LINE

if (gc.program_flow == PROGRAM_FLOW_COMPLETED_STOP)

{ mc_reset(); MotorsEnable(0);}

和st_wake_up函数中,此函数中直接调用 MotorsEnable(0x07);

需要脱机的时候,主要是遇到M2指令时,M30是复位并回到开头,详见G指令的详细介绍。

http://note.youdao.com/noteshare?id=b9b8f85094fa22f3eeb6f2a15bc6cc23

    if (gc.program_flow == PROGRAM_FLOW_COMPLETED) { mc_reset(); }

    if (gc.program_flow == PROGRAM_FLOW_COMPLETED_STOP) { mc_reset(); MotorsEnable(0);}

关于限位

输入一共32位,分为4组

#define LIMIT_PIN      InputRead(3); //第4组输入,一共4组32位输入

#define X_LIMIT_BIT    6 

#define Y_LIMIT_BIT    7 

#define Z_LIMIT_BIT    4

现在输入主要在homing_cycle,在调用时,判断

if (limit_state & (1<<Z_LIMIT_BIT)) { out_bits ^= (1<<Z_STEP_BIT); }

输出OutputControl((STEPPING_PORT & ~STEP_MASK) | (out_bits & STEP_MASK));

从这里可以看出,限位开关仅仅在回零点的时候才会使用。

上一篇下一篇

猜你喜欢

热点阅读