盛衛(wèi)鋒,王耀庭
(江南大學 機械工程學院,江蘇 無錫 214122)
20世紀90年代以來,電子信息技術的飛速發(fā)展所導致的重大變化之一就是全球經(jīng)濟一體化與全球市場的形成。這既推動社會生產(chǎn)力迅速發(fā)展,又給企業(yè)的生存和發(fā)展帶來嚴酷的挑戰(zhàn)。這主要表現(xiàn)在:傳統(tǒng)的“相對穩(wěn)定”的市場變化為“動態(tài)多變”的全球市場;賣方市場不斷向買方市場轉變;多品種小批量生產(chǎn)比例增大,市場變得越來越“零碎”;產(chǎn)品生命周期越來越短,升級換代越來越迅速;獨占性技術(知識)構成了產(chǎn)品的主要價值;顧客的個性化要求越來越高;跨國公司的壟斷性更明顯,企業(yè)的兼并、重組更激烈,更動蕩;環(huán)保意識、綠色制造呼聲更強[1]。
面對如此激烈的市場競爭環(huán)境,歐美企業(yè)已基本實現(xiàn)了車間信息化及整個企業(yè)的信息化改造。我國國有大型企業(yè)也已進行了車間信息化改造,實現(xiàn)了車間管理的信息化。而中小型私有企業(yè)由于資金等因素制約,大多未能實現(xiàn)車間的信息化管理,但隨著最近幾年企業(yè)用人成本的提升以及社會對企業(yè)產(chǎn)品質(zhì)量要求的提高,很多中小企業(yè)開始了車間信息化升級。開發(fā)一款小型企業(yè)的信息化管理系統(tǒng),可以方便于管理人員及時了解和反饋每臺機器的工作狀況和生產(chǎn)情況,及時處理生產(chǎn)中出現(xiàn)的一些問題,同時實現(xiàn)機床檢測參數(shù)及機床加工信息的實時反饋及管理。
文中設計的中小型壓鑄車間的信息化管理系統(tǒng),可以實現(xiàn)上層數(shù)據(jù)庫系統(tǒng)與底層控制器的數(shù)據(jù)交換,數(shù)據(jù)庫將底層控制器傳輸上來的信息進行存儲整理分析,根據(jù)分析結果發(fā)送控制信息,為機床的生產(chǎn)提供指導。如圖1所示,系統(tǒng)主要包括上層數(shù)據(jù)庫系統(tǒng),底層控制器和通信網(wǎng)絡3個部分。
1)上層數(shù)據(jù)庫系統(tǒng)
上層數(shù)據(jù)庫系統(tǒng)為車間信息數(shù)據(jù)庫管理程序,能夠?qū)崿F(xiàn)將上傳數(shù)據(jù)的功能名稱、信息時間、工人姓名、工藝和物料等加工信息和底層控制器上傳的機床檢測參數(shù)進行存儲、顯示,對接收的數(shù)據(jù)進行分析處理,根據(jù)處理的結果檢測機床工作是否正常,將信息反饋到底層控制器,告知現(xiàn)場操作工人。此外,數(shù)據(jù)庫系統(tǒng)還能夠?qū)崿F(xiàn)對數(shù)據(jù)進行統(tǒng)計、制表、保存、復制、打印和傳輸。
2)底層控制器
底層控制器是由微處理器、鍵盤、液晶顯示屏等組成的控制系統(tǒng),包括與機床的通訊接口、與上層數(shù)據(jù)庫系統(tǒng)的通訊接口以及報警裝置等?,F(xiàn)場工人可以通過按鍵設置,將機床加工信息(包括姓名、模具、設備、工藝和物料等),以及接收機床本身檢測提供的加工狀態(tài)(溫度、壓力等參數(shù))實時上傳給數(shù)據(jù)庫;同時控制器還可以接收來自上層的命令,提示工人做出相應操作。
3)通信網(wǎng)絡
通訊網(wǎng)絡實現(xiàn)上層數(shù)據(jù)庫與底層控制器的數(shù)據(jù)通信。通信系統(tǒng)要求能夠穩(wěn)定高效的通信,并且還應考慮現(xiàn)場的工作環(huán)境和布網(wǎng)的成本等因素,綜合考慮各種因素選擇CAN工業(yè)總線通信協(xié)議。CAN總線具有多主工作方式、非破壞性總線仲裁技術、具有點對點和一點對多點和全局廣播等工作方式、提供遠程數(shù)據(jù)請求、高效的短幀結構、高可靠性、總線配置靈活等優(yōu)點[2]。
目前世界上比較流行的數(shù)據(jù)庫項目大多采用三層體系結構設計,典型的三層體系結構包括表示層(界面層)、業(yè)務邏輯層和數(shù)據(jù)訪問層。使用三層體系結構的系統(tǒng)層與層之間的耦合度低,層內(nèi)部聚合度高,使得系統(tǒng)的維護變得更加的容易[3]。
表示層:主要是指與用戶交互的界面,用于顯示數(shù)據(jù)和接收用戶的輸入,將用戶輸入的數(shù)據(jù)傳遞到業(yè)務邏輯層,一般不包含任何實際的業(yè)務處理
業(yè)務邏輯層:是表示層和數(shù)據(jù)訪問層之間的橋梁,它代表應用程序的核心功能,負責處理數(shù)據(jù)層的數(shù)據(jù),實現(xiàn)具體的業(yè)務邏輯,通常為一個類庫。
數(shù)據(jù)訪問層:主要實現(xiàn)對數(shù)據(jù)的操作,將數(shù)據(jù)庫中的數(shù)據(jù)提供給業(yè)務邏輯層,同時將業(yè)務邏輯層處理過的數(shù)據(jù)存儲到數(shù)據(jù)庫中。
三層體系架構搭建好之后要實現(xiàn)三層之間的數(shù)據(jù)傳遞一般有兩種方法:創(chuàng)建實體層使用其中的實體類在三層之間傳遞數(shù)據(jù);使用數(shù)據(jù)集在三層之間傳遞數(shù)據(jù)。本設計使用創(chuàng)建實體層使用實體類的方法,因為實體類是一個比較容易控制的對象,具有面向?qū)ο蟮幕咎卣?,可以自由的在其中添加行為等。實體類消除了關系數(shù)據(jù)和對象之間的差異,便于操縱關系數(shù)據(jù),能更好的發(fā)揮分層的作用,更好的進行復用和擴展,增強靈活性[4]。
根據(jù)要處理數(shù)據(jù)種類的不同,本系統(tǒng)使用SQL Server 2005構建了包含兩個表的數(shù)據(jù)庫。兩個表分別是機床加工信息表(WorkInfo)和機床檢測參數(shù)表(ProcessInfo)。機床加工信息表包含序列號、機床編號、時間、員工編號、員工姓名、模具、設備、工藝、鋁水和物料10個鍵。機床檢測參數(shù)表包含序列號、機床編號、時間、溫度、壓射力、壓射速度和壓射時間7個鍵。
數(shù)據(jù)庫程序采用.NET Framework 3.5中新增的LINQ,簡化三層體系結構的搭建,C#利用LINQ to SQL創(chuàng)建一個通用實體類,實現(xiàn)在3個模塊之間使用對象進行數(shù)據(jù)傳遞和負責操作數(shù)據(jù)庫,輔助數(shù)據(jù)訪問層操作數(shù)據(jù)庫。利用LINQ創(chuàng)建的三層體系結構如圖2所示,其中的DataLinq層就是實體層和數(shù)據(jù)模型層的組合[5-6]。
圖2 LINQ三層體系結構簡圖Fig.2 The sketch schematic of the LINQ three-tier architecture
下面介紹各層的具體創(chuàng)建:
數(shù)據(jù)庫通用類:使用C#可以輕松的使用LINQto SQL創(chuàng)建一個DataLinq層來組織數(shù)據(jù)庫通用類,DataLinq層包含一個DataContext類和若干個實體類,DataContext類用來查詢數(shù)據(jù)庫、檢索數(shù)據(jù)記錄和更新數(shù)據(jù)庫,包含了每一個表的屬性[4]。每一個表對應一個實體類,這些實體類包含了強類型屬性集合,映射到數(shù)據(jù)庫中對應的字段。將已經(jīng)連接好的數(shù)據(jù)庫的WorkInfo表和ProcessInfo表拖到WSDataLinq.dbml文件中,生成解決方案,數(shù)據(jù)庫通用類即設計完成,創(chuàng)建了WorkInfo和ProcessInfo兩個實體類,實現(xiàn)數(shù)據(jù)在三層之間的傳輸。
數(shù)據(jù)訪問層:數(shù)據(jù)訪問層通過一個類庫實現(xiàn),在解決方案中新建一個“類庫”項目WSDAL,向其中添加對DataLinq層的引用,使數(shù)據(jù)訪問層能夠使用數(shù)據(jù)庫通用類[4],在該命名空間中創(chuàng)建兩個類DALWorkInfo和DALProcessInfo,使用該兩個類的方法分別對表WorkInfo和表ProcessInfo進行數(shù)據(jù)操作。兩個類中分別包含對表中相應鍵的查詢方法,以表中添加相應的記錄的方法和獲取表序列號最大值的方法等。
業(yè)務邏輯層:業(yè)務邏輯層的設計方法與數(shù)據(jù)訪問層相似,都是通過添加類庫和引用,然后創(chuàng)建對應WorkInfo表和ProcessInfo表的兩個類,實現(xiàn)對兩個表的操作。兩個層不同的是數(shù)據(jù)訪問層通過WSDataLinqDataContext類實例對象直接操作數(shù)據(jù)庫,而業(yè)務邏輯層通過創(chuàng)建數(shù)據(jù)訪問層類的實例對象,調(diào)用其方法實現(xiàn)相應的操作。業(yè)務邏輯層需要使用數(shù)據(jù)訪問層實例化的對象,因此需要添加對數(shù)據(jù)訪問層的引用。業(yè)務邏輯層中創(chuàng)建的兩個類分別為BLLWorkInfo類和BLLProcessInfo類。兩個類通過寫相應的函數(shù)設計與數(shù)據(jù)訪問層相應的數(shù)據(jù)操作方法。
表示層:表示層主要是指與用戶交互的界面。三層體系結構中,表示層并不對數(shù)據(jù)實現(xiàn)具體的操作,表示層對數(shù)據(jù)的操作將通過業(yè)務邏輯層實現(xiàn),表示層通過創(chuàng)建業(yè)務邏輯層相應表的對應類實例化的對象,采用相應實例的相應方法實現(xiàn)數(shù)據(jù)操作。
下面以查找模具3為例,介紹數(shù)據(jù)庫條件查詢中三層體系結構的流程。如圖3所示。
圖3 數(shù)據(jù)查詢流程圖Fig.3 The flow schematic of the data query
數(shù)據(jù)庫要求能夠?qū)崿F(xiàn)數(shù)據(jù)的接收存儲和實時顯示,條件查詢,報表輸出打印。分析上述要求,數(shù)據(jù)庫系統(tǒng)主要實現(xiàn)了打印相關操作、CAN Bus相關操作、實現(xiàn)兩張表之間的切換以及對相應表的查詢功能和報警。根據(jù)主要功能,菜單欄包含3個主菜單項:文件、機床信息表和CAN Bus設置。文件菜單包括打印設置、打印預覽、打印和退出菜單項;機床信息表包括機床加工信息表、機床檢測參數(shù)表和報警菜單項;CAN Bus設置菜單包括連接、啟動、復位、斷開和參數(shù)設置菜單項。
機床信息表菜單包含了一些與表格相關的操作,包括實現(xiàn)表格切換和發(fā)送報警信息窗口。為實現(xiàn)數(shù)據(jù)的實時顯示,程序采用2個DataGridView控件分別顯示數(shù)據(jù)庫WorkInfo表和ProcessInfo表中的全部內(nèi)容或符合查詢條件的查詢結果。在顯示數(shù)據(jù)庫相應表的內(nèi)容的同時,每個表的查詢功能設計在表的左上方,數(shù)據(jù)的查詢條件通過下拉類表進行選擇。報警菜單用于顯示報警窗口,在使用者發(fā)現(xiàn)底層控制器傳輸上來的機床加工信息與要求不同時或機床檢測的參數(shù)發(fā)生偏差時,在報警窗口中選擇不符合要求的機床編號,向底層控制器發(fā)送報警信息。
數(shù)據(jù)庫系統(tǒng)通過周立功公司的USBCAN-I與CAN Bus總線進行數(shù)據(jù)交換。USBCAN-I設備提供數(shù)據(jù)通信軟件,并且提供可以用于二次開發(fā)的DLL文件,可以自己設計通信系統(tǒng)。CAN Bus設置菜單分別設計了連接、啟動、復位、斷開和參數(shù)設置五個菜單,分別用于CAN Bus的初始化和連接斷開等操作。這些指令都可以通過DLL文件提供的函數(shù)方便快捷的設計。CAN Bus參數(shù)設置窗口設計如圖所示,包括了CAN Bus通信所必需的設備索引號、第幾路CAN、驗收碼、屏蔽碼、定時器0,1、濾波方式、模式、發(fā)送格式、幀格式、幀類型、幀ID等的設計。
圖4 數(shù)據(jù)存儲流程圖Fig.4 The flow schematic of the data storage
數(shù)據(jù)庫系統(tǒng)采用間隔查詢的方式讀取CAN總線數(shù)據(jù),在程序中添加一個時鐘控件,根據(jù)相同規(guī)模大小設計間隔時間。當程序中CAN Bus連接成功后,時鐘控件工作,在時鐘控件的響應事件中系統(tǒng)不斷檢測CAN Bus總線是否有數(shù)據(jù)。當有數(shù)據(jù)時系統(tǒng)對數(shù)據(jù)進行讀取,對讀取到的數(shù)據(jù)進行解包,根據(jù)幀ID所代表的含義,確定數(shù)據(jù)為WorkInfo表數(shù)據(jù)還是ProcessInfo表數(shù)據(jù),然后創(chuàng)建相應表的DataLinq實例化結構體,將CAN Bus幀的8位數(shù)據(jù)所存儲的信息存入相應鍵中。由于CAN Bus數(shù)據(jù)幀存儲信息太少,底層控制器每條信息都是分兩次傳遞,因此在接收到后一條信息后,結構體賦值完成,將結構體作為參數(shù)調(diào)用業(yè)務邏輯層數(shù)據(jù)插入的方法將讀取的數(shù)據(jù)插入到數(shù)據(jù)庫表的最后一條。
具體的數(shù)據(jù)存儲流程圖如圖4所示。
隨著最近幾年我國用人成本的不斷提高和招工困難度的增加,越來越多的中小型企業(yè)開始了生產(chǎn)信息化改造,由于受資金的制約,它們基本不會選擇價格昂貴的全套MES信息控制系統(tǒng)。所以很多的企業(yè)選擇自己研發(fā)或購買一些簡單的車間數(shù)據(jù)庫管理系統(tǒng)。本系統(tǒng)完全滿足了中小企業(yè)生產(chǎn)信息化的需求,是一個簡單實用的車間數(shù)據(jù)庫管理系統(tǒng),實現(xiàn)生產(chǎn)過程中的數(shù)據(jù)傳輸、存儲、管理和對機床加工的控制要求。
[1]順德市人民政府.順德市企業(yè)信息化總體規(guī)劃與實施方案[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數(shù)據(jù)庫入門經(jīng)典[M].沈潔,楊華,譯.北京:清華大學出版社,2009.
[6]柳盛,王國全,沈永林.C語言通用范例開發(fā)金典[M].北京:電子工業(yè)出版社,2008.