盛衛鋒,王耀庭
(江南大學 機械工程學院,江蘇 無錫 214122)
20世紀90年代以來,電子信息技術的飛速發展所導致的重大變化之一就是全球經濟一體化與全球市場的形成。這既推動社會生產力迅速發展,又給企業的生存和發展帶來嚴酷的挑戰。這主要表現在:傳統的“相對穩定”的市場變化為“動態多變”的全球市場;賣方市場不斷向買方市場轉變;多品種小批量生產比例增大,市場變得越來越“零碎”;產品生命周期越來越短,升級換代越來越迅速;獨占性技術(知識)構成了產品的主要價值;顧客的個性化要求越來越高;跨國公司的壟斷性更明顯,企業的兼并、重組更激烈,更動蕩;環保意識、綠色制造呼聲更強[1]。
面對如此激烈的市場競爭環境,歐美企業已基本實現了車間信息化及整個企業的信息化改造。我國國有大型企業也已進行了車間信息化改造,實現了車間管理的信息化。而中小型私有企業由于資金等因素制約,大多未能實現車間的信息化管理,但隨著最近幾年企業用人成本的提升以及社會對企業產品質量要求的提高,很多中小企業開始了車間信息化升級。開發一款小型企業的信息化管理系統,可以方便于管理人員及時了解和反饋每臺機器的工作狀況和生產情況,及時處理生產中出現的一些問題,同時實現機床檢測參數及機床加工信息的實時反饋及管理。
文中設計的中小型壓鑄車間的信息化管理系統,可以實現上層數據庫系統與底層控制器的數據交換,數據庫將底層控制器傳輸上來的信息進行存儲整理分析,根據分析結果發送控制信息,為機床的生產提供指導。如圖1所示,系統主要包括上層數據庫系統,底層控制器和通信網絡3個部分。
1)上層數據庫系統
上層數據庫系統為車間信息數據庫管理程序,能夠實現將上傳數據的功能名稱、信息時間、工人姓名、工藝和物料等加工信息和底層控制器上傳的機床檢測參數進行存儲、顯示,對接收的數據進行分析處理,根據處理的結果檢測機床工作是否正常,將信息反饋到底層控制器,告知現場操作工人。此外,數據庫系統還能夠實現對數據進行統計、制表、保存、復制、打印和傳輸。
2)底層控制器
底層控制器是由微處理器、鍵盤、液晶顯示屏等組成的控制系統,包括與機床的通訊接口、與上層數據庫系統的通訊接口以及報警裝置等。現場工人可以通過按鍵設置,將機床加工信息(包括姓名、模具、設備、工藝和物料等),以及接收機床本身檢測提供的加工狀態(溫度、壓力等參數)實時上傳給數據庫;同時控制器還可以接收來自上層的命令,提示工人做出相應操作。
3)通信網絡
通訊網絡實現上層數據庫與底層控制器的數據通信。通信系統要求能夠穩定高效的通信,并且還應考慮現場的工作環境和布網的成本等因素,綜合考慮各種因素選擇CAN工業總線通信協議。CAN總線具有多主工作方式、非破壞性總線仲裁技術、具有點對點和一點對多點和全局廣播等工作方式、提供遠程數據請求、高效的短幀結構、高可靠性、總線配置靈活等優點[2]。
目前世界上比較流行的數據庫項目大多采用三層體系結構設計,典型的三層體系結構包括表示層(界面層)、業務邏輯層和數據訪問層。使用三層體系結構的系統層與層之間的耦合度低,層內部聚合度高,使得系統的維護變得更加的容易[3]。
表示層:主要是指與用戶交互的界面,用于顯示數據和接收用戶的輸入,將用戶輸入的數據傳遞到業務邏輯層,一般不包含任何實際的業務處理
業務邏輯層:是表示層和數據訪問層之間的橋梁,它代表應用程序的核心功能,負責處理數據層的數據,實現具體的業務邏輯,通常為一個類庫。
數據訪問層:主要實現對數據的操作,將數據庫中的數據提供給業務邏輯層,同時將業務邏輯層處理過的數據存儲到數據庫中。
三層體系架構搭建好之后要實現三層之間的數據傳遞一般有兩種方法:創建實體層使用其中的實體類在三層之間傳遞數據;使用數據集在三層之間傳遞數據。本設計使用創建實體層使用實體類的方法,因為實體類是一個比較容易控制的對象,具有面向對象的基本特征,可以自由的在其中添加行為等。實體類消除了關系數據和對象之間的差異,便于操縱關系數據,能更好的發揮分層的作用,更好的進行復用和擴展,增強靈活性[4]。
根據要處理數據種類的不同,本系統使用SQL Server 2005構建了包含兩個表的數據庫。兩個表分別是機床加工信息表(WorkInfo)和機床檢測參數表(ProcessInfo)。機床加工信息表包含序列號、機床編號、時間、員工編號、員工姓名、模具、設備、工藝、鋁水和物料10個鍵。機床檢測參數表包含序列號、機床編號、時間、溫度、壓射力、壓射速度和壓射時間7個鍵。
數據庫程序采用.NET Framework 3.5中新增的LINQ,簡化三層體系結構的搭建,C#利用LINQ to SQL創建一個通用實體類,實現在3個模塊之間使用對象進行數據傳遞和負責操作數據庫,輔助數據訪問層操作數據庫。利用LINQ創建的三層體系結構如圖2所示,其中的DataLinq層就是實體層和數據模型層的組合[5-6]。

