于存謙 魏 巍 張 吉
(沈陽機床股份有限公司,遼寧沈陽 110142)
隨著汽車市場產品的更新要求加快,汽車制造越來越呈現出注重產品多元化、小批量生產和以市場需求為導向等發展新趨勢。因此,汽車零部件生產線也向著適應多品種、小批量、低成本的高速化、柔性化和高效設備的生產方式發展。輪轂的制造工藝、裝備和檢測一直是發動機生產中的重點,其加工精度和一致性的好壞對汽車整體性能的影響很大。面對我國廣闊的汽車市場,汽車關鍵零部件升級換代的速度加快,生產廠家必須考慮生產線不僅要滿足當前生產,而且也要考慮將來生產線改造的可能。在未來幾年,國內汽車關鍵零部件生產線的市場非常廣闊。
在國家的大力扶持下,國內數控機床行業在近年來有了很大的進步,對生產線的部分關鍵技術展開研究,取得了一定的成果,在國內汽車零部件生產線制造市場占有一定的份額。由于我國機床制造商僅能提供一些較低水平的生產線,還不能滿足中國汽車行業發展需要。因此,開展汽車發動機關鍵零部件生產線技術研究,對于滿足我國汽車行業快速發展和提升機床制造企業的競爭能力都是十分迫切和必要的。
單元功能:本單元為自動生產線,可同時加工1~5個輪轂,加工過程安全高效。
設備組成:本輪轂加工單元由立式車削中心、立式加工中心、機器人、PLC單元、上位機監控系統、厚度測量裝置、視覺檢測裝置和傳感器等設備組成。
單元結構:本單元共設9個工位(圖1),有上料臺、儲料區、立車前工位、立車加工區、立車沖洗區、厚度測量站、視覺檢測區、立加加工區和不合格品區。


本單元可實現1~5個輪轂的自動加工,為了清楚地展示多輪轂的加工過程,首先介紹單個輪轂的加工流程,如圖2。
多輪轂狀態較單個輪轂復雜得多,因為涉及到單元中各部分可能同時加工、同時發出動作請求的情況,即多輪轂多動作。此時,如何安排各動作的次序和前后邏輯關系以及如何向立車、立加和機器人發出信號,并保證整個單元能夠有序無誤地運行下去,就是一個難點。
我們遵循著工件先出后進的原則,同時使用大量的存儲器和計時器,保證機器人在執行某個搬運動作的同時也可以接受單元中其他部分傳來的動作請求,并保證單元多工件時的高效運行。例如,當“8-1運送”和“5-6運送”請求同時到來時,機器人將首先執行“8-1工位間工件運送”,完成后再執行動作“5-6運送”。
首先與機械設計人員溝通制定工件加工工序,與單元其他部分電氣設計人員溝通論證時序和工序的邏輯合理性,這是編寫程序的基礎。其次確定負責通信的變量名稱和物理地址,名稱統一使用漢語拼音或英文命名,并與上位機設計人員、機床電氣設計人員和機器人程序設計人員溝通一致,確保雙方變量名稱一致。
整個程序設計一個主程序,作為整個程序的入口,并設計有開關和初始化部分——如測量站部分的重置量程和零點過程。對于邏輯部分和伺服控制部分分別設計兩個主程序,在PLC中循環掃描執行,并設置邏輯部分掃描時間大于伺服控制程序掃描時間且為整數倍。將涉及9個工位的9個搬運動作和測量動作等,分別作為13個子程序單獨設計,獨立運行,而后由主程序進行調用。因為涉及到“多輪轂多動作”的要求,程序設計的難點就在于充分考慮其中的邏輯矛盾和關系。對于IO變量,因為需要和兩臺機床及機器人進行通信,所以需要將其設計成全局變量ix%、ox%(這是施奈德PLC所要求的),然后將這些全局分別轉換成內部變量mx%以便在程序中進行邏輯運算。
針對一些危險動作和可能發生錯誤的動作,我們均設計了急停,并將急停命令同時傳送給機床和機器人,并做標記,以便監測人員進行后續的修改和調試。
針對一些傳感器容易受到外界條件影響而導致誤操作的(如光電傳感器受高強光線影響而傳遞假信號),我們在程序中為每一個傳感器分別設置了信號門限,對于達到一定時間長度的傳感器信號才予以考慮。最后,在充分仿真模擬的基礎上,進行實物調試。
2.2.1 硬件構成
本PLC單元設備及伺服控制器均選用施奈德電氣產品。選型見表1。

