“位”逻辑转换成字符串

请教大家一下,我现在想把MW1中的位M2.0至M2.7转化为“0”或“1”的字符串(如图1,我的构想)。但是我在编程时,使用“I_S”指令,得到的结果是将MW1所代表的十进制数转化为字符串了(如图2,实际情况)。S7-200smart能不能实现我的构想?麻烦大家能给我提供一条思路,不胜感激!

图片说明:

“位”逻辑转换成字符串    “位”逻辑转换成字符串   

钻石用户推荐最佳答案

利用循环左移字节指令外 ROL_B 加循环来做。循环次数为8位,这样可以不改变原字节的内容B2,思路如下:
循环体外部准备
1、循环变量设置初始化为1;
2、MD4指针初始化,用双字传送指令将VB801的地址传送到MD4,MOVD   &VB801, MD4,这样MD4存储的就是存储单元 VB801 的地址。
循环体开始
3、利用 ROL_B 循环左移1位,移出的位就在SM1.1中;
4、判断 SM1.1,当为0时,将字符 “0” 传到 *MD4中,MOVB   ''0'', *VD4
                            当为1时,将字符 “1” 传到 *MD4中,MOVB   ''0'', *VD4
5、指针自加1
6、循环变量自加1
7、判断循环变量值是不是大于8,当大于8时结束循环,当不大于8时继续循环,处理下一位。
8、循环结束
没有CPU在身边,不能做测试。也没有考虑字符串的构造,比如字符串第一个字节内要填字符串的长度,只考虑了处理部分。
关于SM1.1,可以在在线帮助查到其用法。
可能会用到的资料
S7-200 SMART 间接寻址
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/070.html
S7-200 SMART 移位与循环指令
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/037.html

提问者对于答案的评价:

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc279499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午6:00
下一篇 2020年10月30日 下午6:00

相关推荐

发表回复

登录后才能评论