-
gPLC
(
FX2N
)
浮点
(
小数点
)
运算编程研究讲义
2012
目录
PL
C
(
FX2N)
浮点(小数)运算编程
概要
实验一
将一个整数转变为一个二进制小数,并存入
< br>FX2N
的
Dn
中(产生
一个浮点数,存入
FX2N
的
Dn
中)
实验二
将
2
个二进制小数(或其中一个常数
K<
/p>
、
H
)进行四则运算
实验三
一个二进制小数,如何在
LED
数码显示器,或者组态王上
显示监
控
实验四
二进制浮点数运算实例
实验五
任意位浮点数(小数)的输入
附
p>
1
:
PLC
数值显
示(
LED
数码显示器)含小数点方法
附
2
:
PLC
(
FX2N
)中输入小数小结、要点:
PLC
(
F
X2N)
浮点(小数)运算编程概要
1
、
PLC
(
FX2N
)浮点数(小数)概论:<
/p>
?
二进制小
数概念:
二进制小数在
PLC
(
FX2N
)
中存储占用
32
位
(
即占
用
2
个连续编号的
Dn
、
Dn+1)
,
最高位
p>
bit31
位是符号位
(
< br>1
是负数,
0
是正数)
,其他位(
bit30~bit0
)是数值位,
数值位分尾数段和指
数段,
bit0~bit22
共
23
位是尾数段,
bit
23~bit30
共
8
位是指数段;<
/p>
注:二进制小数不是按
2
的补码处理;<
/p>
二进制
小数在PLC(FX2N)中存
入
形式
Dn+1
Dn
< br>?
?
?
?
?
?
?
?
bit
31
bit
30
bit
29
bit
28
bit
27
bit
26
bit
2
5
bit
24
bit
< br>23
bit
22
bit
21
bit
20
bit
19
bit
18
bit
17
bit
16
符号
位
(1位)
指数
段(8位)
bit
15
bit
14
bit
13
bit
12
bit
11
p>
bit
10
bit
9
bit
8
bit
7
bit
6
bit
5
bit
4
bit
3
bit
2
bit
1
bit
0
尾数
p>
段(23位)
数值位(31位)
?
浮点数(小数)运算规则概念
?
进行浮点数
(小数)
运算的各
Dn
只能是二进制
小数、
常数
K
、
H
;
不能是整数或十进制小数;
?
若
Dn<
/p>
中数据是整数,需用
FLT
指令转化为二
进制小数形式,再
参与运算;
?
若
Dn<
/p>
中数据是十进制小数,
需用
EBIN
p>
指令转化为二进制小数形
式,再参与运算;
?
若
Dn<
/p>
中数据是常数
K
、
H
,可直接参与运算,无需转化,因其在
参与运算过程中会自
动转化;
?
浮点数运算中指令前一般应加
D
,
因
参与运算的二进制小数都占
有二个连续的
Dn
< br>、为
32
位数据;
1
?
<
/p>
浮点数运算的种类在
PLC
(
FX2N
)中有加
9EADD
)
、减(
ESUB
)
、
乘(
EMUL
)
、除(
EDIV
)
、正
弦(
SIN
)
、余弦(
COS
)
、正切(
TAN
p>
)
、
数类转化(
F
LT
、
INT
、
EBIN
、
EBCD
)
、比较(
ECMP
、
CZC
P
)等等;
?
二进制小数的
PLC
处理中的监控:
因二进制小数数值与指数占用了
p>
二个连续的
Dn
,且难以区别,故难以在组
态王等上监控(如
LED
数
码显示器、
组态王等)
、监控的数据只是乱码,故若要监控需将这些
二进制
小数用
EBCD
指令转化为十进制小数,
十进制小数占用连续二
个
Dn
,编号
大的为指数段,编号小的为尾数值、区别明确,易于监
控;
如:
D
30
?
D<
/p>
31
;
其中
D3
0
为尾数值、
D31
为指数段;
注:
在
FX2N
仿真
软件上易监控仿真结果;
?
十进制小数概念:
十进制小数在
PLC
(
FX2N
)中占用
32
位,在
PLC
内部存储时采用
p>
2
个连续编号的
Dn
、
Dn+1
,编号小的保存尾数段
(
Dn
)
,编号大的保存指数段(
Dn+1
)
;如:
D
30
?
D
31
;其中
D30
为尾
数值、
D31
为指数段;
十进制
小数在PLC(FX2N)中存入
形式
Dn+1
Dn
bit
< br>31
bit
30
bit
29
bit
28
bit
27
bit
26
bit
25
bit
24
bit
23
bit
22
p>
bit
21
bit
20
bit
19
bit
18
bit
17
bit
16
bit
15
bi
t
14
bit
13
bit
12
bit
11
bit
10
bit
9
p>
bit
8
bit
7
bit
6
bit
5
bit
4
bit
< br>3
bit
2
bit
1
bit
0
符号
位
符号
位
(1位)
指数
段(16位)
(1位)
< br>尾数
段(16位)
?
十进制小数的运算:
十进制小数无法在
PLC
(
FX2N
)
中直接进行运算
处理,需用
EBIN
指令转化为二进制小数再进行运算;
< br>
?
十进制小数的数值监控作
用:
十进制小数易于数值监控,而二进制
小数难以直接监控,直
接监控数值往往为乱码,故
PLC
中二进制小
< br>数若需监控,可用
EBCD
指令将其转化为十进制小数;
注:十进制小
数在
FX2N
仿真软件上
监控反而出现乱码;
?
二
~
十进制数相互转化中的误差:
?
在二进制小数转化为十
进制小数、
或十进制小数转化为二进制小
数过程中,易产生一定
的误差,因有效数字四舍五入的缘故;
?
因某些自动控制采用浮点数可提高
控制精度与品质,
故需浮点数
运算及处理;
?
因某些自动控制部件只能采
用整数,故需将浮点数转化为整数,
其转化过程有四舍五入,将产生一定的误差。
2
、
得到一个二进制小数的方法概要
(与得到一个十进制小数的方法互为逆运<
/p>
算)
:
?
方法一:
如产生一个二进制小数
254.6
(往
D20
中存入一个二进制小
数
254.
6
)
;
?
先往
D0
中送入一个整数(
2546
)
;
MOV K2546
D0
;
?
再用二进制整数转化为二进制小数指令
FLT
< br>转化得到二进制小数
形式,存入
D10
< br>(
2546.00
)
;
FLT D0 D10
;注:
FLT
指令仅是将
整数的表示形式转化为小数的表现形式(
2546---
2546.00
)
,但
2
?
?
?
?
此数值实质上仍是整数;
最后将二进
制小数形式除以常数
10
的倍数,得到所需小数后为
几位的二进制小数(
254.6
)
;
DEDIV D10 K10 D20
;注:小数处
理指令与整数处理指令类似,只是前面加
E
,表示属小数处理指
令;另外小数数值占二个
Dn
,为
32
位,故运算指令前需加
D
;
注:
< br>二进制小数因是
32
位数值,
整
个数值
254.6
占了
(
D21
)
D20
;
注
:
方案一
PLC
软件监控仿真结果正常;组态王监控为乱码;
例程:
?
方法二:
如产生一个二进制小数
254.6
(往
D10
中存入一个二进制小
数
254.
6
)
;
?
将一个需转化的整数送入
D0
(
2546
)
p>
;
MOV K2546
D0
;
;
?
再将一个负数(为小数的位数)送
入
D1
;
MOV -1
D1
;
?
注:上述二个
Dn
标号必须连续、且存
放整数的
Dn
标号应在前
(
D0
)
、存放负数的
Dn
标号应在后(
D1
)
< br>;
?
最后用十进制小数转化为二进制小数指令
EBIN
转化得到所
需的
二进制小数(
254.6
)
;
DEBIN
D0
D10
;注:小数处理指令与整数
处理指令类似,只是前面加
E
,表示属小数处理指令;另外小数
数
值占二个
Dn
,为
32
位,故运算指令前需加
D
;
?
注:
二进
制小数因是
32
位数值,
整个数值
p>
254.6
占了
(
D21
)
D20
;
?
注
:
方法二
PLC
软件监控仿真为乱码;
组态王监控为乱码;
?
例程:
3
、
得到一个十进制小数的方法概要<
/p>
(与得到一个二进制小数的方法互为逆运
算)
:
?
方法一
:
将一个二进制小数通过
EBC
D
指令
(
二进制小数转化为十进制
p>
小数指令
)
转化得到;注
< br>:
直接结果显示
PLC
监控仿真
为乱码
,
可在组
态王等上用尾数
指数形式显示结果
Dn
-Dn+1
;
3
?
方法
二
:先往
Dn
中送入一个整数;再往<
/p>
Dn+1
中送入一个负数(为小
数的位数
)
;注:上述二个
Dn
标号必须连续、
且存入整数的
Dn
标号
在前(
Dn
)
、存入负数的
D
n
标号在后(
Dn+1
)
。注
:
直接结果显示
PLC
监控仿真为乱码
,
可在组态王等上用尾
数
指数形式显示结果
Dn
-Dn+1
;
4
实验一
将一个整数转变为一个二进制小数,
并存入
FX2N
的
Dn
中
(产生一个
浮点数,存入
FX2N
的
Dn
中)
1
、具体
实例:
将一个整数
12
,转变为二进制
小数
1.2
,存入(
D21
)
D20
中;
为了在组态
王上易监控,再转化为十进制小数存入(
D31
)
D30
中;并用
D30
-D
31
方式在组态王显示结果。
p>
2
、程序
1
段及分
析:
先将常数(整数)
12
存入
D0
中;再用
FL
T
指令将
D0
中的常数(整
数)转变为二进制小数形式(
12.00
)存入<
/p>
D11
(
D10
)中;最后用二
进制小数除法指令
DEDIV
< br>得到
1
位小数的二进制小数(
1
.200
)存入
(
D21
)
D20
中;
M8
002
[MO
V
K1
2 D0]
[FL
T
D0
D10]
将常
数12存入
D0中
将D0中整
数12转变
为二
进制
带小
数12.00<
/p>
并存
入D11、D10中
[DE
DIV
D10 K
10
< br>D20]
将D11、D10中二
进制
小数
12.00除10
结果
1.2
存入
D21、D20中
3
、程序
1
段
PLC
仿真:
4
、程序
2
段及分析:
为了实现
(
D21
)
D20
中数值的组态王监控,
先
用
DEBCD
指令将其
转化为十进制小
数、存入(
D31
)
D30
中;
M8
002
[DE
BCD
D20 D
< br>30]
将D21、D20中的二进制小数1.2转变为十进制小数1.2
并存入D31、D30中
5
< br>、程序
2
段
PLC
仿真:
5
6
、程序
3
段及分析、
PLC
仿真:
十进制小数(
D31
)<
/p>
D30
中指数段(
D31
)值作正负值判别,若是负值
则求补码,再显示;若是正值则不需处理,直接显
示;
(指数段作正负判别
是为了:
若可
能出现负数,
需求补码处理成原码绝对值
----
十进制小数的指数
一般都是负数,如此处
-3
)
;
7
、程序
4
段及分析、
PL
C
仿真:
十进制小数(
D31
)
D30
中尾数段(
D30
)值作正负值判别,若是负值则
求补码,再显示;若是正值则不需处理,直接显示;
(尾数段作正负判别是
为了:
若可能出现负数,
需求补码处理成原码绝对值
----
为负数的十进制小数
时才可能
出现,此处不是)
;
8
、组态王监控结果及说明:
在组态
王监控中,原数
D0=12
,将其转化为
1.200
存入
(D31)D30
,
并用
D30
-D31
方式显示(
119
9
×
10
p>
-3
)
:
6
9
、
总的<
/p>
PLC
程序及解说、仿真结果:
10
、几点说明:
?
将一个整数转变为二进制小数形式
,用
FLT
指令;
?
二进制小数形式数在
FX2N
中:
?
占用二个连续
Dn
存储,占
32
位;
?
b0
位
—
b22
位(共
23
位)是尾数位;
?
b23
位
—
b30
位(共
8
位)是指数位;
?
b31
位
是符号位(
1
为负数,
0
为正数)
;
?
二进制小数不是按
2
的补码处理;
?
因上述规则,故二进制小数难以直
接监控,直接监控会出现乱码;
一般可将其转变为十进制小数,再进行监控;
?
其整数后面(小数点后面)为三位小数形式;
?
例如:一个整数
< br>12
转变为二进制小数形式数,形式为
12.000
p>
;
二
进制
小数
(
共
3
2位
,
占
2
个
D
n)
二进
制小
数
符号
位(1位)<
/p>
二进
制小
数指
数
段(8位)
二进
制小
数尾
数段(23位)
b31
1:负数
0:正数
b30
b29
b28
p>
b27
b26
b25
b24
b23
b22
b21
b20
b19
b18
b
17
b16
b15
b14
b13
b12
b11
b10
b9
b8
b7
b6
b5
b4
b3
b2
b1
b0
D11
D10
7
?
将二进
制小数转变为十进制小数形式,用
EBCD
指令;
?
十进制小数形式在<
/p>
FX2N
中:
?
占用二个连续
Dn
存储,占
32
位;
?
Dn
编号小的是尾数段,
Dn
编号大的是指数段;
?
Dn
的最高位都是符号位;
?
十进制小数是按
< br>2
的补码处理;
?
例如:一个二进制小数转变为十进
制小数存入
D31
、
D30
中,其
表示形式为:
D
3
0
?
D
31
,
即
1199
?
10
?
3
;即
D30
< br>中存的是尾数段
1199
;
D3
1
中存的是指数段
-3
。
?
因上述规则,故十进制小数可以用于直接监控;
?
将二进制小数转变为十进制小数时
,十进制小数的尾数段为
4
位,
故转变
可能会出现一定的误差。
十进制小数(
共3
2位,
占2
个D
n)
十进
制小
数指
数段
符号
位(1位)
十进
制小
数尾
数段
符号
位(1位)
b31
b30
b29
b28
b27
b
26
b25
b24
b23
b22
b21
b20
b19
b18
b17
b16
< br>1:负数
0:正数
D31
十进<
/p>
制小
数指
数段
(
16位)
b15
b14
b13
b12
b11
b10
b
9
1:负数
0:正数
b8
b7
b6
b5
b4
b3
b2
b1
b0
p>
D30
十进
制小
数
尾
数段
(16位)
8
实验二
将
2
个二进制小数(或其中一个常数
K<
/p>
、
H
)进行四则运算
1
、具体实例:
产生
2
个二进制小数,
(<
/p>
D21
)
D20=2.4
,
(
D26
)
D25=1.2
,再将这
2
个
二进制小数进行加减乘除等四则运算处理;
2
、
FX2N
程序及解说、仿真
3
、程序说明
?
首先用
M
OV
指令将整数
24
放入
D1
中、整数
12
放入
p>
D2
中;
?
用
FLT
指令将
D1
中的整数
< br>24
转变为二进制小数形式
24.00
< br>存入
D10
中、将
D2
中的整数
12
转变为二进制小数形式
12.00
存入
D15
中
;
?
用<
/p>
DEDIV
指令将
D10
中的二进制小数形式数
24.00
成为具有一位小
p>
数的二进制小数
2.400
、用
DEDIV
指令将
D15
中的二进制小数形式
数
12.00
成为
具有一位小数的二进制小数
1.200
;
?
二
进
制
小
数
2.4
00
与
12.00
进
< br>行
加
减
乘
除
四
则
运
算
:
2.4+1.2=(D31)D30
;
2.4-1.2=(D36)D35
;
2.
4
×
1.2=(D41)D40
;
2.
4
÷<
/p>
1.2=(D46)D45
;
4
、几点说明
?
将
FX2
N
中
Dn
的多个二进制小数进行四则运
算,它们类型需都为浮
点形式;
?
若某个类型不是浮点形式,需用<
/p>
FLT
转化,再参与运算;
9