1.1沿指令概述
沿指令即在程序中用于檢測信號的上升沿或下降沿的指令。
在SIMATIC S7-1500和S7-1200 PLC中,選擇編程語言為SCL時,可以看到TIA Portal軟件自帶兩個指令分別用于檢測信號的上升沿和下降沿,如圖1所示:
圖1
在程序中調用R_TRIG或F_TRIG時,系統會自動生成1個背景DB塊,用于存放檢測信號的邊沿存儲位,當程序中有較多信號需要檢測上升沿或下降沿時,就會產生多個背景DB塊,這樣一來,過多的背景DB塊不僅僅不便于管理,且會過多占用CPU寶貴的存儲區。
以SIMATIC S7-1200 PLC為例,存儲區分為工作存儲區,裝載存儲區,保持性存儲區,其中工作存儲區和保持性存儲區不可擴展,不同的CPU具有不同大小的存儲區,如圖2所示:
圖2
假設選定S7-1211C進行編程,如果在程序中應用了很多R_TRIG或F_TRIG指令,則實際程序需要的工作存儲區有可能超過50kB,此時需要更換工作存儲區更大的PLC來加以解決,所以適當優化程序,占用較少的工作存儲區,十分必要。
本文以S7-1200為例,皆在闡釋如何使用SCL語言開發沿指令以減少工作存儲區使用。
1.2開發檢測上升沿指令
為了不產生背景DB塊,我們在FC中使用SCL語言進行開發,并引入第三方變量作為檢測信號的邊沿存儲位。
新建FC
新建FC并選擇編程語言為SCL,FC塊命名為:RisingEdgeDetection,如圖3所示:
圖3
定義接口
根據編程需要定義接口變量,并寫明注釋,修改Return變量的數據類型為Bool,用于輸出上升沿信號,持續一個周期,如圖4所示:
圖4
編程
根據上升沿檢測原理進行編程,編程思想如下:
當 #signal由0變成1時,此時作為邊沿存儲位的 #thirdVariable仍保留 #singal信號上一周期的狀態,#thirdVariable為False,此時滿足IF語句,RisingEdgeDetection被賦值為True。
當 #signal由0變成1后的下一周期,#thirdVariable上個周期已被 #signal賦值為相同狀態,即 #thirdVariable和 #signal都為True,則不再滿足IF語言,RisingEdgeDetection被賦值為False。
RisingEdgeDetection輸出持續一個周期。
程序代碼如圖5所示:
圖5
1.3開發檢測下降沿指令
與開發檢測上升沿指令類似,新建FC并定義接口變量,這里不再一一贅述。在編程上兩者有所不同,其編程思想如下:
當#signal由1變成0時,此時作為邊沿存儲位的#thirdVariable仍保留#singal信號上一周期的狀態,#thirdVariable為True,此時滿足IF語句,FallingEdgeDetection被賦值為True。
當#signal由1變成0后的下一周期,#thirdVariable上個周期已被#signal賦值為相同狀態,即#thirdVariable和#signal都為False,則不再滿足IF語言,FallingEdgeDetection被賦值為False。
FallingEdgeDetection輸出持續一個周期。
程序代碼如圖6所示:
圖6
1.4功能測試
使用開發完成的功能塊,檢測Q0.0的上升沿和下降沿,編程代碼如圖7所示,Trace時序圖如圖8所示。
其中:
Data.thirdVariable1為檢測上升沿指令所用到的第三方變量;
RisingEdgeDetection為輸出上升沿;
Data.thirdVariable2為檢測下降沿指令所用到的第三方變量;
FallingEdgeDetection為輸出下降沿。
圖7
圖8
1.5效果比對
為了更好的說明該自行開發沿指令的優勢,我們分別使用R_TRIG指令和RisingEdgeDetection指令編寫相同的工藝功能程序,通過對比兩者所占用工作存儲區大小的差異,加以說明。
工藝功能要求:
利用S7-1214C,使用SCL編程語言編程,在FB1中實現1000個Bool信號的上升沿檢測。
1.5.1使用R_TRIG實現相關工藝功能
使用R_TRIG指令實現過程,如圖9所示。
R_TRIG在FB1中以多重背景形式調用,方便R_TRIG背景DB塊的管理。
圖9
編譯完成后,在程序信息中查看存儲區使用情況,如圖10所示,工作存儲區已被占用10%。Test_IDB為FB1的背景DB塊。
圖10
1.5.2使用RisingEdgeDetection實現相關工藝功能
使用RisingEdgeDetection指令實現過程,如圖11所示。
圖11
編譯完成后,在程序信息中查看存儲區使用情況,如圖12所示,工作存儲區已被占用3%。
Test_IDB為FB1的背景DB塊。Data用于存儲第三方變量,變量類型為Array [0…999] of Bool。
圖12
1.6總結
從上述分析中,我們可以得出自行開發的沿指令RisingEdgeDetection、FallingEdgeDetection比R_TRIG、F_TRIG指令占用更少的工作存儲區空間,且適用于SIMATIC S7-1200及S7-1500 PLC。
審核編輯:湯梓紅
-
plc
+關注
關注
5030文章
13700瀏覽量
472036 -
指令
+關注
關注
1文章
614瀏覽量
36226 -
SIMATIC
+關注
關注
1文章
231瀏覽量
16191 -
SCL
+關注
關注
1文章
243瀏覽量
17455 -
S7-1500
+關注
關注
3文章
301瀏覽量
6734
原文標題:1.1
文章出處:【微信號:中泰PLC自動化教學,微信公眾號:中泰PLC自動化教學】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
方波上升沿下降沿問題
計算波形圖中上升沿和下降沿的個數及上升沿和下降沿的時間。
上升沿下降沿什么意思?如何理解?
上升沿和下降沿是什么意思?
西門子1200上升沿和下降沿的操作流程

評論