一.你們一想到雙手啟動程式會怎麼做?
2.兩個輸入點,然後輸入點串聯?
3.兩個輸入點,輸入點串聯,再延時?
那麼這樣寫程式真的安全嗎?
二.今天我給大家推薦另外一個思路
硬體環境:S7-1215DCDCDC
軟體環境:TIA V16
1.我們首先新建一個FB塊,我這裡命名為 “雙手啟動安全繼電器” ,然後建立相應的介面變數:
4個Input介面為:
有效檢測時間: Time 用來設定有效檢測時間,並給預設值500ms
允許誤差:Time 用來設定允許按下時間的誤差值,並給預設值100ms
1個Output介面為
安全輸出:bool 將運算結果傳給外部
介面及靜態變數
2.我們用梯形圖寫程式如圖效果
FB塊程式
程式解讀:
第一行程式:檢測 輸入1的狀態 ,如果接通我們延時,進行有效檢測
第二行程式: 檢測輸入2的狀態,如果接通我們延時,進行有效檢測
第一路取上升沿,檢測按下瞬間他們的時序差了多少?也就是兩個值相減,但是結果有可能為負值,那麼我們取其絕對值,獲得時序正差值。
第二路檢測,按鍵時序差絕對值是否小於我們允許的誤差值,並且有效檢測時間大於允許誤差,進行非法資料驗證,如果都滿足我們輸出安全。
3.我們新增測試變數,並呼叫這個FB塊。
安全 M1.0:用來模擬運算結果
模擬同時輸入位元組 MB0 :用來模擬同時按下
呼叫FB塊
由於我這裡的時間已經有預設值,在不需要改時間的情況下就不用改了。
4.我們下載程式,並轉到線上除錯
下載程式
5.我們新增監控表用來除錯:
6.測試,為了直觀有效,我用動畫模擬:
可以看到,由於實際時間差值的絕對值大於允許的誤差值,所以沒有輸出安全訊號。
當我給MB0賦值16#03的時候,也就是2#11,由於實際時間差值的絕對值是0,小於允許的誤差,安全訊號就輸出了。
攻城獅們,老鐵們,如果有更好的想法可以最佳化,並且封裝為庫,重複呼叫還是很香的。
其實,這個原理,是借鑑於安全繼電器檢測按鍵過程的原理,關注的是時序上是否真正同時按下,我們平時寫程式更多的關注結果,沒有關注過程。不知道有沒有朋友想過?有些對安全稍微高點的場景又沒使用安全繼電器。當有人把另外一個感測器短接,遮蔽,或者按鈕機械故障卡住,沒有彈開。作業人員單手操作裝置,萬一夾到手那是我們不願看到的,比如注塑機衝壓機的雙按鈕啟動,沒有很好的防護,磨具容易夾到手。
#電氣自動化# #PLC# #電工# #安全# #安全繼電器#
end