表1 硬件選型
使用SoMachine軟件中的檢索和拖動功能,選取所需模塊,拖至指定區域,軟件將自動連線并配置相應接口。雙擊單個模塊可對其具體參數進行配置。如圖3所示,為各模塊連接情況。

2.2.2 主要組態
(1)變量的地址分配
先將所需變量填寫在全局變量表中(局部變量不能被IO綁定),然后在模塊中綁定。如圖4為數字量輸入模塊TM2DDI16DT的變量綁定實例。變量一列為已經在全局變量表GVL_IO中設定好的變量名稱,地址一列為實際物理地址,類型列說明變量類型,帶有貫穿橫線的說明已經被綁定。

(2)任務配置
兩個任務——邏輯任務MAST,伺服任務SERVO,掃描類型均設置為循環,循環間隔分別設置為40 ms和20 ms。這樣設置的目的有兩個,一是SERVO掃描的時間較短,保證可以接收到MAST傳來的任何指令;二是40 ms和20 ms都可以整除心跳時間200 ms,保證CANopen總線的通信連接,理由參見(3)②中解釋。
(3)伺服控制器組態
①使用SoMove軟件為伺服控制器配置組態,在本方案中我們主要設置了伺服波特率為500 k(波特率為數據傳輸的速率,距離越遠波特率需要設置的越低——衰減原因,反之越高),節點ID為3;
②同時在SoMachine軟件中配置CANopen總線組態,且保證波特率和節點ID與SoMove中設置一致;心跳時間設置為200 ms,心跳時間的作用為每隔一段時間,伺服控制器與PLC進行一次“握手”,確保兩端為連接狀態,心跳時間需設置成所有任務掃描時間的整數倍,如此例中設置為20 ms和40 ms的公倍數。
(4)以太網模塊組態
為PLC與上位機通信服務,采用MODBUS總線,以太網協議,介質為RS485。需在模塊中設置尋址為從站,給定地址,同時配置IP地址、子網掩碼和缺省網關,詳見圖5。

采用結構化文本STL語言編寫,程序主要分為四部分:(1)程序主入口Start塊;(2)子程序執行部分,各單步塊,測量塊,數據傳輸塊;(3)伺服控制部分Servo塊;(4)此外還有全局變量模塊和專為伺服控制器設計的結構體模塊。
2.3.1 邏輯部分主程序——程序主入口Start塊
功能如下:
(1)測量站零點和量程的初始化;
(2)伺服使能賦值;
(3)工作模式選擇——自動或者手動;
(4)工作正常信號檢測:必須在立車、立加和機器人同時存在工作正常信號的情況下,才能啟用單步運行程序,調用程序塊Unit_run。
程序段“initial CeLiangZhan”負責初始化測量站,包括置零點和測量程兩部分;程序段“for CeLiang-ZhuangZhi ShenSuo”的目的是為了保證測量裝置在未收到伸出命令時保持縮回狀態,以防止意外伸出造成損害和人員傷害;程序段“Enable the Servo”的作用是為伺服程序的使能變量賦1,而后伺服開始初始化,保證程序在每次運行時,伺服都能夠正常工作;程序段“Select the Model of service”的作用是選擇整個單元的服務方式,其中包含自動和手動兩種方式;最后的程序段“check if the servo is running”的作用是檢查伺服是否旋轉,并將伺服狀態信息傳遞給上位機以進行實時監控。
整個程序的核心為程序段“Select the Model of service”,該段中不僅包含模式選擇功能,同時也會讀取實際 IO物理地址變量信息,調用子程序 VAR_TRANS_READSTATUS將這些變量轉換為PLC內部變量為其后的邏輯運算部分做準備,原因是與物理地址捆綁的全局變量無法準確參與邏輯運算。同時,該段中還包括急停后的程序自動恢復功能,保證操作員即使在無編程基礎的情況下,也能輕松恢復整個單元狀態,保證生產繼續進行。代碼如下:


