说明
protocol文件中存在多个函数,目前根据主函数的流程,暂时分析这其中的部分函数,剩余的部分函数,再进行更新。
分析
2020-4-8更新
1、首先分析是的GRBL初始化完成之后的主循环,该循环再GRBL中的作用主要是接收串口的数据,并分析串口数据,形成完成的G代码,交给gcode解释器处理后面的工作。(这里将去除一些没有意义的宏定义)
void protocol_main_loop()
{
// 判断是否开启硬件限位,如果开启,判断限位是否正常
#ifdef CHECK_LIMITS_AT_INIT
if (bit_istrue(settings.flags, BITFLAG_HARD_LIMIT_ENABLE)) {
if (limits_get_state()) {
sys.state = STATE_ALARM; // Ensure alarm state is active.
report_feedback_message(MESSAGE_CHECK_LIMITS);
}
}
#endif
// Check for and report alarm state after a reset, error, or an initial power up.
// NOTE: Sleep mode disables the stepper drivers and position can't be guaranteed.
// Re-initialize the sleep state as an ALARM mode to ensure user homes or acknowledges.
//插件当前的状态是否处于IDLE
if (sys.state & (STATE_ALARM | STATE_SLEEP)) {
report_feedback_message(MESSAGE_ALARM_LOCK);
sys.state = STATE_ALARM; // Ensure alarm state is set.
} else {
// Check if the safety door is open.
sys.state = STATE_IDLE;
if (system_check_safety_door_ajar()) {
bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR);
protocol_execute_realtime

本文详细解析了GRBL中的主循环function,阐述了其在接收和解析串口数据、形成G代码并交由gcode解释器处理的过程。同时,文章还深入分析了主循环中的各个关键步骤,包括硬件限位检查、系统状态监测、实时程序执行及G代码执行等。
最低0.47元/天 解锁文章
5791

被折叠的 条评论
为什么被折叠?