圖2 LINQ三層體系結構簡圖Fig.2 The sketch schematic of the LINQ three-tier architecture
下面介紹各層的具體創建:
數據庫通用類:使用C#可以輕松的使用LINQto SQL創建一個DataLinq層來組織數據庫通用類,DataLinq層包含一個DataContext類和若干個實體類,DataContext類用來查詢數據庫、檢索數據記錄和更新數據庫,包含了每一個表的屬性[4]。每一個表對應一個實體類,這些實體類包含了強類型屬性集合,映射到數據庫中對應的字段。將已經連接好的數據庫的WorkInfo表和ProcessInfo表拖到WSDataLinq.dbml文件中,生成解決方案,數據庫通用類即設計完成,創建了WorkInfo和ProcessInfo兩個實體類,實現數據在三層之間的傳輸。
數據訪問層:數據訪問層通過一個類庫實現,在解決方案中新建一個“類庫”項目WSDAL,向其中添加對DataLinq層的引用,使數據訪問層能夠使用數據庫通用類[4],在該命名空間中創建兩個類DALWorkInfo和DALProcessInfo,使用該兩個類的方法分別對表WorkInfo和表ProcessInfo進行數據操作。兩個類中分別包含對表中相應鍵的查詢方法,以表中添加相應的記錄的方法和獲取表序列號最大值的方法等。
業務邏輯層:業務邏輯層的設計方法與數據訪問層相似,都是通過添加類庫和引用,然后創建對應WorkInfo表和ProcessInfo表的兩個類,實現對兩個表的操作。兩個層不同的是數據訪問層通過WSDataLinqDataContext類實例對象直接操作數據庫,而業務邏輯層通過創建數據訪問層類的實例對象,調用其方法實現相應的操作。業務邏輯層需要使用數據訪問層實例化的對象,因此需要添加對數據訪問層的引用。業務邏輯層中創建的兩個類分別為BLLWorkInfo類和BLLProcessInfo類。兩個類通過寫相應的函數設計與數據訪問層相應的數據操作方法。
表示層:表示層主要是指與用戶交互的界面。三層體系結構中,表示層并不對數據實現具體的操作,表示層對數據的操作將通過業務邏輯層實現,表示層通過創建業務邏輯層相應表的對應類實例化的對象,采用相應實例的相應方法實現數據操作。
下面以查找模具3為例,介紹數據庫條件查詢中三層體系結構的流程。如圖3所示。

