收藏 分销(赏)

小数点浮点运算编程研究讲义样本.doc

上传人:天**** 文档编号:4592915 上传时间:2024-09-30 格式:DOC 页数:27 大小:316.50KB
下载 相关 举报
小数点浮点运算编程研究讲义样本.doc_第1页
第1页 / 共27页
小数点浮点运算编程研究讲义样本.doc_第2页
第2页 / 共27页
小数点浮点运算编程研究讲义样本.doc_第3页
第3页 / 共27页
小数点浮点运算编程研究讲义样本.doc_第4页
第4页 / 共27页
小数点浮点运算编程研究讲义样本.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。gPLC( FX2N) 浮点(小数点)运算编程研究讲义 目录u PLC( FX2N)浮点( 小数) 运算编程概要u 实验一 将一个整数转变为一个二进制小数, 并存入FX2N的Dn中( 产生一个浮点数, 存入FX2N的Dn中) u 实验二 将2个二进制小数( 或其中一个常数K、 H) 进行四则运算u 实验三 一个二进制小数, 如何在LED数码显示器, 或者组态王上显示监控u 实验四 二进制浮点数运算实例u 实验五 任意位浮点数( 小数) 的输入u 附1: PLC数值显示( LED数码显示器) 含小数点方法u 附2: PLC( FX2N)

2、中输入小数小结、 要点: PLC( FX2N)浮点( 小数) 运算编程概要1、 PLC( FX2N) 浮点数( 小数) 概论: u 二进制小数概念: 二进制小数在PLC( FX2N) 中存储占用32位(即占用2个连续编号的Dn、 Dn+1), 最高位bit31位是符号位( 1是负数, 0是正数) , 其它位( bit30bit0) 是数值位, 数值位分尾数段和指数段, bit0bit22共23位是尾数段, bit23bit30共8位是指数段; 注: 二进制小数不是按2的补码处理; u 浮点数( 小数) 运算规则概念 进行浮点数( 小数) 运算的各Dn只能是二进制小数、 常数K、 H; 不能是整

3、数或十进制小数; 若Dn中数据是整数, 需用FLT指令转化为二进制小数形式, 再参与运算; 若Dn中数据是十进制小数, 需用EBIN指令转化为二进制小数形式, 再参与运算; 若Dn中数据是常数K、 H, 可直接参与运算, 无需转化, 因其在参与运算过程中会自动转化; 浮点数运算中指令前一般应加D, 因参与运算的二进制小数都占有二个连续的Dn、 为32位数据; 浮点数运算的种类在PLC( FX2N) 中有加9EADD) 、 减( ESUB) 、 乘( EMUL) 、 除( EDIV) 、 正弦( SIN) 、 余弦( COS) 、 正切( TAN) 、 数类转化( FLT、 INT、 EBIN、

4、 EBCD) 、 比较( ECMP、 CZCP) 等等; u 二进制小数的PLC处理中的监控: 因二进制小数数值与指数占用了二个连续的Dn, 且难以区别, 故难以在组态王等上监控( 如LED数码显示器、 组态王等) 、 监控的数据只是乱码, 故若要监控需将这些二进制小数用EBCD指令转化为十进制小数, 十进制小数占用连续二个Dn, 编号大的为指数段, 编号小的为尾数值、 区别明确, 易于监控; 如: ; 其中D30为尾数值、 D31为指数段; 注: 在FX2N仿真软件上易监控仿真结果; u 十进制小数概念: 十进制小数在PLC( FX2N) 中占用32位, 在PLC内部存储时采用2个连续编号的

5、Dn、 Dn+1, 编号小的保存尾数段( Dn) , 编号大的保存指数段( Dn+1) ; 如: ; 其中D30为尾数值、 D31为指数段; u 十进制小数的运算: 十进制小数无法在PLC( FX2N) 中直接进行运算处理, 需用EBIN指令转化为二进制小数再进行运算; u 十进制小数的数值监控作用: 十进制小数易于数值监控, 而二进制小数难以直接监控, 直接监控数值往往为乱码, 故PLC中二进制小数若需监控, 可用EBCD指令将其转化为十进制小数; 注: 十进制小数在FX2N仿真软件上监控反而出现乱码; u 二十进制数相互转化中的误差: 在二进制小数转化为十进制小数、 或十进制小数转化为二进

