浅析施奈德-昆腾®系列中浮点数的解析与上送
2014-03-02
(黑龙江省电力有限公司牡丹江水力发电总厂,黑龙江 牡丹江 157006)
浅析施奈德-昆腾®系列中浮点数的解析与上送
刘吉强
(黑龙江省电力有限公司牡丹江水力发电总厂,黑龙江 牡丹江 157006)
数据的采集和上送,是自动控制的基础。自动化领域百家争鸣的局面导致数据格式的定义有很大分歧,数制转换就成为自动控制编程的亮点。本文以发电厂母线的频率采集上送为例,简述浮点数到word 变量的转换与上送方法。
浮点数;word变量 ;数制转换
一、设备环境:表计DM6200 .
网络环境:485菊花链路、MODBUS PLUSH网络、以太网络.
PLC:Schneider - quantum ® 65160 .
编程软件:UNITY PRO 4.1
上位机:南瑞NC2000系统.
nybus Modbus-TCP读取数据部分与本文关联不大,限于篇幅,不作详述。从485菊花链路,以Anybus Modbus-TCP作为转换媒介用MBPMSTR方法将DM6200 中的频率值项对应的浮点数以两位word 值的方式 采集到 Schneider -quantum ® 65160 中的MBP_DM6200 数组中。
限于篇幅,恕不详述。变量定义依据IEEE 754 标准,将两个word 中的浮点数还原、拆分为符号部分、阶码部分、整数部分和小数部分。
WORD_TO_BIT(MBP_DM6200[1],B IT[01],BIT[02],BIT[03],BIT[04],BIT[05],BIT[ 06],BIT[07],BIT[08],BIT[09],BIT[10],BIT[11] ,BIT[12],BIT[13],BIT[14],BIT[15],BIT[16]); WORD_TO_BIT(MBP_DM6200[2],BIT[17] ,BIT[18],BIT[19],BIT[20],BIT[21],BIT[22],BI T[23],BIT[24],BIT[25],BIT[26],BIT[27],BIT[2 8],BIT[29],BIT[30],BIT[31],BIT[32]);
(*2、符号处理 *)
IF BIT[32] THEN MARK:=-1 ELSE MARK:=-1 ;
(*3、阶码运算:反移码运算)
DMMOVE_biased:=BIT_TO_WORD(BIT[24],BIT[25],BIT[26],BIT[27],BIT[28] ,BIT[29],BIT[30],BIT[31],0,0,0,0,0,0,0,0); D M M O V E:= W O R D_T O_U I N T(DMMOVE_NO)-127;
(*4、实值运算: 把23位真实值提取出来,补位,组成双整形真实值,这里因为之前我们都知道有个固定的1给省略了,因此这里要给加上去。*)
DMINFACT_LOW :=MBP_ DM6200[1];DMINFACT_HIGH:= BIT_TO_WORD (BIT[17],BIT[18 ],BIT[19],BIT[20],BIT[21],DM200_ BIT[22],BIT[23],1,0,0,0,0,0,0,0,0);DMINFACT:= WORD_AS_DINT(DMINFACT_LOW,DMINFACT_ HIGH) ;
(*整 数*) DMINTPART := SHR (DMINFACT,23 - DMMOVE );
(*小数*) DMFIRST:= SHL(DMINFACT, DMMOVE + 9) ; (*清整数*)
(*小数实值表运算,为防止机器取舍处理,我们将其放大100000000倍 *)
DMZHISHU:=100000000; COUNT_ J:=1; FOR COUNT_J:=1 TO 24 DO DMZH ISHU:=DMZHISHU/2;DMRECOARD[COU NT_J]:=DMZHISHU; END_FOR;
(*累 加 :Σ JUDGE *2- n *)DMSMALLPART:= 0; FOR COUNT_ K:=1TO23 DO DMTHIRD := SHL(DMFIRST,1); DMSECOND:= SHR(DMFIRST,31);
DMJUDGE := DINT_TO_BOOL(DMSECOND) XOR 1; IF DMJUDGE=0 THEN
DMSMALLPART:=DMSMALLPART+ DMRECOARD[COUNT_K]; END_IF;
DMFIRST :=DMTHIRD; END_FOR;
(*变 位 处 理: 为 小 数腾位,小数做还原处理.*)DMINTPART:=DMINTPART*100*MARK DMSMALLPART:=DMSMALLPART /1000000 ;
(*合并运算*)
图1 硬件概述.
D M S S 1:=D M I N T P A R T +DMSMALLPART ;DMSS:=DINT_TO_ WORD(DMSS1);
(*上送*)MBP_BUF34[1]:=DMSS;
(*上位机继续处理*)因为送上去的word因为前述处理时扩大100倍,故需在显示时降两位,南瑞的NC2000系统中是通过乘以A系数的方式修正显示值的,我们将A系数定为0.01.
结语
该方法经过实地测试,证明有效。该方法适用于采样要求较高的表计的数据采集转换,可以使采集数据损失最小化,适于工控推广。
[1]Schneider Electric ©. Unity Pro 操作手册[G].718.
[2]SchneiderElectric©. DM6000SeriesDigital MetersUserManual. 09/2011.66.
[3]南京瑞利自动化有限公司.NC2000操作手册[G].4.257.
[4] IEEE.二进制浮点数算术标准(IEEE 754 )[R].1.2.1.
TP31
:A