李廣強 焦建耀 唐顯聰



摘要:燃料吊車作為垃圾發電廠的重要燃料搬運設備,具備自動循環投料、翻料及自動計重統計功能。燃料吊車PLC通過以太網向上位機發送數據指令,通過VS2010平臺開發燃料吊車稱重上位機軟件,連接PLC稱重系統的數據庫,實現數據顯示與共享。
關鍵詞:垃圾發電廠;燃料吊車;PLC;VS2010;稱重系統;數據庫
0? ? 引言
隨著城市的發展,垃圾處理問題日益突出,直接掩埋或焚燒處理垃圾的方式嚴重污染環境,而垃圾焚燒電廠既解決了垃圾處理問題,又利用了垃圾燃燒的能量進行發電。近年來,越來越多的垃圾發電廠新建并投入使用。燃料吊車作為垃圾發電廠的燃料搬運設備,作用相當重要,其能實現自動投料、翻料并對投料進行自動計重統計。為便于燃料與產能的數據分析和吊車操作員工作量的考核,燃料吊車除電控系統外,均需配置一套稱重系統,完成燃料和工作臺班的統計工作,并將數據存儲在對應開發的數據庫里。
1? ? 系統簡介
稱重系統功能包括垃圾投料量數據采集、數據存儲/查詢/打印等功能。通過VS2010平臺編寫數據采集程序,連接用于數據存儲的數據庫,并完成數據統計分析,實時顯示吊車的抓料量和投料量。
2? ? 設計要點
燃料吊車稱重系統要實現投料垃圾的計重統計及歷史查詢功能,設計要點包括實現重量數據采集、稱重系統與吊車電控系統的數據連接、操作界面及稱重系統與數據庫的連接。
3? ? 稱重系統軟件
3.1? ? 開發平臺及工具
該稱重系統適合使用Windows操作系統,開發工具為VS2010,采用C/S架構,即Client/Server(客戶機/服務器)結構,通過將任務合理分配到Client端和Server端,優化系統的通信效率;且需要安裝客戶端,才可進行管理操作,這就使得系統操作更加安全可靠。
采用MySQL作為數據庫。作為最流行的關系型數據庫管理系統,MySQL軟件采用了雙授權政策,分為社區版和商業版,具有體積小、速度快、成本低等特點。
3.2? ? 稱重系統功能
稱重系統的數據框架如圖1所示。
3.2.1? ? 稱重系統的數據源及采集
數據源為吊車電控系統PLC通過CPU X1以太網口發出,稱重上位機軟件通過通信模塊讀取以太網上的實時數據。上位機軟件通信模塊通過Socket與PLC進行通信,通信協議采用UDP保證系統數據采集的實時性。對每臺設備建立一個通信線程,同步采集每臺設備的實時數據。
以下為部分源碼:
//初始化線程
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));