李廣強 焦建耀 唐顯聰
摘要:燃料吊車作為垃圾發(fā)電廠的重要燃料搬運設備,具備自動循環(huán)投料、翻料及自動計重統(tǒng)計功能。燃料吊車PLC通過以太網(wǎng)向上位機發(fā)送數(shù)據(jù)指令,通過VS2010平臺開發(fā)燃料吊車稱重上位機軟件,連接PLC稱重系統(tǒng)的數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)顯示與共享。
關鍵詞:垃圾發(fā)電廠;燃料吊車;PLC;VS2010;稱重系統(tǒng);數(shù)據(jù)庫
0? ? 引言
隨著城市的發(fā)展,垃圾處理問題日益突出,直接掩埋或焚燒處理垃圾的方式嚴重污染環(huán)境,而垃圾焚燒電廠既解決了垃圾處理問題,又利用了垃圾燃燒的能量進行發(fā)電。近年來,越來越多的垃圾發(fā)電廠新建并投入使用。燃料吊車作為垃圾發(fā)電廠的燃料搬運設備,作用相當重要,其能實現(xiàn)自動投料、翻料并對投料進行自動計重統(tǒng)計。為便于燃料與產(chǎn)能的數(shù)據(jù)分析和吊車操作員工作量的考核,燃料吊車除電控系統(tǒng)外,均需配置一套稱重系統(tǒng),完成燃料和工作臺班的統(tǒng)計工作,并將數(shù)據(jù)存儲在對應開發(fā)的數(shù)據(jù)庫里。
1? ? 系統(tǒng)簡介
稱重系統(tǒng)功能包括垃圾投料量數(shù)據(jù)采集、數(shù)據(jù)存儲/查詢/打印等功能。通過VS2010平臺編寫數(shù)據(jù)采集程序,連接用于數(shù)據(jù)存儲的數(shù)據(jù)庫,并完成數(shù)據(jù)統(tǒng)計分析,實時顯示吊車的抓料量和投料量。
2? ? 設計要點
燃料吊車稱重系統(tǒng)要實現(xiàn)投料垃圾的計重統(tǒng)計及歷史查詢功能,設計要點包括實現(xiàn)重量數(shù)據(jù)采集、稱重系統(tǒng)與吊車電控系統(tǒng)的數(shù)據(jù)連接、操作界面及稱重系統(tǒng)與數(shù)據(jù)庫的連接。
3? ? 稱重系統(tǒng)軟件
3.1? ? 開發(fā)平臺及工具
該稱重系統(tǒng)適合使用Windows操作系統(tǒng),開發(fā)工具為VS2010,采用C/S架構(gòu),即Client/Server(客戶機/服務器)結(jié)構(gòu),通過將任務合理分配到Client端和Server端,優(yōu)化系統(tǒng)的通信效率;且需要安裝客戶端,才可進行管理操作,這就使得系統(tǒng)操作更加安全可靠。
采用MySQL作為數(shù)據(jù)庫。作為最流行的關系型數(shù)據(jù)庫管理系統(tǒng),MySQL軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,具有體積小、速度快、成本低等特點。
3.2? ? 稱重系統(tǒng)功能
稱重系統(tǒng)的數(shù)據(jù)框架如圖1所示。
3.2.1? ? 稱重系統(tǒng)的數(shù)據(jù)源及采集
數(shù)據(jù)源為吊車電控系統(tǒng)PLC通過CPU X1以太網(wǎng)口發(fā)出,稱重上位機軟件通過通信模塊讀取以太網(wǎng)上的實時數(shù)據(jù)。上位機軟件通信模塊通過Socket與PLC進行通信,通信協(xié)議采用UDP保證系統(tǒng)數(shù)據(jù)采集的實時性。對每臺設備建立一個通信線程,同步采集每臺設備的實時數(shù)據(jù)。
以下為部分源碼:
//初始化線程
int OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CBCGPFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
CBCGPToolBar::EnableQuickCustomization ();
// Menu will not take the focus on activation:
CBCGPPopupMenu::SetForceMenuFocus (FALSE);
if (!m_wndMenuBar.Create (this))
{
TRACE0("Failed to create menubar\n");
return -1;? ? ? // fail to create
}
m_wndMenuBar.SetBarStyle(m_wndMenuBar.GetBarStyle() | CBRS_SIZE_DYNAMIC);
// Detect color depth. 256 color toolbars can be used in the
// high or true color modes only (bits per pixel is > 8):
CClientDC dc (this);
BOOL bIsHighColor = dc.GetDeviceCaps (BITSPIXEL) > 8;
UINT uiToolbarHotID = bIsHighColor ? IDB_TOOLBAR-
256 : 0;
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1;? ? ? // fail to create
}
// Load control bar icons:
CBCGPToolBarImages imagesWorkspace;
imagesWorkspace.SetImageSize (CSize (16, 16));
imagesWorkspace.SetTransparentColor (RGB (255, 0, 255));