圖3 數據查詢流程圖Fig.3 The flow schematic of the data query
數據庫要求能夠實現數據的接收存儲和實時顯示,條件查詢,報表輸出打印。分析上述要求,數據庫系統主要實現了打印相關操作、CAN Bus相關操作、實現兩張表之間的切換以及對相應表的查詢功能和報警。根據主要功能,菜單欄包含3個主菜單項:文件、機床信息表和CAN Bus設置。文件菜單包括打印設置、打印預覽、打印和退出菜單項;機床信息表包括機床加工信息表、機床檢測參數表和報警菜單項;CAN Bus設置菜單包括連接、啟動、復位、斷開和參數設置菜單項。
機床信息表菜單包含了一些與表格相關的操作,包括實現表格切換和發送報警信息窗口。為實現數據的實時顯示,程序采用2個DataGridView控件分別顯示數據庫WorkInfo表和ProcessInfo表中的全部內容或符合查詢條件的查詢結果。在顯示數據庫相應表的內容的同時,每個表的查詢功能設計在表的左上方,數據的查詢條件通過下拉類表進行選擇。報警菜單用于顯示報警窗口,在使用者發現底層控制器傳輸上來的機床加工信息與要求不同時或機床檢測的參數發生偏差時,在報警窗口中選擇不符合要求的機床編號,向底層控制器發送報警信息。
數據庫系統通過周立功公司的USBCAN-I與CAN Bus總線進行數據交換。USBCAN-I設備提供數據通信軟件,并且提供可以用于二次開發的DLL文件,可以自己設計通信系統。CAN Bus設置菜單分別設計了連接、啟動、復位、斷開和參數設置五個菜單,分別用于CAN Bus的初始化和連接斷開等操作。這些指令都可以通過DLL文件提供的函數方便快捷的設計。CAN Bus參數設置窗口設計如圖所示,包括了CAN Bus通信所必需的設備索引號、第幾路CAN、驗收碼、屏蔽碼、定時器0,1、濾波方式、模式、發送格式、幀格式、幀類型、幀ID等的設計。

圖4 數據存儲流程圖Fig.4 The flow schematic of the data storage
數據庫系統采用間隔查詢的方式讀取CAN總線數據,在程序中添加一個時鐘控件,根據相同規模大小設計間隔時間。當程序中CAN Bus連接成功后,時鐘控件工作,在時鐘控件的響應事件中系統不斷檢測CAN Bus總線是否有數據。當有數據時系統對數據進行讀取,對讀取到的數據進行解包,根據幀ID所代表的含義,確定數據為WorkInfo表數據還是ProcessInfo表數據,然后創建相應表的DataLinq實例化結構體,將CAN Bus幀的8位數據所存儲的信息存入相應鍵中。由于CAN Bus數據幀存儲信息太少,底層控制器每條信息都是分兩次傳遞,因此在接收到后一條信息后,結構體賦值完成,將結構體作為參數調用業務邏輯層數據插入的方法將讀取的數據插入到數據庫表的最后一條。
具體的數據存儲流程圖如圖4所示。
隨著最近幾年我國用人成本的不斷提高和招工困難度的增加,越來越多的中小型企業開始了生產信息化改造,由于受資金的制約,它們基本不會選擇價格昂貴的全套MES信息控制系統。所以很多的企業選擇自己研發或購買一些簡單的車間數據庫管理系統。本系統完全滿足了中小企業生產信息化的需求,是一個簡單實用的車間數據庫管理系統,實現生產過程中的數據傳輸、存儲、管理和對機床加工的控制要求。
[1]順德市人民政府.順德市企業信息化總體規劃與實施方案[EB/OL].[2002-02-26].http://max.book118.com/html/2001/1028/687060.shtm.
[2]李真花,崔健.CAN總線輕松入門與實踐[M].北京:北京航空航天大學出版社,2011.
[3]國家863中部軟件孵化器.C#從入門到精通[M].北京:人民郵電出版社,2010.
[4]Portugal P,Carvalho A.A model based on a stochastic petri net approach for dependability evaluation of controller area networks[J].FACInternational Conference, Solitons&Fractals,2006,14(6):105-157.
[5]Agarwal V V,Huddleston J.C#2008數據庫入門經典[M].沈潔,楊華,譯.北京:清華大學出版社,2009.
[6]柳盛,王國全,沈永林.C語言通用范例開發金典[M].北京:電子工業出版社,2008.