APP下载

浅析施奈德-昆腾®系列中浮点数的解析与上送

2014-03-02

中国新技术新产品 2014年13期
关键词:施奈德南瑞浮点数

(黑龙江省电力有限公司牡丹江水力发电总厂,黑龙江 牡丹江 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

猜你喜欢

施奈德南瑞浮点数
一场精彩的故事会
四种Python均匀浮点数生成方法
纽约“反性侵”检察长被爆性虐丑闻辞职
在C语言中双精度浮点数线性化相等比较的研究
非精确浮点数乘法器设计
Visual Basic处理浮点DSP芯片数据的方法
深切怀念罗密·施奈德