PLCFX2N小数点浮点运算编程研究讲义.docx

上传人:b****1 文档编号:1429196 上传时间:2023-05-01 格式:DOCX 页数:20 大小:202.70KB
下载 相关 举报
PLCFX2N小数点浮点运算编程研究讲义.docx_第1页
第1页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第2页
第2页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第3页
第3页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第4页
第4页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第5页
第5页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第6页
第6页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第7页
第7页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第8页
第8页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第9页
第9页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第10页
第10页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第11页
第11页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第12页
第12页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第13页
第13页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第14页
第14页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第15页
第15页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第16页
第16页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第17页
第17页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第18页
第18页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第19页
第19页 / 共20页
PLCFX2N小数点浮点运算编程研究讲义.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

PLCFX2N小数点浮点运算编程研究讲义.docx

《PLCFX2N小数点浮点运算编程研究讲义.docx》由会员分享,可在线阅读,更多相关《PLCFX2N小数点浮点运算编程研究讲义.docx(20页珍藏版)》请在冰点文库上搜索。

PLCFX2N小数点浮点运算编程研究讲义.docx

PLCFX2N小数点浮点运算编程研究讲义

gPLC(FX2N)浮点(小数点)运算编程研究讲义2012

◆PLC(FX2N)浮点(小数)运算编程概要

◆实验一将一个整数转变为一个二进制小数,并存入FX2N的Dn中(产生一个浮点数,存入FX2N的Dn中)

◆实验二将2个二进制小数(或其中一个常数K、H)进行四则运算

◆实验三一个二进制小数,如何在LED数码显示器,或者组态王上显示监控

◆实验四二进制浮点数运算实例

◆实验五任意位浮点数(小数)的输入

◆附1:

PLC数值显示(LED数码显示器)含小数点方法

◆附2:

PLC(FX2N)中输入小数小结、要点:

PLC(FX2N)浮点(小数)运算编程概要

1、PLC(FX2N)浮点数(小数)概论:

◆二进制小数概念:

二进制小数在PLC(FX2N)中存储占用32位(即占用2个连续编号的Dn、Dn+1),最高位bit31位是符号位(1是负数,0是正数),其他位(bit30~bit0)是数值位,数值位分尾数段和指数段,bit0~bit22共23位是尾数段,bit23~bit30共8位是指数段;注:

二进制小数不是按2的补码处理;

二进制小数在PLC(FX2N)中存入形式

符号位

(1位)

指数段(8位)

尾数段(23位)

◆浮点数(小数)运算规则概念

进行浮点数(小数)运算的各Dn只能是二进制小数、常数K、H;不能是整数或十进制小数;

若Dn中数据是整数,需用FLT指令转化为二进制小数形式,再参与运算;

若Dn中数据是十进制小数,需用EBIN指令转化为二进制小数形式,再参与运算;

若Dn中数据是常数K、H,可直接参与运算,无需转化,因其在参与运算过程中会自动转化;

浮点数运算中指令前一般应加D,因参与运算的二进制小数都占有二个连续的Dn、为32位数据;

浮点数运算的种类在PLC(FX2N)中有加9EADD)、减(ESUB)、乘(EMUL)、除(EDIV)、正弦(SIN)、余弦(COS)、正切(TAN)、数类转化(FLT、INT、EBIN、EBCD)、比较(ECMP、CZCP)等等;◆二进制小数的PLC处理中的监控:

因二进制小数数值与指数占用了二个连续的Dn,且难以区别,故难以在组态王等上监控(如LED数码显示器、组态王等)、监控的数据只是乱码,故若要监控需将这些二进制小数用EBCD指令转化为十进制小数,十进制小数占用连续二个Dn,编号大的为指数段,编号小的为尾数值、区别明确,易于监

控;如:

D30-D31;其中D30为尾数值、D31为指数段;注:

在FX2N仿真软件上易监控仿真结果;

◆十进制小数概念:

十进制小数在PLC(FX2N)中占用32位,在PLC内部存储时采用2个连续编号的Dn、Dn+1,编号小的保存尾数段

Dn),编号大的保存指数段(Dn+1);如:

D30-D31;其中D30为尾

数值、D31为指数段;

十进制小数在PLC(FX2N)中存入形式

◆十进制小数的运算:

十进制小数无法在PLC(FX2N)中直接进行运算处理,需用EBIN指令转化为二进制小数再进行运算;

