只取16位_如何理解三菱FX PLC的浮点数与逻辑位运算指令?

戳上方 蓝字  "技成电工课堂”  关注我们哦!

ca4998f047906f749ee2632c0cbfead3.gif

上篇文章分享的是整数的运算指令,为了不让大家看得那么累,我把浮点数运算指令和逻辑位运算指令放到这次来分享。

9033cfd60a1a44be55f482e40dc53e94.png 浮点数是什么,我在上上篇文章就提到过,简单来说就是小数。BIN数有四则运算指令,同样的,浮点数也有四则运算指令:加、减、乘、除。一浮点数的加减乘除指令

浮点数四则运算指令和整点数对应指令的运算过程大同小异,不同点在于,前者是小数,后者是整数。运算过程虽然基本相同,但指令的运用还是有所区别的,接下来我们重点看一下指令运用的区别。

  1、浮点数的EADD(加)、ESUB(减)    EMUL(乘)、EDIV(除)指令◤ 42b3ceeaa09767ae452995428328a5e3.png 从编程手册的截图中,可以看到,浮点数的四则运算指令只能用于32位,不能用于16位。这4个指令都有2个源操作数(S1·)、(S2·)和1个目的操作数(D·),且适用软元件只有常数K、H和数据寄存器D。 它们的梯形图形式如下图所示,因为都是32位的错作数,所以在运用指令时助记符前面要加上字母“D”。 从梯形图可以看到,不管是加减还是乘除,不管是源址还是终址,它们都32位,这和我们在上篇文章所分享的整数四则运算指令有一定的差别,例如整数的32位乘法指令,目的操作数有4个,但浮点数的是2个。 14d8c42e57edde22d88179e1aa8e8cc9.png 其实这是很显然的,因为浮点数的表示方式和整点数完全不一样,这在上上一篇文章就已经有说明,所以在此不再赘述,大家不了解的可以回看以往的文章。另外,浮点数的四则运算指令不会影响到3个标志位M8020、M8021、M8022。 和整数运算指令一样,,PLC每扫描一个周期,这些指令就执行一次,此时,重复执行运算可能不是我们需要的,所以应该选择脉冲执行型指令或边沿触发型驱动条件。 总的来说,浮点数的四则运算指令和整点数差不多,需要用的时候直接用就是。我们接下来继续看2个与浮点数相关的其他指令。

5ef8c7397db1eefc218e3a7689792ac0.png

  2、浮点数与整数相互转换的FLT、INT指令◤ FLT指令和INT指令分别是整数转浮点数、浮点数转整数的一对互为逆变换的指令。 c6584196ad30c68ea6505e2bc405094f.png 从编程手册的截图可以看到,这两个指令的适用软元件只有数据寄存器D,不能是其他的软元件。有因为浮点数是32位的,所以在转换的过程中,一定要注意数据寄存器D的地址。 那么,FLT指令和INT指令有什么用呢?这是因为有的PLC不能直接输入浮点数,例如FX 2N的PLC,但它又能进行浮点数运算。所以FX 2N的PLC想进行浮点数运算,就得先输入整数,再通过FLT指令将整数转换为浮点数,进而参与浮点数运算。 另外,虽然有的PLC不能直接输入浮点数,但如果输入的是K、H常数,浮点数运算指令会直接将其转换为浮点数。例如DEADD  K10  H10  D0可以在FX 2N的PLC中输入,但DEADD  E10.0  H10  D0却不能输入。 6485e43647b2f5fa35fa4903be6e1ccc.png 这里有一点要注意的是,常数通过FLT指令转换为浮点数之后,它原本的值其实是没有变的,例如把10转换为浮点数就是10.000。但有时候我们要输入的本身就是小数,如0.5,显然直接用FLT指令是不行的,那这该怎么办呢? 这时候我们可以先把0.5乘以10变为整数5,然后再用FLT指令转换为浮点数5.000,最后除以10就是0.500了,如下图所示。 c4b315519dde8d01723e3d241e071744.png 而INT指令实则为取整指令,也就是说将浮点数的小数部分去掉,只取整数部分的值。但在这里也要注意的一点是,INT指令的执行会影响到3个标志位。例如,若浮点数整数部分为0,用INT指令取整后结果为“0”,同时借位标志位M8021=ON,如下图所示。 80527ab5187bc3e324d717dd98db697e.png 若浮点数本身为0.000,用INT指令取整后结果亦为“0”,同时标志位M8020=ON,如下图所示。当然,若取整后结果溢出,标志位M8022=ON,在此不再举例。 4a7d3e5440339c8e8af9479085868f3a.png 除此之外,与浮点数相关的指令还有十进制浮点数与二进制浮点数相互转换指令EBCD、EBIN,但因为对于目前还是小白的我而言,它们的应用比较高级,我也就不展开讲解了。简单来说,EBCD指令就是将二进制浮点数转换为十进制浮点数,而EBIN指令就是将十进制浮点数转换为二进制浮点数。 分享完浮点数运算指令后,我们继续往下看逻辑位运算的相关指令。二逻辑位运算指令

