關(guān)偉
宜科(天津)電子有限公司 四川 成都 610000
隨著我國生產(chǎn)力水平的不斷發(fā)展進(jìn)步,傳統(tǒng)工業(yè)制造對電氣自動化控制也有了新的需求。信息技術(shù)與傳統(tǒng)工業(yè)制造行業(yè)的結(jié)合是必然的趨勢,通過電氣自動化設(shè)備在汽車制造行業(yè)中的廣泛應(yīng)用,可以大幅提升企業(yè)的生產(chǎn)效率,同時(shí)能夠節(jié)約大量的人力和物力成本,符合我國倡導(dǎo)的科技強(qiáng)國的發(fā)展戰(zhàn)略。為了在汽車生產(chǎn)制造的過程中實(shí)現(xiàn)高性能的電氣自動化設(shè)備,編程語言的應(yīng)用不可或缺。在眾多編程語言的實(shí)踐應(yīng)用中,SCL語言得到程序員的青睞。因此,研究SCL語言在汽車制造業(yè)中的應(yīng)用具有重要的現(xiàn)實(shí)意義[1]。
西門子PLC(可編程控制器)的主要編程語言有梯形圖(LAD)、語句表(STL)、結(jié)構(gòu)化控制語言(SCL)、功能塊(FBD)、順序控制(GRAPH)等。相較于其他編程語言,SCL語言與計(jì)算機(jī)高級語言類似,在有大量的數(shù)據(jù)處理需求下,使用SCL編寫的程序效率更高,同時(shí)也更加容易閱讀和理解。筆者在實(shí)際應(yīng)用中更加傾向于使用該語言進(jìn)行設(shè)計(jì)。
1.1.1 易讀性。SCL語言在語句的結(jié)構(gòu)上與Basic、Pascal、C這些高級語言相似,同時(shí)又與Pascal的語法類似。這就意味著SCL語言更接近高級語言,其關(guān)鍵字或者指令的形式基本是簡單的自然語言,易于理解。對于了解計(jì)算機(jī)高級編程語言的PLC人員,上手SCL語言快、容易。
1.1.2 編輯空間利用率高。由于SCL語言在語句結(jié)構(gòu)和語法上都接近于高級語言,其編程的效率與Basic、Pascal這些高級語言比較接近。SCL語言可以通過“REGION”指令將程序段按照其功能進(jìn)行歸類,類似于LAD/FBD/STL編程環(huán)境下的“程序段”概念。程序員可以根據(jù)程序?qū)崿F(xiàn)的功能進(jìn)行分類,將每個不同功能的程序指令放到不同的“REGION”組中。“REGION”組可以進(jìn)行折疊操作,需要使用時(shí)再展開,可以大大提高編輯空間的利用率,以便于編寫出更具邏輯性的程序,同時(shí)也方便對程序進(jìn)行管理。
1.1.3 易于管理和移植。SCL語言的功能塊可以導(dǎo)入或者導(dǎo)出,導(dǎo)出的文件,可以通過windows自帶的記事本軟件進(jìn)行查看。同時(shí),也可以將文件導(dǎo)入到同平臺的其他項(xiàng)目中,生成功能塊進(jìn)行使用。程序員也可以利用SCL語言的這個優(yōu)點(diǎn)編輯通用的庫文件,將常用的功能塊歸類存下,在項(xiàng)目需要的時(shí)候直接拿來重復(fù)使用,可以很大程度節(jié)約時(shí)間,提高編程的效率。
本文結(jié)合筆者實(shí)際參與的汽車廠Buffer庫區(qū)的項(xiàng)目來闡述SCL語言在汽車制造行業(yè)中的應(yīng)用[2]。
某汽車廠在焊裝車間新建Buffer庫區(qū),用于緩存由焊裝車間發(fā)往涂裝車間前的白車身。同時(shí),需要按照涂裝車間的需求車型進(jìn)行發(fā)車。本項(xiàng)目采用西門子S7-1518F控制器,西門子Portal V15.1編程平臺,核心數(shù)據(jù)處理算法采用SCL語言編寫。
2.2.1 白車身庫區(qū)布局說明。圖1為白車身庫區(qū)布局圖。粉紅色部分是庫位,里面由44臺固定輥床組成,用于存儲白車身。左上角黑色部分為庫區(qū)出口,通過輸送通道進(jìn)入涂裝車間。右下角黑色部分為庫區(qū)入口,上一道工序從這里進(jìn)入庫區(qū)。中間黃色部分為兩臺橫移機(jī),用于將入口白車身存入庫區(qū),以及將白車身從庫區(qū)里面取出從庫區(qū)出口發(fā)出。在涂裝車間,需要白車身按照指定的順序進(jìn)入。因此,庫區(qū)除了作為白車身存儲使用外,更重要的一個角色是用于調(diào)整車輛進(jìn)入涂裝車間的順序。庫區(qū)里面每一個輥床都有編號,1-44號。在程序中入庫尋址就按照1-44號入庫,出庫根據(jù)涂裝車間需求的車型條件進(jìn)行出庫。

