摘 要:以金剛石合成機控制系統改造為例,提出了一種基于IPC與PLC相結合的DCS控制系統。在系統設計中,采用了上位機與下位機獨立運行、以串行通信方式進行信息傳遞的方法,并且引入了容錯技術,大大提高了系統的可靠性與穩定性。采用了面向對象技術和多線程技術,使得系統的維護和升級變得十分方便。半年多的運行表明:本控制系統大大提高了金剛石產品的控制精度和質量,減輕了操作人員的勞動強度,提高了管理的科學化水平。
關鍵詞:金剛石合成機;控制系統;IPC與PLC結合;串口通信
1 引言
傳統的金剛石合成機控制系統是由一個PLC和一個可顯示終端構成。其缺點如下:(1)系統所有的工作(如信息檢測、處理和系統控制)都是由PLC完成,其控制精度較差,致使合成的金剛石質量較差;(2)顯示終端的平面尺寸過小,一方面操作人員觀察系統的狀態很不方便,另一方面常常會引起誤操作;(3)金剛石合成工藝復雜,需控制的參數很多,但原控制系統不能對參數進行保存,而根據不同產品和工藝的要求對部分參數進行調整時,每次都必須重新設置所有的參數,操作非常麻煩;(4)界面不友好;(5)不能由系統自動考核操作人員的工作質量。因此,為了提高控制精度、方便操作,開發新的控制系統迫在眉睫。筆者針對以上問題,將IPC與PLC有機結合,開發了一套控制系統。
2 控制系統的開發
2.1 系統結構及配置
由于單純采用PLC控制有上述的那些缺點,但是PLC又具有很高的穩定性與可靠性且抗干擾能力較強,很適合現場控制;而采用微機控制具有很高的靈活性和方便性,但是抗干擾能力較差。這里結合PLC控制和微機控制的優點,提出了IPC+PLC的新型控制方法,將IPC和PLC控制有機的結合在一起,而且還可以利用現有的PLC系統。
這里采用當前最先進且比較成熟的DCS方式[1][2],控制站采用西門子公司的S7-200系統,操作站為采用人機界面非常友好的Windows98系統的工控機。操作站與控制站之間通過RS-232串口通信協議進行數據傳輸;此外操作站通過RS-485串口對變頻器進行控制以實現金剛石合成中的微調控制功能。由于在該項目中軟件所占的比重較大,并且為了更好地滿足系統功能需求,所以就自行開發控制軟件和操作軟件,不僅滿足了系統要求、提高了系統性能、方便了維護和升級工作,而且降低了成本。
2.1.1 系統結構
新設計的控制系統采用先進的IPC+ PLC模式,操作站由一臺工控機構成,控制站由一套西門子公司的S7-200構成。上位機系統主要功能:參數設置、實時監控、調整操作和信息查詢等。下位機系統主要功能:實時控制、數據采集等。
2.1.2 硬件配置
本系統中共有20路開關量輸入,19路開關量輸出,1路模擬量輸入和2路模擬量輸出。硬件配置如表1所示。
[align=center]

表1 主要硬件配置表[/align]
2.1.3 系統軟件配置
整個系統軟件的開發是運行于Windows98平臺的,因為Windows98具有良好的操作界面,功能強大,比較普及,大家都能熟練操作。
下位機PLC程序開發采用SIMEMENS公司的STEP7,它具有以下功能:(1)良好的操作界面;(2)硬件的組態和參數設置;(3)通信的定義,主要有通過MPI的時間驅動循環數據傳送和事件驅動數據傳輸;(4)編程,提供的語言有梯形圖、功能模塊圖和語句表;(5)程序下載、測試、啟動和維護。
上位機監控軟件開發采用VC++6.0,它具有以下優點:(1)VC++和Windows98之間的兼容性好且可靠性高;(2)采用面向對象技術,軟件的維護和升級代價小;(3)MFC封裝了很多組件,軟件開發周期短、成本低;(4)功能強大,能開發出高質量的軟件,滿足不同需求;(5)方便地通過串口與PLC進行通信;(6)操作界面友好。
2.2 應用軟件的編制
2.2.1 下位機PLC程序
下位機程序采用STEP7中的梯形圖方法進行編制[3],其功能結構圖如圖1所示。
[align=center]

