一、實例
按鈕按數次,最后一次保持 1s 以上后,則號碼與次數相同的電機運行,在按按鈕,該電機停止。五臺電動機接于 Y0~Y4 。
二、問題的提出
1 、數據處理指令有哪些?各功能是什么?
數據處理指令含批復位指令、編、譯碼指令及平均值計算等指令。其中批復位指令可用于數據區的初始化,編、譯碼指令可用于字元件中某一置 1 位的位碼的編譯。現擇要介紹如下。
(1) 區間復位指令
該指令的助記符、指令代碼、操作數范圍、程序步如表所示。
區間復位指令的要素表
指令名稱 |
助記符 |
指令代碼位數 |
操作數范圍 |
程序步 | |
D1 ( . ) |
D2 ( . ) | ||||
區間復位 |
ZRST ZRST(P) |
FNC40 ◥ (16) |
T 、 M 、 S 、 T 、 C 、 D (D1 ≤ D2) |
ZRST 、 ZRSTP…5 步 |
區間復位指令也稱為成批復位指令,使用如圖所示。當 M8022 由 OFF → ON 時,區間復位指令執行。位元件 M500~M599 成批復位、字元件 C235~C255 成批復位、狀態元件 S0~S127 成批復位。
目標操作數 [D1] 和 [D2] 指定的元件應為同類元件, [D1] 指定的元件號應小于等于 [D2] 指定的元件號。若 [D1] 的元件號大于 [D] 的元件號,則只有 [D1] 指定的元件被復位。
該指令為 16 位處理,但是可在 [D1][D2] 中指定 32 位計數器。不過不能混合指定,即不能在 [D1] 中指定 16 位計數器,在 [D2] 中指定 32 位計數器。
圖 8-23 ZRST 區間復位指令使用說明
(2) 解碼指令
該指令的助記符、指令代碼、操作數范圍、程序步如表所示。
解碼指令的要素表
指令名稱 |
助記符 |
指令代碼位數 |
操作數范圍 |
程序步 | ||
S ( . ) |
D ( . ) |
n | ||||
解碼 |
DECO DECO(P) |
FNC38 ◥ (16) |
K 、 H X 、 Y 、 M 、 S T 、 C 、 D 、 V 、 Z |
Y 、 M 、 S T 、 C 、 D 、 |
K 、 H 1≤n≤ 8 |
DECO 、 DECOP…7 步 |
( a )當 [D] 是位元件時 , 以源 [S] 為首地址的 n 位連續的位元件所表示的十進制碼值為 Q , DECO 指令把以 [D] 為首地址目標元件的第 Q 位 ( 不含目標元件位本身 ) 置 1 ,其他位置 0 。說明如圖所示 , 源數據 Q=20+21=3, 因此從 M10 開始的第 3 位 M13 為 1 。當源數據 Q 為 0, 則第 0 位 ( 即 M10) 為 1 。
若 n=0 時,程序不執行; n=0~8 以外時,出現運算錯誤。若 n=8 時, [D] 位數為 28=256 。驅動輸入 OFF 時,不執行指令,上一次解碼輸出置 1 的位保持不變。
若指令是連續執行型,則在各個掃描周期都執行,必須注意。
( b )當 [D] 是字元件時,以源 [S] 所指定字元件的低 n 位所表示的十進制碼 Q , DECO 指令把以 [D] 所指定目標字元件的第 Q 位(不含最低位)置 1 ,其他位置 0 。說明如圖 8-24 ( b )所示,源數據 Q=20+21=3 ,因此 D1 的第 3 位為 1 。當源數據為 0 時,第 0 位為 1 。
若 n=0 時,程序不執行; n=0~4 以外時,出現運算錯誤。若 n=4 時, [D] 位數為 24=16 。驅動輸入 OFF 時,不執行指令,上一次解碼輸出置 1 的位保持不變。
DECO 指令應用如圖所示,根據 D0 所存儲的數值,將 M 組合元件的同一地址號接通。在 D0 中存儲 0~15 的數值。取 n=K4 ,則與 D0 ( 0~15 )的數值對應, M0~M15 有相應 1 點接通。
n 在 K1~K8 間變化,則可以與 0~255 的數值對應。但是為此解碼所需的目標的軟元件范圍被占用,務必要注意,不要一其他控制重復使用。
(3) 編碼指令
該指令的助記符、指令代碼、操作數范圍、程序步如表所示。
編碼指令的要素表
[NextPage]
指令名稱 |
助記符 |
指令代碼位數 |
操作數范圍 |
程序步 | ||
S ( . ) |
D ( . ) |
n | ||||
編碼 |
ENCO ENCO(P) |
FNC42 ◥ (16) |
X 、 Y 、 M 、 S T 、 C 、 D 、 V 、 Z |
T 、 C 、 V 、 Z 、 D 、 |
K 、 H 1≤n≤ 8 |
ENCO 、 ENCOP…7 步 |
( a )當 [S] 是位元件時,以源 [S] 為首地址、長度為 2n 的位元件中,最高置 1 的位置被存放到目標 [D] 所指定的元件中去, [D] 中數值的分為由 n 確定。說明如圖 8-26 ( a )所示,源元件的長度為 2n=23=8 位 M10~M17 ,其最高置 1 位是 M13 即第 3 位。將“ 3 ”位置數(二進制)存放到 D10 的低 3 位中。
當源數的第一個(即第 0 位)位元件為 1 ,則 [D] 中存放 0 。當源數中無 1 ,出現運算錯誤。
若 n=0 時,程序不執行; n=1~8 以外時,出現運算錯誤。若 n=8 時, [S] 位數為 28=256 。驅動輸入 OFF 時,不執行指令,上一次編碼輸出保持不變。
若指令是連續執行型,則在各個掃描周期都執行,必須注意。
( b )當 [S] 是字元件時,在其可讀長度為 2n 位中,最高置 1 的位被存放到目標 [D] 所指定的元件中去, [D] 中的數值的范圍由 n 確定。說明如圖 8-26 ( b )所示,源字元件的可讀長度為 2n=23=8 位,其最高置 1 位是第 3 位。將“ 3 ”位置數(二進制)存放到 D1 的低 3 位中。
當源數的第一個(即第 0 位)位元件為 1 ,則 [D] 中存放 0 。當源數中無 1 ,出現運算錯誤。
若 n=0 時,程序不執行; n=1~4 以外時,出現運算錯誤。若 n=4 時, [S] 位數為 24=16 。驅動輸入 OFF 時,不執行指令,上一次編碼輸出保持不變。
若指令是連續執行型,則在各個掃描周期都執行,必須注意。
2 、怎樣用數據處理指令來實現單按鈕控制五臺電機的起停?
[NextPage]
三、 PLC 硬件的實現
1 、 I/O 的分配
輸入 |
功能說明 |
輸出 |
功能說明 | ||
S0 |
X0 |
啟動按鈕 |
M0 |
Y0 |
電機 1 |
M1 |
Y1 |
電機 2 | |||
M2 |
Y2 |
電機 3 | |||
M3 |
Y3 |
電機 4 | |||
M4 |
Y4 |
電機 5 | |||
2 、 I/O 的外部接線
四、 PLC 軟件的實現
梯形圖如下圖所示。輸入電機編號的按鈕接于 X0 ,電機號數使用加 1 指令記錄在 K1M10 中。 DECO 指令則將 K1M10 中的數據解讀并令 M0 右側和 K1M10 中數據相同的位元件置 1 。 M9 及 T0 用于輸入數字確認及停車復位控制。
五、 知識的拓展
指令名稱 |
助記符 |
指令代碼位數 |
操作數范圍 |
程序步 | ||
S(.) |
D(.) |
n | ||||
平均值 |
MEAN MEAN(P) |
FNC45 ( 16 ) |
KnX 、 KnY 、 KnM 、 KnS T 、 C 、 D 、 |
KnY 、 KnM 、 KnS T 、 C 、 D 、 V 、 Z |
K 、 H 1~64 |
MEAN 、 MEANP…7 步 |
六、習題
(1) 如何用雙按鈕控制 5 臺電動機的 ON/OFF 。
(2) 試用 DECO 指令實現某噴水池花式噴水控制。第一組噴嘴 4s → 第二組噴嘴 2s → 二組噴嘴 2s → 均停 1s → 重復上述過程。