1. 背景
Labview這個軟體,從大學到現在,裝了解除安裝,解除安裝了又裝。來來回回不下10次了,那本大學時的教材Labview 2010基礎教程,一直沒丟,但也一直沒看過。最近又裝回來了,準備簡單的系統性倒騰一下,當是個瞭解。
- 一些雜項:
- 快捷鍵:
Ctrl+N
:建立一個Labview專案Ctrl+E
:切換前後皮膚Ctrl+R
:執行快捷鍵Ctrl+S
:儲存Ctrl+B
:去掉所有斷線
- 如何打包vi程式給沒有labview的地方使用。參考Labveiw如何生成應用程式
- 快捷鍵:
2. 順序結構
- 如圖,前皮膚和後皮膚是VI程式的兩個部分,如果儲存了工程檔案再次開啟只有前皮膚的話,可以按
Ctrl+E
切換到後皮膚。 - 平鋪順序結構就是從左向右依次執行的結構,右鍵
平鋪式順序結構
,在後面新增幀
,即可增加一幀結構
- 如下圖的工具欄,有一些比較高效的工具:
單箭頭
:執行一個週期,前後皮膚效果一樣迴圈箭頭
:連續執行,前後皮膚效果一樣紅色六邊形塊
:停止執行||
:暫停燈泡
:檢視資料流向,這個點選可以檢視資料流,以及資料中斷,用來分析程式。vi的程式資料流動和擺放位置沒有關係。
- 後面還有
在平鋪結構內的單步執行
,跨過平鋪結構的單步執行
等待 - 後面是一些程式對齊快捷鍵
- 最後
帶個小掃把
:的圖示是整理所選部分程式碼
- 下圖右邊的圖示雙擊可以更換工程圖示,左邊的圖示右鍵可以更換模式,暫時我也沒理解這個模式有什麼具體作用。
- 如圖右鍵,可以把平鋪式順序結構變成層疊式順序結構:
- 替換過後,後皮膚看起來會簡潔一點,相當於於把原來平鋪的幀打包成了一個陣列,一次顯示一個陣列元素,可以
切換顯示幀
和設定當前幀
,不影響資料流向:
- 插入一個
布林量
以及True
和False
常量方法:
3. 迴圈結構
- 巢狀在順序結構中的
FOR
迴圈和巢狀在FOR迴圈中的順序結構
,如圖:
- 在上圖中,順序結構有4層,依次執行,每一層都加了一個定時器(單獨的),右鍵定時器
建立常量
,即可快速為定時器設定常量,ms為單位:
- 幾乎每層都用到的字串和布林是
區域性變數
,他是第三層和第四層的控制元件的中間變數,如圖可建立一個控制元件的區域性變數:
- For迴圈中,
i
表示當前迴圈次數;N
表示總迴圈次數(從0開始);For迴圈裡面巢狀的順序結構裡面含有定時器,那麼表示一次for迴圈的實際需要時間包括定時器的執行完成時間:
- 隨機數生成器: 輸入的兩個常量是生成器設定的
上下限
,雙擊隨機數生成器,可以看到它的預設設定值,但是此處用不到;U64
表示無符號64位整型:
- labview的資料型別如下:
- 在上圖中,順序結構有4層,依次執行,每一層都加了一個定時器(單獨的),右鍵定時器
SGL 單精度32位
DBL 雙精度64位
EXT 擴充套件精度128位
FXP 定點資料,一種二進位制資料
I8 單位元組整型 -128~127
I16 雙位元組整型 -32768~32767
I32 長整型 -2147483648~2147483647
I64 64位整型 -1e19~1e19
U8 無符號單位元組整型 0~255
U16 無符號雙位元組整型 0~65535
U32 無符號長整型 0~4294967293
U64 無符號64位整型 0~2e19
CSG 單精度複數 32位單精的實數和虛陣列成
CDB 雙精度複數 64位IEEE單精的實數和虛陣列成
CXT 擴充套件精度複數 128位
在Labview中浮點數表示為橙色
在Labview中整數表示為藍色
在Labview中複數跟浮點數一樣表示為橙色
在Labview中布林值表示為綠色,8位二進位制表示。8位全為零表示FALSE,非零的值表示為TRUE
- While迴圈,此處建立了一個
波形圖表
用來顯示隨機數波形圖:
- 迴圈中的定時器的作用:增加單次迴圈的時候,以免重新整理過快。
- 停止按鈕用
False
常量固定住了,目的是讓它一直迴圈下去;
- 如果想手動停止,可以換成一個停止按鈕。(如果想要
暫停
而不是停止迴圈,情況就要複雜一點,可以自己做程式來實現,這裡就不試了)
- 對於
For迴圈
而言,如果想要條件停止,可以右鍵For迴圈,勾選條件接線端
條件結構
- 條件結構就類似與
Switch
,邏輯是除了羅列出來的分支,其他分支一律按預設處理
。 - 對著條件結構框右鍵,可以選擇
增加一條分支
或者刪除一條分支
。 - 條件分支
?
的左邊輸入如果是bool量,分支可以是真或者假,真假條件框內寫各自的邏輯;左邊輸入如果是數值,可以填具體的資料,也可以填範圍(“10..20”表示10到20的區間,“21..”表示>=21的區間);左邊輸入如果是字串,可以填字串的值。 - 案例1,比大小和比區間範圍:
- 案例2,在while迴圈裡面持續判斷按鈕的狀態並反饋相應的字串:
事件觸發結構
- 平時用過C# winform或者HMI的事件處理的,對這個觸發方式應該不會陌生。
- 下圖寫的一個按鈕觸發事件,開啟按鈕值改變的時候判斷,如果燈的值是1,就變成0;反之如果燈的值是0,就變成1。
- 事件觸發結構最好放到
while
迴圈裡面,不然只會被觸發一次程式就結束了。 - 步驟:
- s1:拉出一個事件結構
- s2:拉出一個while迴圈,把事件結構丟迴圈裡,在新增兩按鈕,一個指示燈,都放迴圈裡;迴圈的
條件接線端
常置FALSE或者設定為其他觸發條件,不然要報錯。
- s3:右鍵事件結構,找到新增事件分支,選擇事件分支對應的控制元件,事件選擇值改變
- s4: 現在可以在對應的
觸發事件
裡面寫邏輯了;這裡的邏輯是每次值改變時取反燈的狀態。我習慣引用按鈕或者燈的區域性變數
到事件中去做控制或者改變值;區域性變數剛拖出來的時候預設是寫入
,如圖右鍵可以轉換為讀取
,注意三角箭頭的位置變化:
- s5:按需設定
超時
報警事件,小沙漏這裡用來設定超時時間
- 注意:此處while迴圈一次的過程是事件被觸發一次,如果去抓取
i
的變化,就可以知道這個資料流過程。
禁用結構
- 簡單理解,就是註釋;可以註釋掉
禁用結構
框內的所有程式碼; - 禁用結構的設定值可以是
禁用
或者啟用
,方便在除錯的時候選擇禁用和啟用一段程式碼
陣列和簇
- 陣列,就是平時程式裡使用的陣列,有一維陣列也有多維陣列,注意下標
- 簇,就是結構體
和西門子PLC通訊
- 可以考慮走TCP/IP協議,暫時沒找到labview有支援S7協議。