檢測存儲區的填充量示例 |
檢測存儲區的填充量
下圖顯示的系統中包含兩條傳送帶和一個臨時存儲區,臨時存儲區位于兩條傳送帶之間。傳送帶 1 將包裹傳送到該存儲區。傳送帶 1 末端靠近存儲區的光電屏蔽,負責檢測傳送到存儲區的包裹數量。
傳送帶 2 將包裹從臨時存儲區域傳輸到裝載臺,包裹將在此裝載到卡車上。存儲區出口處的光電屏蔽,負責檢測離開存儲區傳入裝載臺的包裹數量。五個指示燈用于指示臨時存儲區的容量。
實施
下表列出了所用變量的定義:
名稱 | 聲明 | 數據類型 | 說明 |
---|---|---|---|
PEB1 | Input | BOOL | 光電屏蔽 1 |
PEB2 | Input | BOOL | 光電屏蔽 2 |
RESET | Input | BOOL | 復位計數器 |
LOAD | Input | BOOL | 將當前計數器值調整為 PV 參數的值。 |
MAX STORAGE AREA FILL AMOUNT | Input | INT | 存儲區中最大可能的包裹數 |
PACKAGECOUNT | Output | INT | 存儲區中的包裹數(當前計數值) |
STOCK_PACKAGES | Output | BOOL | 當前計數值大于或等于變量“MAX STORAGE AREA FILL AMOUNT”的值時置位。 |
STOR_EMPTY | Output | BOOL | 指示燈:存儲區為空 |
STOR_NOT_EMPTY | Output | BOOL | 指示燈:存儲區非空 |
STOR_50%_FULL | Output | BOOL | 指示燈:存儲區已用 50 % |
STOR_90%_FULL | Output | BOOL | 指示燈:存儲區已用 90 % |
STOR_FULL | Output | BOOL | 指示燈:存儲區已滿 |
VOLUME_50 | Input | INT | 比較值:50 個包裹 |
VOLUME_90 | Input | INT | 比較值:90 個包裹 |
VOLUME_100 | Input | INT | 比較值:100 個包裹 |
以下 STL 程序說明了如何實現此示例:
當一個包裹傳送到存儲區時,“PEB1”處的信號狀態從“0”變為“1”(信號上升沿)。“PEB1”在信號上升沿時,將啟用“加計數”計數器,同時“PACKAGECOUNT”的當前計數值遞增 1。
當一個包裹從存儲區傳送到裝載臺,“PEB2”處的信號狀態從“0”變為“1”(信號上升沿)?!癙EB2”在信號上升沿時,將啟用“減計數”計數器,同時“PACKAGECOUNT”的當前計數值遞減 1。
只要存儲區中沒有包裹(“PACKAGECOUNT”=“0”),則“STOR_EMPTY”變量的信號狀態置位為“1”同時點亮“存儲區為空”指示燈。
“RESET”變量的信號狀態置位為“1”時,會將當前計數值復位為“0”。
如果“LOAD”變量的信號狀態設置為“1”,則會將當前計數值設置為“MAX STORAGE AREA FILL AMOUNT”變量的值。如果當前計數值大于或等于“MAX STORAGE AREA FILL AMOUNT”變量的值,則“STOCK_PACKAGES”變量的信號狀態為“1”。
SCL |
---|
"VOLUME_50" := 5; // 為比較值預先賦值 50 個包裹(對于測試僅使用 5 個包裹) |
"VOLUME_90" := 9; // 為比較值預先賦值 90 個包裹(對于測試僅使用 9 個包裹) |
"VOLUME_100" := 10; // 為比較值預先賦值 100 個包裹(對于測試僅使用 10 個包裹) |
"MAX STORAGE AREA FILL AMOUNT" := 10; // 為存儲區中的最大數量預先賦值 100 個包裹(對于測試僅使用 10 個包裹) |
"IEC_Counter_0_DB".CTUD(CU := "PEB1", |
CD := "PEB2", |
R := "RESET", |
LD := "LOAD", |
PV := "MAX STORAGE AREA FILL AMOUNT", |
QU => "STOCK_PACKAGES", |
QD => "STOR_EMPTY", |
CV => "PACKAGECOUNT"); |
只要存儲區中有包裹,“存儲區非空”指示燈就會點亮。
SCL |
---|
"STOR_NOT_EMPTY" := NOT "STOR_EMPTY" |
如果存儲區中的包裹數低于 50%,“存儲區已用 50 %”、“存儲區已用 90 %”和“存儲區已滿”報警指示燈就會熄滅。
SCL |
---|
IF "PACKAGECOUNT" < "VOLUME_50" THEN |
"STOR_50%_FULL" := 0; |
"STOR_90%_FULL" := 0; |
"STOR_FULL" := 0; |
END_IF; |
如果存儲區中的包裹數大于或等于 50 %,則“存儲區已用 50 %”指示燈將點亮。
SCL |
---|
IF "PACKAGECOUNT" >= "VOLUME_50" AND "PACKAGECOUNT <= "VOLUME_90" THEN |
"STOR_50%_FULL" := 1; |
"STOR_90%_FULL" := 0; |
"STOR_FULL" := 0; |
END_IF; |
如果存儲區中的包裹數大于或等于 90 %,則“存儲區已用 90 %”指示燈將點亮。“存儲區已用 50 %”的指示燈仍然點亮。
SCL |
---|
IF "PACKAGECOUNT" >= "VOLUME_90" AND "PACKAGECOUNT < "VOLUME_100" THEN |
"STOR_50%_FULL" := 1; |
"STOR_90%_FULL" := 1; |
"STOR_FULL" := 0; |
END_IF; |
如果存儲區中的包裹數達到 100 %,則“存儲區已滿”消息指示燈將點亮?!按鎯^已用 50 %”和“存儲區已用 90 %”的指示燈仍然點亮。
SCL |
---|
IF "PACKAGECOUNT" >= "VOLUME_100" THEN |
"STOR_50%_FULL" := 1; |
"STOR_90%_FULL" := 1; |
"STOR_FULL" := 1; |
END_IF; |
審核編輯:劉清
-
存儲器
+關注
關注
38文章
7494瀏覽量
163915 -
比較器
+關注
關注
14文章
1652瀏覽量
107246 -
SCL
+關注
關注
1文章
239瀏覽量
17100
原文標題:SCL程序: 檢測存儲區的填充量示例
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論