劉昌盛,孫博文
(沈陽(yáng)機(jī)床成套設(shè)備有限責(zé)任公司 遼寧 沈陽(yáng) 110142)
FB(Function Block)是一個(gè)有靜態(tài)數(shù)據(jù)的子程序,故FB塊執(zhí)行后,所有的本地變量會(huì)保持原有的值,只有明確聲明為臨時(shí)變量的值會(huì)丟失。使用FB塊必須先定義一個(gè)背景數(shù)據(jù)塊,然后輸入FB塊的名字作為數(shù)據(jù)類型。FB的靜態(tài)數(shù)據(jù)存儲(chǔ)在該背景數(shù)據(jù)塊中。可以定義多個(gè)FB背景數(shù)據(jù)塊,每個(gè)背景數(shù)據(jù)塊相對(duì)獨(dú)立。FB背景數(shù)據(jù)塊的靜態(tài)數(shù)據(jù)會(huì)一直保持直到該背景塊再次調(diào)用。
下面通過(guò)實(shí)例來(lái)介紹FB數(shù)據(jù)塊的編寫與應(yīng)用:
本廠設(shè)計(jì)研發(fā)了一款以西門子SIMOTION D為控制核心,加掛功率伺服模塊和伺服電機(jī),變頻器,模擬量檢測(cè)與工控機(jī),液壓控制器相組合用于汽車新能源方面的自動(dòng)化設(shè)備。該設(shè)備自動(dòng)化程度較高,邏輯繁瑣復(fù)雜,編程語(yǔ)言主體采用LAD編程語(yǔ)言。
首先打開(kāi)SCOUT,創(chuàng)建一個(gè)新項(xiàng)目,在“PROGRAMS”目錄樹(shù)下雙擊“Insert LAD/FBD unit”插入一個(gè)LAD/FBD程序單元,“Name”欄為“LFUnit_2”。
在“LFUnit_2”中用鼠標(biāo)左鍵雙擊“Insert LAD/FBD program”插入一個(gè)子程序,程序名為“Condition_determine”,創(chuàng)建類型(Creation type)選擇“function block”。另外,還可以輸入作者等信息。
在創(chuàng)建的FB程序的變量聲明中定義變量,如圖1所示。
在程序編輯區(qū)域右鍵單擊“insert network”,插入一個(gè)網(wǎng)絡(luò)。并在網(wǎng)絡(luò)中建立所需邏輯。如圖2所示。
在用戶程序LAD/FBD unit或LAD/FBD program的變量聲明表中定義FB的背景數(shù)據(jù)塊。

圖1 FB程序的變量聲明列表

圖2 編寫的FB程序
在LFUnit_1中創(chuàng)建一個(gè)程序,用鼠標(biāo)左鍵雙擊“insert LAD/FBD program”插入一個(gè)名為“Saw_action”的程序,創(chuàng)建類型(Creation type)選擇“program”。
插入一個(gè)網(wǎng)絡(luò),然后把LFUnit_2中的FB“Condition_determine”拖入該網(wǎng)絡(luò),并選擇“CD201”作為背景數(shù)據(jù)塊,在該功能塊的右鍵快捷菜單中選擇“display”->“all box parameters”可以顯示功能塊的所有引腳。
雙擊功能塊,在單出的“enter call parameter”畫面中可以為功能塊的參數(shù)賦值,也可以直接在LAD編輯器中直接對(duì)功能塊賦值。在功能塊執(zhí)行后,背景數(shù)據(jù)塊中的靜態(tài)數(shù)據(jù)仍然保留,可以在主程序中訪問(wèn)其輸出參數(shù),如圖3所示。

圖3 編寫調(diào)用FB的程序
“SAW_load1”條件步驟被激活,開(kāi)始判斷上料氣缸伸出到位信號(hào)INB3.0和縮回到位信號(hào)INB3.2。為了降低開(kāi)關(guān)信號(hào)的誤觸發(fā)和提高判斷的穩(wěn)定型,在FB“Conditiondetermine”塊中增加了一個(gè)防抖動(dòng)計(jì)時(shí)器“TON2”。即當(dāng)上料氣缸伸出到位信號(hào)觸發(fā)并且上料氣缸縮回到位未觸發(fā)穩(wěn)定0.5秒后,輸出result2“OK_CD201”。當(dāng)上料氣缸伸出到位信號(hào)未觸發(fā)或上料氣缸縮回到位觸發(fā)保持2秒,則輸出報(bào)警信號(hào)result1“HMI_ERROR201”。如在SURE端加入輸入信號(hào)則可將HMI_ERROR201報(bào)警保持,反之不保持。
在主程序中可以建立其他背景數(shù)據(jù)塊來(lái)判斷其他動(dòng)作,每個(gè)背景數(shù)據(jù)塊(如CD201)相對(duì)獨(dú)立。注意!因?yàn)镕B背景數(shù)據(jù)塊的靜態(tài)數(shù)據(jù)會(huì)一直保持直到該背景塊再次調(diào)用,即當(dāng)停止調(diào)用該FB塊,在其相應(yīng)的背景數(shù)據(jù)塊中依然保存著調(diào)用結(jié)束前的數(shù)據(jù)。在應(yīng)用時(shí)要注意此處以避免邏輯錯(cuò)誤、信號(hào)誤觸發(fā)。
通過(guò)以上實(shí)例可以衍生出更多的FB塊應(yīng)用,在本產(chǎn)品中如各個(gè)軸參數(shù)的計(jì)算,多個(gè)模擬量信號(hào)的檢測(cè),單個(gè)執(zhí)行動(dòng)作的到位檢測(cè)和報(bào)警,坐標(biāo)及安全范圍的設(shè)定,步驟執(zhí)行的編號(hào)均應(yīng)用到了FB塊(如LFUnit_2中均為FB塊)。
使用FB塊可使主程序?qū)哟吻逦{(diào)理明確,降低了編程難度和復(fù)雜性。同類邏輯保持相同的邏輯判斷與結(jié)構(gòu),保證程序準(zhǔn)確和統(tǒng)一。在其他產(chǎn)品項(xiàng)目中,類似的邏輯均可保持統(tǒng)一。可更好的實(shí)現(xiàn)編程及電氣工藝化、標(biāo)準(zhǔn)化,降低程序?qū)彶榕c故障排除的難度。
[1]王薇,深入淺出西門子運(yùn)動(dòng)控制器-SIMOTION實(shí)用手冊(cè)[M]-北京:機(jī)械工業(yè)出版社,2013,6.
[2]西門子(中國(guó))有限公司simotion官網(wǎng) http://siemens.com/simotion