◆十进制小数的数值监控作用:

十进制小数易于数值监控,而二进制小数难以直接监控,直接监控数值往往为乱码,故PLC中二进制小数若需监控,可用EBCD指令将其转化为十进制小数;注:

十进制小数在FX2N仿真软件上监控反而出现乱码;

◆二~十进制数相互转化中的误差:

在二进制小数转化为十进制小数、或十进制小数转化为二进制小数过程中,易产生一定的误差,因有效数字四舍五入的缘故;

因某些自动控制采用浮点数可提高控制精度与品质,故需浮点数运算及处理;

因某些自动控制部件只能采用整数,故需将浮点数转化为整数,其转化过程有四舍五入,将产生一定的误差。

2、得到一个二进制小数的方法概要(与得到一个十进制小数的方法互为逆运算):

◆方法一:

如产生一个二进制小数254.6(往D20中存入一个二进制小数254.6);

先往D0中送入一个整数(2546);MOVK2546D0;

再用二进制整数转化为二进制小数指令FLT转化得到二进制小数形式,存入D10(2546.00);FLTD0D10;注:

FLT指令仅是将整数的表示形式转化为小数的表现形式(2546---2546.00),但

此数值实质上仍是整数;最后将二进制小数形式除以常数10的倍数,得到所需小数后为几位的二进制小数(254.6);DEDIVD10K10D20;注:

小数处理指令与整数处理指令类似,只是前面加E,表示属小数处理指令;另外小数数值占二个Dn,为32位,故运算指令前需加D;注:

二进制小数因是32位数值,整个数值254.6占了(D21)D20;注:

方案一PLC软件监控仿真结果正常;组态王监控为乱码;例程:

将一个需转化的整数送入D0(2546);MOVK2546D0;;

再将一个负数(为小数的位数)送入D1;MOV-1D1;

注:

上述二个Dn标号必须连续、且存放整数的Dn标号应在前(D0)、存放负数的Dn标号应在后(D1);

最后用十进制小数转化为二进制小数指令EBIN转化得到所需的二进制小数(254.6);DEBIND0D10;注:

小数处理指令与整数处理指令类似,只是前面加E,表示属小数处理指令;另外小数数值占二个Dn,为32位,故运算指令前需加D;

注:

二进制小数因是32位数值,整个数值254.6占了(D21)D20;

注:

方法二PLC软件监控仿真为乱码;组态王监控为乱码;

例程:

3、得到一个十进制小数的方法概要(与得到一个二进制小数的方法互为逆运算):

◆方法一:

将一个二进制小数通过EBCD指令(二进制小数转化为十进制小数指令)转化得到;注:

直接结果显示PLC监控仿真为乱码,可在组态王等上用尾数\指数形式显示结果Dn-Dn+1;

◆方法二:

先往Dn中送入一个整数;再往Dn+1中送入一个负数(为小数的位数);注:

上述二个Dn标号必须连续、且存入整数的Dn标号在前(Dn)、存入负数的Dn标号在后(Dn+1)。

注:

直接结果显示PLC监控仿真为乱码,可在组态王等上用尾数\指数形式显示结果Dn-Dn+1;

M8002

[MOVK12D0]

[FLTD0D10]

[DEDIVD10K10

实验一将一个整数转变为一个二进制小数,并存入FX2N的Dn中(产生一个

浮点数,存入FX2N的Dn中)

1、具体实例:

将一个整数12,转变为二进制小数1.2,存入(D21)D20中;为了在组态王上易监控,再转化为十进制小数存入(D31)D30中;并用D30-D31方式在组态王显示结果。

2、程序1段及分析:

先将常数(整数)12存入D0中;再用FLT指令将D0中的常数(整数)转变为二进制小数形式(12.00)存入D11(D10)中;最后用二进制小数除法指令DEDIV得到1位小数的二进制小数(1.200)存入(D21)D20中;

将常数12存入D0中

将D0中整数12转变为二进制带小数12.00

并存入D11、D10中

D20]将D11、D10中二进制小数12.00除10

结果1.2存入D21、D20中

4、程序2段及分析:

为了实现(D21)D20中数值的组态王监控,先用DEBCD指令将其转化为十进制小数、存入(D31)D30中;

M8002

DEBCDD20D30]

将D21、D20中的二进制小数1.2转变为十进制小数1.2

并存入D31、D30中

