極限碰觸後重新Servo on問題請教

想請教各位高手!

目前的想法是當軸碰觸到極限時,跳出警告訊息且把按鈕Disabled掉,並且程式可以繼續運行,想請問是否有辦法能讓Event Sequence只觸發一次之後就跳回Servo on的程式嗎?
謝謝!

test.vi (41.6 KB)

Labview版本:2017
Driver:ASDA B2

既然你已經使用Queue,那方法就是把你想要做的動作Enqueue。

例如下圖的兩個紅圈處,可以根據你的狀況,決定該接在哪邊,
紅圈1.Reset一定成功,不會有任何意外,那就直接Reset接Start,這樣Reset做完就會做Start。
紅圈2.Reset可能會失敗,失敗了還要做例外處理,那就在Reset動作之後再決定要不要接Start。

好的,謝謝我試試看

我這邊看你的文字沒有很全面了解, 所以請讓我試著一起釐清問題吧:

  1. 你說得跳出訊息把按鈕disable, 意思是指的是需要讓使用者不能再按嗎? 如果是, 可以嘗試使用disabled的property node, 不過如果要用, 記得要想好流程, 再disable起來
    (是說我個人覺得如果還在開發階段, 這種使用者體驗的東西可以記著之後再來加就是, 大家覺得哩?)
  2. event本來就可以下指令之後繼續運行, 你這邊是指說做某個動作資源會被占住嗎? 理論上這種producer/consumer的架構應該不會發生, 你可以具體描述一下你做了什麼事情, 你想看到什麼結果?
  3. 照理說 servo on這個動作應該是為了要重新讓馬達繼續可以做後續的事情, 如果驅動會servo off, 那為了安全起見, 應該是需要servo on再動比較好, (我的理解是, 萬一碰到極限你又立刻可以亂跑, 豈不是很危險?) 也許我對你的問題有理解錯誤, 也歡迎補充唷

以上給您參考~

1個讚

關於第三點 我是不想另外做一個Servo on的開關是想要一開始初始化的時候就直接讓Servo on,導致碰到極限點後就會Servo off,如果我直接做一個開關來重新Servo on是不是變成比較快的方法?!

這塊我問了星協的R&D, 碰到極限開關應該不會有off的狀況, 你反向跑應該要能動, 我建議你可以試試看soft front panel, 先跑去碰極限, 再往反方向跑看看

soft front panel是OK的,我程式再測試看看,可能是我自己的問題,謝謝

1個讚


目前程式大致上為這樣,目前測試當前極限碰觸之後,沒辦法後退需要再按一次Servo on按鈕之後才可以正常執行,並且Read Encoder position要等到按鈕放開時才會更新數據,沒辦法同步執行不管是放在case structure內還是外結果都是一樣的,想繼續上來請問各位高手… 麻煩了謝謝!

在test panel測試前極限以及後極限都是正常的,且碰到前極限時可以後退,碰到後極限時可以前進,但我自己的程式卻不行…

我建議可以把你寫的程式和星協提供的範例做比較~

1個讚