問:剛接觸西門子S7-300 PLC與MM440變頻器通過DP通信,其中資料提到PKW PZD,比如在讀寫0002-1999的參數時,"如讀P1082, 1082=43A(HEX)
PLC PKW輸出=143A,0000,0000,0000 1為讀請求。PLC PKW輸入=243A,0000,4248,0000 返回2為雙字長。值為42480000(HEX)=50.0(REAL)"其中“值為42480000(HEX)=50.0(REAL)是怎么算的?
答:實數也稱單精度數 符號位1位,階碼8位,尾數23位
第一步,化為2進制
第二步:因為IEEE754使用1個符號,8個階碼,23個尾數,
第三步:根據公式寫出實際數值大小
二:基礎知識擴展
-----------------------------------------------------------------------
值 存儲為 指數偏移量
real*4 1位符號位(s)、8位指數(e),23位尾數(m,共32位) 127(7FH)
real*8 1位符號位(s)、11位指數(e),52位尾數(m,共64位) 1023(3FFH)
real*10 1位符號位(s)、15位指數(e),64位尾數(m,共80位) 16383(3FFFH)
-----------------------------------------------------------------------
符號位1位,階碼8位,尾數23位
30.0
十進制30.0轉換成二進制
11110.0
規(guī)格化二進制數
1.1110*2^4
計算指數
4+127=131
符號位 指數部分 尾數部分
0 10000011 11100000000000000000000
以單精度(real*4)浮點格式存儲該數
0100 0001 1111 0000 0000 0000 0000 0000
4 1 F 0 0 0 0 0
十六進制表達式為41F0 0000H
50.0
十進制50.0轉換成二進制
110010.0
規(guī)格化二進制數
1.10010*2^5
計算指數
5+127=132
符號位 指數部分 尾數部分
0 10000100 10010000000000000000000
以單精度(real*4)浮點格式存儲該數
0100 0010 0100 1000 0000 0000 0000 0000
4 2 4 8 0 0 0 0
十六進制表達式為4248 0000H
問題補充:
DW#16#42480000用2進制表示是0100 0010 0100 1000 0000 0000 0000 0000.
根據IEEE(32)REAL的定義你可以手動進行計算把這些2進制轉為REAL=[1+(2的22次方+2的19次方)*2的(-23)次方]*2的(132-127)次方=50.0










