循环移位指令的扩展

已锁定

手机用户20210811446613

  • 帖子

    6
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2021-08-11

普通 普通 如何晋级?

循环移位指令的扩展

1693

9

2023-07-03 14:20:47

各位工控的朋友:

    提出一个关于循环指令扩展的问题。

西门子自带的ROR或者ROL指令只能针对固定格式的输入,byte,word,dword等。

是否可以通过程序扩展到任意长度呢。

自己用SCL实现了一个简单的逻辑。

#Bittmp := #Pos_Pointer[#BitNo];

FOR #i := #BitNo TO 2 BY -1 DO

   #Pos_Pointer[#i] := #Pos_Pointer[#i - 1];

   ;

END_FOR;

#Pos_Pointer[1] := #Bittmp;

虽然可以解决现场的问题,不过想深度扩展一下发现了问题。

首先输入一定要时array of bool类型的。而且每次是移动1个bit。

现在我的想法有两个:

1:输入引脚类型从array of bool改为any,这样可以指代任意长度的数据。

2:每次循环移位的位数可以通过输入引脚指定。

例如如果移位位数为2,应该是0001,0100,0001,以此类推。

貌似要实现以上功能需要STL语句来实现。

搜索了一下论坛,很早之前有人给过一个FC,输入数据类型是any,但是没有指定每次移动的位数。并且现在原帖已经找不到了。

不知道论坛的高手们有没有好的思路来实现上面的功能。



循环移位指令的扩展 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10591条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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