最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

LabVIEWCompactRIO 開發(fā)指南9 保持連續(xù)內(nèi)存健康

2023-05-05 09:56 作者:bjcyck  | 我要投稿

LabVIEWCompactRIO?開發(fā)指南9

保持連續(xù)內(nèi)存健康

連續(xù)內(nèi)存是一種連續(xù)的、不分段的內(nèi)存塊。當程序包含各種動態(tài)分配時,內(nèi)存可能會變得碎片化,從而使查找大塊連續(xù)內(nèi)存變得更加困難。在圖3.26的例子中,即使RTOS有足夠的內(nèi)存來存儲40字節(jié)的請求分配,程序還是會失敗并崩潰,因為RTOS沒有足夠大的連續(xù)段。

圖3.26?RTOS上的內(nèi)存會變得碎片化,令內(nèi)存管理器很難定位大塊的連續(xù)內(nèi)存

可以通過最小化動態(tài)內(nèi)存分配和為等于最大預(yù)期數(shù)組大小的數(shù)組預(yù)分配空間來保持連續(xù)內(nèi)存的健康狀態(tài)。圖3.27展示了如何使用Initialize?array和Replace?array函數(shù)為數(shù)組預(yù)分配內(nèi)存。數(shù)組只創(chuàng)建一次,并且Replace?array可以將輸入緩沖區(qū)重用為輸出緩沖區(qū)。如果可以確定數(shù)組的大小上限,則應(yīng)該預(yù)先分配數(shù)組。

圖3.27?在可能的情況下為數(shù)組預(yù)先分配內(nèi)存

監(jiān)控系統(tǒng)內(nèi)存

在設(shè)計系統(tǒng)時,考慮包含內(nèi)存監(jiān)視代碼,以便在內(nèi)存不足時安全地重新啟動目標。當以實時目標為目標時,可以使用RT?Get?memory?Usage?VI以編程方式訪問系統(tǒng)的內(nèi)存狀態(tài)。

圖3.28?通過NI系統(tǒng)配置API以編程方式監(jiān)控內(nèi)存

還應(yīng)該包括一個執(zhí)行以下功能的安全關(guān)閉例程:

■關(guān)閉文件以防止損壞

■終止通信以避免沖突

■將硬件輸出設(shè)置為安全狀態(tài)

有關(guān)此主題的更多信息,請參閱NI?Developer?Zone文檔Fail-Safe?Control?Reference?Design。還可以在工具菜單下的LabVIEW中使用NI分布式系統(tǒng)管理器監(jiān)視內(nèi)存使用情況。

圖3.29?使用NI分布式系統(tǒng)管理器監(jiān)控CompactRIO內(nèi)存使用情況

使用有限的CPU資源

在設(shè)計實時目標應(yīng)用程序時,應(yīng)該將CPU使用率控制在70%以下。可以使用NI分布式系統(tǒng)管理器或以編程方式使用RT獲取CPU負載VI來監(jiān)控CPU使用情況。在嘗試減少應(yīng)用程序的CPU使用情況時,請考慮以下幾點。

圖3.30?使用RT獲取CPU負載VI監(jiān)控CPU使用情況

在使用定時結(jié)構(gòu)時要小心

如果應(yīng)用程序不包含任何需要確定性行為的任務(wù),請使用帶有定時函數(shù)的While循環(huán)而不是Timed循環(huán)。定時循環(huán)提供了許多有用的內(nèi)置功能,但也比While循環(huán)有更多的開銷。此外,如果定時循環(huán)沒有得到正確的執(zhí)行,它們可能會導(dǎo)致系統(tǒng)變得無響應(yīng)。因此,應(yīng)該只在絕對必要的時候使用定時循環(huán)。

只在必要時快速運行循環(huán)

盡管可能希望盡可能快地運行應(yīng)用程序中的每個循環(huán),但這種做法可能會導(dǎo)致不希望的計時行為,包括增加抖動甚至系統(tǒng)死鎖。例如,運行用戶界面數(shù)據(jù)發(fā)布循環(huán)的速度比人類操作員處理和響應(yīng)數(shù)據(jù)的速度要快,這對實時目標的CPU造成了不必要的負擔。在大多數(shù)情況下,對于通過網(wǎng)絡(luò)發(fā)布用戶界面數(shù)據(jù)的環(huán)路,2Hz到15Hz的速率就足夠了。

避免使用太多網(wǎng)絡(luò)發(fā)布的共享變量

當托管在CompactRIO控制器上時,網(wǎng)絡(luò)發(fā)布的共享變量會導(dǎo)致顯著的CPU和內(nèi)存開銷。如果應(yīng)用程序使用大量網(wǎng)絡(luò)發(fā)布的共享變量(超過幾十個),那么盡可能將這些共享變量托管在Windows主機PC上。請注意,在主機PC上托管共享變量時,不能啟用RT?FIFO,以便在時間關(guān)鍵循環(huán)之間進行確定性數(shù)據(jù)傳輸。

在可能的情況下卸載任務(wù)

為了最大限度地減少實時目標上的CPU使用,請考慮將某些任務(wù)卸載到桌面PC或FPGA目標(如果可用)。

?

需要說明的是,上述的例程和文檔,都是可以下載的,雙擊即可打開,其中壓縮文件是可以采用粘貼復(fù)制的方式,拷貝到硬盤上。這不是圖片,各位小伙伴看到后嘗試一下,這個問題就不用加微信咨詢了。有關(guān)LabVIEW編程、LabVIEW開發(fā)等相關(guān)項目,可聯(lián)系們。附件中的資料這里無法上傳,可去公司網(wǎng)站搜索下載。


LabVIEWCompactRIO 開發(fā)指南9 保持連續(xù)內(nèi)存健康的評論 (共 條)

分享到微博請遵守國家法律
宁国市| 内江市| 林甸县| 阿图什市| 涞水县| 临澧县| 田东县| 屯昌县| 新田县| 南阳市| 昌乐县| 霍林郭勒市| 无棣县| 涡阳县| 顺平县| 陇西县| 榆中县| 惠水县| 禹州市| 临江市| 疏附县| 团风县| 朝阳市| 安西县| 平原县| 盐山县| 崇左市| 巴林左旗| 甘肃省| 阿克陶县| 吉林省| 姚安县| 永嘉县| 武隆县| 台中市| 林州市| 边坝县| 江都市| 开平市| 南木林县| 寿阳县|