技术论坛

 回复:INT值提取单独寄存

返回主题列表
作者 主题
校长123校长
侠士

经验值:1238
发帖数:57
精华帖:0
楼主    2018-09-26 23:23:34
主题:INT值提取单独寄存

 

     有没有无聊的朋友想过把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]对应个、十、百、千、万,于是就有了下面这个程序段,首先进行初始化,将刚刚寄存的数组以倒序的形式赋给输出数组,然后对这个数组进行相应的循环右移

 

 最后是模拟的结果

 

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

史德利古尔
至圣

经验值:10749
发帖数:631
精华帖:4
1楼    2018-09-27 09:35:58
精华帖  主题:回复:INT值提取单独寄存

for i:=0 to 4 do

b[i]:=input/10^i mod 10;

end_for;

请指教


吾生也有涯,而知也无涯。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。