文章分類

顯示具有 [LabVIEW] Application 標籤的文章。 顯示所有文章
顯示具有 [LabVIEW] Application 標籤的文章。 顯示所有文章

2016年3月2日 星期三

[分享] 倒數計時器 Count Down Timer(FGV)

Hello everyone,

上一篇文章距今已經好久了XD

I'm too lazy to update my blog.

今天想分享的是倒數計時器的小程式,

是用FGV去做的,

下圖為程式為function的程式碼,

Today, I want to share count down timer.







接著我們再寫一支小程式來測試我們的function是否正確,

Now, I write a test program to verify function is correct or not.


在最左側,只要輸入需要倒數的時間,單位為ms。

然後在迴圈裡面只要一直讀取倒數計時器的狀態即可,

只要倒數完成,就會輸出一個TRUE的布林值。

In left side, you can connect the value you want to count down.

Next, use READ enum to read count down status.

If the timer count down equal to your setting, and it will output TRUE(Boolean).




因此你可以在不同的地方設定和計算倒數的數值,

也不用將線連來連去。

In conclusion, you can use this function to calculate the count down value in everywhere you want.


影片 :




程式下載點: 點這

Download link: Click



Patrick

2015年9月23日 星期三

[分享] 使用myRIO控制Buzzer


今天要來分享的主題

使用myRIO來控制蜂鳴器Buzzer

底下是電路接線的部分



下圖則為程式碼的部分,比較要注意的是這邊使用PWM來控制Buzzer的聲音頻率,

透過電晶體來讓Buzzer產生不同的音調。

要使用myRIO來產生PWM也是一件簡單的事,

只要進去myRIO的Function block就可以找到PWM Function可以用了。




順便附上Buzzer要產生Do Re Mi的頻率

Do(523Hz)
Re (587Hz)
Mi(659Hz)
Fa(698Hz)
So(784Hz)
La(880Hz)
Si(988Hz)
Do (1047Hz) 

Demo影片:



加上Dip Switch:



Patrick

2015年7月12日 星期日

[分享]使用myRIO來應用LED和Dip Switch


最近工作太忙了,忙起來連六日都在公司QQ

其實Dip Switch就是數個開關的集合體,所以可以用單個開關來看它會比較簡單。

一般來說,開關還是要考慮諸多條件,

例如:導通電阻或是電阻的係數等等

避免在長時間導通溫升提高,進而影響到開關的電阻值。

但這邊不多做討論,因為應用的電流不大。

底下是接線圖


跟之前的LED電路很像,就是在兩側加上一個Dip Switch就ok了。


影片:


Patrick


2015年6月14日 星期日

[教學] 叢集的使用(Cluster)


最近好忙,忙到都忘記要來分享文章了,

突然發現自己使用vb.net的頻率已經快要高於LabVIEW了,

快要生疏了,要來繼續練習了,

有機會來分享一下使用台達伺服馬達的經驗。


今天要分享是Cluster的使用,

若你有使用過很多變數要拉進拉出迴圈的時候,

會覺得很麻煩的一件事是 怎麼這麼多不同變數要連接整理呢?

Cluster可以解決這樣的問題喔!

也可以使得程式變得更簡潔易讀。



在選單右上角就可以看到它囉。



Cluster可以將不同型別的變數整合再一起,

可以看下面這張圖:



相信大家都能知道cluster帶來的好處了,

如果要提取cluster內容則用unbundle來提取內容就可,

也可以用In Place Element Structure來達到此效果。

若想要把值在寫回去,則用bundle即可。


這篇就偷懶不放影片囉,晚安。



Patrick


2015年5月10日 星期日

[分享]myRIO控制LED燈(Control LED with myRIO)

最近這陣子都在玩NI的myRIO模組,

底下就是myRIO的樣子,其實不太大,但提供能控制的IO腳位蠻多的。


其實它的功能Arduino都做得到,

不過方便的是它的程式真的很好寫阿XD

