SHR:右移
使用“右移”指令,可以将参数 IN 的内容按位向右移动,并将其作为函数值返回。参数 N 用于指定应将特定值移位的位数。如果参数 N 的值为“0”,则将参数 IN 的值作为结果。如果参数 N 的值大于可用位数,则参数 IN 的值将向右移动该位数个位置。操作数左边由于移位而空出的各个位将用零进行填充。
"Tag_Result" := SHR(IN := "Tag_Value",
N := "Tag_Number");
IN Tag_Value 0011 1111 1010 1111
N Tag_Number 3
函数值 Tag_Result = 0000 0111 1111 0101 右移3位
SFC 1 "READ_CLK"读取时间
使用SFC 1 "READ_CLK" (读取系统时钟),可以读取当前CPU系统时钟的日期和时间。
制作一个统计1小时产量的功能块.
1.输入用来给入,产量的计数.
2.输出用来发出,1小时的产量是多少.
FUNCTION_BLOCK FB6
VAR_input
n: INT;// 输入变量
END_VAR
VAR_OUTPUT
out: INT;// 输出变量
END_VAR
VAR_TEMP
//临时变量
END_VAR
VAR
V_1:BOOL;
V_2:BOOL;
n_1:INT;
n_2:INT;
RTC_MINUTES:INT;
RET_VAL_SFC :INT; 返回值
DAT :DATE_AND_TIME;
TMP_DATAT DAT : STRUCT 建立时间结构
Jahr : BYTE;
Monat :BYTE;
TAG :BYTE;
STUNDE :BYTE;
MINUTE :BYTE;
SEKUNDE :BYTE;
MILLISEKUNDE :BYTE;
MS_WOCHENTAG :BYTE;
END_STRUCT;
END_VAR
RET_VAL_SFC := READ_CLK (CDT := DAT); 读取PLC的系统时将使用SFC1
RTC_MINUTES := BYTE_TO_INT(TMP_DAT.MINUTE & BYTE#15) + (BYTE_TO_INT(SHR(IN:=(TMP_DAT.MINUTE & BYTE#240),N:=4))*10); 提取系统时间的分钟数
IF (RTC_MINUTES = 0) & NOT V_1& NOT V_2 THEN当时间的分钟是0时记录一次产量数
n_1:=n;记录第一次时间分钟为0时的记录计数器值
V_1:=true;
V_2:=true;
END_IF;
IF (RTC_MINUTES = 1) & V_1 THEN 当分钟数变成1时记录数改变
V_1:=false;
END_IF;
IF (RTC_MINUTES = 0) & NOT V_1 & V_2 THEN 第二次分钟为0时开始计算,并完成计算输出.
n_2:=n;
out:=n_2- n_1 ;
V_2:=false;
END_IF;
END_FUNCTION_BLOCK
-
SCL
+关注
关注
1文章
239浏览量
17111 -
cpu系统
+关注
关注
0文章
3浏览量
3702
原文标题:SCL计算每小时的均衡生产
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论