S7-200怎么处理双精度浮点型数据????
在和仪表modbus通信时,有的数据是Double类型的(比如累积流量),卡到这里不知道该怎么弄了,不知道有没有大侠弄过~~~~~~~ 自己计算,查IEEE754数据格式,1位符号,48位尾数(好象),还有16位移码阶数的样子。要不然直接转换。 刚好我搞过,在我的QQ日志中有详细记录,包括说明。读的是该死的科隆流量计。给你一个S7-300的例子,200也是一样的处理。IN
IN Array Of DWord
OUT
STATUS Byte
TEMP
StatusB Byte
Sign Bool
Exponent Int
Mantissa DInt
RETURN
RET_VALReal
NETWORK1 //初始化状态位
L B#16#0
T #StatusB
NETWORK2 //取符号位
L #IN
SRD 31
L 1
==D
= #Sign
A #Sign
JC STSN
L B#16#1
JU GEXP
STSN: L B#16#2
GEXP: T #StatusB
L #IN
L DW#16#38000000
==D
JCN STS0
L B#16#0
T #StatusB
STS0: NOP 0
NETWORK3: //开始转换指数部分
L #IN
SRD 20
AD DW#16#7FF
+ -896
T #Exponent
NETWORK4: //转换尾数部分
L #IN
SLD 12
L #IN
SRD 20
OD
T #Mantissa
NETWORK5: //处理符号
L #IN
AD DW#16#FFFFF
L #StatusB
JZ NSIG
OW W#16#10
NSIG: T #StatusB
NETWORK6: // 重组成单精度浮点数
L #Exponent
SLD 23
L #Mantissa
OD
A #Sign
JCN POS
OD DW#16#80000000
POS:T #RET_VAL
L #StatusB
T #STATUS
jrdxf 发表于 2013-11-15 11:20 static/image/common/back.gif
刚好我搞过,在我的QQ日志中有详细记录,包括说明。读的是该死的科隆流量计。给你一个S7-300的例子,200也 ...
谢谢~~~我看看~~~ 斩首去尾
页:
[1]