国产aaaa级全身裸体精油片_337p人体粉嫩久久久红粉影视_一区中文字幕在线观看_国产亚洲精品一区二区_欧美裸体男粗大1609_午夜亚洲激情电影av_黄色小说入口_日本精品久久久久中文字幕_少妇思春三a级_亚洲视频自拍偷拍

首頁 > 化工知識 > 西門子SCL編程入門教程連載(6)-再談沿檢測指令

西門子SCL編程入門教程連載(6)-再談沿檢測指令

時間:2020-09-25 來源:方正智芯 瀏覽:

上一篇文章我們談到了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,這樣程序就可以正常運行了。如下圖:

好了,關于沿檢測指令我們又討論了一篇,感謝那個提問題的小伙伴。

版權:如無特殊注明,文章轉載自網絡,侵權請聯(lián)系cnmhg168#163.com刪除!文件均為網友上傳,僅供研究和學習使用,務必24小時內刪除。
相關推薦