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

脱机输出

脱机输出的函数如下:

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));

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容