求助!!! producer/consumer架構應用於XYZ三軸機台控制&示波器擷取

想請問有沒有哪位大大可以幫助小的~~~~

內容如下 :

我手邊現有兩個labview程式 : 一個是XYZ三軸龍門機台的運動控制程式,另一個是數位示波器擷取程式(型號 : Tektronix MDO3034)。

現在我把這兩支程式結合,再利用producer/consumer架構建成一個掃描系統,而這個掃描系統的工作方式是 : 龍門的移動軌跡為弓字型,當中只有X軸和Y軸作移動,並且是連續移動;當龍門移動時,示波器就會根據我所設定的距離間隔進行判斷,再執行擷取。

但是現在遇到的問題是 : 龍門在移動過程中,無法依照設定的擷取間隔去執行擷取,導致我收集到的波形資料不完全;以附件的掃描系統工作示意圖為例,若我要擷取的資料比數為5 X 5個,則實際測試時則無法擷取到每個方向上的所有位置。

Q : 想請問移動程式執行的同時,要如何同時判斷並讓示波器進行擷取? 謝謝.

附件是掃描系統工作示意圖 & 掃描系統程式 :

ProducerConsumerData 3.vi (140.7 KB)

我個人覺得 …
不用那麼複雜, 使用到 producer/consumer 架構.

使用簡單的 State Machine 架構就可以了.
而且你都已經把 State Machine 架構 寫好了.
把 示波器 讀取的程序 貼在 移動完成定位 後面 應該就可以了
讀取完之後, 再執行下一個 移動的程序.
State Machine.vi (54.1 KB)

好的 非常感謝!!
我再修改看看~

斗笠 您好
我重新測試後發現 示波器沒有辦法根據每個距離間隔去做擷取
請問該怎麼修改會比較好?
麻煩您了,謝謝…

不太懂你的意思. 有異常錯誤訊息?

是 示波器 擷取程式碼有異常錯誤?
還是馬達控制位移 程式碼有異常錯誤?

程式中我寫的判斷式為 : 只要[總移動距離]能被[距離間隔]整除,其餘數為零時,則執行示波器擷取。

因此,若[總移動距離]為40000,[距離間隔]為10000,那照理來說應該會擷取4筆資料(當位置到達10000、20000、30000、40000時,個別擷取一次,總共4次)。

但目前遇到的狀況是 :
假設我設定總距離為40000,但實際上龍門只會移動到39999,這導致少擷取到一筆資料,我認為這個問題是馬達精度所造成的。

想請問是否有方法可以改善這方面的問題? 謝謝

如果是硬體馬達精度問題
那就要找 硬體廠商

餘數為零時,執行示波器擷取
這個判斷式邏輯 我覺得怪怪的

一般應用會等馬達定位之後 , 才執行資料擷取.
模擬馬達定位資料擷取 程式 如下 你參靠看看.
模擬.vi (93.7 KB)

好的,我再研究看看,謝謝您