西門子SCL編程入門教程連載(6)-再談沿檢測指令
上一篇文章我們談到了SCL的沿檢測指令——R_TRIG和F_TRIG。細心的小伙伴在閱讀文章后提出一個問題:如果每一個沿檢測指令都要使用一個數據塊(DB),那多次使用的情況下程序中豈不是會有很多的數據塊?這篇文章,我們再來談談這個話題。

的確,如果在FC(功能)中使用沿檢測指令,我們必須為其創(chuàng)建相應的數據塊。這是因為FC沒有屬于自己的背景數據塊,不能保存靜態(tài)變量。
如果在程序中需要多次使用沿檢測指令,建議使用FB(功能塊)而非FC(功能)。由于FB有自己的背景數據塊,這樣,我們可以把沿檢測指令需要保存的靜態(tài)數據存放到FB的背景數據塊中,并且可以采用多重背景數據塊的方式來減少程序中需要添加的數據塊(DB)的數量。
舉個例子:
假設我們有三臺電機需要進行起??刂啤?/p>
啟動按鈕的PLC地址分別是:
I0.0(標簽名:E_Start_Motor1);
I0.1(標簽名:E_Start_Motor2);
I0.2(標簽名:E_Start_Motor3);
添加FB到主程序中,命名為:FB_SCL_Test.
向FB中添加上升沿觸發(fā)指令:R_TRIG ,在出現添加背景數據塊對話框中選擇“多重背景數據”,并命名為:R_TRIG_Motor1,如下圖:

此時可以看到,FB_SCL_Test的靜態(tài)存儲區(qū)中增加了R_TRIG_Motor1一項,如下圖:

同樣的方式添加Motor2和Motor3的上升沿觸發(fā)指令,背景數據塊名稱分別為:R_TRIG_Motor2和R_TRIG_Motor3,如下圖:

接下來我們編程來顯示三臺電機啟動按鈕的上升沿檢測,這里我們采用兩種代碼方式:
第一種方式我們采用上篇文章介紹的方法,使用中間變量M0.0(標簽名稱:Interflag_Motor0),代碼如下:

第二種方式采用簡單的方法,不使用中間變量,代碼如下:

第一種方式的上升沿檢測,可以通過判斷中間變量M0.0的值是否為1來啟動電機,代碼如下:

第二種方式的上升沿檢測,則需要判斷背景數據塊中的靜態(tài)變量來啟動電機,代碼如下:

可以看出,第一種代碼的可讀性很好,但顯得有點啰嗦;第二種代碼很簡潔,但可讀性稍微差些。選擇哪種方式,完全取決你的愛好。
下降沿的多重背景設置與此類似,不再贅述。
代碼寫到這里并沒有完成。雖然我們在FB_SCL_Test中設置存儲靜態(tài)變量,但到目前為止FB_SCL_Test還是沒有背景數據塊。
所以,接下來我們要創(chuàng)建一個背景數據塊。
可以手動創(chuàng)建。不過簡單的辦法是在主程序塊Main中調用FB_SCL_Test,系統(tǒng)會自動提示創(chuàng)建背景數據塊FB_SCL_Test_DB,單擊確認即可。
打開數據塊FB_SCL_Test_DB,可以看到其靜態(tài)存儲區(qū)中有我們設置的R_TRIG_Motor1、R_TRIG_Motor2和R_TRIG_Motor3,這樣程序就可以正常運行了。如下圖:

好了,關于沿檢測指令我們又討論了一篇,感謝那個提問題的小伙伴。
-
Origin(Pro):學習版的窗口限制【數據繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
AutoCAD 保存時出現錯誤:“此圖形中的一個或多個對象無法保存為指定格式”怎么辦? 2020-08-03
-
OriginPro:學習版申請及過期激活方法【數據繪圖】 2020-08-06
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計算焓和比熱容 2020-08-31
-
如何評價擬合效果-Origin(Pro)數據擬合系列教程【數據繪圖】 2020-08-06
-
Aspen Plus安裝過程中RMS License證書安裝失敗的解決方法,親測有效! 2021-10-15
-
CAD外部參照無法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內容復制到另一張圖中? 2020-07-03
