現(xiàn)場(chǎng)設(shè)備運(yùn)行過(guò)程中有時(shí)候我們需要更改在線數(shù)據(jù)塊的結(jié)構(gòu)(比如增加一些變量),但是如果直接更改數(shù)據(jù)塊并下載會(huì)導(dǎo)致其重新初始化。這意味著CPU會(huì)將數(shù)據(jù)塊中變量的實(shí)際值用初始值替換,將會(huì)導(dǎo)致實(shí)際數(shù)據(jù)的丟失,甚至引起設(shè)備故障。一種變通的方法是:使用快照先將實(shí)際值保存到初始值,然后盡快修改下載。這種方法只適用于實(shí)際值短時(shí)間變化影響不大的情況。有沒(méi)有一種方法既能更改在線數(shù)據(jù)塊的結(jié)構(gòu),又不引起數(shù)據(jù)塊重新初始化呢?答案是:有的。下面我來(lái)詳細(xì)介紹下。本文包括如下幾個(gè)主題:
結(jié)構(gòu)性更改;
下載但不重新初始化的工作原理;
重置預(yù)留存儲(chǔ)區(qū)
1、結(jié)構(gòu)性更改
默認(rèn)情況下,數(shù)據(jù)塊的結(jié)構(gòu)性更改會(huì)導(dǎo)致其下載時(shí)重新初始化。
數(shù)據(jù)塊的結(jié)構(gòu)性更改包括:
①其中變量名稱的更改;
②其中變量的增加或刪除;
③其中變量保持特性的更改;
從上面描述來(lái)看,我們?cè)跀?shù)據(jù)塊中增加變量屬于結(jié)構(gòu)性更改,怎樣使其不重新初始化呢?這需要使用數(shù)據(jù)塊的一個(gè)屬性——預(yù)留存儲(chǔ)區(qū)。
注①:初始值修改不屬于結(jié)構(gòu)性更改,因此下載時(shí)不會(huì)引起數(shù)據(jù)塊重新初始化。
注②:這里的數(shù)據(jù)塊既可以是全局?jǐn)?shù)據(jù)塊,也可以是函數(shù)塊的背景數(shù)據(jù)塊。
2、數(shù)據(jù)塊下載但不重新初始化的工作原理
首先,只有“優(yōu)化的塊”才支持該功能。勾選“優(yōu)化的塊訪問(wèn)”屬性的數(shù)據(jù)塊或函數(shù)塊默認(rèn)有一個(gè)預(yù)留存儲(chǔ)區(qū),激活該預(yù)留區(qū)后,后續(xù)聲明的變量/參數(shù)都存放在該區(qū)域中。
選中數(shù)據(jù)塊,右鍵單擊,選擇【屬性】菜單,可以看到“優(yōu)化的塊訪問(wèn)”選項(xiàng),如下圖所示:
在上述屬性對(duì)話框中,單擊【下載但不重新初始化】。勾選【啟用下載,但不重新初始化變量】便啟用該功能。在【存儲(chǔ)器預(yù)留區(qū)域】中設(shè)置預(yù)留存儲(chǔ)區(qū)的大小,比如100字節(jié);在【預(yù)留可保持型存儲(chǔ)器】中設(shè)置保持型存儲(chǔ)器的大小,如下圖所示:
設(shè)置完成后單擊【確定】,該數(shù)據(jù)塊便有了設(shè)定大小的預(yù)留存儲(chǔ)區(qū),但尚未激活。在未激活的情況下,往數(shù)據(jù)塊中添加的變量仍存放在默認(rèn)存儲(chǔ)區(qū)。如果進(jìn)行了結(jié)構(gòu)性更改,則下載時(shí)仍會(huì)提示需要重新初始化。
那么怎樣激活呢?
打開(kāi)數(shù)據(jù)塊,在其上方有一個(gè)紅色的、激活預(yù)留存儲(chǔ)區(qū)的按鈕,如下圖所示:
單擊該按鈕會(huì)彈出一個(gè)對(duì)話框:
單擊【確定】后,再次往數(shù)據(jù)塊中添加的變量,都存放在預(yù)留存儲(chǔ)區(qū)中。此時(shí)下載不會(huì)再提示需要重新初始化。
3、重置預(yù)留存儲(chǔ)區(qū)
隨著變量的添加,預(yù)留存儲(chǔ)區(qū)會(huì)越來(lái)越小。在【下載但不重新初始化】頁(yè)面可以查看剩余的存儲(chǔ)區(qū)字節(jié)數(shù)。若項(xiàng)目已經(jīng)階段性完成,可以在適當(dāng)?shù)臅r(shí)候?qū)㈩A(yù)留存儲(chǔ)區(qū)的數(shù)據(jù)集成到常規(guī)存儲(chǔ)區(qū),以清空預(yù)留存儲(chǔ)區(qū)便于后續(xù)使用。此時(shí)可以選中數(shù)據(jù)塊并單擊右鍵,在彈出的對(duì)話框中選擇【編譯】→【軟件(復(fù)位存儲(chǔ)器預(yù)留區(qū)域)】,如下圖所示:
系統(tǒng)會(huì)提示下載時(shí)需要重新初始化,單擊【確定】,完成重置,此時(shí)預(yù)留存儲(chǔ)區(qū)的可使用字節(jié)數(shù)恢復(fù)成設(shè)定值。
審核編輯:劉清
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7528瀏覽量
164345 -
cpu
+關(guān)注
關(guān)注
68文章
10904瀏覽量
213027
原文標(biāo)題:怎樣在博途環(huán)境下載但不重新初始化數(shù)據(jù)塊?
文章出處:【微信號(hào):方正智芯,微信公眾號(hào):方正智芯】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
EE-359:ADSP-CM40x啟動(dòng)時(shí)間優(yōu)化和器件初始化
![EE-359:ADSP-CM40x啟動(dòng)時(shí)間優(yōu)化和器件<b class='flag-5'>初始化</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
EE-88:使用21xx編譯器在C中初始化變量
![EE-88:使用21xx編譯器在C中<b class='flag-5'>初始化</b>變量](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
LDC1614在使用過(guò)程中,ldc的數(shù)據(jù)會(huì)突然全變成0,并且只能復(fù)位重新初始化才會(huì)恢復(fù),為什么?
OMAP5912多媒體處理器初始化參考指南
![OMAP5912多媒體處理器<b class='flag-5'>初始化</b>參考指南](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32F407 MCU使用SD NAND?不斷電初始化失效解決方案
![STM32F407 MCU使用SD NAND?不斷電<b class='flag-5'>初始化</b>失效解決方案](https://file1.elecfans.com/web3/M00/01/D6/wKgZPGdY_fiAfhvVAAES2FwC9UU093.png)
如何在同步主機(jī)模式下完成初始化并且獲取到ADS131A04的數(shù)據(jù)?
基于旋轉(zhuǎn)平移解耦框架的視覺(jué)慣性初始化方法
![基于旋轉(zhuǎn)平移解耦框架的視覺(jué)慣性<b class='flag-5'>初始化</b>方法](https://file1.elecfans.com/web1/M00/F4/19/wKgaoWckOqGAdfXTAAAsMH0jrTY250.png)
TMS320C6000 McBSP初始化
![TMS320C6000 McBSP<b class='flag-5'>初始化</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何在i.MX RT微控制器上初始化LWIP協(xié)議棧
![如<b class='flag-5'>何在</b>i.MX RT微控制器上<b class='flag-5'>初始化</b>LWIP協(xié)議棧](https://file1.elecfans.com/web1/M00/F2/C0/wKgaoWcJ8kSAOkXfAAA3xf5pRPo776.png)
esp8266_rtos_sdk串口初始化異常是什么原因呢?
如何在tc377啟動(dòng)軟件時(shí)檢查SSH實(shí)例的內(nèi)存是否已初始化?
STM32F4重新初始化UART1,不能正常接收數(shù)據(jù)怎么解決?
字符型、指針型等變量等該如何初始化
用于電路初始化的微型電源電壓監(jiān)控器TPS3307系列數(shù)據(jù)表
![用于電路<b class='flag-5'>初始化</b>的微型電源電壓監(jiān)控器TPS3307系列<b class='flag-5'>數(shù)據(jù)</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
MCU單片機(jī)GPIO初始化該按什么順序配置?為什么初始化時(shí)有電平跳變?
![MCU單片機(jī)GPIO<b class='flag-5'>初始化</b>該按什么順序配置?為什么<b class='flag-5'>初始化</b>時(shí)有電平跳變?](https://file1.elecfans.com/web2/M00/C1/7A/wKgaomXWul2AKoIuAAAxlaP9tbg978.png)
評(píng)論