SCL语言之加计数-计数器函数S_CU
可使用“分配参数并加计数”指令递增计数器值 。当 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参数 。代之以绝对计数器号(如C12),也能够在调用中指定一个INT类型的变量或常数,或一个COUNTER类型的输入参数 。
·至少参数CU(向上计数)或参数CD(向下计数)必须提供 。
·参数PV(初始值)和S(设定值)能够成对省略 。
·函数值总是BCD格式结果值 。
加计数例子: 作一个功能块,条件FRG满足后开始计数IN_Z,rest对计数器复位,
超过ZN 个数有输出OUT_FRG
文章插图
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:=FRGANDIN_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;
【SCL语言之加计数-计数器函数S_CU】 END_FUNCTION_BLOCK-------功能块结束
推荐阅读
- 噶乌是什么?
- 2021年高中语文作文写作方法
- SCL计算每小时的均衡生产
- 不同颜色数量的玫瑰花代表的含义 蓝玫瑰蓝色妖姬的玫瑰花语
- 什么节日送什么花好?花语与中国送礼用花习俗
- Verilog HDL语言技术要点
- 雷曼光电李漫铁寄语分享
- 挂席为门的成语故事
- 你知道网络用语毒唯的意思是什么吗?
- 你知道一袋米要抗几楼什么梗?一袋米要抗几楼的日语翻译是什么?