圖1 白車身庫區(qū)布局圖
2.2.2 項(xiàng)目動作說明。根據(jù)客戶對項(xiàng)目的動作工藝要求,需實(shí)現(xiàn)入庫、出庫精準(zhǔn)動作。入庫時(shí),當(dāng)有車輛到達(dá)庫區(qū)入口時(shí),觸發(fā)申請入庫命令,程序開始搜尋庫區(qū)數(shù)據(jù),找到空位的輥床,然后返回結(jié)果,橫移機(jī)將車輛送入到對應(yīng)的輥床上。出庫時(shí),根據(jù)涂裝車間需求的類型(Body Type),自動搜索庫區(qū)里面的數(shù)據(jù),找到滿足類型(Body Type)的車輛,再根據(jù)車身編號(Body ID)最小的一臺車,優(yōu)先出庫(車身編號是唯一的)[3]。
為實(shí)現(xiàn)前文所述功能,本項(xiàng)目使用SCL語言進(jìn)行編程,具體變量及代碼設(shè)計(jì)如下://變量聲明


2.4.1 入庫動作模擬。令初始庫區(qū)里存車量為空,模擬觸發(fā)一次進(jìn)庫請求指令(InFeed_Request),通過邏輯輸出結(jié)果(InFeedNumber)得到入庫的庫位號1。然后,模擬庫區(qū)里前3個庫位已經(jīng)存入車輛,再執(zhí)行一次進(jìn)庫請求指令,通過邏輯輸出結(jié)果得到庫位號4。入庫動作模擬試驗(yàn)成功。
2.4.2 出庫動作模擬。在庫區(qū)里模擬存儲6臺車(A/B/C/D/E/F),將其依次存入1-6號庫位。將A/B/C的車型(BodyType)定義為1300000,將D/E/F的車型定義為1300001,將它們的車身編號(BodyID)從A-F分別定義為1/3/6/7/4/9?,F(xiàn)模擬出庫一臺1300001類型的車,在Req_BodyType處填入1300001,觸發(fā)一次出庫請求指令(OutFeed_Request),按照車身編號最小優(yōu)先出庫的原則,通過邏輯輸出結(jié)果(OutFeedNumber)得到車身編號為5,表明出庫動作模擬成功。
通過以上項(xiàng)目方案的設(shè)計(jì)、程序的編寫,功能的模擬驗(yàn)證,最后實(shí)物調(diào)試,達(dá)到了客戶對項(xiàng)目的功能需求,實(shí)現(xiàn)了精準(zhǔn)出入庫的目的[4]。
通過本項(xiàng)目中SCL語言編程的實(shí)際應(yīng)用,我們可以更直觀地看到該編程語言在汽車制造業(yè)中實(shí)現(xiàn)電氣自動化的優(yōu)勢,SCL語言作為高級語言,和數(shù)學(xué)公式基本一致,可以運(yùn)用許多計(jì)算機(jī)語言的思想,去解決生產(chǎn)中遇到的問題,這樣在寫程序時(shí),大大減小程序量,完成數(shù)據(jù)的處理分析需求,同時(shí),也讓程序易懂。后續(xù)維護(hù)人員對程序進(jìn)行查看和優(yōu)化也較為方便,很大程度上提高了工作生產(chǎn)效率。SCL語言在汽車制造行業(yè)中為企業(yè)降低人力、物力成本,大大調(diào)高效率,在其他需要電氣自動化控制的生產(chǎn)企業(yè)也同樣適用,值得廣泛推廣應(yīng)用。