返回输入字中BIT=1的位个数有很多实际意义,比如我们可以统计同一时间外部的呼叫请求总数、电梯同一时间有多少个请求呼叫等。这里编程我们用到了博途的覆盖指令AT,有关AT指令的其他用法可以参看下面文章链接:
https://rxxw-control.blog.csdn.net/article/details/133856318https://rxxw-control.blog.csdn.net/article/details/133856318
1、FB测试
编写FB时不要忘记一定要去掉优化的块访问。
2、算法原理
3、AT+For循环完成功能实现
4、完整SCL代码
FUNCTION_BLOCK "FB_StatBit"
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1VAR_INPUT Input : Word; // 输入字bInput { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} AT Input : Array[0..15] of Bool; // AT指令位数组END_VARVAR_OUTPUT Count : Int; // 统计bit=1的个数END_VARVAR_TEMP i : Int;END_VARBEGIN//统计输入字中BIT=1的位个数//RXXW_Dor//2024-02-15#Count := 0;FOR #i := 0 TO 15 DOIF #bInput[#i] THEN#Count := #Count + 1;//#Count += 1;END_IF;END_FOR;END_FUNCTION_BLOCK