最新PLCFX2N小数点浮点运算编程研究讲义.docx
- 文档编号:17118597
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:22
- 大小:244.41KB
最新PLCFX2N小数点浮点运算编程研究讲义.docx
《最新PLCFX2N小数点浮点运算编程研究讲义.docx》由会员分享,可在线阅读,更多相关《最新PLCFX2N小数点浮点运算编程研究讲义.docx(22页珍藏版)》请在冰点文库上搜索。
最新PLCFX2N小数点浮点运算编程研究讲义
PLC(FX2N)小数点(浮点)运算编程研究讲义2022
gPLC〔FX2N〕浮点(小数点)运算编程研究讲义2022
◆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的补码处理;
◆浮点数〔小数〕运算规那么概念
✧进行浮点数〔小数〕运算的各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为指数段;注:
在FX2N仿真软件上易监控仿真结果;
◆十进制小数概念:
十进制小数在PLC〔FX2N〕中占用32位,在PLC内部存储时采用2个连续编号的Dn、Dn+1,编号小的保存尾数段〔Dn〕,编号大的保存指数段〔Dn+1〕;如:
;其中D30为尾数值、D31为指数段;
◆十进制小数的运算:
十进制小数无法在PLC〔FX2N〕中直接进行运算处理,需用EBIN指令转化为二进制小数再进行运算;
◆十进制小数的数值监控作用:
十进制小数易于数值监控,而二进制小数难以直接监控,直接监控数值往往为乱码,故PLC中二进制小数假设需监控,可用EBCD指令将其转化为十进制小数;注:
十进制小数在FX2N仿真软件上监控反而出现乱码;
◆二~十进制数相互转化中的误差:
✧在二进制小数转化为十进制小数、或十进制小数转化为二进制小数过程中,易产生一定的误差,因有效数字四舍五入的缘故;
✧因某些自动控制采用浮点数可提高控制精度与品质,故需浮点数运算及处理;
✧因某些自动控制部件只能采用整数,故需将浮点数转化为整数,其转化过程有四舍五入,将产生一定的误差。
2、得到一个二进制小数的方法概要〔与得到一个十进制小数的方法互为逆运算〕:
◆方法一:
如产生一个二进制小数254.6〔往D20中存入一个二进制小数254.6〕;
✧先往D0中送入一个整数〔2546〕;MOVK2546D0;
✧再用二进制整数转化为二进制小数指令FLT转化得到二进制小数形式,存入D10〔2546.00〕;FLTD0D10;注:
FLT指令仅是将整数的表示形式转化为小数的表现形式〔2546---2546.00〕,
✧
✧
◆态王等上用尾数\指数形式显示结果Dn-Dn+1;
◆方法二:
先往Dn中送入一个整数;再往Dn+1中送入一个负数〔为小数的位数〕;注:
上述二个Dn标号必须连续、且存入整数的Dn标号在前〔Dn〕、存入负数的Dn标号在后〔Dn+1〕。
注:
直接结果显示PLC监控仿真为乱码,可在组态王等上用尾数\指数形式显示结果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存储,占32位;
✧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;
✧二进制小数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;〔显示数值前面加负号〕;
◆十进制小数的总体表示形式为:
,具体的即:
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、输入一个小数点后二位的小数;〔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〔小数点〕引脚通过一个限流电阻接地即可;其他硬件电路都类同;并且无需在软件中作任何处理。
三、实验电路图
附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显示十进制小数;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 PLCFX2N 小数点 浮点 运算 编程 研究 讲义