999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

LabVIEW應用于自動控制系統的內存管理

2014-04-26 09:33:34趙靜張寧寧
計測技術 2014年3期
關鍵詞:程序功能管理

趙靜,張寧寧

(中航工業北京長城計量測試技術研究所,北京100095)

0 引言

在構建自動化控制系統時,計算機軟件編程是使得自動控制系統在無人參與情況下按照預期程序進行工作的關鍵所在。在預定程序的實現中,軟件編程不僅要實現所需的任務要求,而且在運行效率、差錯管理、系統維護等方面要付出更多的精力。由于無人工參與,某些想象不到的小錯誤可能會引起軟件的崩潰,進而嚴重威脅整個控制系統。

隨著自動控制系統的不斷擴展,所需要實現的功能越來越多,系統越來越龐大,軟件編程越來越復雜,然而計算機的內存資源是有限的,內存管理的目的就是如何高效、快速的為任務分配內存資源,并且在適當的時候釋放和回收資源,內存管理技術在編程中越來越受到重視。一個內存管理好的程序不僅可以提高工作效率,而且可以使系統更為穩定的運行,內存管理不好可能導致內存泄露,甚至內存耗盡而導致系統崩潰。

本文基于LabVIEW編程語言來介紹內存管理,通過匯總LabVIEW的一些內存管理技術以及一些編程技巧,以幫助LabVIEW編程者更好的實現自動控制系統的軟件編程。

1 自動控制系統的組成

自動控制系統一般包括控制器、被控對象以及執行機構。控制器即計算機及其內置板卡;被控對象即終端設備;執行機構即實現基本控制任務、數據采集任務等的硬件結構,如電機、電磁閥、數據采集儀等。圖1是一個簡單的自動控制系統的基本構架。

圖1 自動控制系統框圖

系統中的控制部分往往需要用到計算機的各種硬件資源口:串口、網口、GPIB口等,或者需要多功能采集卡的多功能通道來進行控制,這些系統資源端口在進行軟件編程時要注意及時的分配和釋放,如果釋放不當,會導致資源口的無效占用,可能導致再次使用時打開失敗。

系統本身具有自檢功能,這是在整個程序控制中首先要進行的工作,之后又不再需要進行頻繁操作,這就涉及到了系統資源的合理分配問題,如何使不常用的功能最少的占用內存資源,并能更好的提高運行效率。

在某些復雜系統中,數據量很大,占用的內存資源也會很大,如何在編程中注意內存資源的管理是提高數據處理量、提高運行效率的關鍵。

此外,系統還包括了實時采集數據、人機控制、報表操作等多個功能,合理的內存管理機制可以提高計算機多任務處理中的內存利用率,保證系統運行的穩定性和提高系統的運行效率。

2 自動控制系統編程中內存優化管理技巧

2.1 內存檢查工具

2.1.1 內存使用的查看工具

在VI屬性面板中的“內存使用”工具是用來查看VI內存占用情況的。它顯示了一個VI內存占用所包含的四個主要部分:前面板、框圖、代碼和數據,以及四個部分的總和。通過這個工具,我們可以方便的查看VI所占用的內存,更有針對性的進行優化。

2.1.2 查看數據的內存備份

通過本工具可以方便的找到產生內存拷貝的數據節點,更便于進行程序的優化設計,對某些不必要的內存拷貝,要盡量避免。此外,工具選項下的性能分析有幾個查看工具,靈活運用這些工具可以更方便的進行內存管理。

2.2 內存管理的優化

當打開一個主VI時,主VI連同它所有子VI的代碼和數據段都會被調入內存,但未打開的前面板和框圖并不會被調入內存,只有當主動查看VI的前面板或框圖時,才會被調用。基于LabVIEW的這種內存管理特性,介紹幾個優化LabVIEW程序的內存管理方法。

2.2.1 子VI的使用

一個復雜的自動控制系統的程序往往需要實現多個功能,將每個功能模塊用單獨子VI實現,雖然會增加額外的前面板和框圖空間,但并不增加額外的代碼和數據空間,因此也不會占用額外的內存資源。使用子VI還可以方便LabVIEW在結束子VI運行時及時回收內存資源,更進一步改善了內存的使用效率。

2.2.2 動態調用子VI