6、制小数过程中, 易产生一定的误差, 因有效数字四舍五入的缘故; 因某些自动控制采用浮点数可提高控制精度与品质, 故需浮点数运算及处理; 因某些自动控制部件只能采用整数, 故需将浮点数转化为整数, 其转化过程有四舍五入, 将产生一定的误差。2、 得到一个二进制小数的方法概要( 与得到一个十进制小数的方法互为逆运算) : u 方法一: 如产生一个二进制小数254.6( 往D20中存入一个二进制小数254.6) ; 先往D0中送入一个整数( 2546) ; MOV K2546 D0; 再用二进制整数转化为二进制小数指令FLT转化得到二进制小数形式, 存入D10( 2546.00) ; FLT D0

7、D10; 注: FLT指令仅是将整数的表示形式转化为小数的表现形式( 2546-2546.00) , 但此数值实质上仍是整数; 最后将二进制小数形式除以常数10的倍数, 得到所需小数后为几位的二进制小数( 254.6) ; DEDIV D10 K10 D20; 注: 小数处理指令与整数处理指令类似, 只是前面加E, 表示属小数处理指令; 另外小数数值占二个Dn, 为32位, 故运算指令前需加D; 注: 二进制小数因是32位数值, 整个数值254.6占了( D21) D20; 注:方案一PLC软件监控仿真结果正常; 组态王监控为乱码; 例程: u 方法二: 如产生一个二进制小数254.6( 往D

8、10中存入一个二进制小数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位数值, 整个数值

9、254.6占了( D21) D20; 注:方法二PLC软件监控仿真为乱码; 组态王监控为乱码; 例程: 3、 得到一个十进制小数的方法概要( 与得到一个二进制小数的方法互为逆运算) : u 方法一:将一个二进制小数经过EBCD指令(二进制小数转化为十进制小数指令)转化得到; 注:直接结果显示PLC监控仿真为乱码,可在组态王等上用尾数指数形式显示结果Dn-Dn+1; u 方法二: 先往Dn中送入一个整数; 再往Dn+1中送入一个负数( 为小数的位数) ; 注: 上述二个Dn标号必须连续、 且存入整数的Dn标号在前( Dn) 、 存入负数的Dn标号在后( Dn+1) 。注:直接结果显示PLC监控仿

10、真为乱码,可在组态王等上用尾数指数形式显示结果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位小数的二进

11、制小数( 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仿真: 十进制小数

12、( D31) D30中尾数段( D30) 值作正负值判别, 若是负值则求补码, 再显示; 若是正值则不需处理, 直接显示; ( 尾数段作正负判别是为了: 若可能出现负数, 需求补码处理成原码绝对值-为负数的十进制小数时才可能出现, 此处不是) ; 8、 组态王监控结果及说明: 在组态王监控中, 原数D0=12, 将其转化为1.200存入(D31)D30, 并用D30-D31方式显示( 119910-3) : 9、 总的PLC程序及解说、 仿真结果: 10、 几点说明: u 将一个整数转变为二进制小数形式, 用FLT指令; u 二进制小数形式数在FX2N中: 占用二个连续Dn存储, 占32位;

13、b0位b22位( 共23位) 是尾数位; b23位b30位( 共8位) 是指数位; b31位是符号位( 1为负数, 0为正数) ; 二进制小数不是按2的补码处理; u 因上述规则, 故二进制小数难以直接监控, 直接监控会出现乱码; 一般可将其转变为十进制小数, 再进行监控; u 其整数后面( 小数点后面) 为三位小数形式; u 例如: 一个整数12转变为二进制小数形式数, 形式为12.000; u 将二进制小数转变为十进制小数形式, 用EBCD指令; u 十进制小数形式在FX2N中: 占用二个连续Dn存储, 占32位; Dn编号小的是尾数段, Dn编号大的是指数段; Dn的最高位都是符号位;

14、十进制小数是按2的补码处理; 例如: 一个二进制小数转变为十进制小数存入D31、 D30中, 其表示形式为: , 即; 即D30中存的是尾数段1199; D31中存的是指数段-3。u 因上述规则, 故十进制小数能够用于直接监控; u 将二进制小数转变为十进制小数时, 十进制小数的尾数段为4位, 故转变可能会出现一定的误差。实验二 将2个二进制小数( 或其中一个常数K、 H) 进行四则运算1、 具体实例: 产生2个二进制小数, ( D21) D20=2.4, ( D26) D25=1.2, 再将这2个二进制小数进行加减乘除等四则运算处理; 2、 FX2N程序及解说、 仿真3、 程序说明 首先用M

15、OV指令将整数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.41.2=(D41)D40; 2.41.2=(D46)D45; 4、 几点说明n

16、将FX2N中Dn的多个二进制小数进行四则运算, 它们类型需都为浮点形式; n 若某个类型不是浮点形式, 需用FLT转化, 再参与运算; n 但常数K、 H无需转化, 因其在参与运算过程中会自动转化为浮点形式; n 二进制小数在进行四则运算过程中, 都需应用FX2N的浮点四则运算指令, 而不能应用普通四则运算指令; n 运算结果若需监控的( LED数码显示器、 组态王等) , 可将其转换为十进制小数再监控。实验三 一个二进制小数, 如何在LED数码显示器, 或者组态王上显示监控1、 具体实例: 产生一个二进制小数1.2, 并分别组态王上监控显示、 在LED数码显示器上显示。2、 编程思路解读:

17、u 首先用FLT指令及DEDIV指令产生1个1位二进制小数1.2; 存入( D11) D10中; u 用DEBCD指令将该二进制小数1.2转化为十进制小数1.2, 并存入( D101) D100中; u 将十进制小数的指数段( 高位Dn, 即D101) 进行正负符号判别: 正数则直接显示十进制小数的指数值D101; 负数则先求补码, 再显示十进制小数的指数值; ( 显示数值前面加负号, 大多如此) ; D101=-3; u 将十进制小数的尾数段( 低位Dn, 即D100) 进行正负符号判别: 正数则直接显示十进制小数的尾数值D100=1199; 负数则先求补码, 再显示十进制小数的尾数值D10

18、0; ( 显示数值前面加负号) ; u 十进制小数的总体表示形式为: , 具体的即: D100-D101; 此实验结果为1199-3; u 十进制小数用LED数码显示器显示( 结合硬件I/O图查看) : 先对Dn( 十进制小数尾数, 经正负判别与求补码处理D100) 进行常规处理显示( BCD或SEGD等) ; 注意数值前面需加负号与否; 再对Dn+1( 十进制小数指数, 经正负判别与求补码处理D101) 进行常规处理显示( BCD或SEGD等) ; 注意数值前面需加负号与否; u 十进制小数用组态王显示监控: 按十进制小数的总体表示形式: ; 设置Dn变量( D100) 、 Dn+1变量(

19、D101) ; 并在画面按上述形式制作D100-D101; 显示结果为1199-3; 3、 PLC程序、 解说及仿真4、 组态王监控图( 略) 5、 LED数码显示器显示硬件I/O图实验四 二进制浮点数运算实例1、 具体任务: 要求编制一解方程程序: ; 其中X: X0X17( K4X0) , 由四位数字开关输入, 范围为09999。2、 PLC程序、 解说及仿真 3、 程序编制思路: u 程序编程: 采用DMOV指令、 DFLT指令及DEDIV指令先产生1个二进制小数115.2=( D26) D25; 采用DMOV指令、 DFLT指令及DEDIV指令先产生1个二进制小数375.23=( D7

20、) D6; 采用DMOV指令、 DFLT指令及DEDIV指令先产生1个二进制小数187.6=( D16) D15; X0X17输入数据处理: 先用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进行二进制小数的除法, 得到方程最终结

21、果存入( D51) D50中。u 方程编程运算过程: u 方程编程中各变量Dn含义: ( D26) D25=115.2; ( D36) D35=K4X0( X0X17) ( 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指

22、令/SUB指令) , 复位键, 小数点1位键, 小数点2位键, 数据存入D0中; 2、 减1/减5操作时, 初始最大值设置为50, 最小减至0; ( 触点比较指令) 3、 加1/加5操作时, 初始最小值设置为0, 最大加至50; ( 触点比较指令) 4、 减1/减5、 加1/加5操作中若D0数据需归零, 可按复位键( RST指令) ; 5、 输入一个小数点后一位的小数; ( FLT指令、 DEDIV指令) D206、 输入一个小数点后二位的小数; ( FLT指令、 DEDIV指令) D207、 为了二进制小数的显示, 用DEBCD指令将二进制小数转变为十进制小数; 再用BON指令、 NEG指令

23、将数据变换为尾数、 指数显示形式D30-D31; 二、 编程思路1、 先用整数数据输入指令( 如加1/加n、 减1/减n指令, TKY指令、 HKY指令、 DSW指令等等) 输入整数( 即需输入的整数连小数, 先不考虑小数点) 至Dn; 2、 再在外部Xn选择小数位( n位) , 编程处理存入Dm中, 实现了小数的输入。三、 PLC程序及解说、 仿真: 附1: 20一、 实验要求 显示一个含有小数点的实数, 如12.6、 23.8、 5.6等。二、 实验实现分析u 对于共阴LED数码显示器, 将整数中最后一位的h( 小数点) 引脚经过一个限流电阻接+Vcc即可; 其它硬件电路都类同; 而且无需

24、在软件中作任何处理。u 对于共阳LED数码显示器, 将整数中最后一位的h( 小数点) 引脚经过一个限流电阻接地即可; 其它硬件电路都类同; 而且无需在软件中作任何处理。三、 实验电路图附2: PLC( FX2N) 中输入小数小结、 要点: u FX2N中可外部输入或内部产生1个二进制小数或十进制小数; u PLC外部输入小数方案: 外部( Xn) 按常规方法输入整数至PLC的Dn中, 再在PLC中用FLT指令的将整数转化为二进制小数形式, 再用DEDIV指令来确定二进制小数的的位数; 还有第二种方法, 可见前面论述, 略; 若需转化为十进制小数, 则可用DEBCD指令将二进制小数转化为十进制小

25、数; 注: 因二进制小数在PLC内部可直接进行运算, 而十进制小数则直接不行, 故需要小数往往首选二进制小数; u PLC内部产生小数方案: 内部先用MOV指令在Dn中存入一个整数, 再用FLT指令的将整数转化为二进制小数形式, 再用DEDIV指令来确定二进制小数的的位数; 还有第二种方法, 可见前述, 略; 若需转化为十进制小数, 则可用DEBCD指令将二进制小数转化为十进制小数; 注: 因二进制小数在PLC内部可直接进行运算, 而十进制小数则直接不行, 故需要小数往往首选二进制小数; u PLC内部小数的运算: PLC内部二进制小数可直接运算: 如加减乘除比较等等; 而十进制小数则不能直接

26、运算, 需用DEBIN指令将其转化为二进制小数后进行; 数据为K、 K常数则可直接参与运算, 无需转化; 二进制小数运算时, 大多为32位, 指令前应加D; 而且运算结果存储的的存储器为连续编号的2个( Dn+1) Dn; 高位在大编号、 低位在小编号; 程序语句上只需写小编号Dn; 遇到在PLC内部需要运算处理的工程小数, 先需确定是属于何种性质( 二进制小数、 十进制小数) , 再作运算或变换后运算; 遇到在PLC内部需要运算的1个工程小数、 1个为整数, 工程小数得判断是否为二进制小数, 否则即为十进制小数, 用DEBCD指令转化之、 整数则需将整数用FLT指令转化为二进制小数, 二者才

27、可进行运算处理。u FLT指令提要: FLT指令仅是将二进制整数转化为二进制小数表现形式, 使用时需据二进制整数大小( 占一个D16位、 还是占二个D32位) 前面加D还是不加; 经FLT指令转化后的二进制小数一般占连续2个Dn; 要将经FLT指令转化而来的二进制小数形式的( Dn+1) Dn, 得到是几位小数的值, 可用DEDIV指令, 除10得到1位小数, 除100得到2位小数, 以此类推; u 二进制小数的要点: 二进制小数可在FX2N中直接进行四则运算, 可直接在PLC软件中仿真显示结果; 但在组态王等监控易出现乱码; 需用DEBCD指令将其转化为十进制小数后以尾数、 指数形式显示监控结果; 二进制小数为32位数, 占用连续标号的二个Dn, 最高位为符号位( 1为负数、 0为正数) , 余下的数值位: 次高及下8位为指数段, 剩余的为23位为尾数段; 组态王上较难显示; u 十进制小数的要点: 十进制小数不能在FX2N中直接进行四则运算, 需用DEBIN指令转化为二进制小数后进行; 但十进制小数在PLC仿真软件中仿真显示是乱码, 但能够尾数、 指数形式在组态王等显示监控结果; 十进制小数为32位数, 占用连续标号的二个Dn, 大编号的Dn+1存放指数段, 小编号的Dn存放尾数段, 可用Dn-Dn+1显示十进制小数;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服