在学习逻辑位运算指令之前,我们先来了解一下什么是逻辑位运算。

所谓逻辑位运算,简单来说就是将数据按位处理,而“运算”其实就是我在最初所分享的数字电路基础中所提到的与、或、非、异或、同或等的逻辑运算。至于什么是与或非,在此我也不再赘述,不知道的,可以去看我之前写的第1篇有关数字电路基础的文章。

  1、位与、位或、按位异或◤ 位与,就是将参与运算的字软元件的各个二进制位相与,如下图所示,相对应的两位都为1(11) ,结果就为1,其余时候结果为0。同理,位或,就是将参与运算的字软元件的各个二进制位相或,如下图所示,相对应的两位只要有一个1(01、10、11) ,结果就为1,其余时候结果为0。按位异或,就是将参与运算的字软元件的各个二进制位相异或,如下图所示,相对应的两位不同(10、10) ,结果就为1,其余时候结果为0 91fca063f8a88500539da77a75cab85b.png  2、逻辑位运算的对应的指令◤ 逻辑位运算的对应指令有逻辑字与指令WAND、逻辑字或指令WOR、逻辑字异或指令WXOR,其在编程手册的截图如下所示。 18ed21358b2a33d07da138e1d50723ad.png 从编程手册截图中可以看到,这几个指令可以用于16位,也可以用于32位,可以是连续执行型,也可以是脉冲执行型。它们的适应软元件为对应字元件。 WAND、WOR、WXOR指令的梯形图形式如下图所示,例如对WEND指令有,当驱动条件成立,(S1)与(S2)=(D),将S1中的16个二进制位和S2中的对应16个二进制位相与,然后把结果存放到D中。WOR、WXOR指令同理。 fe06760fe22bb41b685055168a7640aa.png 总的来说,逻辑位指令的理解比较简单,前提是我们要理解与、或、异或的运算过程。逻辑位运算指令的应用也相对简单,例如可以用WAND指令对数据寄存器的内容清零,用WOR指令对数据寄存器的内容置1等。 即执行指令WAND  K0  D0  D0 ,将D0的内容清零;指令指令WAND  H00FF  D0  D10,将D0的高8位存到D10中;执行指令WOR  HFFFF  D0  D0,将D0的内容置全1。 异或指令WXOR对数据的处理不是很直观,例如指令指令WXOR  H00FF  D0  D0,我们不能直接简单地说这是将D0的内容置1、清0,但可以用一句话总结它的规律:与1异或,该位翻转;与0异或,该位不变。也就是说,用1异或,就可以将对应位的值取反;用0异或,则表示保留对应位的值,使其不变,如下图所示。 7fe08ef1203934929b483a4933212a01.png 类似以上的逻辑位运算指令,即将字软元件的内容按位进行处理,其实还有我在上篇文章所提到的求补码指令NEG。 最后,这次的分享学习就到这里啦,今天又是收获满满的一天。 3a7cf92e4e7b2d3cfd19f7018c989e85.png 注:本文章内容都是基于三菱FX PLC 2N所写 选自《三菱FX系列PLC功能指令详解》第五章第29~38课时 (技成培训原创,作者:杨思慧,未经授权不得转载,违者必究)
a76d356b557e77f48a7de422e3201525.png

如何0基础学习PLC?

关注回复 “ 工控全套  

获取更多工控案例与电气软件大全!

f26248505124cebcd8f978819e3dda09.png

905b782f20ff83bf8801ca46a0fecd56.gif你的分享、点赞、在看我都喜欢 905b782f20ff83bf8801ca46a0fecd56.gif
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值