国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

單精度浮點(diǎn)數(shù)累積量異常分析及解決方案

2018-09-15 04:31:10徐衛(wèi)峰牛洪海
自動(dòng)化儀表 2018年9期
關(guān)鍵詞:浮點(diǎn)數(shù)尾數(shù)小數(shù)

徐衛(wèi)峰,蔡 丹,牛洪海

(南京南瑞繼保電氣有限公司研究院,江蘇 南京 211102)

0 引言

自動(dòng)控制系統(tǒng)中,單精度浮點(diǎn)數(shù)被廣泛應(yīng)用于生產(chǎn)工藝過程量監(jiān)測和回路調(diào)節(jié),以及復(fù)雜計(jì)算和累積量等模擬值處理。這些系統(tǒng)包括:可編程邏輯控制器(programmable logic controller,PLC)系統(tǒng)[1-3]、分布式控制系統(tǒng) (distributed control system,DCS)[4-5]。自動(dòng)控制系統(tǒng)選用帶累積功能的儀表,可實(shí)現(xiàn)較高準(zhǔn)確度過程量的累積,但實(shí)際應(yīng)用過程中存在很多未配置累積功能的儀表仍需監(jiān)視累積值的情況。常用的方法是采用基于浮點(diǎn)數(shù)的積分類型邏輯算法[6-7]。在實(shí)際運(yùn)行過程中,當(dāng)累積量達(dá)到一定程度時(shí),采用該方法會(huì)發(fā)生累積量不累積的現(xiàn)象。該問題通常在系統(tǒng)運(yùn)行較長時(shí)間后出現(xiàn)。

本文從單精度浮點(diǎn)數(shù)定義及其在計(jì)算機(jī)中的運(yùn)算規(guī)則出發(fā),研究不累積現(xiàn)象出現(xiàn)的原因,并提出一種有效的解決方案,以便不同的控制系統(tǒng)在不同的應(yīng)用場合實(shí)現(xiàn)。

1 現(xiàn)象分析

常見的浮點(diǎn)有單精度、雙精度、擴(kuò)展雙精度三種類型,分別滿足不同的計(jì)算要求。單精度適合一般計(jì)算,雙精度適合科學(xué)計(jì)算,擴(kuò)展雙精度適合高精度計(jì)算。在自動(dòng)控制系統(tǒng)中,系統(tǒng)存儲(chǔ)資源和運(yùn)算能力的限制使得單精度浮點(diǎn)數(shù)得到了更廣泛的應(yīng)用。按照《二進(jìn)制浮點(diǎn)運(yùn)算標(biāo)準(zhǔn)》(IEEE 754-2008)[8-10]的定義,單精度浮點(diǎn)數(shù)可以表示為:

X=(-1)S×(1+F)×2(E-B)

(1)

式中:X為單精度浮點(diǎn)數(shù);S為符號位,取值為0或1;F為尾數(shù),取值范圍為0~(1-2-23);E為指數(shù),取值為0~255,0與255分別用作浮點(diǎn)數(shù)0和±∞;B為指數(shù)偏置,固定值是127,去除特殊規(guī)定后,正常表示的浮點(diǎn)數(shù)(E-B)的范圍為-126~+127。

按照標(biāo)準(zhǔn)定義,單精度浮點(diǎn)數(shù)的占用內(nèi)存空間為4 B。其中:符號位S占1 B;指數(shù)域E占8 B;尾數(shù)F占23 B。單精度浮點(diǎn)數(shù)內(nèi)存位定義如圖1所示。

圖1 內(nèi)存位定義圖

單精度浮點(diǎn)數(shù)的尾數(shù)由23 B表示,其表示的十進(jìn)制實(shí)數(shù)的有效數(shù)字存在限制[9-10]。有效數(shù)字p可表示為式(2),即單精度浮點(diǎn)數(shù)最大可表示的有效數(shù)字個(gè)數(shù)介于7~8之間。

p=log224=7.22

(2)

式中:指數(shù)24是因?yàn)閱尉阮愋秃碗p精度類型均有一個(gè)隱含位,因此它們的有效位數(shù)比存儲(chǔ)位數(shù)多一位。

累積量的計(jì)算可表示為式(3),即上一計(jì)算周期的累計(jì)值與當(dāng)前采樣值與時(shí)間乘積值的和。求和是其中的關(guān)鍵環(huán)節(jié)。

Xk=Xk-1+Pv×Δt

(3)