自動控制系統中有些功能在程序運行過程中只需要執行一次,例如:系統的自檢功能;有些功能在整個程序運行中需要不斷調用,例如:設備控制部分和數據采集部分。不常用的自檢功能采用動態調用VI方式,即只有在調用時該子VI時才加載到內存中,運行完后在內存中清除此VI;對常用功能采用普通調用方式,即系統在運行程序時就將此VI加載到內存中,只有退出主程序時,該VI才從內存中清除。動態調用程序框圖如圖2所示。

圖2 動態調用VI程序圖

合理利用兩種調用方式,可以提高內存利用率,避免不常用VI長期占用內存空間。

2.2.3 數據備份及緩存重用

自動控制系統中的數據處理部分,往往要涉及到大量的數據運算,有時要求把采集到的數據顯示成波形,LabVIEW程序主要是數據流驅動型的。數據傳遞到不同節點時往往需要復制一個副本。當對大的數組進行運算時,內存消耗很大,就是因為程序生成了過多的副本。

有些LabVIEW節點可以緩存重用,合理利用這些節點可以有效的提高內存使用率,減少備份。

1)移位寄存器的使用

移位寄存器是內存優化的一個重要節點,其在循環結構的兩端是強制使用同一塊內存的。圖3是對實現同一功能的兩種LabVIEW節點的編程比較。

圖3 移位寄存器節點比較

經過內存查看工具發現第一種方式大概占用了3.4 M的內存空間,第二種方式僅占用了1.2 M的內存空間。

2)元素同址操作

元素同址節點是另外一種強制數據緩存重用內存的一種方式。該節點用于數組的索引、替換,簇的綁定和解除以及任意元素的緩存重用,可以使更新數據或簇中元素時,不進行數據備份。圖4是同址操作結構的程序框圖。

圖4 元素同址節點應用

2.2.4 全局變量和局部變量的應用

在自動控制系統的人機交互編程中往往會用到大量的界面操作,針對同一控件的讀寫操作往往出現在程序的不同位置。這時就會用到界面元素的屬性特點或者使用局部變量來實現操作。另外,在數據處理的編程部分中,有些復雜的算法往往需要順序結構多步實現,這時也會用到局部變量來進行參數的傳遞。圖5是兩種編程方式的比較。

圖5 局部變量使用比較

經過測試發現,第一種方式的運行時間是191 ms,占用內存42.2 M;第二種方式的運行時間是159 ms,占用內存9.0 M。

局部變量和全局變量都會涉及到數據的備份,對某些大型數組的操作會導致內存的大量占用,可以利用以下方式避免局部變量的應用。

錯誤簇的方式不僅能使數據的傳輸保持一定的順序,而且可以避免局部變量的使用。錯誤簇的例子如圖6所示。

全局變量除了有內存備份的弊病之外,還存在競爭的問題。在程序的任何地方都可以隨意更改全局變量的值,容易造成其值被莫名其妙更改,且不便于程序的調試。全局變量在編程中可以通過使用隊列或者通告、事件結構等方式來盡量避免。

圖6 錯誤簇的妙用

2.2.5 防止內存泄露

在控制系統的設備控制部分和數據采集部分以及文件I/O部分,會經常用到設備端口的配置、采集卡任務的創建以及文件引用的創建。如果忘記關閉這些引用,就會導致內存泄露,由于內存泄漏是動態產生的,我們無法通過VI屬性面板來查看,但可以通過Windows自帶的任務管理工具來查看。也可以使用LabVIEW的Profile(Tools>>Advanced>>Profile VIs)工具來查看某個VI運行時內存的分配情況。

圖7是控制儀器和文件打開和關閉引用的例子。

圖7 防止內存泄露的程序框圖

2.2.6 減少數據備份

盡量使用占用資源較小的數據類型,例如使用16位整型數據,而不是雙精度浮點數;盡量要在循環內進行大量數據的運算操作;合理利用內聯VI。

3 實例分析

以一套傳感器的壓力溫度性能檢測系統為例,對內存管理進行實例分析。本系統的基本組成如圖9所示。

該系統是用于檢測傳感器在不同溫度、不同壓力情況下的輸出性能。主要實現的功能在圖10中列出。

圖9 壓力溫度試驗系統

圖10 軟件功能框圖