5、程序2段PLC仿真:

6、程序3段及分析、PLC仿真:

十进制小数(D31)D30中指数段(D31)值作正负值判别,若是负值则求补码,再显示;若是正值则不需处理,直接显示;(指数段作正负判别是为了:

若可能出现负数,需求补码处理成原码绝对值十进制小数的指数一般都是负数,如此处-3);

7、程序4段及分析、PLC仿真:

十进制小数(D31)D30中尾数段(D30)值作正负值判别,若是负值则求补码,再显示;若是正值则不需处理,直接显示;(尾数段作正负判别是

为了:

若可能出现负数,需求补码处理成原码绝对值为负数的十进制小数

时才可能出现,此处不是);

8、组态王监控结果及说明:

在组态王监控中,原数D0=12,将其转化为1.200存入(D31)D30,并用

D30-D31方式显示(1199×10-3):

 

9、总的PLC程序及解说、仿真结果:

 

10、几点说明:

◆将一个整数转变为二进制小数形式,用FLT指令;

◆二进制小数形式数在FX2N中:

占用二个连续Dn存储,占32位;

b0位—b22位(共23位)是尾数位;

b23位—b30位(共8位)是指数位;

b31位是符号位(1为负数,0为正数);

二进制小数不是按2的补码处理;

◆因上述规则,故二进制小数难以直接监控,直接监控会出现乱码;

一般可将其转变为十进制小数,再进行监控;

◆其整数后面(小数点后面)为三位小数形式;

◆例如:

一个整数12转变为二进制小数形式数,形式为12.000;

b31

b30

b29

b28

b27

b26

b25

b24

b23

b22

b21

b20

b19

b18

b17

b16

b15

b14

b13

b12

b11

b10

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

二进制小数

符号位(1位)

1

0:

正数

D11

D10

◆将二进制小数转变为十进制小数形式,用EBCD指令;

◆十进制小数形式在FX2N中:

占用二个连续Dn存储,占32位;

Dn编号小的是尾数段,Dn编号大的是指数段;

Dn的最高位都是符号位;

十进制小数是按2的补码处理;

例如:

一个二进制小数转变为十进制小数存入D31、D30中,其

表示形式为:

D30-D31,即119910-3;即D30中存的是尾数段

1199;D31中存的是指数段-3。

◆因上述规则,故十进制小数可以用于直接监控;

◆将二进制小数转变为十进制小数时,十进制小数的尾数段为4位,故转变可能会出现一定的误差。

十进制小数(共32位,占2个Dn)

b31

b30

b29

b28

b27

b26

b25

b24

b23

b22

b21

b20

b19

b18

b17

b16

b15

b14

b13

b12

b11

b10

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

十进制小数指数段符号位(1位)

十进制小数尾数段

符号位(1位)

D31

十进制小数指数段(16位)

0:

正数

0:

正数

D30

十进制小数尾数段(16位)

 

实验二将2个二进制小数(或其中一个常数K、H)进行四则运算

1、具体实例:

产生2个二进制小数,(D21)D20=2.4,(D26)D25=1.2,再将这2个二进制小数进行加减乘除等四则运算处理;

2、FX2N程序及解说、仿真

3、程序说明

首先用MOV指令将整数24放入D1中、整数12放入D2中;

用FLT指令将D1中的整数24转变为二进制小数形式24.00存入D10中、将D2中的整数12转变为二进制小数形式12.00存入D15中;

用DEDIV指令将D10中的二进制小数形式数24.00成为具有一位小数的二进制小数2.400、用DEDIV指令将D15中的二进制小数形式数12.00成为具有一位小数的二进制小数1.200;

二进制小数2.400与12.00进行加减乘除四则运算:

2.4+1.2=(D31)D30;2.4-1.2=(D36)D35;2.4×1.2=(D41)D40;2.4÷1.2=(D46)D45;

4、几点说明

◼将FX2N中Dn的多个二进制小数进行四则运算,它们类型需都为浮点形式;

◼若某个类型不是浮点形式,需用FLT转化,再参与运算;

◼但常数K、H无需转化,因其在参与运算过程中会自动转化为浮点形式;

◼二进制小数在进行四则运算过程中,都需应用FX2N的浮点四则运算指令,而不能应用普通四则运算指令;

◼运算结果若需监控的(LED数码显示器、组态王等),可将其转换为十进制小数再监控。

