電飯鍋數(shù)據(jù)采集平臺的設計
(2)“倍增繼電器”公式模塊
本文引用地址:http://www.biyoush.com/article/201812/396098.htm分離出“DAQ助手”數(shù)據(jù)端三個通道采集到的信號,將ai0、ai1通道的信號連至“電壓-溫度公式”模塊得出鍋頂和鍋底溫度信號。ai3通道的繼電器電壓信號無須轉換,但若將繼電器電壓波形與溫度波形顯示在同一波形圖中,繼電器電壓幅度與溫度的幅度會相差很大,為了后期便于觀察和分析,構建“倍增繼電器”的幅值公式模塊,將繼電器的幅值放大20倍[2]。
4.3信號存儲程序
用“寫入測量函數(shù)”將轉換后的溫度信號與繼電器輸出的電壓信號寫入PC機內的存儲單元中,用戶可在PC機中創(chuàng)建任意路徑的文件來存儲采集的數(shù)據(jù),文件類型自定義,此次定義為.xls。用“布爾控件”(命名為“錄波啟動”)來控制寫入[3]。這樣,溫度數(shù)據(jù)和電壓數(shù)據(jù)最終保存在PC機文件中,編程如圖5所示。
4.4信號顯示程序
用“讀取測量函數(shù)”讀取PC機中已寫入的數(shù)據(jù)文件,在其“EOF?”接線端中創(chuàng)建顯示控件,命名為“加載完畢”,標志加載波形完畢,波形加載完畢時,此控件為“真”。在信號接線端用“收集信號”函數(shù)接收采集到的數(shù)據(jù),用“波形圖”控件進行顯示[4]。為簡化程序界面,將其嵌套在“事件結構”中的一個分支中,輸入端創(chuàng)建“布爾開關”(命名為加載波形),觸發(fā)事件為“加載波形;值改變”,來控制讀取文件工作。為保證讀取工作的連續(xù)運行,外加“while”循環(huán)結構,“停止”端口連至“EOF?”。信號存儲模塊編程如圖6所示。
4.5讀取占空比程序設計
繼電器的電壓信號輸出的波形類似于方波。讀取其占空比的程序分3部分實現(xiàn):波形的提取、通過編程識別繼電器電壓(即ai3信號)的波峰與波谷、識別出橫坐標,間接實現(xiàn)占空比的讀取,占空比就是一個周期內高低電平的長度與一個周期長度的比值。此部分程序嵌套在“事件結構”中的另一個分支,事件觸發(fā)為“水平調節(jié);值改變”。
(1) 波形的提取
使用事件結構第一分支中的“波形”的局部變量,在第二分支,作為“提取信號”的“信號”端,用“波形圖”顯示提取出的波形。創(chuàng)建此波形圖的屬性節(jié)點設置X軸標尺的最大值與最小值的調節(jié),將X標尺最大值的屬性節(jié)點的寫入端用滑桿控件來控制,命名為“水平縮放”,并使其為事件分支結構的驅動按鈕,意在控制X軸波形的縮放。采集的波形在有限的圖形空間下,會過于密集,不便觀察與讀取,因此創(chuàng)建波形圖的屬性節(jié)點使得X軸的標尺可見[5]。由此,可與“水平縮放”控件配合使用,將波形圖放大,調節(jié)X軸的標尺便可清晰觀察和讀取數(shù)據(jù),編程如圖7所示。
(2) 識別波峰與波谷
①波峰與波谷分界處的識別
索引出ai3信號中的元素,判斷大于50的元素,執(zhí)行最外層“條件結構”的“真分支”:內嵌一個“條件結構”,在分支選擇端創(chuàng)建“布爾”控件,為“真”時,用“數(shù)組插入”函數(shù)將數(shù)組大小作為索引號,使每次循環(huán)得到的數(shù)據(jù)按順序插入到數(shù)組中存儲,每次得到大于50的第一個數(shù)后,用平鋪順序結構將“布爾控件”置為假,并在最外層“條件結構”的“假分支”中將“布爾控件”又置為真,即將索引出的ai3信號中的元素小于50時將“布爾控件”置為真,這樣就能保證每次讀到的是第一個大于50的元素,并且保證下一次最外層條件結構為真時,還能正常執(zhí)行內嵌的“條件結構”?!癴or循環(huán)”中移位寄存器右端子最終得到的是數(shù)組:此數(shù)組存放的是ai3信號中所有幅度大于50的數(shù)據(jù)[6]。識別波峰與波谷的編程結構是對稱的,在此只介紹識別波峰的編程過程。
②波峰與波谷分界處坐標的識別在以上內嵌的條件結構中,同樣將“for循環(huán)”中的當前數(shù)組大小作為“數(shù)組插入”函數(shù)的索引號,使每次循環(huán)得到的數(shù)據(jù)按順序插入到另一數(shù)組中存儲,當前循環(huán)計數(shù)i作為數(shù)組元素的輸入端,由此,“數(shù)組插入”函數(shù)的輸出的新數(shù)組就是ai3信號中所有第一個幅度大于50的坐標。以上程序描述的編程結果如圖8所示。
(3) 占空比的讀取
此部分是把識別到的波峰與波谷分界處的橫坐標標識到波形圖中的編程過程。編程中,利用到波形圖屬性節(jié)點中的“注釋列表”來實現(xiàn)對波形圖的標識?!白⑨屃斜怼睂嵸|上是一個簇數(shù)組,在編程處理中將其元素索引到循環(huán)中進行運算和處理,再重新寫入注釋列表中[7]。
將注釋列表的元素索引出來,并將其作為“按名稱捆綁”函數(shù)的輸入簇的輸入端,對這些注釋列表簇元素進行操作,用戶可根據(jù)需求定義注釋列表中的元素。名稱的輸入端就是需要標識的橫坐標的內容,注釋的位置Position分為X軸和Y軸,由X軸和Y軸共同決定,將上一個“for循環(huán)”中移位寄存器的兩個右端子“按名稱捆綁”成簇連至Position,為了注釋的信息更加清晰,不重影,在LabelOffset中設置值偏移量,將注釋內容相對于X軸的偏移量設成20,相對于Y軸的偏移量每四個偏移i%3。注釋列表的輸出簇的接線端通過“數(shù)組插入”重新寫入到注釋列表中[8]。編程過程如圖9所示。
識別出波峰與波谷的編程結構是對稱的,在第二個“for循環(huán)”后用“數(shù)組插入”函數(shù)將注釋波谷的輸出簇插入到注釋波峰的后面,最后寫入到注釋列表的輸入端。最終完成標識的編程如圖10所示。
評論