產地類別 | 進口 | 應用領域 | 環保,化工,生物產業,電子/電池,電氣 |
---|
在 “Project tree" > “PLC_1" > “Device configuration" 中,選中 CPU ,然后在下面的屬性窗口中,“Properties" > “System and clock memory" 下,將系統位定義在MB1,時鐘位定義在MB0
![]() |
參考價 | 面議 |
更新時間:2023-08-13 09:23:34瀏覽次數:406
聯系我們時請說明是化工儀器網上看到的信息,謝謝!
重慶西門子PLC代理商 西門子模塊代理商
重慶西門子PLC代理商
S7-1200 CPU中有多種沿檢測指令,這些指令可以用于變量或者邏輯運算結果(RLO)的上升沿、下降沿檢測,指令位置如圖1所示,指令說明如表1所示。
圖1、沿指令位置
LAD | SCL | 說明 |
---|---|---|
- | 掃描操作數的信號上升沿。 在觸點分配的 'IN' 位上檢測到正跳變(0->1)時,該觸點的狀態為 TRUE。該觸點邏輯狀態隨后與能流輸入狀態組合以設置能流輸出狀態。P 觸點可以放置在程序段中除分支結尾外的任何位置。 | |
- | 掃描操作數的信號下降沿。 在觸點分配的 'IN' 位上檢測到負跳變(1->0)時,該觸點的狀態為 TRUE。該觸點邏輯狀態隨后與能流輸入狀態組合以設置能流輸出狀態。N 觸點可以放置在程序段中除分支結尾外的任何位置。 | |
- | 在信號上升沿置位操作數。 在進入線圈的能流中檢測到正跳變(0->1)時,分配的位 'OUT' 為 TRUE。能流輸入狀態總是通過線圈后變為能流輸出狀態。P 線圈可以放置在程序段中的任何位置。 | |
- | 在信號下降沿置位操作數。 在進入線圈的能流中檢測到負跳變(1->0)時,分配的位 'OUT' 為 TRUE。能流輸入狀態總是通過線圈后變為能流輸出狀態。N 線圈可以放置在程序段中的任何位置。 | |
- | 掃描 RLO(邏輯運算結果)的信號上升沿。 在 'CLK' 能流輸入中檢測到正跳變(0->1)時,Q 輸出能流或者邏輯狀態為 TRUE。P_TRIG 指令不能放置在程序段的開頭或結尾。 | |
- | 掃描 RLO(邏輯運算結果)的的信號下降沿。 在 'CLK' 能流輸入中檢測到負跳變(1->0)時,Q 輸出能流或者邏輯狀態為 TRUE。N_TRIG 指令不能放置在程序段的開頭或結尾。 | |
在信號上升沿置位變量。 分配的背景數據塊用于存儲 CLK 輸入的前一狀態。在 CLK 能流輸入 (LAD) 中檢測到正跳變(0->1)時,Q 輸出能流或者邏輯狀態為 TRUE。在 LAD 中,R_TRIG 指令不能放置在程序段的開頭或結尾。 | ||
在信號下降沿置位變量。 分配的背景數據塊用于存儲 CLK 輸入的前一狀態。在 CLK 能流輸入 (LAD) 中檢測到負跳變(1->0)時,Q 輸出能流或者邏輯狀態為 TRUE。在 LAD 中,F_TRIG 指令不能放置在程序段的開頭或結尾。 |
表1、沿指令說明
<操作數 1>
—|P|—
<操作數 2>
使用該指令,可以確定<操作數 1>的信號狀態是否從“0"變為“1"。該指令將比較 <操作數 1> 的當前信號狀態與 <操作數 1> 上一次掃描的信號狀態, <操作數 1> 上一次掃描的信號狀態保存在邊沿存儲位<操作數 2>中。如果 <操作數 1> 上一次掃描信號狀態(<操作數 2>)為“0",<操作數 1>當前信號狀態為“1",則檢測到<操作數 1>信號的上升沿。指令參數如表2所示,指令的使用示例如圖2-4所示。
參數 | 聲明 | 數據類型 | 存儲區 | 說明 |
---|---|---|---|---|
<操作數 1> | Input | Bool | I、Q、M、D、L或常量 | 要掃描的信號 |
<操作數 2> | InOut | Bool | I、Q、M、D、L | 保存上一次查詢的信號狀態的邊沿存儲位 |
表2、掃描操作數的信號上升沿指令參數
圖2、掃描操作數的信號上升沿示例
圖3、掃描操作數的信號上升沿示例
圖4、掃描操作數的信號上升沿示例 Trace 軌跡
在上述示例中,TagIn3為<操作數 1>,Tag_M為<操作數 2>,當操作數“TagIn1"、“TagIn2"的信號狀態為1時,當TagIn3信號狀態從“0"變為“1"時,即檢測到TagIn3的上升沿,此時將操作數“TagOut"置位為“1"一個周期,通過“TagOut"將“TagIn4"置位為“1"。
<操作數 1>
—|N|—
<操作數 2>
使用該指令,可以確定<操作數 1>的信號狀態是否從“1"變為“0"。該指令將比較 <操作數 1> 的當前信號狀態與 <操作數 1> 上一次掃描的信號狀態, <操作數 1> 上一次掃描的信號狀態保存在邊沿存儲器位 <操作數 2> 中。如果 <操作數 1> 上一次掃描信號狀態(<操作數 2>)為“1",<操作數 1>當前信號狀態為“0",則檢測到<操作數 1>信號的下降沿。指令參數如表3所示,指令的使用示例如圖5-7所示。
參數 | 聲明 | 數據類型 | 存儲區 | 說明 |
---|---|---|---|---|
<操作數 1> | Input | Bool | I、Q、M、D、L或常量 | 要掃描的信號 |
<操作數 2> | InOut | Bool | I、Q、M、D、L | 保存上一次查詢的信號狀態的邊沿存儲位 |
表3、掃描操作數的信號下降沿指令參數
圖5、掃描操作數的信號下降沿示例
圖6、掃描操作數的信號下降沿示例
圖7、掃描操作數的信號下降沿示例 Trace g軌跡
在上述示例中,TagIn3為<操作數 1>,Tag_M為<操作數 2>,當操作數“TagIn1"、“TagIn2""的信號狀態為1時,當TagIn3信號狀態從“1"變為“0"時,即檢測到TagIn3的下降沿,此時將操作數“TagOut"置位為“1"一個周期,通過“TagOut"將“TagIn4"置位為“1"。
<操作數 1>
—(P)—
<操作數 2>
可以使用該指令在邏輯運算結果 (RLO) 從'0'變為'1'時置位<操作數 1>。該指令將比較 RLO 的當前信號狀態與 RLO 上一次掃描的信號狀態, RLO 上一次掃描的信號狀態保存在邊沿存儲器位 <操作數 2> 中。如果上一次掃描的 RLO (<操作數 2>)為“0",當前 RLO 信號狀態為“1",則說明出現了一個信號上升沿。檢測到信號上升沿時,<操作數 1> 的信號狀態將在一個程序周期內保持置位為“1"。在其它任何情況下,<操作數 1>的信號狀態均為“0"。指令參數如表4所示,指令的使用示例如圖8-10所示。
參數 | 聲明 | 數據類型 | 存儲區 | 說明 |
---|---|---|---|---|
<操作數 1> | Output | Bool | I、Q、M、D、L | 上升沿置位的操作數 |
<操作數 2> | InOut | Bool | I、Q、M、D、L | 保存上一次查詢的信號狀態的邊沿存儲位 |
表4、在信號上升沿置位操作數指令參數
圖8、在信號上升沿置為操作數示例
圖9、在信號上升沿置為操作數示例
圖10、在信號上升沿置為操作數示例 Trace 軌跡
在上述示例中,“TagOut"為<操作數 1>,'Tag_M'為<操作數 2>,當操作數“TagIn1"、“TagIn2"、“TagIn3"的邏輯運算結果 (RLO) 從“0"變為“1"時,則將操作數“TagOut"置位一個程序周期,通過“TagOut"將“TagIn4"置位為“1",然后“TagOut"又變為“0"。在其它任何情況下,操作數“TagOut"的信號狀態均為“0"。
<操作數 1>
—(N)—
<操作數 2>
可以使用該指令在邏輯運算結果 (RLO) 從'1'變為'0'時置位<操作數 1>。該指令將比較 RLO 的當前信號狀態與 RLO 上一次掃描的信號狀態, RLO 上一次掃描的信號狀態保存在邊沿存儲器位 <操作數 2> 中。如果上一次掃描的 RLO (<操作數 2>)為“1",當前 RLO 信號狀態為“0",則說明出現了一個信號下降沿。檢測到信號下降沿時,<操作數 1> 的信號狀態將在一個程序周期內保持置位為“1"。在其它任何情況下,<操作數 1>的信號狀態均為“0"。指令參數如表5所示,指令的使用示例如圖11-13所示。
參數 | 聲明 | 數據類型 | 存儲區 | 說明 |
---|---|---|---|---|
<操作數 1> | Output | Bool | I、Q、M、D、L | 下降沿置位的操作數 |
<操作數 2> | InOut | Bool | I、Q、M、D、L | 保存上一次查詢的信號狀態的邊沿存儲位 |
表5、在信號下降沿置位操作數指令參數
圖11、在信號下降沿置為操作數示例
圖12、在信號下降沿置為操作數示例
圖13、在信號下降沿置為操作數示例 Trace 軌跡
在上述示例中,“TagOut"為<操作數 1>,'Tag_M'為<操作數 2>,當操作數“TagIn1"、“TagIn2"、“TagIn3"的邏輯運算結果 (RLO) 從“1"變為“0"時,則將操作數“TagOut"置位一個程序周期,通過“TagOut"將“TagIn4"置位為“1",然后“TagOut"又變為“0"。在其它任何情況下,操作數“TagOut"的信號狀態均為“0"。
<操作數>
可以使用該指令在 CLK 從'0'變為'1'時置位輸出 Q。該指令將比較 CLK 的當前信號狀態與 CLK 上一次掃描的信號狀態, CLK 上一次掃描的信號狀態保存在邊沿存儲器位 <操作數> 中。如果上一次掃描的 CLK (<操作數 >)為“0",當前 CLK 信號狀態為“1",則說明出現了一個信號上升沿。檢測到信號上升沿時,輸出 Q 信號狀態將在一個程序周期內保持置位為“1"。在其它任何情況下,輸出 Q 的信號狀態均為“0"。指令參數如表6所示,指令的使用示例如圖14-16所示。
參數 | 聲明 | 數據類型 | 存儲區 | 說明 |
---|---|---|---|---|
CLK | Input | Bool | I、Q、M、D、L或常量 | 當前邏輯運算結果 (RLO) |
<操作數> | InOut | Bool | I、Q、M、D、L | 保存上一次查詢的信號狀態的邊沿存儲位 |
Q | Output | Bool | I、Q、M、D、L | 邊沿檢測的結果 |
表6、掃描 RLO 的信號上升沿指令參數
圖14、掃描 RLO 的信號上升沿示例
圖15、掃描 RLO 的信號上升沿示例
圖16、掃描 RLO 的信號上升沿示例 Trace 軌跡
在上述示例中,當操作數“TagIn1"、“TagIn2"、“TagIn3"的邏輯運算結果 (RLO) 即 CLK 輸入從“0"變為“1"時,該指令輸出 Q 將立即返回狀態“1"一個程序周期,此時將操作數“TagOut"置位為一個程序周期,通過“TagOut"將“TagIn4"置位為“1"。
<操作數>
可以使用該指令在 CLK 從'1'變為'0'時置位輸出 Q。該指令將比較 CLK 的當前信號狀態與 CLK 上一次掃描的信號狀態, CLK 上一次掃描的信號狀態保存在邊沿存儲器位 <操作數> 中。如果上一次掃描的 CLK (<操作數 >)為“1",當前 CLK 信號狀態為“0",則說明出現了一個信號下降沿。檢測到信號下降沿時,輸出 Q 信號狀態將在一個程序周期內保持置位為“1"。在其它任何情況下,輸出 Q 的信號狀態均為“0"。指令參數如表7所示,指令的使用示例如圖17-19所示。
參數 | 聲明 | 數據類型 | 存儲區 | 說明 |
---|---|---|---|---|
CLK | Input | Bool | I、Q、M、D、L或常量 | 當前邏輯運算結果 (RLO) |
<操作數> | InOut | Bool | I、Q、M、D、L | 保存上一次查詢的信號狀態的邊沿存儲位 |
Q | Output | Bool | I、Q、M、D、L | 邊沿檢測的結果 |
表7、掃描 RLO 的信號下降沿指令參數
圖17、掃描 RLO 的信號下降沿示例
圖18、掃描 RLO 的信號下降沿示例
圖19、掃描 RLO 的信號下降沿示例 Trace 軌跡
在上述示例中,當操作數“TagIn1"、“TagIn2"、“TagIn3"的邏輯運算結果 (RLO) 即 CLK 輸入從“1"變為“0"時,該指令輸出 Q 將立即返回狀態“1"一個程序周期,此時將操作數“TagOut"置位為一個程序周期,通過“TagOut"將“TagIn4"置位為“1"。
可以使用該指令在 CLK 從'0'變為'1'時置位輸出 Q。該指令將比較 CLK 的當前信號狀態與 CLK 上一次掃描的信號狀態, CLK 上一次掃描的信號狀態保存在背景數據塊中。如果上一次掃描的 CLK (保存在背景數據塊)為“0",當前 CLK 信號狀態為“1",則說明出現了一個信號上升沿。檢測到信號上升沿時,輸出 Q 信號狀態將在一個程序周期內保持置位為“1"。在其它任何情況下,輸出 Q 的信號狀態均為“0"。指令參數如表8所示,指令的使用示例如圖20-22所示。
參數 | 聲明 | 數據類型 | 存儲區 | 說明 |
---|---|---|---|---|
EN | Input | Bool | I、Q、M、D、L或常量 | 使能輸入 |
ENO | Output | Bool | I、Q、M、D、L | 使能輸出 |
CLK | Input | Bool | I、Q、M、D、L或常量 | 當前邏輯運算結果 (RLO) |
Q | Output | Bool | I、Q、M、D、L | 邊沿檢測的結果 |
表8、檢查信號上升沿指令參數
圖20、檢測信號上升沿示例
圖21、檢測信號上升沿示例
圖22、檢測信號上升沿示例 Trace 軌跡
在上述示例中,當操作數“TagIn2"由“0"變為“1"時,當操作數“TagIn1"、“TagIn2"、“TagIn3"的邏輯運算結果 (RLO) 即 CLK 輸入從“0"變為“1"時,該指令輸出 Q 中生成一個信號上升沿,輸出的值將在一個循環周期內為“1“,從圖16-3中可以看到此時操作數“TagOut"被置位一個循環周期,通過“TagOut"將“TagIn4"置位為“1"。
可以使用該指令在 CLK 從'1'變為'0'時置位輸出 Q。該指令將比較 CLK 的當前信號狀態與 CLK 上一次掃描的信號狀態, CLK 上一次掃描的信號狀態保存在背景數據塊中。如果上一次掃描的 CLK (保存在背景數據塊)為“1",當前 CLK 信號狀態為“0",則說明出現了一個信號下降沿。檢測到信號下降沿時,輸出 Q 信號狀態將在一個程序周期內保持置位為“1"。在其它任何情況下,輸出 Q 的信號狀態均為“0"。指令參數如表9所示,指令的使用示例如圖23-25所示。
參數 | 聲明 | 數據類型 | 存儲區 | 說明 |
---|---|---|---|---|
EN | Input | Bool | I、Q、M、D、L或常量 | 使能輸入 |
ENO | Output | Bool | I、Q、M、D、L | 使能輸出 |
CLK | Input | Bool | I、Q、M、D、L或常量 | 當前邏輯運算結果 (RLO) |
Q | Output | Bool | I、Q、M、D、L | 邊沿檢測的結果 |
表9、檢查信號下降沿指令參數
圖23、檢測信號下降沿示例
圖24、檢測信號下降沿示例
圖25、檢測信號下降沿示例 Trace 軌跡
在上述示例中,當操作數“TagIn2"由“1"變為“0"時,操作數“TagIn1"、“TagIn2"、“TagIn3"的邏輯運算結果 (RLO) 即 CLK 輸入 從“1"變為“0",該指令輸出 Q 中生成一個信號下降沿,輸出的值在一個循環周期內為“1",從圖18-3中可以看到此時操作數“TagOut"被置位一個循環周期,通過“TagOut"將“TagIn4"置位為“1"。
【一】—|P|—、—|N|—、 —(P)— 、—(N)—、P_TRIG、N_TRIG 均出現邊沿存儲位,該存儲位:
(1)如果使用全局變量( DB 或者 M ),則該全局變量在程序中只能使用一次,即使一個變量判斷多次檢測邊沿也是一樣,每次檢測邊沿使用不同全局變量。
(2)如果使用局部變量,則只能使用 FC 的 InOut,FB 的 InOut、Static ,不能使用 Temp。并且每個邊沿位使用不同的局部變量。
【二】R_TRIG、F_TRIG指令:因為邊沿存儲位位于背景數據塊中,所以背景數據塊、多重背景等不能重復使用,也就是每次使用都是一個新的背景數據塊或者多重背景。
【問】為什么進行邊沿檢測,得不到正確的輸出?
【答】邊沿檢測不能正常輸出,原因有以下幾種可能:
【一】輸入必須出現跳變,上升沿是從'0'變為'1',下降沿是從'1'變為'0',對于—|P|—、—|N|—,檢測的是觸點上面操作數的輸入變化,對于 —(P)— 、—(N)—,檢測的是線圈前的邏輯計算結果、對于 P_TRIG、N_TRIG、R_TRIG、F_TRIG 檢測是的 CLK 輸入。
【二】—|P|—、—|N|—、 —(P)— 、—(N)—、P_TRIG、N_TRIG 均出現邊沿存儲位,該存儲位:
(1)如果使用全局變量( DB 或者 M ),則該全局變量在程序中只能使用一次,即使一個變量判斷多次檢測邊沿也是一樣,每次檢測邊沿使用不同全局變量。
(2)如果使用局部變量,則只能使用 FC 的 InOut,FB 的 InOut、Static ,不能使用 Temp。并且每個邊沿位使用不同的局部變量。
【三】R_TRIG、F_TRIG指令:背景數據塊、多重背景不能重復使用,也就是每次使用都是一個新的背景數據塊或者多重背景。
【四】邊沿輸出只有一個掃描周期置位,監視程序是看不到的,需要連接一個置位指令或者加法指令進行捕捉。