分享

【跟着我一起来学习s7-200】21转换指令

 老黄兄 2015-01-14








前面已经学习了位逻辑指令、定时器指令、计数器指令和比较指令了,并且也做了一些这些指令的应用的例子。那么今天就开始学习新的内容,学习一下转换指令。转换指令主要是用于对数码的格式转换,在编程过程中有时也是会要进行转换会用到的,所以,关于转换指令的内容我们也是要学习一下的。

转换指令也包括有很多种,有字节、整数、双整数和浮点数之间的转换,BCD码与整数之间的转换,ASCII码与十六进制数之间的转换,整数、双整数和浮点数与ASCII码之间的转换,整数,双整数和浮点数与字符串之间的转换,除此之外,还有编码译码和七段数字显示译码等。以上这么多转换指令,最常用的还是字节、整数、双整数和浮点数之间的转换,这是我们必须要掌握的东西。



下面,我们就先看一下字节、整数、双整数和浮点数之间的转换。对于转换,我们可以看到下面的程序里面的中间运算结果是用LW0或LD2进行存储的,所以,中间运算结果用局部存储区的话,这样就不会占用到数据存储区的空间。或者我们也可以用累加器AC进行存储中间运算结果。


对于浮点数转换为双整数的指令,也就是取整指令ROUND和TRUNC,我们要注意的是ROUND指令是将小数部分四舍五入的,而TRUNC指令是将小数部分舍弃的。

对于BCD码与整数之间的转换,这在我们后面要学的的时钟读写指令应用时会用到,这个也是需要掌握一下的。
而至于ASCII码与十六进制之间的转换,整数、双整数和浮点数与ASCII码之间的转换,整数,双整数和浮点数与字符串之间的转换和七段数字显示译码的话相对来说用的少些,可以了解一下。

有一个要注意的是,我们在整数、双整数和浮点数与ASCII码之间的转换指令里面会看到“FMT”,那么这个FMT它是指定小数点右侧的转换精确度的,以及是否将小数点表示为逗号或点号及输出缓冲区的大小。ITA的输出缓冲区是8个字节的,DTA是12个字节,RTA则是由FMT定义的。同样的,在整数,双整数和浮点数与字符串之间的转换指令也有“FMT”,I_S的输出字符串长度是8个字节,DI_S是12个字节,而R_S则是由FMT定义的。因为这几个指令用的较少些,就不举例子了。

而对于编码译码DECO和ENCO指令,DECO指令是将输入字节的低4位所表示的数值置输出字中相应的位为1,其余位都为0;ENCO指令是将输入字最低有效位的位号写入到输出字节中的低4位中。


那么针对以上程序,假如我们在输入字节VB0里面写入一个16#7,那么执行DECO指令后会使得输出字VW2中的第7位置为1,则VW2为16#0010或者2#0000 0000 1000 0000。假如我们在输入字VW4里面写入2#0000 0001 0000 0000,也就是第8位为1,那么执行ENCO指令后会使得输出字节VB6中输出的数值就是8。

那么今天主要就是学习了一下转换指令的使用,这么多指令中我们就主要掌握一下字节、整数、双整数和浮点数之间的转换,BCD码与整数之间的转换以及编码译码指令,至于其他的转换指令则在需要用到的时候查找一下帮助也就可以了。



















    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多