關偉
宜科(天津)電子有限公司 四川 成都 610000
隨著我國生產(chǎn)力水平的不斷發(fā)展進步,傳統(tǒng)工業(yè)制造對電氣自動化控制也有了新的需求。信息技術與傳統(tǒng)工業(yè)制造行業(yè)的結合是必然的趨勢,通過電氣自動化設備在汽車制造行業(yè)中的廣泛應用,可以大幅提升企業(yè)的生產(chǎn)效率,同時能夠節(jié)約大量的人力和物力成本,符合我國倡導的科技強國的發(fā)展戰(zhàn)略。為了在汽車生產(chǎn)制造的過程中實現(xiàn)高性能的電氣自動化設備,編程語言的應用不可或缺。在眾多編程語言的實踐應用中,SCL語言得到程序員的青睞。因此,研究SCL語言在汽車制造業(yè)中的應用具有重要的現(xiàn)實意義[1]。
西門子PLC(可編程控制器)的主要編程語言有梯形圖(LAD)、語句表(STL)、結構化控制語言(SCL)、功能塊(FBD)、順序控制(GRAPH)等。相較于其他編程語言,SCL語言與計算機高級語言類似,在有大量的數(shù)據(jù)處理需求下,使用SCL編寫的程序效率更高,同時也更加容易閱讀和理解。筆者在實際應用中更加傾向于使用該語言進行設計。
1.1.1 易讀性。SCL語言在語句的結構上與Basic、Pascal、C這些高級語言相似,同時又與Pascal的語法類似。這就意味著SCL語言更接近高級語言,其關鍵字或者指令的形式基本是簡單的自然語言,易于理解。對于了解計算機高級編程語言的PLC人員,上手SCL語言快、容易。
1.1.2 編輯空間利用率高。由于SCL語言在語句結構和語法上都接近于高級語言,其編程的效率與Basic、Pascal這些高級語言比較接近。SCL語言可以通過“REGION”指令將程序段按照其功能進行歸類,類似于LAD/FBD/STL編程環(huán)境下的“程序段”概念。程序員可以根據(jù)程序?qū)崿F(xiàn)的功能進行分類,將每個不同功能的程序指令放到不同的“REGION”組中?!癛EGION”組可以進行折疊操作,需要使用時再展開,可以大大提高編輯空間的利用率,以便于編寫出更具邏輯性的程序,同時也方便對程序進行管理。
1.1.3 易于管理和移植。SCL語言的功能塊可以導入或者導出,導出的文件,可以通過windows自帶的記事本軟件進行查看。同時,也可以將文件導入到同平臺的其他項目中,生成功能塊進行使用。程序員也可以利用SCL語言的這個優(yōu)點編輯通用的庫文件,將常用的功能塊歸類存下,在項目需要的時候直接拿來重復使用,可以很大程度節(jié)約時間,提高編程的效率。
本文結合筆者實際參與的汽車廠Buffer庫區(qū)的項目來闡述SCL語言在汽車制造行業(yè)中的應用[2]。
某汽車廠在焊裝車間新建Buffer庫區(qū),用于緩存由焊裝車間發(fā)往涂裝車間前的白車身。同時,需要按照涂裝車間的需求車型進行發(fā)車。本項目采用西門子S7-1518F控制器,西門子Portal V15.1編程平臺,核心數(shù)據(jù)處理算法采用SCL語言編寫。
2.2.1 白車身庫區(qū)布局說明。圖1為白車身庫區(qū)布局圖。粉紅色部分是庫位,里面由44臺固定輥床組成,用于存儲白車身。左上角黑色部分為庫區(qū)出口,通過輸送通道進入涂裝車間。右下角黑色部分為庫區(qū)入口,上一道工序從這里進入庫區(qū)。中間黃色部分為兩臺橫移機,用于將入口白車身存入庫區(qū),以及將白車身從庫區(qū)里面取出從庫區(qū)出口發(fā)出。在涂裝車間,需要白車身按照指定的順序進入。因此,庫區(qū)除了作為白車身存儲使用外,更重要的一個角色是用于調(diào)整車輛進入涂裝車間的順序。庫區(qū)里面每一個輥床都有編號,1-44號。在程序中入庫尋址就按照1-44號入庫,出庫根據(jù)涂裝車間需求的車型條件進行出庫。
圖1 白車身庫區(qū)布局圖
2.2.2 項目動作說明。根據(jù)客戶對項目的動作工藝要求,需實現(xiàn)入庫、出庫精準動作。入庫時,當有車輛到達庫區(qū)入口時,觸發(fā)申請入庫命令,程序開始搜尋庫區(qū)數(shù)據(jù),找到空位的輥床,然后返回結果,橫移機將車輛送入到對應的輥床上。出庫時,根據(jù)涂裝車間需求的類型(Body Type),自動搜索庫區(qū)里面的數(shù)據(jù),找到滿足類型(Body Type)的車輛,再根據(jù)車身編號(Body ID)最小的一臺車,優(yōu)先出庫(車身編號是唯一的)[3]。
為實現(xiàn)前文所述功能,本項目使用SCL語言進行編程,具體變量及代碼設計如下://變量聲明
2.4.1 入庫動作模擬。令初始庫區(qū)里存車量為空,模擬觸發(fā)一次進庫請求指令(InFeed_Request),通過邏輯輸出結果(InFeedNumber)得到入庫的庫位號1。然后,模擬庫區(qū)里前3個庫位已經(jīng)存入車輛,再執(zhí)行一次進庫請求指令,通過邏輯輸出結果得到庫位號4。入庫動作模擬試驗成功。
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)先出庫的原則,通過邏輯輸出結果(OutFeedNumber)得到車身編號為5,表明出庫動作模擬成功。
通過以上項目方案的設計、程序的編寫,功能的模擬驗證,最后實物調(diào)試,達到了客戶對項目的功能需求,實現(xiàn)了精準出入庫的目的[4]。
通過本項目中SCL語言編程的實際應用,我們可以更直觀地看到該編程語言在汽車制造業(yè)中實現(xiàn)電氣自動化的優(yōu)勢,SCL語言作為高級語言,和數(shù)學公式基本一致,可以運用許多計算機語言的思想,去解決生產(chǎn)中遇到的問題,這樣在寫程序時,大大減小程序量,完成數(shù)據(jù)的處理分析需求,同時,也讓程序易懂。后續(xù)維護人員對程序進行查看和優(yōu)化也較為方便,很大程度上提高了工作生產(chǎn)效率。SCL語言在汽車制造行業(yè)中為企業(yè)降低人力、物力成本,大大調(diào)高效率,在其他需要電氣自動化控制的生產(chǎn)企業(yè)也同樣適用,值得廣泛推廣應用。