工程師在平常的程序編寫中,會有各種各樣的技巧類的方法,有助于程序結構清晰的,有利于程序簡化的,更有自我創新的,多多地學他人之長以彌補自己之短,對自己的工作是有十足好處的。
在一個項目程序中,報警程序的編寫是不可或缺的,但是如何給相同或類似的報警匯總出一個功能塊來,還沒有定論,當然有各種各樣可以實現的方法,以下是我在平常的程序編寫中已經習慣性用的fb報警功能塊,感覺有利于程序的簡化和統一,分享一下!
以下我的編程環境使用倍福的twincat,如圖1所示,它的編程語言符合標準化語言iec61131-3,人性化的編程界面簡單易學。
圖1.twincat屬性
第一個功能塊alarm1,功能塊實現的是執行器得到輸出信號后,但是到位信號在規定時間內未反饋回來,則給出執行器未到位報警,此類報警的應用情況很多,例如拿一個氣缸來說:
圖2.變量表
var_bbbbb(輸入變量):
_control:指plc發出的給氣缸的伸出信號;
_signal:指氣缸的伸出到位信號;
_reset:指報警復位按鈕信號;
_time0:指設定規定時間的設定值;
var_output(輸出變量):
_alarm:指氣缸異常的報警輸出;
var(中間變量):
_ton1:定時;
_tq:定時器輸出;
如圖2中所示的邏輯程序部分:氣缸的初始狀態為收回狀態,伸出到位檢測信號為0,當plc輸出給氣缸的伸出信號置1后,氣缸動作即變為伸出狀態,此時正常情況下在規定時間(例如_time0=3秒時),氣缸的伸出到位檢測信號_signal變為1,此時報警輸出狀態不變,為false,不會報警;但是如果規定時間已到,即_tq有輸出,并且氣缸的伸出到位信號未變為1,仍為0,則_alarm信號為true,報警有輸出,顯示氣缸未到位報警。此時如果修復氣缸開關,使得氣缸的伸出到位信號_signal變為1,則按下復位按鈕,即_reset=true,_alarm信號變為false,報警消除。
如果控制信號_control為0的話,報警信號_alarm即變為false。
圖3.邏輯控制程序
整體的效果如圖4所示。
圖4.整體外觀圖
此類報警應用不僅限于氣缸,又如你電機、電缸等執行器均適用。
第二個功能塊alarm2,此報警功能塊實現的是執行器的兩端在規定時間內同時有信號或同時無信號時,則給出執行器檢測開關報警,此類報警的應用情況也很多,同樣我們拿一個氣缸來舉例:
變量表如圖5所示:
var_bbbbb(輸入變量):
_signal1:傳感器信號1;
_signal2:傳感器信號2;
_reset:復位信號;
var_output(輸出變量):
_alarm:指氣缸異常的報警輸出;
var(中間變量):
_in0:定時器的使能端;
_ton2:定時時間繼電器;
圖5.變量表
如圖6所示的邏輯控制程序,如果一個氣缸的兩端信號同時為1,即_signal1和_signal2同時都有信號,或者兩者同時都沒有信號,即_signal1和_signal2同時為0,則定時器的使能端信號_in0變為true,定時器_ton2開始計時,此例設定定時器的值為1秒,當計時器的時間到后,_alarm信號置為true,使能端信號_in0變為0,當修復氣缸兩端的檢測信號到正常狀態時,按動復位按鈕后,報警信號會復位,_alarm信號復位為0,報警消除。
圖6.邏輯控制程序
如圖7所示完整視圖,此報警也不僅局限于氣缸的操作,同樣適用于電機等其它執行器的報警顯示。
圖7.整體外觀圖
實際fc塊中調用fb塊的實例如圖8所示,在fc編輯塊中將alarm引入,對其輸入引腳和輸出引腳分別對應賦值,實現對相應執行器的報警顯示。
圖8.fc塊中的alarm塊實現
諸如此類的總結在日常工作中還有很很多,只要平時下一點點的功夫,善于總結,勇于與大家交流,將編程的便捷與開擴的思路與眾人分享,我們的技術進步指日可待!


