整個程序采用事件驅動機制,將事件響應節點放在順序框圖中,第一步是對硬件各種引用的打開操作,并進行差錯管理,一旦有錯誤就關閉引用,以避免出現錯誤時導致引用無法關閉而引起內存泄露。所有與主要功能無關的界面操作均在此步中實現,以避免在進行主要功能時影響運行效率;順序的第二部分是主要功能的實現,此部分全局變量主要用于存儲數值常量包括一些硬件的命令字符串,在自動控制循環中應用移位寄存器來實現數據的傳輸,例如壓力控制部分,需要循環得到實際壓力值,并通過平均值判斷是否到達指定標準值,此時應用移位寄存器而不是直接的數組累加方式來實現壓力值的平均值求取,溫度控制也類似;為了得到傳感器的性能分析,需要對采集到的大量數據進行數學計算,這時盡量應用錯誤簇取代局部變量的應用來實現計算的先后順序,且在數據運算時盡量保持運算中數值類型的一致性;順序的最后一步是對各種引用的正常關閉,以及文件的操作、界面元素的恢復等。

整個程序本著優化內存管理的思路,實現了要求的所有功能。

[1]李周華,嚴毅.軟件設計中的性能優化與內存管理[C]//廣西計算機學會——2004年學術年會論文集.2004.

[2]Jeffrey Richter.Windows核心編程 [M].北京:機械工業出版社,2000.

[3]魏海濤,姜昱明,李建武,等.內存管理機制的高效實現研究[J].計算機工程與設計,2009(16):3708-3712.

猜你喜歡
程序功能管理
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
棗前期管理再好,后期管不好,前功盡棄
今日農業(2022年15期)2022-09-20 06:56:20
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
關于非首都功能疏解的幾點思考
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
“這下管理創新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
人本管理在我國國企中的應用
現代企業(2015年8期)2015-02-28 18:54:47
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 无码免费试看| 少妇精品久久久一区二区三区| 亚洲国产精品久久久久秋霞影院| 国产在线拍偷自揄观看视频网站| 国产国拍精品视频免费看 | 亚洲永久色| 91精品小视频| 精品久久人人爽人人玩人人妻| 免费jizz在线播放| 亚洲男人的天堂在线| 色哟哟色院91精品网站 | 黄色成年视频| 九九久久精品免费观看| 国产69囗曝护士吞精在线视频| 欧美第一页在线| 区国产精品搜索视频| 日本成人一区| 欧美人人干| 日本成人一区| 亚洲A∨无码精品午夜在线观看| 大香网伊人久久综合网2020| h网址在线观看| 免费看av在线网站网址| 玖玖精品在线| 中文字幕啪啪| A级毛片高清免费视频就| 亚洲中文无码h在线观看| 亚洲91在线精品| 四虎在线观看视频高清无码| 日韩小视频在线观看| 一本大道香蕉中文日本不卡高清二区| 欧美成人手机在线观看网址| 国产精品一区二区不卡的视频| 国产午夜精品一区二区三区软件| 99资源在线| 九月婷婷亚洲综合在线| 97久久精品人人做人人爽| 丰满人妻久久中文字幕| 中文字幕 日韩 欧美| 国产99视频免费精品是看6| 欧美日韩亚洲国产| 成人免费午夜视频| 国产欧美精品午夜在线播放| 成人久久18免费网站| 韩日免费小视频| 色综合天天操| 国产精品自拍合集| 欧美国产精品不卡在线观看| 波多野结衣一区二区三区四区视频 | 久久婷婷六月| 2020精品极品国产色在线观看 | 国产又爽又黄无遮挡免费观看| 真人免费一级毛片一区二区| 91色综合综合热五月激情| 99精品福利视频| 亚洲91精品视频| 亚洲天堂网在线视频| 视频国产精品丝袜第一页| 国产成人综合亚洲欧美在| 国产白浆一区二区三区视频在线| 蜜桃视频一区| 精品国产一区91在线| 久久婷婷综合色一区二区| 国产精品亚洲一区二区三区z| 日韩无码视频播放| 四虎亚洲精品| 99性视频| 99久久精品国产综合婷婷| 热久久综合这里只有精品电影| 青青草原偷拍视频| 成人亚洲视频| 污网站免费在线观看| 伊人久久久久久久| 一级毛片免费观看久| 欧美日韩中文字幕二区三区| 国产人人乐人人爱| 国产成人综合网| 亚洲一区二区日韩欧美gif| 天天干天天色综合网| 国产丝袜啪啪| 四虎成人精品| 久久五月视频|