回复:十个信号 有两个或两个以上触发了就启动报警 用scl 怎么写

已锁定

'Razor

西门子1847工业学习平台

  • 帖子

    3280
  • 精华

    42
  • 被关注

    224

论坛等级:至圣

注册时间:2008-03-31

钻石 钻石 如何晋级?

发布于 2024-06-09 21:36:55

16楼

来看看这个

FUNCTION "BIT_COUNT" : Int

TITLE = 'BIT_COUNT'

{ S7_Optimized_Access := 'FALSE' }

AUTHOR : hugo

FAMILY : GATE

NAME : BITCT

VERSION : 1.1

// Automatically Edited - Old code marked with //~ - (UTC) 10/2/2012 5:11:58 PM

//

//BIT_COUNT counts the amount True of bits in a dword.

//for exabple: bit_count(3) returns 2 because two bits (bits 0 and 1) are true and all others are false.

   VAR_INPUT

      IN_DW : DWord;

   END_VAR


   VAR_TEMP

      temp : DWord;

      attemp AT temp : Array[0..31] of Bool;

   END_VAR



BEGIN

   

    #BIT_COUNT := 0;

    #temp := #IN_DW;

   

    WHILE DWORD_TO_DINT(#temp) <> 0 DO

        IF #attemp[24] THEN

            #BIT_COUNT := #BIT_COUNT + 1;

        END_IF;

        #temp := SHR(IN := #temp, N := 1);

    END_WHILE;

   

    (* revision history

    5.7.2007  rev 1.0    original version

   

    10.9.2007  rev 1.1    hm

     changed algorithm for better performace

     the execution time has reduced by a factor of 5

     deleted unused variable temp

    *)

END_FUNCTION




少即是多
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15250条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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