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