INT值提取单独寄存

已锁定

校长123校长

  • 帖子

    57
  • 精华

    0
  • 被关注

    6

论坛等级:侠士

注册时间:2018-01-05

普通 普通 如何晋级?

INT值提取单独寄存

2693

9

2018-09-26 23:23:34

 

     有没有无聊的朋友想过把INT类型数值每一位分解开来寄存或者显示,之前看到过三菱的程序这么做过(为了在一组(四个)二进制控制模式的数显表上分别显示步进距离),于是我心血来潮基于300的PLC也编写了一个这样的程序,最近在整理的时候发现了这个FB块,于是将源代码导入到1500上试了下,发现一些指令上有很大差异,导致没法到达最终效果,于是索性又重新写个块


变量定义

 

 下面这段程序主要是判断下INT值的位数,目的有两个:

1、相应输出个十百千万分别对应1、2、3、4、5(后面数据处理有大用处);

2、INT值经过处理后最终转换为16进制双字,需要进行过滤;

 

 

下面就是将INT值做一些转换处理,首先转换成字符串,转换完后的字符串是带符号的,于是用RIGHT指令去除了这个符号(不知道有没别的方法去除?),最后又将该字符串转换成双字,这样这个16进制值与原先的INT值是一样的。

 

 接下去就是提取这些数了,这些数以2进制的形式(2^0、2^1、2^2、2^3)进行判定后分别寄存.到这一步就实现了数值提取。

 

 最后做什么,当然是输出这组数,这里我想要的输出要求就是这个数值始终是保持[0],[1],[2],[3],[4]对应个、十、百、千、万,于是就有了下面这个程序段,首先进行初始化,将刚刚寄存的数组以倒序的形式赋给输出数组,然后对这个数组进行相应的循环右移

 

 最后是模拟的结果

 

 第一次发这种贴,不足之处还请见谅,论坛各位朋友探讨看看有没更好方法解决这个无聊的问题,哈哈

INT值提取单独寄存 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10666条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。