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


















