由80个开关控制一盏公用灯而想开去

已锁定

轻吻你心丶

  • 帖子

    299
  • 精华

    0
  • 被关注

    5

论坛等级:侠圣

注册时间:2017-02-02

黄金 黄金 如何晋级?

由80个开关控制一盏公用灯而想开去

423

2

2022-07-06 15:42:08

前几天看了几位的热烈讨论,提到一个场景 80个开关控制一盏灯,这让我有了一点想法。


归纳总结 为以下问题:

Q:如何求出一个8位Bool数组中True的个数?


一般的解法是:

FOR i:=0 TO 7:

  IF XXXXX……


但这样,PLC处理这段代码时需要遍历整个数组,循环次数等于数组长度。


最近学习了一个新的算法,分享给大家,希望各位大佬提出宝贵意见。


准备好的 长度为8的BOOL数组 用于模拟开关的状态


算法块的接口


代码部分


运算的结果


运算的结果经过测试是完全正确的,这个算法的名字叫Hamming Weight

Gather指令最长可以处理64bit,所以 如果真的是80个开关的场景,需要将80 拆分为 64+16的组合

用这个算法的好处是 PLC不需要完全遍历整个数组就可以得出正确的结果,在某些条件下 可以节省部分循环时间。


整个项目压缩文件 

ArithmeticGroup.zip


由80个开关控制一盏公用灯而想开去 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有8738条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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