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