运动控制器5:GRBL的初始化,从U盘开始运行

GRBL在上电之后要进行初始化,初始化完成以后,如果之前有存储一个执行的位置,则重新上电需要在之前存储的位置处开始时,先调用此参数作为开启位置。

上电以后,先GRBL系统设置结构体的标志清空,memset(&sys, 0, sizeof(sys));

typedef struct {

  uint8_t abort;                //系统中止

  uint8_t state;                // GRBL的当前状态

  volatile uint8_t execute;      //系统运行状态

  int32_t position[N_AXIS];      // 实时位置

  uint8_t auto_start;            // 自动重启

} system_t;

然后将abort和state设置为初始化运行后,进行init_grbl初始化。

在init_grbl中,初始化如下模块:

调度器初始化

解析器初始化

协议初始化

主轴初始化

冷却剂初始化

限位器初始化

步进子系统参数初始化

然后同步一下控制系统的位置值sys_sync_current_position,将当前位置设置为逻辑原点。

然后系统清一下报警和上电完成指示后,返回一个调试的信息。

如果上电之前有保存的轨迹,则把开始启动行从存储器中读出以后,再进行执行,函数名为:

settings_read_startup_line里面调用了存储函数memcpy_from_eeprom_with_checksum。

之后进行系统的上电,系统上电用到了一个很好的电路,如下:

24V上电原理图

上电需要两个引脚进行控制,只有同时设置时,上电才会完成,完成上电以后,POWER_IN引脚拉低,指示24V上电完成。

#define PWR_ON    GPIO_SetBits(GPIOE, GPIO_Pin_14);GPIO_ResetBits(GPIOE, GPIO_Pin_15)

#define PWR_OFF  GPIO_ResetBits(GPIOE, GPIO_Pin_14);GPIO_SetBits(GPIOE, GPIO_Pin_15)

继续确认一下单片机时钟稳定以后,发送调试指令:BOOT完成。

然后挂载一下U盘,我们需要从U盘中读取G代码进行解析执行,判断完成U盘挂载,并输出U盘的剩余容量以后,蜂鸣器输出,同时给冷却液通电,也可以接风扇,输出全部通过光耦,光耦输入为3.3V信号,输出为24V驱动MOS,MOS型号可选SI2302(待定)。

然后读一下主板的设置,如果ID=1,则确认是从U盘开始执行。

ReadTestboardID,GPIO_ReadInputDataBit

然后进入最重要的函数WorkingFromSDfile:才U盘读取G代码解析执行驱动步进驱动器

你可能感兴趣的:(运动控制器5:GRBL的初始化,从U盘开始运行)