PLCFX2N小数点浮点运算编程研究讲义Word格式文档下载.docx
《PLCFX2N小数点浮点运算编程研究讲义Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《PLCFX2N小数点浮点运算编程研究讲义Word格式文档下载.docx(13页珍藏版)》请在冰点文库上搜索。
![PLCFX2N小数点浮点运算编程研究讲义Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/b485bd37-adda-426c-82ba-b20c20665981/b485bd37-adda-426c-82ba-b20c206659811.gif)
✧浮点数运算的种类在PLC(FX2N)中有加9EADD)、减(ESUB)、乘(EMUL)、除(EDIV)、正弦(SIN)、余弦(COS)、正切(TAN)、数类转化(FLT、INT、EBIN、EBCD)、比力(ECMP、CZCP)等等;
◆二进制小数的PLC处置中的监控:
因二进制小数数值与指数占用了二个连续的Dn,且难以区别,故难以在组态王等上监控(如LED数码显示器、组态王等)、监控的数据只是乱码,故若要监控需将这些二进制小数用EBCD指令转化为十进制小数,十进制小数占用连续二个Dn,编号年夜的为指数段,编号小的为尾数值、区别明确,易于监控;
如:
;
其中D30为尾数值、D31为指数段;
在FX2N仿真软件上易监控仿真结果;
◆十进制小数概念:
十进制小数在PLC(FX2N)中占用32位,在PLC内部存储时采纳2个连续编号的Dn、Dn+1,编号小的保管尾数段(Dn),编号年夜的保管指数段(Dn+1);
◆十进制小数的运算:
十进制小数无法在PLC(FX2N)中直接进行运算处置,需用EBIN指令转化为二进制小数再进行运算;
◆十进制小数的数值监控作用:
十进制小数易于数值监控,而二进制小数难以直接监控,直接监控数值往往为乱码,故PLC中二进制小数若需监控,可用EBCD指令将其转化为十进制小数;
十进制小数在FX2N仿真软件上监控反而呈现乱码;
◆二~十进制数相互转化中的误差:
✧在二进制小数转化为十进制小数、或十进制小数转化为二进制小数过程中,易发生一定的误差,因有效数字四舍五入的缘故;
✧因某些自动控制采纳浮点数可提高控制精度与品质,故需浮点数运算及处置;
✧因某些自动控制部件只能采纳整数,故需将浮点数转化为整数,其转化过程有四舍五入,将发生一定的误差.
2、获得一个二进制小数的方法概要(与获得一个十进制小数的方法互为逆运算):
◆方法一:
如发生一个二进制小数254.6(往D20中存入一个二进制小数254.6);
✧先往D0中送入一个整数(2546);
MOVK2546D0;
✧);
FLTD0D10;
FLT指令仅是将整数的暗示形式转化为小数的暗示形式(2546---2546.00),但此数值实质上仍是整数;
✧最后将二进制小数形式除以常数10的倍数,获得所需小数后为几位的二进制小数(254.6);
DEDIVD10K10D20;
小数处置指令与整数处置指令类似,只是前面加E,暗示属小数处置指令;
另外小数数值占二个Dn,为32位,故运算指令前需加D;
✧注:
二进制小数因是32位数值,整个数值254.6占了(D21)D20;
✧注:
方案一PLC软件监控仿真结果正常;
组态王监控为乱码;
✧例程:
◆方法二:
如发生一个二进制小数254.6(往D10中存入一个二进制小数254.6);
✧将一个需转化的整数送入D0(2546);
✧再将一个负数(为小数的位数)送入D1;
MOV-1D1;
上述二个Dn标号必需连续、且寄存整数的Dn标号应在前(D0)、寄存负数的Dn标号应在后(D1);
✧最后用十进制小数转化为二进制小数指令EBIN转化获得所需的二进制小数(254.6);
DEBIND0D10;
方法二PLC软件监控仿真为乱码;
3、获得一个十进制小数的方法概要(与获得一个二进制小数的方法互为逆运算):
◆方法一:
将一个二进制小数通过EBCD指令(二进制小数转化为十进制小数指令)转化获得;
注:
直接结果显示PLC监控仿真为乱码,可在组态王等上用尾数\指数形式显示结果Dn-Dn+1;
先往Dn中送入一个整数;
再往Dn+1中送入一个负数(为小数的位数);
上述二个Dn标号必需连续、且存入整数的Dn标号在前(Dn)、存入负数的Dn标号在后(Dn+1).注:
实验一将一个整数转酿成一个二进制小数,并存入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中;
3、法式1段PLC仿真:
4、法式2段及分析:
为了实现(D21)D20中数值的组态王监控,先用DEBCD指令将其转化为十进制小数、存入(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;
◆将二进制小数转酿成十进制小数形式,用EBCD指令;
◆十进制小数形式在FX2N中:
✧Dn编号小的是尾数段,Dn编号年夜的是指数段;
✧Dn的最高位都是符号位;
✧十进制小数是按2的补码处置;
✧例如:
一个二进制小数转酿成十进制小数存入D31、D30中,其暗示形式为:
即
即D30中存的是尾数段1199;
D31中存的是指数段-3.
◆因上述规则,故十进制小数可以用于直接监控;
◆将二进制小数转酿成十进制小数时,十进制小数的尾数段为4位,故转变可能会呈现一定的误差.
实验二将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;
✧×
÷
1.2=(D46)D45;
4、几点说明
⏹将FX2N中Dn的多个二进制小数进行四则运算,它们类型需都为浮点形式;
⏹若某个类型不是浮点形式,需用FLT转化,再介入运算;
⏹但常数K、H无需转化,因其在介入运算过程中会自动转化为浮点形式;
⏹二进制小数在进行四则运算过程中,都需应用FX2N的浮点四则运算指令,而不能应用普通四则运算指令;
⏹运算结果若需监控的(LED数码显示器、组态王等),可将其转换为十进制小数再监控.
实验三一个二进制小数,如何在LED数码显示器,或者组态王上显示监控
发生一个二进制小数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;
(显示数值前面加负号);
◆十进制小数的总体暗示形式为:
具体的即:
D100-D101;
此实验结果为1199-3;
◆十进制小数用LED数码显示器显示(结合硬件I/O图检查):
✧先对Dn(十进制小数尾数,经正负判别与求补码处置D100)进行惯例处置显示(BCD或SEGD等);
注意数值前面需加负号与否;
✧再对Dn+1(十进制小数指数,经正负判别与求补码处置D101)进行惯例处置显示(BCD或SEGD等);
◆十进制小数用组态王显示监控:
✧按十进制小数的总体暗示形式:
设置Dn变量(D100)、Dn+1变量(D101);
并在画面按上述形式制作D100-D101;
显示结果为1199-3;
3、PLC法式、解说及仿真
4、组态王监控图(略)
5、LED数码显示器显示硬件I/O图
实验四二进制浮点数运算实例
1、具体任务:
要求编制一解方程法式:
其中X:
X0—X17(K4X0),由四位数字开关输入,范围为0—9999.
2、PLC法式、解说及仿真
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中.
◆方程编程运算过程:
◆方程编程中各变量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、输入一个小数点后二位的小数;
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(小数点)引脚通过一个限流电阻接地即可;
三、实验电路图
附2:
◆FX2N中可外部输入或内部发生1个二进制小数或十进制小数;
◆PLC外部输入小数方案:
✧外部(Xn)按惯例方法输入整数至PLC的Dn中,
✧再在PLC中用FLT指令的将整数转化为二进制小数形式,再用DEDIV指令来确定二进制小数的的位数;
✧还有第二种方法,可见前面论述,略;
✧若需转化为十进制小数,则可用DEBCD指令将二进制小数转化为十进制小数;
因二进制小数在PLC内部可直接进行运算,而十进制小数则直接不成,故需要小数往往首选二进制小数;
◆PLC内部发生小数方案:
✧内部先用MOV指令在Dn中存入一个整数,
✧再用FLT指令的将整数转化为二进制小数形式,再用DEDIV指令来确定二进制小数的的位数;
✧还有第二种方法,可见前述,略;
◆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显示十进制小数;