運動控制器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代碼解析執行驅動步進驅動器

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。