袁漢福 (1953—)
浙江寧波人,副總工程師, (藍(lán)星石化有限公司天津石油化工廠,天津 300380) ,現(xiàn)就職于藍(lán)星石化有限公司天津石油化工廠,從事煉油自動(dòng)化的設(shè)計(jì)、施工等工作。
摘要:介紹了DCS系統(tǒng)與質(zhì)量流量計(jì)的通訊問(wèn)題和解決方法,重點(diǎn)闡述了數(shù)據(jù)轉(zhuǎn)換原理、方法和質(zhì)量流量計(jì)的調(diào)試方法。
關(guān)鍵字:浮點(diǎn)數(shù);十進(jìn)制數(shù);通訊接口;尋址;IEEE標(biāo)準(zhǔn)
Abstracts: This paper introduces the communication and resolution of the DCS and the Mass flow meter. The key points are the principle and the method of data exchange, and the debug method of the Mass flow meter.
Key words:floating point numbers; the decimal system; communication interface; addressing; IEEE standard
1 引言
2006年藍(lán)星石化公司天津石油化工廠投入運(yùn)行的7萬(wàn)噸/年余C4綜合利用裝置,應(yīng)用DCS系統(tǒng)作為控制檢測(cè)系統(tǒng),C4進(jìn)裝置和直流汽油進(jìn)裝置流量檢測(cè)使用了質(zhì)量流量計(jì),分別檢測(cè)兩種生產(chǎn)原料進(jìn)料流量,進(jìn)行兩種原料的配比。由于生產(chǎn)原料的成分組成有很大變化,使用質(zhì)量流量計(jì)數(shù)字通訊接口,可以檢測(cè)介質(zhì)的瞬時(shí)流量、累計(jì)流量、溫度、密度等重要參數(shù),檢測(cè)到生產(chǎn)原料組分的變化,可以及時(shí)調(diào)整生產(chǎn)配比、流量,確保生產(chǎn)產(chǎn)品質(zhì)量。使用DCS的通訊接口與質(zhì)量流量計(jì)的通訊接口實(shí)現(xiàn)數(shù)字通訊,可以實(shí)現(xiàn)上述要求。 數(shù)字通訊需要針對(duì)不同通訊協(xié)議和數(shù)據(jù)格式的數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,需要針對(duì)不同廠家的質(zhì)量流量計(jì)的地址編碼方式進(jìn)行編程尋址。本文重點(diǎn)介紹了質(zhì)量流量計(jì)的調(diào)試方法,IEEE754標(biāo)準(zhǔn)的應(yīng)用及程序?qū)崿F(xiàn)方法。
2 數(shù)據(jù)轉(zhuǎn)換
2.1 數(shù)據(jù)轉(zhuǎn)換
由于DCS采集質(zhì)量流量計(jì)的數(shù)據(jù)為浮點(diǎn)數(shù),需要進(jìn)行轉(zhuǎn)換為十進(jìn)制數(shù)。
浮點(diǎn)數(shù)轉(zhuǎn)換,按照IEEE754標(biāo)準(zhǔn)進(jìn)行,IEEE754標(biāo)準(zhǔn)在表示浮點(diǎn)數(shù)時(shí),每個(gè)浮點(diǎn)數(shù)均由三部分組成:符號(hào)位S,指數(shù)部分E和尾數(shù)部分M。
例如49E48E68
0 (1位) 100 1001 1(8 位) 110 0100 1000 1100 1101 0000 .1100 1001 0001 1100 1101 000(23位)
對(duì)于單精度數(shù)據(jù),大小為32-bit的浮點(diǎn)數(shù),為1位符號(hào)位(s)、8位指數(shù)(E),23位尾數(shù)(X,共32位) ;第31bit為符號(hào)位,為0則表示正數(shù),反之為負(fù)數(shù),其讀數(shù)值用s表示;第30~23 bit為指數(shù),其讀數(shù)值用E表示;第22~0 bit共23 bit作為尾數(shù),視為二進(jìn)制純小數(shù),假定該小數(shù)的十進(jìn)制值為M;則按照規(guī)定,該浮點(diǎn)數(shù)的值用十進(jìn)制表示為:
V=(-1)^S*(1+M) *2^(E-127)
例如對(duì)于49E48E68來(lái)說(shuō),其第31 bit為0,即S = 0 ;第30~23 bit依次為100 1001 1,讀成十進(jìn)制就是147,即E = 147;第22~0 bit依次為110 0100 1000 110 0110 1000,也就是二進(jìn)制的純小數(shù)0.110 0100 1000 1110 0110 1000,其十進(jìn)制形式為0.78559589385986328125,即
M = 0.78559589385986328125。
計(jì)算結(jié)果為:
V =(-1)^S (1 +M) 2^(E - 127)
=1.78559589385986328125*2^(147-127) = 1872333
2.2 應(yīng)用程序
以1號(hào)地址瞬時(shí)流量采集為例,給出部分計(jì)算程序段。
質(zhì)量流量計(jì)分2次傳輸2個(gè)16位整形數(shù)據(jù),需要合并后形成一個(gè)浮點(diǎn)數(shù)。
因?yàn)閿?shù)據(jù)傳輸格式為1032,其合并后形式如下:
地址 |
+1 |
+0 |
+3 |
+2 |
內(nèi)容 |
MMMM MMMM |
MMMM MMMM |
SEEE EEEE |
EMMM MMMM |
其中,15位為符號(hào)位,14-7位為指數(shù)位,31-16位為尾數(shù)位;6-0位為尾數(shù)位。
在程序中有如下語(yǔ)句:
m=setint(0,temp1[0],0)+setint(0,temp1[1],1); //將存放在兩個(gè)寄存器中的數(shù)據(jù)組合成一個(gè)浮點(diǎn)型數(shù)據(jù),
需要將數(shù)據(jù)格式進(jìn)行調(diào)整為:
地址 |
+3 |
+2 |
+1 |
+0 |
內(nèi)容 |
SEEE EEEE |
EMMM MMMM |
MMMM MMMM |
MMMM MMMM |
將2個(gè)16位寄存器的數(shù)據(jù)合并為32位數(shù)據(jù),同時(shí)調(diào)整結(jié)構(gòu),調(diào)整后數(shù)據(jù)為:31位為符號(hào)位;30-23位為指數(shù)位;22-0位為尾數(shù)位。
如果質(zhì)量流量計(jì)傳輸?shù)臄?shù)據(jù)格式可以為3210,則可以免去這一步。
程序使用SCX語(yǔ)言編制,此語(yǔ)言類(lèi)似C語(yǔ)言,部分程序段如下。
_TAG("return0")=readinputreg(1,5050,2,temp1);
//讀1#流量
//2個(gè)寄存器存放一個(gè)流量,5050為起始寄存器的地址
if(_TAG("return0")==0)
{
_TAG("INT6")=temp1[0];
_TAG("INT7")=temp1[1];
m=setint(0,temp1[0],0)+setint(0,temp1[1],1); //將存放在兩個(gè)寄存器中的數(shù)據(jù)組合成一個(gè)浮點(diǎn)型數(shù)據(jù)
s=0.0;
e=0.0;
x=0.0;
y=getbit(m,31);
_TAG("A1")=y; //求符號(hào)位:31位
if (y==ON)
{
s=1.0;
}
else
{
s=0.0;
}
for(j=30;j>22;j=j-1) //求指數(shù)位:30位到23位
{
y=getbit(m,j);
_TAG("A2")=y;
if (y==ON)
{
e=e+pow(2.0,itof(j-23));
}
}
for(j=22;j>=0;j=j-1) //求尾數(shù)位:22位到0位
{
y=getbit(m,j);
_TAG("A3")=y;
if (y==ON)
{
x=x+pow(0.5,itof(23-j));
}
}
_TAG("TTA1")=pow(-1.0,s)*(1.0+x)*pow(2.0,(e-127.0)); //進(jìn)行運(yùn)算
3 質(zhì)量流量計(jì)調(diào)試
為保證通訊數(shù)據(jù)的正確,必須對(duì)現(xiàn)場(chǎng)儀表進(jìn)行調(diào)試,
3.1 儀表參數(shù)設(shè)置
(1)瞬時(shí)流量單位:kg/h
(2)累計(jì)流量單位: t
(3)電流輸出量程:0~10000 kg/h
3.2 通訊協(xié)議: MODBUS RS485
(1) 儀表位號(hào): TAG NAME: FT104,F(xiàn)T101
(2) 通訊地址: FIELDBUS ADDRESS: 1(FT104),2(FT101)
(3)波特率: BAUDRATE: 9600
(4)通訊格式: TRANSMISSION: RTU
(5)奇偶校驗(yàn): PARITY: EVEN
(6)數(shù)據(jù)格式: BYTE ORDER: 1-0-3-2
(7)掃描時(shí)間: DELAY TELEGRAM REPLY: 10ms
(8)寫(xiě)保護(hù): WRITE PROTECTION: OFF
(9)寄存器 1 SCAN LIST REGISTER1: 2007(瞬時(shí)流量)
(10)寄存器2 SCAN LIST REGISTER2: 2610(累積)
(11)寄存器3 SCAN LIST REGISTER3: 2017(溫度)
(12)寄存器4 SCAN LIST REGISTER4: 2013(密度)
3.3 上位機(jī)尋址地址
(1)數(shù)據(jù)緩沖區(qū):瞬時(shí)流量 5050----2007
(2)數(shù)據(jù)緩沖區(qū):累積值 5052----2610
(3)數(shù)據(jù)緩沖區(qū):溫度 5054----2017
(4)數(shù)據(jù)緩沖區(qū):密度 5056----2013
3.4 數(shù)據(jù)緩沖區(qū)設(shè)置
在質(zhì)量流量計(jì)中,設(shè)置數(shù)據(jù)緩沖區(qū),為便于計(jì)算機(jī)尋址連續(xù)讀取數(shù)據(jù),簡(jiǎn)化程序,也可以直接從2007中讀取數(shù)據(jù),此項(xiàng)設(shè)置依據(jù)程序編制需要而定。
3.5 所有數(shù)據(jù)參數(shù)設(shè)置中,數(shù)據(jù)緩沖區(qū)地址或寄存器地址,數(shù)據(jù)格式是最重要的參數(shù),必須參照說(shuō)明書(shū)調(diào)試準(zhǔn)確,否則不能通訊或數(shù)據(jù)錯(cuò)誤。
4 結(jié)論
隨數(shù)字通訊技術(shù)不斷的發(fā)展,各種應(yīng)用越來(lái)越普及,各種儀表配置數(shù)字通訊接口已逐漸成為標(biāo)準(zhǔn)配置,數(shù)據(jù)轉(zhuǎn)換是通訊技術(shù)的重要內(nèi)容。在工業(yè)生產(chǎn)裝置中應(yīng)用DCS系統(tǒng)或其他控制系統(tǒng),不但要實(shí)現(xiàn)一般的控制和檢測(cè),而且應(yīng)當(dāng)滿(mǎn)足各種特殊控制和檢測(cè)的要求,一般的運(yùn)算在DCS中可以直接應(yīng)用現(xiàn)有模塊進(jìn)行即可,但對(duì)通訊技術(shù)一些特殊要求,應(yīng)當(dāng)進(jìn)行認(rèn)真分析,選擇正確的運(yùn)算方法,才能行之有效。從而提高了裝置的自動(dòng)化控制與檢測(cè)水平,充分使用儀表具備的各項(xiàng)功能,上述問(wèn)題的解決方法具有普遍使用意義,可以供大家參考和借鑒。
參考文獻(xiàn):
[1] Prof.W.Kahan. IEEE Standard 754 for Binary Floating Point Arithmetic.
[2] 黃欽勝, 朱娟.計(jì)算機(jī)組成原理[M]. 科學(xué)出版社. 2000.