QQ登录

只需一步,快速开始

FC92指令问题

[ 复制链接 ]
FC92指令问题S7-1500新的平台,没有类似S7-300中FC92的指令,可以实现32767位移位功能?
是否有新的方法可以替代?


---------我用于流水线上,判断瓶子是否到位的。
需要一位数量在30~120位间,之前使用S7-300的FC92,很方便的实现(最高位32767位),但是打算升级S7-1500,却被这指令的空缺顿住了。。。
自己写程序块的话,目前没有很好的思路,能实现自由的实现移位。


------------
实现64位循环左移S7-300/400只有32位的循环移位指令,和32位加CC1的循环移位指令。下面是我编的程序,MD10和MD14组成64位数据,MD10在高32位。
在I0.0的上升沿,分别将MD10和MD14循环左移1位,然后交换它们的最低位M13.0和M17.0的值,就能实现64位数据的循环左移1位。
A I 0.0
FN M 1.0
JCN _001 //不是I0.0的上升沿则跳转
L MD 10
RLD 1 //双字左移一位
T MD 10
L MD 14
RLD 1 //双字左移一位
T MD 14
A M 13.0
= M 1.1 //暂存M13.0
A M 17.0
S M 13.0 //以下程序交换M13.0和M17.0的值
AN M 17.0
R M 13.0
A M 1.1
S M 17.0
AN M 1.1
R M 17.0
_001: NOP 0
此程序已用仿真验证,下图中的修改数值是移位之前MD10和MD14的值,状态值是循环左移4位后的值。
回复

使用道具 举报

快速回复 返回列表 客服中心 搜索