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