之後相關的程式和文章會放在LabVIEW Pro論壇上(請允許我偷懶一下

分享一下做出來的小成果

影片:




Patrick

2015年4月25日 星期六

[教學] State Machine


今天要分享的是State machine 狀態機,

這跟我最近的工作內容還蠻相似的,

因此這個架構能使用在需要有規則的地方。

例如:機械手臂從A夾了東西,到B點放下再回A點。

這種情況使用state machine再適合不過了!


可以剛剛那個例子的動作給分開來

Case1 初始化

Case2 機械手臂夾東西

Case3 移動到B點

Case4 放下東西

Case5 回到A點

這樣就完成一個循環了,之後Case5在指定到Case2就ok了!

以上說明State machine應用的地方。


接著說明需要使用那些元件,

Enum, Shift register和 Case structure.

架構如下



每執行一次,左邊的Shift register就會把命令送出,執行完Case後,

就會把下次命令儲存起來,等迴圈在跑一次之後,新的指令又會從左邊輸入。

大概是這樣


影片:





Patrick







2015年4月3日 星期五

[教學] How to build type definition and what is beneifits?

今天分享的是Type definition,

這個東西真的很方便,只要我們把它設定完後,

以後相同的元件只要改一個即可,

接著全部都會被更新。

例如我有個Enum在FP上,

我程式裡面用了很多相同的Enum,

當我想要更改Enum的內容,

我就只要改一個就好,

其他的都會被同時改變。

接下來分享怎麼做囉!




首先,先建立一個元件在FP上,

按下右鍵選擇Make Type Def.


接著再按右鍵選擇Open Type Def. 。



















就會出現下方的視窗,接著存檔。




這樣就完成一個Type def.的元件了!

你以後想要改相同元件的內容,就只要改一次全部都會跟著改了。


改完長這樣


影片:


下次來分享狀態機。


Patrick












2015年3月29日 星期日

[教學] Marked data, increase data length, change x label to time.

今天來分享一下waveform chart技巧

waveform chart 是將資料堆疊起來逐一顯示,

所以最新的一筆資料會顯示在左側,

舊資料則被移出波形圖外了。

缺點就是資料會不停的堆疊在波形圖裡導致佔據過多


第一,如何將X軸設定為絕對時間或相對時間?

右鍵 -> Properties -> Display Format

下方有個Absolute time和Relative time可選


第二,如何增加波形的data length?

在LabVIEW裡預設為1024,若要加大資料大小,

必須在波形圖上右鍵,選擇Chart history length則可增加大小。




第三,標示資料,若大於等於0.5則用紅色字顯示,小於則用黑色顯示。


影片:





程式:





Patrick



2015年3月18日 星期三

[分享]Functional Global Variable

今天分享的是functional global variable,又可簡稱FGV。

這是利用shift register和case設計而成,

好處是可以避免使用過多的區域變數和全域變數。


以下是FGV的架構,範例是一個簡單的計時器。

外部有個Enum來控制需要執行的迴圈,

接著將這次的秒數丟給右側的shift register來做儲存。

大家可能會好奇那這樣可以做什麼?

簡單來說就是這個case負責儲存開始時間。


下面這個case來計算程式經過多久時間,

左側的shift register和目前時間做相減,便可以得到時間差了。

最外部的while迴圈一律給true,只執行一次即可。


接著來應用我們所做的計時器程式,

首先要把這個vi做成sub vi,

這是順序結構,執行順序為左到右,

先set設定時間,再用get把計時結果拉出來,

結果為5000 ms跟我們delay的時間一樣。







Patrick





2015年2月17日 星期二

[教學] 讀寫Front Panel控制元件的值(Save/Load control value at front panel)


有時候我們在使用程式時,

都希望能把初始值和最後程式結束的值給記錄下來。

底下要介紹的功能就在File I/O => Configuration File VIs.


先介紹寫入的部份

如下圖所示,FP(Front Panel)上面有個String Control想存下來,

我們只要給予儲存的路徑,檔名為ini。

然後給予一個Section,我覺得名稱是什麼都還好,因為控件還沒有很多。




然後就會得到下面的結果。



大家可以去比照看看,好處是每次程式執行完後都可以把最後一次輸入的資料存下來。

程式碼如下:













讀取的部分也是很像,最重要的路徑一定不能忽略

比較特別的是需要給資料型態,然後在連接上字串的值就大功告成了。

程式碼如下:





 有空會來介紹如何將Array或Cluster做存取。




Patrick


2015年2月12日 星期四

[教學] 圖片可以變成LabVIEW程式 (VI Snippet)

我常常給大家這樣的圖,這樣的圖可以直接變成LabVIEW程式,

可以不用再拉線一遍,我覺得超方便的XD。




大家只要把這個圖存起來,通常檔名會是PNG。

接著把這個圖拉進方塊圖裡就會變成程式啦! 是不是超神奇的。


至於要怎麼變出這個圖勒?

只要把你想變成圖片的地方圈選起來,在上方的功能列中,

選Edit -> Create VI Snippet from Selection 即可




希望大家也可以多用這個方法來分享程式囉!



Patrick

2015年2月8日 星期日

[技巧] 延遲前面版的更新速度(Defer Front Panel Speed)

在寫中大型程式的時候,往往會面臨很多問題,

例如:記憶體不足、意外崩潰、程式越跑越慢等等

重要的是一定要用引用一些Reference時,

在程式結束一定要把記憶體釋放掉,不然很容易會越來越慢。


今天要分享的是Defer Panel Updates,

有時候Front Panel的資料太多,而且不需要快速觀察這些資料的變化時,

可以用這個Property node來減緩程式越跑越慢的情況,

也可以讓電腦資源不會耗費太多在顯示資料上。


給True就是延遲FP的更新速度,False反之,

底下程式給大家參考。


迴圈跑一次100 ms,數到40次再更新FP,所以大概是4秒會更新FP一次。





Patrick

2015年2月6日 星期五

[技巧] 使用屬性節點改變FP註解(Use property node to change FP annotation)




這是一個很冷門的知識XD

其實也是從朋友那邊聽來的

-------------------------------------------------

簡單解釋一下

註解是Front Panel上的Decorations

這時候會把所有的Decorations的Reference叫出來

當然我們只要改其中一個註解

所以用Index Array把第一個Reference拿出來

再把Text抓出來

接著Write Text就ok了!





程式:







Patrick