還記得之前做上圖這台控制器時,總覺得控制器的腳位上有按鈕就要給他用下去,結果才發現根本不知道那三個按鈕是幹嘛的。讀了許多文章與介紹之後,總算是稍微了解了,在這裡做一些筆記,詳細與更多的細節的官方網站上都有紀錄。
首先硬體端的3顆按鈕分別對應Cycle Start/Resume、Feed Hold與Reset/Abort,這三顆"硬體"按鈕都有對應的序列指令 ~、!與ctrl-x。
首先是暫停按鈕Feed Hold,這顆按鈕按下去之後在執行的程式會暫停並呈現Queue的狀態,但是這個指令並不會關閉馬達或是關閉主軸開關,所以僅止於暫停而已,直到按下啟動按鈕Cycle Start/Resume之後,程式才會繼續執行。
值得一提的是雖說它是實時命令,但是當序列發送時,有時候程式在跑的時候要等一下才會讀取到並暫停(當然這可能是電腦端控制軟體的問題),如果是比較緊急的時候還是用硬體開關比較好,用硬體觸發的話會馬上暫停(也就是Arduino UNO的A1腳與GND短路),至於繼續執行的話直接序列輸入~就好了。
GRBL中比較難懂的是重置按鈕,我一直不知道怎麼用序列輸入使GRBL重置(輸入CTRL-X是錯誤的,但我按鍵盤的按鍵也沒用),不過硬體按鈕的觸發我嘗試是能成功的,當按下後序列會出現[CTRL+X] < Grbl 0.9g ['$' for help],這個指令與Arduino板子上的RESET的差別,是它依舊會記錄機械與工作原點。
在參考資料中作者建議,在每一次新的工作時(如果沒關機的話),都可以執行這個指令,避免上一個腳本的一些設定干涉到新的工作,同時這個指令也不會讓機器的位置消失歸零。同時這個重置會同步關閉馬達輸出(Spindle Enable)與步進馬達的開關(Stepper Enable),因此也算是另外一種緊急開關。
不過在緊急停止這部分,網路上大部分的人還是建議,緊急停止開關最好就是做在電源端,因為控制板上的緊急開關也不能保證百分之百正常,只有電源切了才是真的,不然倘若電路板當機不聽話,那可就麻煩了。
我看不少機器都沒有安裝這幾個按鈕(有的連限位開關都省了),因為基本上電源開關有裝好就夠了,其它的就交給電腦端處理吧,不然裝幾顆按鈕還要多加幾條線,而且對我這種小機器而言,最好的緊急停止按鈕就是延長線的開關。