c++bool函数_SCL 语言之加计数计数器函数S_CU

76cc3eb28691e1b1821ddd6ce2712b2f.png

可使用“分配参数并加计数”指令递增计数器值。当 CU 参数的信号状态从“0”变为“1”(信号上升沿)时,当前计数器值递增 1。通过参数 CV 提供当前计数器值。计数器值达到上限 999 后,停止增加。如果达到限值,即使出现信号上升沿,计数器值也不再递增。

当参数 S 的信号状态从“0”变为“1”时,计数器值将置位为参数 PV 的值。如果置位计数器且输入 CU 处的逻辑运算结果 (RLO) 为“1”,即使没有检测到信号边沿变化,计数器也会在下一周期计数一次。

当 R 参数的信号状态变为“1”时,计数器值将设置为 0。只要 R 参数的信号状态为“1”,参数 CU 和 S 的信号状态变化就不会影响计数值。

如果计数器值大于 0,参数 Q 的信号状态就为“1”。计数器值等于 0 时,参数 Q 将返回信号状态“0”。

C_NO

COUNTER
 INT

计数器号(计数器标识符);其范围视CPU而定

CD

BOOL

CD输入:向下计数

CU

BOOL

CU输入:向上计数

S

BOOL

预置计数器输入

PV

WORD

初始化计数器的值,在0到999之间(按16#用BCD格式的值键入)

R

BOOL

复位输入

Q

BOOL

输出:计数器状态

CV

WORD

输出:二进制计数值

RET_VAL

WORD

BCD格式的结果

·        当调用函数时,必须提供标识符C_NO参数。代之以绝对计数器号(如C12),也能够在调用中指定一个INT类型的变量或常数,或一个COUNTER类型的输入参数。

·        至少参数CU(向上计数)或参数CD(向下计数)必须提供。

·        参数PV(初始值)和S(设定值)能够成对省略。

·        函数值总是BCD格式结果值。

加计数例子: 作一个功能块,条件FRG满足后开始计数IN_Z,rest对计数器复位,

超过ZN 个数有输出OUT_FRG 

4d4e2f282358ffe02faf5bc42a7f2c6c.png

FUNCTION_BLOCK FB1 建立功能块FB1

VAR_INPUT

FRG:BOOL;  允许条件

IN_Z:BOOL; 用于计数

rest:BOOL;

CurrVal_int:INT; 改变数量

END_VAR

VAR_OUTPUT

OUT_FRG :BOOL;

CurrVal_int1:INT;

END_VAR

VAR_TEMP

set:BOOL;  临时变量-中间变量

set1:BOOL;

END_VAR

VAR

 CurrVal_int:INT;   静态变量-中间变量

 CurrVal, binVal: WORD;

 actFlag        : bool;

END_VAR

set1:=FRG  AND  IN_Z;  计数条件

CurrVal :=S_CU (C_NO:= Z11, CU:= set1,S:=set, PV:=16#0, R:=rest,

                     CV:=binVal,Q:=actFlag);计数器从0开始计数

CurrVal_int:=WORD_TO_INT(CurrVal); word转INT的转换

CurrVal_int1:=CurrVal_int;  用于显示

IF  (CurrVal_int >= Z_N) THEN    如果大于10就有输出

   OUT_FRG:=true;

ELSE   小于10没有输出

   OUT_FRG:=false;

 END_IF    ;

END_FUNCTION_BLOCK-------功能块结束

-------------END---------------

每天进步一点点

Make small but daily progress

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值