SHR:右移
使用“右移”指令,可以將參數(shù) IN 的內(nèi)容按位向右移動(dòng),并將其作為函數(shù)值返回。參數(shù) N 用于指定應(yīng)將特定值移位的位數(shù)。如果參數(shù) N 的值為“0”,則將參數(shù) IN 的值作為結(jié)果。如果參數(shù) N 的值大于可用位數(shù),則參數(shù) IN 的值將向右移動(dòng)該位數(shù)個(gè)位置。操作數(shù)左邊由于移位而空出的各個(gè)位將用零進(jìn)行填充。
"Tag_Result" := SHR(IN := "Tag_Value",
N := "Tag_Number");
IN Tag_Value 0011 1111 1010 1111
N Tag_Number 3
函數(shù)值 Tag_Result = 0000 0111 1111 0101 右移3位
SFC 1 "READ_CLK"讀取時(shí)間
使用SFC 1 "READ_CLK" (讀取系統(tǒng)時(shí)鐘),可以讀取當(dāng)前CPU系統(tǒng)時(shí)鐘的日期和時(shí)間。
制作一個(gè)統(tǒng)計(jì)1小時(shí)產(chǎn)量的功能塊.
1.輸入用來(lái)給入,產(chǎn)量的計(jì)數(shù).
2.輸出用來(lái)發(fā)出,1小時(shí)的產(chǎn)量是多少.
FUNCTION_BLOCK FB6
VAR_input
n: INT;// 輸入變量
END_VAR
VAR_OUTPUT
out: INT;// 輸出變量
END_VAR
VAR_TEMP
//臨時(shí)變量
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 建立時(shí)間結(jié)構(gòu)
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的系統(tǒng)時(shí)將使用SFC1
RTC_MINUTES := BYTE_TO_INT(TMP_DAT.MINUTE & BYTE#15) + (BYTE_TO_INT(SHR(IN:=(TMP_DAT.MINUTE & BYTE#240),N:=4))*10); 提取系統(tǒng)時(shí)間的分鐘數(shù)
IF (RTC_MINUTES = 0) & NOT V_1& NOT V_2 THEN當(dāng)時(shí)間的分鐘是0時(shí)記錄一次產(chǎn)量數(shù)
n_1:=n;記錄第一次時(shí)間分鐘為0時(shí)的記錄計(jì)數(shù)器值
V_1:=true;
V_2:=true;
END_IF;
IF (RTC_MINUTES = 1) & V_1 THEN 當(dāng)分鐘數(shù)變成1時(shí)記錄數(shù)改變
V_1:=false;
END_IF;
IF (RTC_MINUTES = 0) & NOT V_1 & V_2 THEN 第二次分鐘為0時(shí)開始計(jì)算,并完成計(jì)算輸出.
n_2:=n;
out:=n_2- n_1 ;
V_2:=false;
END_IF;
END_FUNCTION_BLOCK
-
SCL
+關(guān)注
關(guān)注
1文章
239瀏覽量
17115 -
cpu系統(tǒng)
+關(guān)注
關(guān)注
0文章
3瀏覽量
3703
原文標(biāo)題:SCL計(jì)算每小時(shí)的均衡生產(chǎn)
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論