双字的bit位为1的个数怎么统计?(问题1已解决,问题2未解决)

已锁定

为修修为

西门子1847工业学习平台

  • 帖子

    1483
  • 精华

    8
  • 被关注

    33

论坛等级:奇侠

注册时间:2021-12-02

钻石 钻石 如何晋级?

双字的bit位为1的个数怎么统计?(问题1已解决,问题2未解决)

3364

42

2024-06-02 15:25:28

问题1:一个双字,有多少个bit位接通了,进行一个统计,比如VB0中的数据为00101101,返回值为4,VB0中的数据为10101111,返回值为6。

问题2:能不能实现将为1的占位数按顺序返回。比如VB0中的数据为00101101,则V0.0为1时返回1,V0.2为1时返回2,V0.3为1时返回3,V0.5为1时返回4。就是相当于VB0中的数据00101101转换为00001111。

应用:有一个多路语音报警模块,报警音需要2-3秒时间,如果多个报警存在时,语音会乱报,所以编程时的思路是轮询播放,每个点位通2-3秒,少量的点位可以,但是如果点多的时候,报警发生了,会有一个很大的延迟。怎么取双字的bit位接通个数。几个报警数,就几个轮询播报。


问题1从官网找到了例程。但是问题2应该怎么解决呢?

Number_of_1.zip


------------------------------------------------------------------------------------------------------------


鉴于上面问题中没有讲,具体的工艺控制要求,我详细说一下:


这是一个语音报警,鉴于语音报警模块限制,只能播放一个语音,一条语音播放5秒,无多条报警轮播功能,多个信号到达时,有争先问题。所以我从控制程序里面做了一个轮询,即轮回遍历每个报警点,每个报警点有5秒接通时间。

因没有更好思路,所以只能用这个方式,点拉少时,没有问题。点位多了,延迟问题突出,所以想做一个,随着报警点的多少,自动识别出报警点的数量,在自动排列,这个需要给报警点位重新编号。比如,1、4、7点位报警了,给其定义标签为1、2、3,重新排列一下。



双字的bit位为1的个数怎么统计?(问题1已解决,问题2未解决) 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9386条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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