实验三一个二进制小数,如何在LED数码显示器,或者组态王上显示监控

1、具体实例:

产生一个二进制小数1.2,并分别组态王上监控显示、在LED数码显示器上显示。

2、编程思路解读:

◆首先用FLT指令及DEDIV指令产生1个1位二进制小数1.2;存入(D11)D10中;

◆用DEBCD指令将该二进制小数1.2转化为十进制小数1.2,并存入(D101)D100中;

◆将十进制小数的指数段(高位Dn,即D101)进行正负符号判别:

正数则直接显示十进制小数的指数值D101;

负数则先求补码,再显示十进制小数的指数值;(显示数值前面加负号,大多如此);D101=-3;

◆将十进制小数的尾数段(低位Dn,即D100)进行正负符号判别:

正数则直接显示十进制小数的尾数值D100=1199;

负数则先求补码,再显示十进制小数的尾数值D100;(显示数值前面加负号);

-Dn+1

◆十进制小数的总体表示形式为:

Dn-Dn+1,具体的即:

D100-D101;此实验结果为1199-3;

◆十进制小数用LED数码显示器显示(结合硬件I/O图查看):

先对Dn(十进制小数尾数,经正负判别与求补码处理D100)进行常规处理显示(BCD或SEGD等);注意数值前面需加负号与否;

再对Dn+1(十进制小数指数,经正负判别与求补码处理D101)进行常规处理显示(BCD或SEGD等);注意数值前面需加负号与否;◆十进制小数用组态王显示监控:

-Dn+1

按十进制小数的总体表示形式:

Dn-Dn+1;设置Dn变量(D100)、Dn+1变量(D101);并在画面按上述形式制作D100-D101;显示结果为1199-3;

3、PLC程序、解说及仿真

4、组态王监控图(略)

5、LED数码显示器显示硬件I/O图

显示二进制小数的尾数

显示二进制小数的指数

187.6

由四位数字开关输入,范围为0—9999。

K4X0),

实验四二进制浮点数运算实例

1、具体任务:

115.2x+375.23

要求编制一解方程程序:

y=115.2x+375.23;其中X:

X0—X17

3、程序编制思路:

◆程序编程:

 

采用DMOV指令、DFLT指令及DEDIV指令先产生1个二进制小数115.2=(D26)D25;

采用DMOV指令、DFLT指令及DEDIV指令先产生1个二进制小数375.23=(D7)D6;

采用DMOV指令、DFLT指令及DEDIV指令先产生1个二进制小数187.6=(D16)D15;

X0~X17输入数据处理:

先用BIN指令将输入的16位BCD码整数转换为二进制整数;再用FLT指令将此数转换为二进制小数形式存入(D36)D35;

用EDMUL指令将(D26)D25与(D36)D35进行二进制小数的乘法,结果存入(D41)D40中;

用DEADD指令将(D41)D40与(D7)D6进行二进制小数的加法;结果存入(D46)D45中;

用DEDIV指令将(D46)D45与(D16)D15进行二进制小数的除法,得到方程最终结果存入(D51)D50中。

◆方程编程运算过程:

(D26)D25(D36)D35+(D7)D6(D41)D40+(D7)D6(D46)D45(D51)D50===

(D16)D15(D16)D15(D16)D15

◆方程编程中各变量Dn含义:

(D26)D25=115.2;

(D36)D35=K4X0(X0~X17)

(D7)D6=375.23;

(D16)D15=187.6;

(D26)D25×(D36)D35=(D41)D40;

(D41)D40+(D7)D6=(D46)D45;

(D51)D50=(D46)D45÷(D16)D15;即方程最后结果;

实验五任意位浮点数(小数)的输入

一、具体任务及编程解读:

1、设置加1/加5键(INC指令/ADD指令),减1/减5键(DEC指令/SUB指令),复位键,小数点1位键,小数点2位键,数据存入D0中;

2、减1/减5操作时,初始最大值设置为50,最小减至0;(触点比较指令)

3、加1/加5操作时,初始最小值设置为0,最大加至50;(触点比较指令)

4、减1/减5、加1/加5操作中若D0数据需归零,可按复位键(RST指令);

5、输入一个小数点后一位的小数;(FLT指令、DEDIV指令)D20

6、输入一个小数点后二位的小数;(FLT指令、DEDIV指令)D20

