鄭劍 郝浩 劉思君 胡恩 俊玉
摘要:本文通過C#高級語言開發(fā)西門子S7-300PLC的上位機系統(tǒng),運用西門子提供的PRODAVE軟件包解決PC上位機與PLC之間的通訊問題,實現(xiàn)造粒生產(chǎn)線的自動控制。運行發(fā)現(xiàn)這種方法能對 PLC數(shù)據(jù)存儲器進行快速準確地讀寫,控制系統(tǒng)具有良好的動態(tài)性能。本文針對造粒生產(chǎn)線的實際要求詳細介紹了基于PRODAVE的PC-PLC通訊,同時也闡述了整個造粒生產(chǎn)線控制系統(tǒng)的設(shè)計。
關(guān)鍵詞:PRODAVE;PLC;造粒生產(chǎn)線;上位機系統(tǒng)
中圖分類號:TP273 文獻標識碼:A 文章編號:1007-9416(2020)08-0003-04
0 引言
在非金屬顆粒生產(chǎn)中,造粒對于顆粒質(zhì)量起決定性作用。從廣義上講造粒就是對粉體、液體等狀態(tài)原料進行加工,將其成型為特定形狀的過程。隨著自動化技術(shù)的迅速發(fā)展,為了提高產(chǎn)品質(zhì)量和生產(chǎn)效率,廠商紛紛要求引入自動化生產(chǎn)線[1-2]。
在工業(yè)控制系統(tǒng)中一般可使用組態(tài)軟件來完成PLC與上位機的通訊,但難以滿足個性化需求。結(jié)合造粒生產(chǎn)的實際問題,本文提出了基于Prodave造粒生產(chǎn)線控制系統(tǒng),通過西門子提供的PRODAVE MPI/IE 6.2模塊(下文提及PRODAVE指此版本),解決了上下位機通信問題,實現(xiàn)造粒機生產(chǎn)線的自動控制;上位機在Win7環(huán)境下采用C#語言編程,實現(xiàn)對造粒生產(chǎn)線全過程的實時監(jiān)測、故障報警、統(tǒng)計分析、視頻監(jiān)控等方面的功能;下位機主要由PLC來承擔動作執(zhí)行及數(shù)據(jù)采集等功能。
1 造粒機生產(chǎn)線功能需求分析
造粒生產(chǎn)線控制就是按照指定的配方比例,混合各種原料,經(jīng)過充分混合后進行高溫密煉加工,然后由造粒機生產(chǎn)特定形狀的顆粒,最后打包并通過機器人在指定位置碼垛,完成整個生產(chǎn)過程[3-4]。如圖1為造粒機生產(chǎn)線加工過程圖。
作為一套完整的工業(yè)生產(chǎn)線控制系統(tǒng),不僅要求精準的動作控制,還要求能夠正確處理一些異常情況;同時要能實時的查看每個工位,每個設(shè)備的工作狀態(tài)及重要的參數(shù),獲取生產(chǎn)現(xiàn)場的視頻監(jiān)控,對于出現(xiàn)異常數(shù)據(jù)及時的報警,并且做出相應(yīng)的記錄;為了便于對員工的績效考核,統(tǒng)計出個人完成工作的數(shù)量及質(zhì)量。最后還需將產(chǎn)品的關(guān)鍵信息存入后臺數(shù)據(jù)庫中支持歷史查詢等功能。
2 基于PRODAVE的PC和PLC之間的通訊
PRODAVE MPI/IE是西門子提供的專門用于解決PC與西門子PLC的通訊問題的軟件包,支持通過“DB_ Read/Write”、“Field_Read/Write”方式與西門子S7系列PLC進行數(shù)據(jù)傳輸。通過PRODAVE軟件包實現(xiàn)上位機對PLC的讀寫速度快,而且傳輸正確率高[5-6]。在造粒生產(chǎn)線控制系統(tǒng)調(diào)試過程中,大大縮短開發(fā)周期。
2.1 PRODAVE通信流程
PRODAVE軟件提供了豐富的基于Windows操作系統(tǒng)的DLL函數(shù),為開發(fā)人員解決PLC和PC通訊的問題提供了極大地便利,開發(fā)人員可以通過PRODAVE建立與PLC的通訊。如圖2為通信流程圖。
2.2 建立PC-PLC通訊
2.2.1 設(shè)置PG/PC接口
首先設(shè)置上位機PG/PC接口。本項目選用CP5611通訊卡,PCI板卡與PLC的DP口通過PROFIBUS電纜連接,然后在PC上安裝CP5611驅(qū)動程序,對PG/PC接口進行設(shè)置,在訪問路徑標簽下選擇對應(yīng)的CP5611(PROFIBUS)即可。
2.2.2 通訊實現(xiàn)
(1)建立連接。由于PRODAVE庫函數(shù)中用到了union結(jié)構(gòu),而C#無此類型需要進行轉(zhuǎn)化。共同體結(jié)構(gòu)占用同一個開始地址,結(jié)束地址取決于其中最長的變量長度,結(jié)合本項目union占據(jù)6個byte的長度,因此使用C#中的System.Runtime.InteropServices.Marshal類為其分配6個byte長度的內(nèi)存,聲明一個長度為6的byte類型數(shù)組。
然后調(diào)用LoadConnection_ex6連接PLC,返回值為0則連成功。調(diào)用SetActiveConnection_ex6激活連接。激活完成之后即可進行數(shù)據(jù)的傳輸。如果上述過程連接或激活不成功可調(diào)用GetErrorMessage_ex6獲取返回值用以指示錯誤位置。
(2)實現(xiàn)讀寫。由于PLC中數(shù)據(jù)儲存格式與PC中不一致,PC中32位Int整形的高位在左,低位在右,而PLC中正好與之相反,因此在寫入之前和讀取之后要對讀寫的內(nèi)容做相應(yīng)的格式轉(zhuǎn)換。
這里以PLC中DB2.DBD16的位置寫入一個DINT類型的數(shù)據(jù)a為例說明此問題。DINT型是32位的占據(jù)4個字節(jié),該數(shù)據(jù)占據(jù)了16~19號地址位,分別寫入的內(nèi)容如表1所示。
然后將轉(zhuǎn)換后的結(jié)果放在一個數(shù)組中賦值給field_ write_ex6函數(shù)中對應(yīng)的參數(shù),執(zhí)行field_write_ex6即可寫入成功。同理對調(diào)用field_read_ex6函數(shù)讀出來的數(shù)組也要進行上面相反的格式轉(zhuǎn)換上位機才能正確顯示。
封裝是C#等面向?qū)ο蟪绦蛟O(shè)計語言的重要特征之一,為了便于在主程序中調(diào)用讀寫函數(shù),對讀寫函數(shù)進行封裝。對DB數(shù)據(jù)塊中D、I、M、T、Z類型Write/Read封裝,封裝后只需填寫參數(shù)要即可完成寫的操作,如果返回值為0則寫入成功,反之出現(xiàn)故障,按返回值來查詢出現(xiàn)故障的原因。
(3)斷開連接。PRODAVE在一個進程中只能與一臺PLC建立連接,如果不斷開連接會導(dǎo)致在下一次連接無法成功。為了防止上位機通訊系統(tǒng)異?;蛩罊C等異常發(fā)生兼顧通信效率,每一次完成讀寫操作前先檢測是否連接,退出系統(tǒng)調(diào)用UnloadConnection_ex6函數(shù)斷開與PLC的連接。
(4)C#通訊中定時器的使用。為了實時監(jiān)測生產(chǎn)線各設(shè)備工作狀況,上位機需要周期性的讀取PLC寄存器中的數(shù)據(jù),因此定時器的精度對數(shù)據(jù)的采集有很大程度的影響。
C#中共有三種timer 來實現(xiàn)定時功能:
①System.Windows.Forms.Timer
②System.Timers.Timer
③System.Threading.Timer
第一種也就是從工具箱中拖拽到WinForms窗體上的定時器timer,它是通過Windows消息機制實現(xiàn)的,由于消息的優(yōu)先級別比較低,容易造成數(shù)據(jù)的丟失。另一方面由于占用UI線程,如果timer_Tick事件代碼過長則會引起主窗體的卡頓,定時精度只能達到50ms左右,定時不準確。另外兩種timer類似,都是開啟獨立的計時線程計時精準,也不影響UI線程但使用時需要注意跨線程的操作。本系統(tǒng)采用第二種timer來實現(xiàn)定時采樣。
3 造粒生產(chǎn)線控制系統(tǒng)設(shè)計
造粒生產(chǎn)線控制系統(tǒng)有上下位機兩部分組成,上位機采用C#高級語言編程,在VS2010中開發(fā);下位機使用西門子S7-300PLC以及相應(yīng)的模塊;兩者通過PRODAVE實現(xiàn)數(shù)據(jù)的傳輸。
3.1 硬件連接
本控制系統(tǒng)通過訪問SQL數(shù)據(jù)庫獲取配方的原料種類和添加質(zhì)量以及生產(chǎn)過程中所需要的工藝參數(shù),另一方面通過工業(yè)以太網(wǎng)和下位機PLC相連接完成數(shù)據(jù)傳輸[7]。硬件連接如圖3所示。
3.2 軟件結(jié)構(gòu)
上位機主要充當用戶與下位機之間的媒介。本系統(tǒng)上位機軟件采用C#的三層架構(gòu)技術(shù)來設(shè)計。表示層是直接呈現(xiàn)給用戶的,也就是軟件界面的設(shè)計;業(yè)務(wù)邏輯層是結(jié)合具體的情況對相應(yīng)數(shù)據(jù)的業(yè)務(wù)邏輯處理,供表示層調(diào)用;數(shù)據(jù)訪問層是對數(shù)據(jù)庫的直接訪問與操作,供業(yè)務(wù)邏輯層調(diào)用。結(jié)構(gòu)如圖4所示。由于使用三層架構(gòu),本系統(tǒng)具有良好的開放性和可擴充性,維護和升級方便,同時安全性也比較高。
3.3 功能模塊
造粒生產(chǎn)線控制系統(tǒng),主要功能模塊如圖5所示。用戶管理用于對用戶身份、權(quán)限的管理;生產(chǎn)計劃管理,主要對生產(chǎn)計劃進行管理;工藝管理是對生產(chǎn)過程工藝參數(shù)的管理;過程監(jiān)控是對生產(chǎn)數(shù)據(jù)、設(shè)備狀態(tài)的顯示、故障告警及各工位的視頻監(jiān)控;數(shù)據(jù)報表是根據(jù)管理需要開發(fā)對應(yīng)的報表,實現(xiàn)報表的自動生產(chǎn);數(shù)據(jù)庫管理主要是對數(shù)據(jù)庫的備份、還原等常規(guī)管理。
4 結(jié)語
調(diào)試表明PRODAVE一次連接與斷開PLC的時間在200ms左右,讀取一條數(shù)據(jù)時間0.7ms左右,因此要盡可能一次連接完成所有讀寫任務(wù)。此讀寫速度足以滿足造粒生產(chǎn)線控制系統(tǒng)的實時性要求。
工程實際應(yīng)用表明本文提出的基于PRODAVE的造粒生產(chǎn)線控制系統(tǒng)從生產(chǎn)實際出發(fā),有效地解決了造粒生產(chǎn)中工藝數(shù)據(jù)和設(shè)備信息難以有效結(jié)合的問題,有效地提高了生產(chǎn)效率,降低了加工工人的勞動強度,進一步提高了造粒生產(chǎn)線的自動化水平。
參考文獻
[1] 楊文亮.煙花自動生產(chǎn)線及其造粒系統(tǒng)的設(shè)計與研究[D].天津:河北工業(yè)大學,2014.
[2] 李亞軍.集成過程分析技術(shù)和群體粒數(shù)衡算模擬的造粒過程決策支持系統(tǒng)的研究[D].廣州:華南理工大學,2018.
[3] 楊旭東,胡駿馬,王志磊,等.基于PLC的混合造??刂葡到y(tǒng)設(shè)計[J].機械與電子,2017,35(1):36-38.
[4] 于洋.基于PLC的造粒過程控制系統(tǒng)設(shè)計[J].微型電腦應(yīng)用,2019,35(4):102-104.
[5] 白鵬飛,齊巖磊,陳棫端,等.基于Visual C++和PLC的風量監(jiān)控系統(tǒng)的設(shè)計[J].機電工程技術(shù),2017,46(5):103-105.
[6] 王琳,尹鵬,武建新,等.基于PRODAVE通訊的柔性制造仿真系統(tǒng)設(shè)計[J].制造技術(shù)與機床,2019(3):36-39.
[7] 吉孟蘭,何俊強.一種礦用挖掘機PLC與上位機通信軟件的設(shè)計[J].山西冶金,2018,41(5):22-24.