圖1 PLC程序功能結構圖[/align]
其中:下位機程序編制的難點在于通信程序、PID控制程序子模塊的編制。
對于通信程序模塊來說,由于PLC程序需要從上位機獲得設定參數和一些控制指令,并且把現場狀態反饋給操作人員。這里,需要定義通信協議以及通信指令的格式。微機通過COM口發送指令到PLC的PORT0(或PORT1)口,PLC通過RCV接收指令,然后對指令進行譯碼,譯碼后調用相應的讀/寫子程序實現指令要求的操作,并返回指令執行的狀態信息。
對于PID控制程序模塊來說,由于典型PID控制算法有微分突變現象與啟動回繞現象兩個弊端,根據特定的現場環境和用戶需求,對標準的PID算法進行了改進。本文采用了參數自整定PID控制算法,達到了很好的控制效果。并且PID控制模塊具有良好的擴展性,以便于軟件的維護和升級。
2.2.2 上位機監控系統程序
監控系統程序采用VC++6.0開發了一個對話框類型的應用程序[4][5],其功能結構圖如圖2所示。
[align=center]

圖2 監控系統功能結構圖[/align]
其中:監控系統中的一些功能模塊所完成的具體工作如下所示。
(1)通信模塊 該模塊實現與下位機PLC之間的數據傳輸問題,在上、下位機之間起到橋梁作用。
(2)參數設置 控制系統所需要的參數都是通過該模塊完成的,并且可以保存和讀取參數設置。
(3)故障報警 當現場產生故障時候,該模塊會給出報警信息提示并且及時反映出來,以供操作人員處理參考。
(4)實時信息顯示 把當前系統中的實際值顯示出來,并與預先設定的值進行比較,以此來判斷控制算法的好壞和系統是否正常工作。
(5)調整操作 給用戶提供一些手動操作的面板,這樣可以使工作人員很方便地進行調整和控制操作。
(6)報表 記錄歷史數據,供以后分析使用,并且可以隨時打印數據,供工作人員觀察系統的運行狀態。
(7)變頻器控制 該模塊用來控制變頻器,以維持金剛石合成過程中的壓強基本不變,生產出高質量金剛石。
(8)信息管理系統 信息管理系統是采用數據庫開發技術開發,用來登記操作人員工作、出勤、工作量等情況,提供查詢、匯總等管理功能。
由于通信模塊與變頻器控制模塊都要進行串口通信,所以在軟件編制過程中設計了串口通信通用類CSerialPort,該類封裝了串口通信的基本數據和方法,以解決RS-232和RS-485等不同類型串口的通信問題。CSerialPort類頭文件中的主要成員變量和成員函數如下:
Class CSerialPort
{
Private:
HANDEL m_hPort;
DCB m_Dcb;
COMMTIMEOUTS m_TimeOuts;
DWORD m_Error;
Public:
CSerialPort( ); //構造函數
virtual ~ CSerialPort( ); //析構函數
//InitPort( )函數實現初始化串口
BOOL InitPort( );
DCB GetDCB( ); //獲得DCB參數
//SetDCB( )函數實現設置DCB參數
BOOL SetDCB ();
// GetTimeOuts( )函數獲得超時參數
COMMTIMEOUTS GetTimeOuts ();
// SetTimeOuts( )函數設置超時參數
BOOL SetTimeOuts ();
// WritePort( )函數實現寫串口操作
Void WritePort (CString port, CString);
CString ReadPort(CString port ); //讀串口操作
BOOL ClosePort(CString port ); //關閉串口
};
對該類的重要函數說明如下:
InitPort( )函數完成串口的初始化工作,包括打開串口、設置DCB參數、設置通信的超時時間等。打開串口使用CreateFile( )函數。
SetDCB( )函數用于設置DCB參數,包括傳輸的波特率、是否進行奇偶校驗、每字節長度以及停止位等。
WritePort( )函數用來完成向串口寫數據,由于該系統中需要對多個串口進行通信,所以把串口號作為參數傳遞給該函數;該函數把要發送的數據先進行編碼(加入校驗,以減少誤碼率),然后再調用Windows API函數WriteFile( )把數據發送到串口中。
ReadPort( )函數用來完成從串口讀數據,它先調用API函數ReadFile( )把下位機發送的數據讀出來放到緩存里面,然后對數據進行處理并變換成字符串(CString)類型返回。
2.3 控制系統軟件設計中幾個關鍵技術性問題的解決
2.3.1 上位機VC++程序設計中技術問題
(1)由于上位機和下位機需要進行實時通信并且上位機還要對系統進行實時監控顯示,所以上位機程序設計中采用了多線程技術。當監控系統開始工作時,用AfxBeginThread()函數[4]創建輔助線程來管理串口通信。這樣設計后,當進行串口通信時候,主線程能夠繼續完成監控功能和處理其它事務。輔助線程函數的主要代碼如下:
UINT SerialPro(void* param)
{
Ccrystal* mdlg=( Ccrystal*)param;
CString str;
int flag=1;
… … //如果初始化串口失敗返回
//循環讀寫串口,直到結束
while(flag)
{
… … //這里把要發送的數據賦給變量str
//向串口寫數據
mdlg->serial.WritePort(hport,str );
_sleep(100); //讓輔助線程休眠100毫秒
//從串口讀數據并賦給變量str
str=mdlg->serial.ReadPort( );
… … //這里把從串口得到的數據進行處理
}
}
(2)由于在系統開發中加入了數據庫開發,因此數據庫規劃也是一個工作重點。數據庫的開發采用SQL Server,上位機通過在Visual C++中用ADO進行數據庫編程。
2.3.2下位機PLC程序設計中技術問題
下位機PLC主要是進行實時控制,所以PLC程序運行的好壞直接影響著整個系統工作的好壞,其中控制算法是需要認真進行設計的。本文將PID控制算法獨立出來成為一個子模塊,這樣做的好處是以后維護和升級比較方便,如果有更好的控制方法,只需要更改該PID控制模塊即可,這樣系統的維護代價比較低。
2.3.3IPC與PLC之間通信程序的設計
IPC與PLC之間采用主從應答方式,IPC具有傳送優先權,根據需要向PLC發出讀寫命令;下位機處于被動狀態響應上位機的命令。上位機讀數據時向PLC發出讀數據命令,PLC響應命令并將數據傳回上位機;寫數據時,上位機向PLC發出寫命令及數據,PLC即可接收。當PLC沒能正確響應時,PLC返回沒能正確響應標志。
為了使IPC和PLC建立起正確的通信,必須進行如下工作:首先,要定義好通信協議如指令格式等,且在PLC的特殊寄存器作相應的設置;其次,要確定微機串行口且對進行傳輸數據的端口參數進行設置,如波特率、數據長度、校驗方式等;最后,由于數據傳輸過程中有誤碼率,所以需要進行數據校驗,這里采用自己設計的數據校驗算法。
3 應用
本控制系統應用于山東某金剛石加工廠,經過半年多的運行,本文所述的控制系統運行情況良好,與原來的單純PLC控制系統相比,大大提高了控制精度和金剛石產品的質量,大大減輕了操作人員的勞動強度,基本上杜絕了誤操作。現在,本控制系統能自動記錄操作人員的工作情況及其所生產的產品質量,還能考察職工的出勤情況,這樣使公司的管理上了一個新臺階。在取得良好的經濟效益的同時,也取得了良好的社會效益。
4 結論與建議
1、將IPC與PLC有機結合,發揮各自的優勢,并利用現有的設備,有效地解決了目前金剛石合成機控制系統不能適應生產需要的問題,提高了金剛石產品的控制精度和質量,取得了良好的社會和經濟效益,這無疑為傳統設備、傳統控制系統的改造走出了一條既經濟又有效的方法。
2、計算機監控操作人員的工作情況和產品質量,提高了企業管理的科學化水平。
3、該控制系統軟件設計中應用了面向對象技術,使得軟件以后的維護和升級成本降低,很適合進一步的推廣使用。
4、下位機PLC控制系統中采用的是參數自整定PID控制算法,可以根據實際情況采取其它的控制算法,比如模糊控制、自適應控制和神經網絡控制等。
5、根據需要,只需要將控制系統稍微改動,就可以由IPC控制多個PLC操作站。
參考文獻:
[1] 何衍慶.集散控制系統原理及應用[M]. 北京:化學工業出版社, 1999.
[2] 賴壽宏.微型計算機控制技術[M]. 北京:機械工業出版社,1998.
[3] 尹宏業.PLC可編程控制器教程[M]. 北京:航空工業出版社, 1997.
[4] David J. Kruglinshi. Visual C++技術內幕[M].潘愛民等譯. 北京:清華大學出版社,1999.
[5] 林俊杰. Visual C++6程序設計經典[M]. 北京:科學出版社,1999.