7、为了二进制小数的显示,用DEBCD指令将二进制小数转变为十进制小数;再用BON指令、NEG指令将数据变换为尾数、指数显示形式D30-D31;

二、编程思路

1、先用整数数据输入指令(如加1/加n、减1/减n指令,TKY指令、HKY指令、DSW指令等等)输入整数(即需输入的整数连小数,先不考虑小数点)至Dn;

2、再在外部Xn选择小数位(n位),编程处理存入Dm中,实现了小数的输入。

三、PLC程序及解说、仿真:

附1:

20

一、实验要求

显示一个含有小数点的实数,如12.6、23.8、5.6等。

二、实验实现分析

◆对于共阴LED数码显示器,将整数中最后一位的h(小数点)引脚通过一个限流电阻接+Vcc即可;其他硬件电路都类同;并且无需在软件中作任何处理。

◆对于共阳LED数码显示器,将整数中最后一位的h(小数点)引脚通过一个限流电阻接地即可;其他硬件电路都类同;并且无需在软件中作任何处理。

三、实验电路图

+Vcc

整数十位

整数个位

小数位

附2:

PLC(FX2N)中输入小数小结、要点:

◆FX2N中可外部输入或内部产生1个二进制小数或十进制小数;

◆PLC外部输入小数方案:

外部(Xn)按常规方法输入整数至PLC的Dn中,

再在PLC中用FLT指令的将整数转化为二进制小数形式,再用DEDIV指令来确定二进制小数的的位数;

还有第二种方法,可见前面论述,略;

若需转化为十进制小数,则可用DEBCD指令将二进制小数转化为十进制小数;

注:

因二进制小数在PLC内部可直接进行运算,而十进制小数则直接不行,故需要小数往往首选二进制小数;

◆PLC内部产生小数方案:

内部先用MOV指令在Dn中存入一个整数,

再用FLT指令的将整数转化为二进制小数形式,再用DEDIV指令来确定二进制小数的的位数;

还有第二种方法,可见前述,略;

若需转化为十进制小数,则可用DEBCD指令将二进制小数转化为十

进制小数;

注:

因二进制小数在PLC内部可直接进行运算,而十进制小数则直接不行,故需要小数往往首选二进制小数;

◆PLC内部小数的运算:

PLC内部二进制小数可直接运算:

如加减乘除比较等等;

而十进制小数则不能直接运算,需用DEBIN指令将其转化为二进制小数后进行;

数据为K、K常数则可直接参与运算,无需转化;

二进制小数运算时,大多为32位,指令前应加D;并且运算结果存储的的存储器为连续编号的2个(Dn+1)Dn;高位在大编号、低位在小编号;程序语句上只需写小编号Dn;

遇到在PLC内部需要运算处理的工程小数,先需确定是属于何种性质(二进制小数、十进制小数),再作运算或变换后运算;

遇到在PLC内部需要运算的1个工程小数、1个为整数,工程小数得判断是否为二进制小数,否则即为十进制小数,用DEBCD指令转化之、整数则需将整数用FLT指令转化为二进制小数,二者才可进行运算处理。

◆FLT指令提要:

FLT指令仅是将二进制整数转化为二进制小数表现形式,

使用时需据二进制整数大小(占一个D16位、还是占二个D32位)前面加D还是不加;

经FLT指令转化后的二进制小数一般占连续2个Dn;

要将经FLT指令转化而来的二进制小数形式的(Dn+1)Dn,得到是几位小数的值,可用DEDIV指令,除10得到1位小数,除100得到2位小数,以此类推;

◆二进制小数的要点:

二进制小数可在FX2N中直接进行四则运算,可直接在PLC软件中仿真显示结果;但在组态王等监控易出现乱码;需用DEBCD指令将其转化为十进制小数后以尾数、指数形式显示监控结果;二进制小数为32位数,占用连续标号的二个Dn,最高位为符号位(1为负数、0为正数),余下的数值位:

次高及下8位为指数段,剩余的为23位为尾数段;组态王上较难显示;

◆十进制小数的要点:

十进制小数不能在FX2N中直接进行四则运算,需用DEBIN指令转化为二进制小数后进行;但十进制小数在PLC仿真软件中仿真显示是乱码,但可以尾数、指数形式在组态王等显示监控结果;十进制小数为32位数,占用连续标号的二个Dn,大编号的Dn+1存放指数段,小编号的Dn存放尾数段,可用Dn-Dn+1显示十进制小数;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2