教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

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

来源:网络收集 时间:2026-05-18
导读: gPLC(FX2N)浮点(小数点)运算编程研究讲义2012 目录 PLC(FX2N)浮点(小数)运算编程概要 实验一 将一个整数转变为一个二进制小数,并存入FX2N的Dn中(产生一个浮点数,存入FX2N的Dn中) 实验二 将2个二进制小数(或其中一个常数K、H)进行四则运算 实验三

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)中存入形式Dn+1Dn? ? ? ? ? ? ? ?

bit31bit30bit29bit28bit27bit26bit25bit24bit23bit22bit21bit20bit19bit18bit17bit16符号位(1位)指数段(8位)bit15bit14bit13bit12bit11bit10bit9bit8bit7bit6bit5bit4bit3bit2bit1bit0尾数段(23位)数值位(31位)

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

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

不能是整数或十进制小数;

? 若Dn中数据是整数,需用FLT指令转化为二进制小数形式,再

参与运算;

? 若Dn中数据是十进制小数,需用EBIN指令转化为二进制小数形

式,再参与运算;

? 若Dn中数据是常数K、H,可直接参与运算,无需转化,因其在

参与运算过程中会自动转化;

? 浮点数运算中指令前一般应加D,因参与运算的二进制小数都占

有二个连续的Dn、为32位数据;

1

? 浮点数运算的种类在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)中存入形式Dn+1Dnbit31bit30bit29bit28bit27bit26bit25bit24bit23bit22bit21bit20bit19bit18bit17bit16bit15bit14bit13bit12bit11bit10bit9bit8bit7bit6bit5bit4bit3bit2bit1bit0符号位符号位(1位)指数段(16位)(1位)尾数段(16位)

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

? 十进制小数的数值监控作用:十进制小数易于数值监控,而二进制

小数难以直接监控,直接监控数值往往为乱码,故PLC中二进制小数若需监控,可用EBCD指令将其转化为十进制小数;注:十进制小数在FX2N仿真软件上监控反而出现乱码; ? 二~十进制数相互转化中的误差:

? 在二进制小数转化为十进制小数、或十进制小数转化为二进制小

数过程中,易产生一定的误差,因有效数字四舍五入的缘故; ? 因某些自动控制采用浮点数可提高控制精度与品质,故需浮点数

运算及处理;

? 因某些自动控制部件只能采用整数,故需将浮点数转化为整数,

其转化过程有四舍五入,将产生一定的误差。

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

? 方法一:如产生一个二进制小数254.6(往D20中存入一个二进制小

数254.6);

? 先往D0中送入一个整数(2546);MOV K2546 D0;

? 再用二进制整数转化为二进制小数指令FLT转化得到二进制小数

形式,存入D10(2546.00);FLT D0 D10;注:FLT指令仅是将整数的表示形式转化为小数的表现形式(2546---2546.00),但

2

?

? ? ?

此数值实质上仍是整数;

最后将二进制小数形式除以常数10的倍数,得到所需小数后为几位的二进制小数(254.6);DEDIV D10 K10 D20;注:小数处理指令与整数处理指令类似,只是前面加E,表示属小数处理指令;另外小数数值占二个Dn,为32位,故运算指令前需加D; 注:二进制小数因是32位数值,整个数值254.6占了(D21)D20; 注:方案一PLC软件监控仿真结果正常;组态王监控为乱码; 例程:

? 方法二:如产生一个二进制小数254.6(往D10中存入一个二进制小

数254.6);

? 将一个需转化的整数送入D0(2546);MOV K2546 D0;; ? 再将一个负数(为小数的位数)送入D1;MOV -1 D1;

? 注:上述二个Dn标号必须连续、且存放整数的Dn标号应在前

(D0)、存放负数的Dn标号应在后(D1);

? 最后用十进制小数转化为二进制小数指令EBIN转化得到所需的

二进制小数(254.6);DEBIN D0 D10;注:小数处理指令与整数处理指令类似,只是前面加E,表示属小数处理指令;另外小数数值占二个Dn,为32位,故运算指令前需加D; ? 注:二进制小数因是32位数值,整个数值254.6占了(D21)D20; ? 注:方法二PLC软件监控仿真为乱码;组态王监控为乱码; ? 例程:

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

? 方法一:将一个二进制小数通过EBCD指令(二进制小数转化为十进制

小数指令)转化得到;注:直接结果显示PLC监控仿真为乱码,可在组态王等上用尾数\\指数形式显示结果Dn-Dn+1;

3

? 方法二:先往Dn中送入一个整数;再往Dn+1中送入一个负数(为小

数的位数);注:上述二个Dn标号必须连续、且存入整数的Dn标号在前(Dn)、存入负数的Dn标号在后(Dn+1)。注:直接结果显示PLC监控仿真为乱码,可在组态王等上用尾数\\指数形式显示结果Dn-Dn+1;

4

实验一 将一个整数转变为一个二进制小数,并存入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中;

M8002[MOV K12 D0][ …… 此处隐藏:2065字,全部文档内容请下载后查看。喜欢就下载吧 ……

PLC(FX2N)小数点(浮点)运算编程研究讲义2012.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/435190.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)