蹴驗 10 ------------ labview + daq...
TRANSCRIPT
- 1 -
���� 實驗實驗實驗實驗 10 ------------ LabVIEW + DAQ 的基礎應用的基礎應用的基礎應用的基礎應用
一一一一、、、、目的目的目的目的
藉由簡單的練習對LabVIEW程式設計有初步的認識。將類比訊號輸入DAQ卡(資料擷取卡),再透過
LabVIEW的DAQ Vis 可以輕易地擷取DAQ系統的資料,再經過LabVIEW的傅立葉分析程式來找出輸入
訊號的頻譜。對渾沌電路(Chua’s circuit)做頻譜分析。
二二二二、、、、原理原理原理原理
傅立葉轉換原理傅立葉轉換原理傅立葉轉換原理傅立葉轉換原理
定義函數 f 的傅立葉轉換 F ( ){ } ( ) dtetftf tiω−∞
∞−∫= (eq.1)
F ( ){ }tf 為ω 的函數,F ( ){ }tf =FFFF ( )ω (eq.2)
傅立葉轉換可用來做頻譜分析,可以將接收訊號所包含的頻率找出來。我們可以舉一些簡單的
例子來看:
考慮一個週期 T 的方波訊號,定義如下:
( ) {=tf if 2/0
02/
Tt
tT
<<<<−
( ) ( )tfTtf =+ 這個函數有複數級數的傅立葉表示
( ) ( )( ) itn
n
en
kitf 012
12
2 ω
π−
∞
−∞=∑ −
−= , T/20 πω = (eq.3)
令 ( ) itn
nnectf 0ω∑
∞
−∞=
= 兩邊取傅立葉轉換
FFFF ( )ω =F ( ){ }tf = { }
−= ∑∑∞
−∞=
∞
−∞=020 ωωδπω ncec
nn
itn
nnF (eq.4)
其振幅-時間的函數圖形及傅立葉函數分析圖形如圖 1(a)、(b)所示 。
t
( )tf
−
=0
2
πn
kicn if n is odd
if n is even
- 0ω 0ω 03ω 05ω
(a) (b)
圖 1(b) 傅立葉函數分析圖形
-k
k
nc
圖 1(a) 方波振幅-時間函數圖形
- 2 -
另外若考慮一弦波訊號 ( ) )cos( 0ttf ω= ,同樣將兩邊取傅立葉轉換得
FFFF ( )ω =F ( ){ } ( ) ( )[ ]00 ωωδωωδπ ++−=tf (eq.5)
可以發現此一弦波只有一個震盪頻率 0ω ,見圖 2(a)、(b)
了解傅立葉分析基本原理後,接下來我們將利用 LabVIEW 所寫的頻譜分析程式(見補充資料),
以電腦音效卡做為訊號的輸出與接收器,分別來分析 LabVIEW 程式產生的訊號及訊號產生器
脈波訊號的頻譜。
渾沌電路渾沌電路渾沌電路渾沌電路(C(C(C(Chua’s circuithua’s circuithua’s circuithua’s circuit))))介紹介紹介紹介紹
如圖3所示Chua’s Circuit 由四個線性元件(二個電容,一個電感,一個線性電阻)和一個非線性
電阻所組成。
利用克希荷夫定律 (Kirchhoff’s Law),可將Chua’s Circuit 表示成一微分方程組(式6、7、8):
( ) ( )1121
1
1vfvv
Rdt
dvC −−= (eq.6)
( ) 3212
2
1ivv
Rdt
dvC +−= (eq.7)
23 v
dt
diL −= (eq.8)
( )tf
t ω
( )ωF
0ω− 0ω
(b) (a)
圖 2(a) Cosine 弦波振幅-時間函數圖形 圖 2(b) 傅立葉函數分析圖形
圖 3 Chua’s circuit
- 3 -
其中
( ) ( ){ }pRpRbaRbRR BvBvGGvGvfi −−+−+==2
1 (eq.9)
非線性電阻的部分可用運算放大器作成負阻抗電路,且當VR大於某一電壓值時,運算放大器
開始saturate,將兩個這樣的運算放大器並聯,就可以得到I-V 曲線為圖4的非線性電阻。
電路中的電阻及運算放大器的saturation voltage( R1 , R2 , R3 , R4 , R5 , R6 , Esat )可以決定Ga , Gb ,
Bp。只要改變C1、C2、R、L 等參數便可以觀察到不同週期的週期軌道或渾沌(chaos)軌道。C1、
C2、L 都是不容易改變的參數,因此我們選定C1=0.0155µF、C2=0.3474µF 並利用RCL Meter量
得L=11.0534mH,串聯電阻Rs=13.9596。只要改變不同的R值,很容易就可以觀察到現象。
(關於Chua’s circuit請參考應電實驗室網頁中大學部計畫的成果資料。)
三三三三、、、、實驗裝置實驗裝置實驗裝置實驗裝置
安裝 LabVIEW 程式的電腦、DAQ 卡(National Instruments 公司出產的 ADDA card)、訊號產生器╳2、示
波器、電源供應器、Chua’s Circuit
預習問題預習問題預習問題預習問題
1. 請查物數課本將原理部分所提方波、弦波傅立葉轉換所得結果推導一次。
2. 請查一查上學期運算放大器(一)實驗講義,畫出緩衝器的接線以及其功能。
3. 何謂 Chua’s Circuit?請參考應電實驗室網頁中大學部計畫的成果資料。
三三三三、、、、實驗操作實驗操作實驗操作實驗操作
本實驗分成兩大部分:第壹部分是 LabVIEW 程式的簡單練習,共有 13 個實做練習。第貳部分是利用
DAQ 卡擷取訊號,再進行分析。
Ri
Rv
bG
pB−
bG
aG
pB
圖 4 非線性電阻的 I-V 特性曲線。
aG 、 bG 為斜率,轉折點位於 Rv = pB− 及 Rv = pB
- 4 -
第壹部分第壹部分第壹部分第壹部分、、、、LabVIEWLabVIEWLabVIEWLabVIEW 程式設計基礎篇程式設計基礎篇程式設計基礎篇程式設計基礎篇
既然已經上過 LabVIEW 的第一堂課,相信同學們都對於 LabVIEW 的工作環境有一些基本的認識
了,那麼廢話不多說,就從實做例題開始練習吧!
Tip1 … 鍵盤捷徑鍵盤捷徑鍵盤捷徑鍵盤捷徑
Ctrl+N 建立一個新的 VI Ctrl+B 將程式方塊圖中所有壞線移除
Ctrl+R 執行目前的的 VI Ctrl+T 將人機介面與程式方塊圖左右並列
Ctrl+W 關閉目前的的 VI
Ctrl+E 在人機介面/程式方塊圖之間切換
Ctrl+H 顯示隱藏 Help 視窗 Shift+滑鼠右鍵 呼叫工具面版
Tip2 … 圖釘圖釘圖釘圖釘
按右鍵可分別在人機介面及程式方塊圖上呼叫出控制面版(Control)與函數面版(Function),但若經常使
用到某個子面版,想將它固定在螢幕上,則可以在此面版左上角的圖釘上點一下使它立起,即可擁有
此固定的視窗,並可將它移動至你想要的位置,不想要時也可以關閉它。
Tip3 … 區域變數區域變數區域變數區域變數(Local Variable)
當一個變數必須同時出現在其他許多小程式時,就要用到分身變數。產生方法如下:
(1) (2) (3)
- 5 -
⊳⊳⊳⊳ 實做練習一實做練習一實做練習一實做練習一 ���� 複習數值元件複習數值元件複習數值元件複習數值元件(Numeric)的使用的使用的使用的使用
請寫出一程式,運算任意 x 值經過下列運算,並顯示其結果 y。
53
12 +
=x
y
Tip 4 公式節點公式節點公式節點公式節點…
倘若你的公式很冗長,程式方塊必定會很複雜,所以 LabVIEW
中有一個方便的公式節點,讓你更輕鬆地表達數學公式。Functions> All Functions >
Structures>Formula Node 選擇公式節點後在方框內鍵入數學式,並選擇 Add Input 與 Add Output。 利
用接線的方式將數值連結到所增加的輸入與輸出點上,注意在每個方程式的敘述結尾處都要加上一個
分號。例:公式 1234 23 +++= xxxy
⊳⊳⊳⊳ 實做練習二實做練習二實做練習二實做練習二 ���� 複習布林元件複習布林元件複習布林元件複習布林元件(Boolean)的使用的使用的使用的使用
請寫出一程式,將任意一個十進位的數值轉換成布林二進位陣列。
(十進位數值使用整數,布林二進位陣列使用圓形 LED 燈泡)
產生一個空的陣列,再從控制面版加入 Round LED,並往右拖曳成多個 Round LED 陣列
Function > Boolean > Number To Boolean Array
- 6 -
複習複習複習複習 LabVIEW 程式結構程式結構程式結構程式結構(Sequence、、、、Case、、、、For Loop、、、、While Loop)
⊳⊳⊳⊳ 實做練習三實做練習三實做練習三實做練習三 ����七段顯示器七段顯示器七段顯示器七段顯示器(0~9) --- Using 條件結構條件結構條件結構條件結構(Case)
還記得嗎?我們曾經練習用順序結構(Sequnce)寫過一個七段顯示器,讓七個方形燈泡輪流發亮,顯示 0~9 的數字。現在
我們使用條件結構(Case),自行選擇這個七段顯示器該亮出什麼數字來~
� 程式說明:
程式執行順序由數字選擇元件來決定,若選擇 0 的話,則會執行第一層的迴圈(0,Default),人機介面上會由布
林燈泡形成一個 0 的數字; 若選擇 1 的話,則會執行第二層的迴圈(1),人機介面上會由布林燈泡形成一個 1 的
數字。以此類推,即可顯示由 0~9 的數字。請練習!
人機介面面版區
程式方塊編輯區
- 7 -
⊳⊳⊳⊳ 實做練習四實做練習四實做練習四實做練習四 ���� 七段顯示器七段顯示器七段顯示器七段顯示器(0~9) --- Using 次數迴圈次數迴圈次數迴圈次數迴圈(For Loop)
人機介面面版區 程式方塊編輯區
� 程式說明:
迴圈執行次數索引值 N 會從 0 往上執行共 99 次,每一次的次數索引值會先跟 10 做除法運算。例如 8
除以 10 會於 8,所以個位數會顯示 8,而十位數則為 0。倘若索引值數到 15 時,15 除以 10 會餘 5,
而商數等於 1,那麼個位數會變成 5,十位數則顯示 1。以此類推。
Tip5 … 時間函數時間函數時間函數時間函數
(1). Wait (ms):::: Functions>All Functions>Wait (ms)
功能:讓 VI 在等待特定時間(毫秒)後才繼續執行
(2). Wait Until Next ms Multiple:::: Functions>All Functions>Wait Until Next ms Multiple
功能:能夠使 LabVIEW 在等待輸入時間的整倍數後才繼續執行 VI,讓迴圈以特定的時間間隔來執行,
或者是使兩個動作能夠同步進行
millisecond timer value
Wait (ms)
milliseconds to wait
millisecond timer value
Wait Until Next ms Multiple
millisecond multiple
- 8 -
Tip6 … 移位暫存器移位暫存器移位暫存器移位暫存器
可作為 For Loop 及 While Loop 使用,是一種特殊型態的變數,用來作為迴圈的本次與下次之間的數值
轉移。右邊的暫存器接收並儲存了第一次迴圈完成的資料,並且在下一次迴圈完成前,將資料送至左
邊的暫存器中。資料運作順序說明如下圖所示。
增加移位暫存器的方法:
⊳⊳⊳⊳ 實做練習五實做練習五實做練習五實做練習五 ���� 由左往右的跑馬燈由左往右的跑馬燈由左往右的跑馬燈由左往右的跑馬燈 --- Using 條件迴圈條件迴圈條件迴圈條件迴圈(While Loop) + 移位暫存器移位暫存器移位暫存器移位暫存器(Shift Register)
- 9 -
� 程式說明:
i 值從 0 開始執行,0+1=1,將此結果值 1 送至右邊移位暫存器,並且判斷 1≧11 是 False,所以繼續進
行下一迴圈,並在下一迴圈開始前將數值 1 送至左邊最上面的移為暫存器。
接下來執行 i=1,1+1=2,此結果值 2 被送至右邊移位暫存器,並且判斷 2≧11 是 False,所以繼續進行
下一迴圈,並在下一迴圈開始前將數值 2 送至左邊最上面的移為暫存器,而原本在左上暫存器中的 1
則被送至左中的暫存器中。以此類推,當執行到 i=10 時,10+1=11,11≧11 被判斷為 True,程式執行
就會停止。左邊移位暫存器中的數字先被運算為 2 的 x 次方,再轉為布林二進位。可參考下面十進位
轉二進位之算法。 02 代表第一個燈, 12 代表第二個燈, 22 代表第三個燈… 02 代表左一, 12 代表左二 22 代表左三
十進位 二進位 ( 注意!燈的編號和此數字排列反向 )
0 0 0
02 1 1 01 2021 ×+× 2 10
01 2121 ×+× 3 11 012 202021 ×+×+× 4 100
012 212021 ×+×+× 5 101 012 202121 ×+×+× 6 110
012 212121 ×+×+× 7 111
整個動作會由第一排的第一個燈開始亮,等亮到第一排的第二個時,第二排的第一個燈也會亮起。
Loop 外面有一個整數值 0,它在此扮演的角色是起始你的暫存器內之數值。若少了”起始”這個動作
的話,下一次執行時,移位暫存器將會包含前面執行剩下來的數值。
2 的 x 次方:Function > Numeric > Logarithmic > Power of 2
- 10 -
⊳⊳⊳⊳ 實做練習六實做練習六實做練習六實做練習六 ���� 由左往右行進之由左往右行進之由左往右行進之由左往右行進之 LED 字幕字幕字幕字幕
由左往右跑的 LED 字幕
以 2 為底之指數函數:Function > Numeric > Scale by Power of 2 ( ex~ 027 × = 7)
建立陣列:Function >Array > Build Array
在此建立之陣列是二維陣列,所以產生之 LED 陣列要先將它轉成二維陣列
:對新產生之陣列,按右鍵,選擇”Add Dimension”,接著在右下角拖曳成
你要的陣列大小。
� 程式說明:
LED 亮燈顯示為字母 I,起始時,第一行及第五行皆是亮第 1、2、3 顆燈
(111=7,起始表示為 027 × ),第二、三、四行皆亮第二顆燈(10=2,起始表示為 022 × ),i 值往上增
加為 1 時,數值由起使之 02× ,變為 12× ,於是亮燈往右走一個。以此類推當 i=11 時,完成循環字幕
之動作。
繪製圖表繪製圖表繪製圖表繪製圖表 (Waveform Chart) 與與與與 圖形圖形圖形圖形(Waveform Graph)
- 11 -
圖表圖表圖表圖表(Waveform Chart)
繪製的動作是將 X 軸對 Y 軸的數值用圖形顯示,通常 Y 軸代表繪製的資料數值,而 X 軸為時間。波形
圖表的顯示元可以允許單點或多點資料的顯示。此顯示元大多使用在迴圈之內,用來持續並顯示先前
的資料及繪製新的資料,使其有連續並更新資料的顯示能力。(通常每個 Y 軸數值的產生受限於迴圈
的疊代,所以 X 軸代表著疊代的次數。)雖然 LabVIEW 只有一種圖表顯示元,但對於連續資料確有
三種不同的更新模式。
圖表更新模式
- 12 -
⊳⊳⊳⊳ 實做實做實做實做練習七練習七練習七練習七 ���� 單點繪製圖表單點繪製圖表單點繪製圖表單點繪製圖表 – 繪製一個正弦函數波形繪製一個正弦函數波形繪製一個正弦函數波形繪製一個正弦函數波形
正弦函數:Function > Numeric > Trigonometric > Sine
尋找波形振幅:Function > Waveform > Analog waveform > Waveform Measurement > Amplitude and Levels
尋找最大、最小值:Function > Waveform > Analog waveform > Waveform Min Max
� 程式說明:
由於 LabVIEW 的角度是弳度量,所以設計程式時必須要用弳度量的單位計算。例如:當 For Loop 迴
圈執行至第 51 次時,即 i=50,依照程式計算 100502 ÷×π 恰等於π , 0sin =π ,所以在此設計 N=101,
恰使圖形上只出現一個完整 sine 波。在此範例中,單點輸入圖表,僅需簡單地將一個產生值(或說量
測值)與圖表的程式方塊圖做連接,每次完成一個迴圈,可以輸入一組之資料點進入圖表。
- 13 -
⊳⊳⊳⊳ 實做實做實做實做練習八練習八練習八練習八 ���� 多點繪製圖表多點繪製圖表多點繪製圖表多點繪製圖表 – 同時同時同時同時繪製一個正弦函數繪製一個正弦函數繪製一個正弦函數繪製一個正弦函數++++餘弦函數餘弦函數餘弦函數餘弦函數波形波形波形波形
人機介面面版區 程式方塊編輯區
Bundle(組合綜合集)將資料源連接在一起:Function > Cluster > Bundle
� 程式說明:
波形圖表亦可繪製一組以上的資料,然而你不能將數個程式方塊圖的資料源共同連結在單一的圖表接
點上。必須先使用 Bundle 功能,將所有資料源連結在一起。
Tips for ChartTips for ChartTips for ChartTips for Chart ……………………
����清除圖表清除圖表清除圖表清除圖表 ––––清除圖表內舊的資料點清除圖表內舊的資料點清除圖表內舊的資料點清除圖表內舊的資料點。。。。對對對對著圖表的著圖表的著圖表的著圖表的圖示按右鍵跳出圖示按右鍵跳出圖示按右鍵跳出圖示按右鍵跳出『『『『彈出選單彈出選單彈出選單彈出選單』』』』> Clear Chart> Clear Chart> Clear Chart> Clear Chart
����捲軸捲軸捲軸捲軸 -------- 圖表的捲軸圖表的捲軸圖表的捲軸圖表的捲軸功能功能功能功能,,,,可以隱藏或顯示出來可以隱藏或顯示出來可以隱藏或顯示出來可以隱藏或顯示出來,,,,你可以藉由捲軸的功能來觀看圖表上舊的資料點你可以藉由捲軸的功能來觀看圖表上舊的資料點你可以藉由捲軸的功能來觀看圖表上舊的資料點你可以藉由捲軸的功能來觀看圖表上舊的資料點。。。。
::::彈出選單彈出選單彈出選單彈出選單>>>>Properties>Appearance>(Properties>Appearance>(Properties>Appearance>(Properties>Appearance>(勾選勾選勾選勾選)Show x scroll bar)Show x scroll bar)Show x scroll bar)Show x scroll bar
����圖表顯示長度圖表顯示長度圖表顯示長度圖表顯示長度 –––– 一個圖表所暫存一個圖表所暫存一個圖表所暫存一個圖表所暫存的資的資的資的資料點預設為料點預設為料點預設為料點預設為 1024102410241024 點點點點,,,,若要暫存更長或更短的點數時若要暫存更長或更短的點數時若要暫存更長或更短的點數時若要暫存更長或更短的點數時,,,,可更改可更改可更改可更改 Chart History Chart History Chart History Chart History
LengthLengthLengthLength,,,,但更改暫存點數並非影響圖表螢幕所顯示點數的多寡但更改暫存點數並非影響圖表螢幕所顯示點數的多寡但更改暫存點數並非影響圖表螢幕所顯示點數的多寡但更改暫存點數並非影響圖表螢幕所顯示點數的多寡。。。。暫存的資料點數上限為暫存的資料點數上限為暫存的資料點數上限為暫存的資料點數上限為 100,000100,000100,000100,000 點點點點。。。。
::::彈出選單彈出選單彈出選單彈出選單>>>>Chart History LengthChart History LengthChart History LengthChart History Length
����堆積與覆蓋繪圖堆積與覆蓋繪圖堆積與覆蓋繪圖堆積與覆蓋繪圖 –––– 多點繪製圖表時多點繪製圖表時多點繪製圖表時多點繪製圖表時,,,,可選擇多個資料點繪製在同一個可選擇多個資料點繪製在同一個可選擇多個資料點繪製在同一個可選擇多個資料點繪製在同一個 YYYY 軸上軸上軸上軸上,,,,稱為稱為稱為稱為 overlaidoverlaidoverlaidoverlaid 繪製繪製繪製繪製;;;;或是每個繪製點有或是每個繪製點有或是每個繪製點有或是每個繪製點有
其個別的其個別的其個別的其個別的 YYYY 軸使尺度軸使尺度軸使尺度軸使尺度,,,,稱為稱為稱為稱為 stackedstackedstackedstacked 繪製繪製繪製繪製。。。。
::::彈出選單彈出選單彈出選單彈出選單>>>>Overlay Plots / Stack PlotsOverlay Plots / Stack PlotsOverlay Plots / Stack PlotsOverlay Plots / Stack Plots
- 14 -
圖形圖形圖形圖形( Graph )
不同於圖表能每次一一繪製資料點的功能,圖形繪製資料點的方式是預先產生完成整比資料列,再顯
示曲線,所以圖形每次繪製曲線時並無法法先前的資料並列。LabVIEW 提供多種相當好用的圖形繪
製:波形圖形(Waveform graph)、XY 圖形(XY graph)、強度圖形(Intensity Graph)…等等。以下將介紹波
形圖形與 XY 圖形。
(1) 波形圖形波形圖形波形圖形波形圖形( Waveform Graph )
⊳⊳⊳⊳ 實做實做實做實做練習九練習九練習九練習九���� 單點繪製單點繪製單點繪製單點繪製的波形的波形的波形的波形圖形圖形圖形圖形
� 程式說明:
利用 For Loop 及亂數產生資料,在人機介面上方處可以看到資料的型態是一維的數值陣列,我們直接
將資料輸入波形圖形的接點上(資料列即形成圖形之 Y 軸數值)。這種方法,預設值是假設 X 軸的初
始值為零( 00 =X ),且 X 軸的差值(集每次 X 軸上的增加量)為 1( 1=∆X )。
若你想改變圖形上的時間尺度(X 軸),需要將 0X 、 X∆ 與資料列一起聚集成叢集,並將此叢集接線至
圖形的接點上。你可以仿造下面程式方塊編輯區的作法。
- 15 -
⊳⊳⊳⊳ 實做實做實做實做練習十練習十練習十練習十���� 多點繪製多點繪製多點繪製多點繪製的波形的波形的波形的波形圖形圖形圖形圖形
� 程式說明:
若要在波形圖形上繪製多於一個以上的資料列,只要在單點繪製圖形上將資料列增加維度即可 。在
這個範例中,我們做的就是兩個 1D 的陣列,建造為一個 2D 陣列。只不過這兩個陣列,我們為了自
訂 0X 與 X∆ 值,所以將它們各自轉成 Cluster。所以其實,我們是建造一個 2D 的 Cluster Array,再將
其輸入波形圖形的程式方塊接點。
�波形圖形是將 2D 陣列分離成兩個列向量,然後分別繪製成兩條曲線。它的預設是繪製列向量,若
你的資料是以行向量的方式整理,你必須在繪製圖形之前先將資料陣列做轉置(Transpose)!(轉置是
將列向量的數值與行向量的數值相互置換,例如:轉置一個 102 × 的陣列,就會得到一個 210 × 的陣
列)。關於此點,在後面儲存檔案時,也會應用得到!
- 16 -
(2) XY 圖形圖形圖形圖形( XY Graph )
XY 圖形上的每一個點位置是由個別的圖形上的每一個點位置是由個別的圖形上的每一個點位置是由個別的圖形上的每一個點位置是由個別的 XY 陣列所決定陣列所決定陣列所決定陣列所決定。。。。
⊳⊳⊳⊳ 實做實做實做實做練習十一練習十一練習十一練習十一����單點單點單點單點繪製繪製繪製繪製的的的的 XY 圖形圖形圖形圖形 -- 描繪描繪描繪描繪出一個圓形圖出一個圓形圖出一個圓形圖出一個圓形圖
(正弦與餘弦函數) :Function > Numeric > Trigonometric > Sine&Cosine
� 程式說明:
當 i=0 時,sin0=0、cos0=1 ; i=25 時, π5.0sin =1、 π5.0cos =0 ; i=50 時, πsin =0、 πcos = -1 ; i=75 時,
15.1sin −=π 、 05.1cos =π 。在此範例中,以正弦函數的值為 X 軸、餘弦函數的值為 Y 軸,以上四個
i 值分別在 XY 圖形中產生:(0,1)、(1,0)、(0,-1)、(-1,0) 四個點。以此類推,共有 101 個點可繪出如上
圖所示的圓圈。
⊳⊳⊳⊳ 實做實做實做實做練習十二練習十二練習十二練習十二����多點繪製的多點繪製的多點繪製的多點繪製的 XY 圖形圖形圖形圖形 -- 在在在在 XY 圖形上顯示出兩個圓圖形上顯示出兩個圓圖形上顯示出兩個圓圖形上顯示出兩個圓
� 程式說明:
- 17 -
此例與練習十一很相似,只是將其中一個波形除以二,再以建立陣列合併就可以繪出兩個同心圓了!
檔案檔案檔案檔案 I/O 函數函數函數函數
檔案 I / O 的操作,可在磁碟檔案中取出資訊或存入資訊。在 LabVIEW 中有許多處理檔案存取的函數,
可由 Function > File I/O 中選取。在 File I/O 子面版中,第一行是屬於高階的函數,只需要一些簡單的
參數設定即可,但功能亦較簡單。第二行是屬於較低階的函數,功能較多,所需的設定亦較複雜。檔
案函數需要一個檔案路徑的輸入,此路徑名稱看起來像是一個字串 ; 若你並未將檔案路徑接線,檔
案函數將會彈出一個對話框,要求你選取或輸入一個檔案名稱。當被呼叫的時候,檔案函數會執行三
個步驟,第一:開啟舊檔或建立一個新的檔案。第二:讀取或寫入檔案資料。第三:關閉檔案。在此,
我們僅介紹高階檔案存取函數中的”Write to spreadsheet. vi”及”Read from spreadsheet. vi”兩種較簡
易的存與取函數。這兩種 VI 建立/讀取的檔案僅是一般的文字檔,你可以用一般可開啟文字檔的程式
來瞧瞧資料內容長得是什麼樣。
���� Write To Spreadsheet File
Write To Spreadsheet File 轉換 2D 或 1D 陣列的數字成為文字字串,然後將此字串列儲存於一新的表格
式文字檔案中或增添於一舊檔中,利用一般編輯文書軟體(Excel, WordPad, Origin …),就可以讀取檔案
內容。我們可在寫入檔案前設定是否轉置此資料陣列,獲釋選擇覆蓋或增添資料。在 LabVIEW 中,
資料陣列是以列(row)定義,而一般我們文書編輯軟體(ex: Excel)讀取時,則通常定義為行(column)的讀
取方式。所以應該注意你在運用時是否需要做 2D 陣列的轉置。
���� Read From Spreadsheet File
Read From Spreadsheet File 可由表格式文字檔內經由 offset 的設定,讀取特定的列數(row),並轉換成
數值的二維數列。
- 18 -
⊳⊳⊳⊳ 實做實做實做實做練習十三練習十三練習十三練習十三���� 存檔與讀檔的應用存檔與讀檔的應用存檔與讀檔的應用存檔與讀檔的應用
� 程式說明:
程式開始執行時,選擇欲產生函數波形即可顯示在示波圖形上。選擇波形放大和取樣時間將可調整波
形。若按下存檔按鈕(此按鈕按下表示 True)即可將波形資料儲存於選擇之檔案內。若按下讀取按鈕(按
下表示 True),且你選擇的讀取檔案是剛剛你存檔時的檔案,那麼你將會在讀取示波器上得到將相同
的波形。程式方塊圖分成 A 部分與 B 部分,A 部分是模擬示波器的顯示,B 部分的程式內容則是為
了達成存檔與讀檔的功能。
你可以試試看,直接將剛剛儲存的檔案,匯入 Excel 或 Origin,將資料繪製成圖,比對看看是否和人
機介面中的讀取示波器顯示的一樣。你也可以試著不輸入布林函數到程式方塊編輯區內存檔的
- 19 -
Transpose(轉置),然後再將檔案匯入 Excel 或 Origin,看看有何差別。
第貳第貳第貳第貳部分部分部分部分、、、、資料擷取的基礎應用資料擷取的基礎應用資料擷取的基礎應用資料擷取的基礎應用
資料擷取(DAQ)是量測真實訊號的簡單過程,如透過電壓將訊息帶入電腦中來分析、辨別、儲存或
是做其他處理。我們這裡所使用的DAQ卡,是NI公司的ADDA卡,它可以將類比訊號(analog)轉換成數
位訊號(digital),或是將數位訊號轉換成類比訊號。將類比訊號輸入電腦之前,必須先轉換成數位訊號,
如此電腦能才夠分析處理。本實驗中,電腦可以藉著 DAQ 卡來和外界做溝通,透過LabVIEW程式的
配合,我們便可以利用電腦取代示波器與訊號產生器的功能。實驗器材裝置如下:
����ADDAADDAADDAADDA 卡的使用卡的使用卡的使用卡的使用::::
我們使用的 ADDA 卡是 USB 介面。請先將裝置連接至電腦上,
確定電腦已經讀到裝置並已安裝好,再開啟 LabVIEW 程式。
ADDA 卡如右圖所示,一邊是類比訊號的輸入\出,
另一邊是數位訊號的輸入\出。
(以下以 LabVIEW7.1 版為例)開啟 LabVIEW 程式後,建立新的 vi,
選擇開新檔如右圖: ,之後跳出的新視窗,會產生非常方便的
『DAQ Assistant』,對它雙點擊之後,即可檢視你的輸入訊號。這裡要特別注意的是:讀取訊號的頻
率,要大於輸入訊號的頻率。
⊳⊳⊳⊳ 一一一一、、、、讀取單一讀取單一讀取單一讀取單一訊號產生器訊號產生器訊號產生器訊號產生器的訊號的訊號的訊號的訊號 ++++ 傅立葉分析傅立葉分析傅立葉分析傅立葉分析 ����
訊號產生器 / Chua’s Circuit ADDA 卡 電腦+顯示器
示波器(用來監看)
- 20 -
�請分別由訊號產生器輸入弦波與方波,看看傅立葉分析產生之頻率和理論上預測是否相符?
�將訊號用檔案 I / O 儲存,以 Origin 讀取做圖,和 graph 螢幕上所讀到的是否相同?
⊳⊳⊳⊳ 二二二二、、、、讀取兩個不同頻率之訊號讀取兩個不同頻率之訊號讀取兩個不同頻率之訊號讀取兩個不同頻率之訊號 ++++ 將兩個波將兩個波將兩個波將兩個波疊加疊加疊加疊加 ++++ 傅立葉分析傅立葉分析傅立葉分析傅立葉分析 ����
�將訊號用檔案 I / O 儲存,以 Origin 讀取做圖,和 graph 螢幕上所讀到的是否相同?
訊號產生器 1 ADDA 卡 電腦 FFT
訊號產生器 2
- 21 -
�兩訊號疊加之後,傅立葉分析產生之頻率和理論上預測是否相符?
⊳⊳⊳⊳ 三三三三、、、、ChuaChuaChuaChua’’’’s Circuit s Circuit s Circuit s Circuit ++++ XY graph XY graph XY graph XY graph ++++ 傅立葉分析傅立葉分析傅立葉分析傅立葉分析 ����
�將 Chua’s Circuit 訊號同時輸入示波器及 DAQ 卡(使用 T 形頭),示波器螢幕及電腦螢幕顯示之圖
形是否相同?若不同,造成差異的原因是什麼?
�將訊號用檔案 I / O 儲存,以 Origin 讀取做圖,和 graph 螢幕上所讀到的是否相同?
問題與討論問題與討論問題與討論問題與討論
1. 將實驗存取的數據利用繪圖軟體出來,並回答步驟中的問題。
資資資資料與例題來源料與例題來源料與例題來源料與例題來源::::
1. LabVIEW 程式設計入門 , 徐瑞隆 編著 , 新文京出版
2. LabVIEW 基礎篇 , 蕭子健、儲昭偉、王智昱 編譯 , 高立圖書出版
3. LabVIEW 入門手冊 ,林踐 編著 凡異出版
4. http://www.phys.ncku.edu.tw/ultracold/paper/aroma.pdf
5. http://intelligent.mech.yzu.edu.tw/course/experiment/experiment_handout/MEexperiment_2006.doc
6. http://www.gauss.com.tw/logic/ch1/1-2.htm
7. http://www.cinelformacao.com/labview/files/usb6008/usb6008intro.htm
8. http://www.pt.ntu.edu.tw/hmchai/PTcomputer/hLabVIEW/LabVIEWindex.htm
Chanel 1
Chanel2
Chua’s Circuit ADDA 卡 電腦 FFT
XY mode