2.3.2 子程序執行部分
13個子程序,包括讀寫IO程序(1個),邏輯部分程序(10個),測量站模擬量換算程序(2個)。
(1)Unit_run:各單步程序入口,按順序調用各自單步動作程序,也包括關機急停功能,再啟動自動清除急停功能;
(2)Step1_2:上料臺旋轉、1-2運送功能;
(3)Step3:2-3運送功能;
(4)Step4:3-5準備和運送功能;
(5)Step5:工件清洗和5-6運送功能;
(6)Step6:6號位工件檢測,控制頂針和測量裝置動作,同時調用Measure子程序;
(7)Step7:6-3運送功能;
(8)Step8:3-7運送功能;
(9)Step9:3-7相應功能;
(10)Step10_11:拍照和7-8運送功能;
(11)Step12:8-1準備和運送功能;
(12)VAR_TRANS_Q:負責實際IO和PLC內部寄存器變量的轉換;
(13)Measure:通過設置1個整形變量lgFmHd_I利用模擬量輸入模塊的電流原理,測算輪轂厚度。
由于篇幅有限,下面我們僅就子程序Step1_2進行舉例介紹。
該子程序主要實現目的有:輪轂在1號位的識別、頂針伸出定心與固定工件、旋轉工件以識別并調整工件氣門孔位置、發送1號位到2號位的運送通知命令、通知立車輪轂已進入,同時還有急停保護功能等。
首先,如果1號位的紅外線傳感器檢測沒有輪轂,同時頂針沒有伸出,且此時也無8號位到1號位的運送動作的話,啟動“DingZhen ShenChu”程序塊。在該程序塊中,當程序檢測到輪轂已放置好后,頂針伸出,頂針有3個,每個相隔120°,伸出后既可以起到固定輪轂的作用,同時也將使輪轂的中心與1號位的中心重合。然后,先后有6個計時器,分段工作,負責控制伺服的6個動作的計時功能,伺服旋轉的作用是讓接近開關檢測輪轂上的突臺,該突臺的作用是識別輪轂的角度,當接近開關檢測到突臺后,電動機向反方向旋轉一個特定角度后,輪轂位置固定完畢。而后啟動“DingZhen SuoHui”程序段,該段中使用一個計時器,負責在幾秒鐘的時間之中將頂針縮回到位,釋放輪轂,并將賦值給一些標識變量,以通知后續程序繼續進行,同時又不會重復之前的旋轉動作。最后啟動“1-2 YunSong”程序段,其作用是向機器人發出1-2號位的運送通知、在運送動作完成后告知立車輪轂已經到位,以及將所有計時器全部重新置位,標識變量全部清零,準備接收下一個輪轂;該段中還有在負責危險動作的急停功能。
“Avoid the servo is failed,and make the program keep running on”程序段較特殊,其作用是在伺服與PLC的通信意外中斷或伺服程序出現混亂的情況下,將程序強行執行下去,其中包含的一些標識變量可以保證程序繼續順利運行,避免重復之前動作,并自動將程序切換到無伺服控制狀態。代碼如下:



2.3.3 伺服程序
施奈德專門為伺服編寫的結構體和伺服FB程序,可滿足Jog模式,走速度,走增量,走絕對值等功能。只要在邏輯子程序中修改相應變量,即可實現功能。
設計中使用該程序塊的走增量功能,控制上料臺電動機旋轉,來幫助輪轂定位。其中用到等待WAIT,上電POWER_ON,待命READY等功能,通過結構體變量AxisStep來選擇使用哪個功能塊。伺服控制模塊代碼我們節選如下:


2.3.4 結構體和全局變量塊
結構體AxisM是Schneider提供的成型的結構體,與Servo程序塊匹配使用,通過為其中一些變量賦值來控制伺服動作。
全局變量塊GVL_IO中用來設置全局變量,主要包括I、O、IM、OM四種類型變量以及一些用來記錄急停位置和特殊功能的變量。I和O變量用來直接與I/O端口捆綁;IM和OM變量屬于內部變量,用在程序邏輯運算中,它們通過VAR_TRANS_Q塊來相互賦值。結構體代碼如下:


在本柔性單元中,施奈德PLC所發揮的作用為信號傳輸,時序和邏輯判斷的作用,我們單獨為整個PLC單元和上位機配置了電氣柜,負責監控整個單元。程序中不但要考慮單步運送的情況,更要兼顧所有子程序之間的關系,避免多輪轂多動作時邏輯上的混亂。
[1]王永華.現代電器控制機PLC應用技術[M].2版.北京:北京航空航天大學出版社,2009.
[2]鄭莉,董淵,張瑞豐.C++語言程序設計[M].3版.北京:清華大學出版社,2008.
[3]王昊,王中慶.RIC-DNC數控設備遠程異構通信物聯網研究[J].現代制造工程,2010(7):21-25.
[4]黃國慶,蔡英,樊留群,等.數控機床的網絡化[J].江南大學學報:自然科學版,2002(6).