式中:Xk為當(dāng)前計(jì)算周期的累積量;Xk-1為上一個(gè)計(jì)算周期的累積量;Pv為需進(jìn)行累積的過程量;Δt為計(jì)算周期時(shí)間。

單精度浮點(diǎn)數(shù)求和計(jì)算遵循以下步驟。首先,將參與求和的兩個(gè)數(shù)規(guī)格化,即將指數(shù)轉(zhuǎn)換為相同大小,轉(zhuǎn)換過程同步轉(zhuǎn)換尾數(shù),確保與指數(shù)匹配;其次,將格式統(tǒng)一的兩個(gè)數(shù)相加;最后,返回計(jì)算結(jié)果。將兩個(gè)浮點(diǎn)數(shù)規(guī)格化,采用的方法是對較小數(shù)的指數(shù)進(jìn)行轉(zhuǎn)換,使之與較大數(shù)的指數(shù)相同。其原因在于:如以較小的數(shù)為基準(zhǔn),較大的數(shù)轉(zhuǎn)換時(shí)可能存在高位的損失,誤差大;如以較大的數(shù)為基準(zhǔn),雖然過程中可能存在低位的損失,但在大多數(shù)情況下是可以接受的。這種方式也更接近真實(shí)的計(jì)算結(jié)果。

為驗(yàn)證上述分析,設(shè)計(jì)了一個(gè)簡單實(shí)例以驗(yàn)證單精度浮點(diǎn)數(shù)求和運(yùn)算。計(jì)算公式如式(4)所示。

Y=X1+X2

(4)

式中:Y為浮點(diǎn)數(shù)的和;X1為被加數(shù);X2為被加數(shù)。

為便于對比分析,設(shè)固定值為1,通過修改不同的X1來模擬差距較大的兩個(gè)數(shù)的和。X1提供3個(gè)樣本,分別為106、107和108。從試驗(yàn)結(jié)果來看,當(dāng)X1為106和107時(shí),結(jié)果分別為1 000 001和10 000 001,符合真實(shí)值;當(dāng)X1為108時(shí),結(jié)果為100 000 000,X2在計(jì)算過程中被忽略。

綜上所述,由于浮點(diǎn)數(shù)表示有效數(shù)字個(gè)數(shù)是有限的,且求和運(yùn)算過程以較大數(shù)作為轉(zhuǎn)換基準(zhǔn),因此存在大數(shù)加上小數(shù),造成小數(shù)被忽略,出現(xiàn)累積量無法累積的情況。浮點(diǎn)數(shù)有效數(shù)字個(gè)數(shù)為7位,如相加的兩個(gè)數(shù)如果超過107倍,則可能造成被加的數(shù)丟失。

2 方案實(shí)現(xiàn)

對累積量而言,通常無法確保長時(shí)間運(yùn)行值與當(dāng)前時(shí)刻需累加的積分量偏差倍數(shù)在107倍以內(nèi)。為避免出現(xiàn)單精度浮點(diǎn)數(shù)出現(xiàn)大數(shù)加小數(shù)導(dǎo)致小數(shù)被忽略的現(xiàn)象,必須確保兩者之間的差異不超過107倍。另外,對瞬時(shí)值而言,其采樣值有精度的要求,如大多數(shù)監(jiān)控系統(tǒng)對浮點(diǎn)數(shù)通常保留2位小數(shù)有效位。在此情況下,大數(shù)與小數(shù)的偏差倍數(shù)不能超過105倍??紤]到顯示的影響,建議留有3位小數(shù),此時(shí)偏差倍數(shù)為104倍;同理,如保留4位小數(shù),則偏差以103倍為宜。

鑒于累積量需控制相加兩數(shù)的差異倍數(shù)及精度,采用一個(gè)多級實(shí)現(xiàn)策略。累積量多級實(shí)現(xiàn)原理如圖2所示。該策略將每級浮點(diǎn)數(shù)累加控制在所需的精度范圍內(nèi)。第一級完成瞬時(shí)值的時(shí)間積分運(yùn)算,可用DCS、PLC提供的累積量模塊,也可按照矩形積分或梯形積分策略自行組態(tài)實(shí)現(xiàn)。當(dāng)?shù)谝患壚鄯e量達(dá)到限值,則觸發(fā)復(fù)歸信號,使第一級累積量模塊復(fù)歸從零開始累積。第二級為建立在第一級基礎(chǔ)上的累加和。當(dāng)?shù)谝患墢?fù)歸信號發(fā)生,則同時(shí)觸發(fā)第二級的累加。同理,當(dāng)?shù)诙壍睦奂雍统迺r(shí),觸發(fā)第二級的復(fù)歸信號,同時(shí)也觸發(fā)第三級的累加。最后,將各級累積量輸出求和,即為最終的累積量。該策略要點(diǎn)在于各級復(fù)歸信號只能存在一個(gè)周期,即各級復(fù)歸和求和僅運(yùn)算一次,但第一級的累積量模塊累積功能除外。該方案也支持多于三級的情況,可根據(jù)實(shí)際需求調(diào)整級數(shù)。最終結(jié)果可能存在顯示上的第一級累積量丟失,但并不會(huì)影響累積過程,也不會(huì)出現(xiàn)不累積的情況。

