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瀏覽量
17104 -
cpu系統
+關注
關注
0文章
3瀏覽量
3698
原文標題:SCL計算每小時的均衡生產
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論