Boolean擷取

請問各位labview高手

請問要怎麼篩選Boolean燈號的第二次亮滅並利用波形圖的cursor標示出來 如下圖

如上圖綠色儀表X軸正負數據是由旁邊布林燈號顯示正負交替,我是想抓出第二次亮滅交替燈號,像綠色儀表所顯示的是第三燈號為第二次的亮滅交替,也就是X軸(Time)2為我想要抓出的數據-312187.9,下面黃色儀表為第6個燈號出現第二次亮滅交替,對應儀表為X軸的第5,Y軸數據為20771057.4,並都用儀表裡的cursor標示出來,但這些都是我自己手動的,能不能是程式案啟動後,他能夠自己運行,小弟自己做到一半,但還是沒辦法顯示出自己想要的功能。

凡請各位LabVIEW高手幫幫忙

(備註:在要運行程式時,請匯入836864ARESTv.W67)


LabVIEW1.1.vi836864ARESTv.W67
回報給你:

檔案836864ARESTv.W67無法下載

Server Error

< style="padding: 0px 15px 10px;">

404 - File or directory not found.

The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.

MingYen42230.4828356481

不好意思~沒注意到 我把它壓縮了836864ARESTv.rar

先前有看到一位板友回覆過東西了,不過還是看你到處問



我把Boolean XOR陣列最簡單的部分先完成,

以期你不需要再問擔心這一段問題



如圖利用For自動的index,以及初始值為False的shift register,

輸出後自動index,可以輕易達到,鄰近兩值XOR之效果

      



1.這是一個類似階差的動作,因此每次取階差都要正確定義,此寫法是第1項等於原陣列的第1項與第0項相減。這造成了階差陣列第0項的功用不明。



2.我這邊階差陣列的第0項是原陣列與False取XOR的值,這是沒有意義的,因此我在顯示Array的時候,讓LED燈號首項顯示1,也就是跳過了第0項。



3.人機介面上,我手動把他交錯了,讓你可以看到他是代表什麼意義



4.第0項我保留他是有意義的,在程式擴展的過程中,他能夠攜帶Initial的一些資訊。

這個資訊也是在你更早提出時,說第一項是正是負會影響反應的情況下,能夠利用攜帶的Initial資訊做為判斷用。

有的人求快寫的是不會留這個尾巴的。



接下來還有後續的步驟,如果你已經會了,也不妨看看我的寫法與考量。



因為在上班,實在沒有時間完全幫你解完,只能協助你把每一步腳印踏的實 MingYen42235.6267592593

利用Split 1D Array把第一個值獨立出來

他代表的正好是階差陣列的原陣列初始值



物理上來說就是你雖然算出了速度陣列,但我還附送你一個起點位置,免得你不知道你是從正位置還是負位置開始的







接著要做的是就很簡單了,決定你說的「越零點」

我這邊是假設不是「躍零點」,因為「越零點」可說是是跨過0 (XOR),「躍零點」比較像是跳上大於等於0 (重新翻回正值)。

我們只需要用到一個內建函式,請待下段MingYen42235.6403819444

再用For迴圈將表達XOR的陣列non-index



展開利用Search 1D Array跟Split 1D Array



這次是利用shift-regisiter整個傳入後,像切甘蔗看準要切的地方,斬下去,手上拿著斬點的後段

再決定要不要切第二刀,直到迴圈切到第N刀 (Selecting n-th)







切完後,看看你留著的那一段,是甘蔗原先的哪一節,記錄在n-th of Array 1, 2之中。 (請看箭頭就知道了)

最後一個步驟,由於功力不足,所以使起來雜雜的動作很多

並且只對Array 1進行操作,避免解說複雜。



第一階段:在程式下方由迴圈產生Cluster of Array,準備繪入XY Graph



其中Y Value的部份:

    我讓Ture等同於+1.0,讓False等同於-1.0,構成一個DBL Array

其中X Value的部份:

    讓迴圈的Iteration number代表X,構成DBL Array



依照XY Graph的使用方法一,接著要Bundle這兩者便可繪出原陣列圖



雖然可以用Boolean to (0,1),但我為了模仿DBL Array有正有負,所以使用Case結構





第二階段為右側,利用計算出的轉折點,把座標軸X、Y拿出來顯示。

在圖上顯示的必須要使圖表的Property node,一定做得到但是沒時間。



第三階段為右下,利用Split Array想要把Array切開成前後兩條

Y座標:因為圖表顯示的需求,前後段的Array都必須要有此轉折點的資料

所以前段跟後段資料被我分了兩次拉出



由於是XY Graph,X座標的數值也要分為前後兩段



正確Bundle後,便會形成兩組前後段的數據線,第一組用Plot 0白色,第二組用Plot 1紅色。 




因為行為類似方波,圖表內容Plot顯示選擇先走X方向,再增加Y方向 (你最原始的DBL Array不需要做這一步)



再更多就沒辦法了,我實在不建議用Property node,除非直接拿到範例。



最早建議你的版友之所以插入0點,目的也是讓資料分為前段、0點、後段。想法是相同的,欠缺的只有專門做UI時的屬性節點而已。希望我們有幫到你。

MingYen42237.4188194444

上面文章中的程式碼部份是使用LabVIEW Snippet功能

製造出的png檔案 (LabVIEW 2012)





剛剛測試,現在的LabVIEW360論壇

已經可以允許png檔案直接拖曳到程式區去進行複製



方法是:左鍵點讓他在新視窗中打開,接著再拿未縮放過的此張原圖直接拖曳進入你的Block Diagram (程式方塊圖區)







我很喜歡數值處理與演算部分,如果有需要可以再討論

最近正在加強自己的這部分,有範例有問題彼此成長的比較快 MingYen42236.4471643519