圖2 累積量多級實(shí)現(xiàn)原理圖

此外,對于累積量來說,存在系統(tǒng)故障后恢復(fù)時(shí)繼續(xù)累積的需求,方案需支持累積量的掉電保持和恢復(fù)功能。每級累積量均存入系統(tǒng)的掉電非易失內(nèi)存,保證系統(tǒng)故障時(shí)累積信息不丟失。當(dāng)控制系統(tǒng)恢復(fù)時(shí),回讀故障前正常保存的值。該操作僅進(jìn)行一次。第一級是通過累積量模塊的初始值和觸發(fā)條件完成的回讀,后續(xù)累加則需通過選擇模塊完成。監(jiān)控后臺(tái)可通過文件讀寫實(shí)現(xiàn)掉電保持功能。

3 驗(yàn)證與測試

根據(jù)上述策略,以功能塊圖實(shí)現(xiàn)的方案應(yīng)用于鑌鑫鋼鐵煤氣發(fā)電的補(bǔ)水流量累計(jì),瞬時(shí)流量為200~430 t/h。控制器邏輯運(yùn)算周期為200 ms,因此每次周期瞬時(shí)累加值為0.017 5 t。按照規(guī)則,為保證3位有效數(shù)字,取第一級累積量上限為103,第二級上限為106。按此設(shè)置,如果最后第三級輸出保證小數(shù)4位有效數(shù)字,則需約362年才可能出現(xiàn)累積失真的情況。實(shí)際運(yùn)行可根據(jù)每級計(jì)算精度要求調(diào)整限值,滿足現(xiàn)場要求。

4 結(jié)束語

本文在分析單精度浮點(diǎn)數(shù)定義及求和計(jì)算特點(diǎn)的基礎(chǔ)上,提出了一種分段累積、支持掉電保持的有效解決方案,并給出了分段設(shè)置指導(dǎo)意見。經(jīng)實(shí)際現(xiàn)場工程驗(yàn)證,該方案解決了浮點(diǎn)數(shù)累積不上去的問題。該方案可應(yīng)用于DCS或PLC控制器,也可應(yīng)用于支持腳本的監(jiān)控后臺(tái),滿足用戶在無累積儀表時(shí)軟邏輯實(shí)現(xiàn)的需求。

猜你喜歡
浮點(diǎn)數(shù)尾數(shù)小數(shù)
“改寫”與“省略”三不同
小數(shù)加減“四不忘”
四種Python均勻浮點(diǎn)數(shù)生成方法
我國古代的小數(shù)
小數(shù)的認(rèn)識(shí)
小數(shù)的認(rèn)識(shí)
連續(xù)自然數(shù)及乘積的尾數(shù)和奇偶性的分析
2019年度下半年《啟迪與智慧》上下半月刊、《幽默與笑話》上下半月刊、《拳擊與格斗》上半月刊抽大獎(jiǎng)中獎(jiǎng)結(jié)果
在C語言中雙精度浮點(diǎn)數(shù)線性化相等比較的研究
非精確浮點(diǎn)數(shù)乘法器設(shè)計(jì)
东辽县| 建平县| 耒阳市| 临桂县| 岳阳县| 平湖市| 巴中市| 隆德县| 陵川县| 宿迁市| 常山县| 昌邑市| 凌云县| 阿坝县| 红原县| 赫章县| 宜君县| 潼南县| 平舆县| 慈溪市| 张家口市| 白城市| 涿鹿县| 眉山市| 龙海市| 赤城县| 白沙| 田阳县| 新乐市| 诏安县| 罗甸县| 吴桥县| 若尔盖县| 威宁| 新绛县| 丁青县| 密云县| 永和县| 额敏县| 广河县| 清涧县|