摘 要: 介紹了一種基于以太網(wǎng)和RS485總線的服裝吊掛系統(tǒng)設(shè)計,闡述了該系統(tǒng)的上位機軟件的設(shè)計與實現(xiàn)。上位機軟件是系統(tǒng)的控制中心,監(jiān)控管理每個工作站的生產(chǎn)狀況,實時生成薪資報表、產(chǎn)量報表、生產(chǎn)分析圖。軟件界面采用C#編程語言,通信模塊的程序采用Delphi技術(shù)實現(xiàn),后臺數(shù)據(jù)庫采用SQL2000。該系統(tǒng)已經(jīng)投入企業(yè)使用,系統(tǒng)各項功能運行穩(wěn)定,界面友好,滿足用戶需求。
關(guān)鍵詞: 服裝吊掛;上位機軟件;C#語言;Delphi;SQL2000
服裝生產(chǎn)屬于勞動密集型生產(chǎn),生產(chǎn)過程基本是流水式作業(yè)。目前,我國許多服裝企業(yè)采用的仍然是“捆綁式”生產(chǎn)模式,生產(chǎn)浮余率高,生產(chǎn)效率低下,而且生產(chǎn)過程中容易發(fā)生衣片遺失和錯片等現(xiàn)象,造成較高的返工率。如何對生產(chǎn)過程進行控制、提高生產(chǎn)效率、提升生產(chǎn)質(zhì)量,是每個服裝企業(yè)面臨的問題,服裝吊掛系統(tǒng)就是在這種需求下應(yīng)運而生的。通過電腦系統(tǒng)集成控制,對加工工位生產(chǎn)數(shù)據(jù)進行實時采集、分析和處理,改變了服裝行業(yè)傳統(tǒng)的“捆綁式”生產(chǎn)方式,有效解決了制作過程中輔助作業(yè)時間比例大、生產(chǎn)周期長、成衣質(zhì)量難以控制等問題[1]。作為一種先進的服裝生產(chǎn)管理系統(tǒng),服裝吊掛系統(tǒng)在國內(nèi)服裝企業(yè)中的普及率并不高。本研究針對服裝加工工藝特點,經(jīng)大量市場需求調(diào)研,設(shè)計并實現(xiàn)了一種基于以太網(wǎng)和RS485總線的服裝吊掛生產(chǎn)控制系統(tǒng)。上位機通過以太網(wǎng)和RS485與每個制衣工位進行實時通信,實現(xiàn)對服裝生產(chǎn)加工過程的實時監(jiān)控管理。
1 系統(tǒng)構(gòu)成
服裝吊掛系統(tǒng)宏觀上是一套懸空的流水線式物件傳輸流水線,它通過一個循環(huán)運輸軌道把多個服裝生產(chǎn)工作站結(jié)合起來,可根據(jù)生產(chǎn)加工工藝的要求,利用特制衣架,自動將衣片、半成品及成衣按加工順序輸送到各個加工工作站,并且直接輸送到每個操作人員方便的位置上。它可以不受加工線路長短和加工位置排列的限制,可長可短,可高可低,可根據(jù)需要自由排列組合,靈活方便[2-3]。
本研究設(shè)計的服裝吊掛系統(tǒng)由上位機、若干個數(shù)據(jù)一級下位機和多個二級下位機組成,如圖1所示。上位機作為總控設(shè)備,通過以太網(wǎng)對一級下位機通信,一級下位機重新對上位機數(shù)據(jù)進行預(yù)處理,通過RS485與二級下位機進行數(shù)據(jù)交換。上位機動態(tài)顯示各個款式的加工狀況,為管理人員提供每個工作站、每個工人、每個衣架、每種款式等每時每刻的狀況,追蹤目標(biāo)產(chǎn)量,顯示生產(chǎn)進度,產(chǎn)生生產(chǎn)報表以便管理人員及時掌握現(xiàn)場狀況,及時做出調(diào)整。一級下位機作為一個數(shù)據(jù)傳輸設(shè)備,完成兩種通信方式的連接和對上下間通信數(shù)據(jù)的轉(zhuǎn)換處理。二級下位機對應(yīng)各個加工工作站,對工作站的加工過程進行控制,并實時采集工作的生產(chǎn)數(shù)據(jù)反饋給上位機。
隨著電腦的普及,以太網(wǎng)接口成為目前使用最廣泛的網(wǎng)絡(luò)接口,具有接口簡單、通信速度高、傳輸距離遠(yuǎn)、通信協(xié)議完善和工作性能穩(wěn)定等優(yōu)點,能夠?qū)崿F(xiàn)遠(yuǎn)程高速數(shù)據(jù)通信[4]。RS485串行總線又有通信距離長、抗干擾能力強[5]等優(yōu)點,在工業(yè)控制系統(tǒng)中,尤其在中小型數(shù)據(jù)采集和控制系統(tǒng)中運用廣泛。利用這兩種總線的控制方式,不僅有效解決了目前市場上服裝吊掛系統(tǒng)通信不穩(wěn)定、總控設(shè)備和控制設(shè)備存在數(shù)據(jù)傳輸?shù)钠款i問題,而且整個系統(tǒng)的線路連接更加簡潔方便,利用交換機就可以實現(xiàn)對多條流水線的集中控制,擴展性增強,整體的成本也不高。
2 上位機軟件設(shè)計
從系統(tǒng)的總架構(gòu)圖看到,系統(tǒng)由上位機和下位機(包括一級下位機和二級下位機)組成。上位機對下位機上傳的數(shù)據(jù)進行分析、保存和顯示,下位機實時采集數(shù)據(jù),上傳給上位機并接收上位機指令完成相應(yīng)動作。
上位機軟件主要由通信模塊、人機交互界面模塊、數(shù)據(jù)庫模塊等組成,其結(jié)構(gòu)框架如圖2所示。
2.1 通信模塊設(shè)計
2.1.1 數(shù)據(jù)包格式
上位機與每個工作站的通信其實并不是直接“點對點”式進行,而是通過數(shù)據(jù)傳輸設(shè)備這一媒介進行數(shù)據(jù)交互的。上位機與數(shù)據(jù)傳輸設(shè)備之間的通信數(shù)據(jù)包含了所有的制衣工位信息、數(shù)據(jù)傳輸設(shè)備對整體數(shù)據(jù)的拆解和工位數(shù)據(jù)的收集等數(shù)據(jù)轉(zhuǎn)換功能。為保證整個通信可靠高效,數(shù)據(jù)包格式必須規(guī)劃布置合理,其數(shù)據(jù)包格式如圖3所示。
數(shù)據(jù)包總體格式為:公共數(shù)據(jù)+工位數(shù)據(jù),公共數(shù)據(jù)部分是上位機下發(fā)給每個工作站的統(tǒng)一調(diào)度信息或各個工作站上傳的共有信息。 因每個工位做的工序不一樣,執(zhí)行功能不同,每個時刻執(zhí)行的動作也不一樣,所以將每個工位的數(shù)據(jù)分開,以工位數(shù)據(jù)的頭部作為地址。這種數(shù)據(jù)格式布局全面地涵蓋交互信息,利于拆解分析數(shù)據(jù)且有效地控制了數(shù)據(jù)包的大小。
2.1.2 功能命令
整個制衣加工過程的順利進行:上位機要設(shè)置制衣工作站的類型,即確立工作站做具體的某一道工序;合理控制工位的工作狀態(tài),衣料的分發(fā)要根據(jù)員工的上線、離線及時地調(diào)整;實時廣播給每個工位下個動作的指令,保證衣料按照制定的加工方案調(diào)度;實時地將每個工位的生產(chǎn)情況發(fā)送給每個工位,督促員工的生產(chǎn)。每個工位根據(jù)生產(chǎn)情況,可以向上位機發(fā)送請求,以控制自己的生產(chǎn);每個工位完成上位機下發(fā)的指令動作后需及時回復(fù)給上位機,以便上位機對其下一個任務(wù)安排。上位機和工作站信息交互的命令種類如表1所示。
2.1.3 通信模塊程序?qū)崿F(xiàn)
在整個制衣加工過程中,各個工位的操作并不是同步進行,各個工位的數(shù)據(jù)量不一樣,為了實時監(jiān)控每個工位的生產(chǎn)情況,系統(tǒng)上位機和工位間需頻繁進行數(shù)據(jù)交互,則對后臺數(shù)據(jù)庫操作會很頻繁。整個系統(tǒng)的數(shù)據(jù)大致可以分成兩類,一類數(shù)據(jù)需要頻繁更新,例如當(dāng)前工位存有的衣數(shù)、當(dāng)前的產(chǎn)量等;一類數(shù)據(jù)在較長一段時間固定不變,例如各個款式的備用加工方案。 所以對后臺數(shù)據(jù)庫頻繁操作的數(shù)據(jù)表相對比較固定。基于這種考慮,將通信部分從上位機管理終端中分離獨立開來,通信部分專門處理與工位的交互信息,操作后臺數(shù)據(jù)庫。管理終端負(fù)責(zé)數(shù)據(jù)查詢,呈現(xiàn)結(jié)果給用戶,兩者相輔相成,使得系統(tǒng)結(jié)構(gòu)穩(wěn)定性更強。
基于Delphi在數(shù)據(jù)庫操作方面的強大優(yōu)勢[6],通信模塊使用Delphi技術(shù)實現(xiàn)。對通信模塊來說,對收到的數(shù)據(jù)要做兩個工作,一是對接收到的每個生產(chǎn)工位動作命令及數(shù)據(jù)進行處理,將生產(chǎn)工位的相關(guān)數(shù)據(jù)同步到數(shù)據(jù)庫;二是響應(yīng)工位的上傳請求或?qū)の贿M行操作,下發(fā)指令給每個生產(chǎn)工位。以太網(wǎng)數(shù)據(jù)通信在Delphi7中可以利用TcpClient控件比較方便地實現(xiàn)。處理程序的偽代碼如下:
procedure TFormComm.TcpCommReceive( )
{
HandleRevData( )//處理所有工位信息進行
{
While(…)
{
HandleAveStData( );//處理每個工位數(shù)據(jù)
}
}
SendtoAllStData( ) //發(fā)送應(yīng)答信息
{
While(…)
{
SendWhatdatatoAveSation ( );
}
}
}
在主界面上通過點擊“開始”按鈕,啟動通信模塊,進行數(shù)據(jù)交互。
2.2 人機交互界面模塊設(shè)計
本上位機界面是在Visual Studio 2005.NET編程環(huán)境中使用C#語言編程完成。C#語言是Microsoft專門為其推出.NET平臺“量身定做”的一種新型的面向?qū)ο蟮木幊陶Z言,它吸收了Java的許多優(yōu)點,既具有VB的簡單易用性,又具有C++的靈活和功能強大的特點,而且克服了運用C/C++進行項目開發(fā)時難度大和周期長的缺點。在.NET平臺上運用C#可以很便捷地進行企業(yè)大型應(yīng)用的開發(fā),特別是分布式應(yīng)用[7]。與SQL2000結(jié)合開發(fā)數(shù)據(jù)庫應(yīng)用程序,Visual Studio.NET中提供的功能強大的控件和組件,可以輕松地生成非常復(fù)雜的SQL語句,使得對數(shù)據(jù)庫的各種操作和數(shù)據(jù)的展現(xiàn)更加方便。
2.2.1 功能設(shè)計
上位機界面的功能是制定服裝加工方案、分配工序工位、對生產(chǎn)進行智能調(diào)度、實時監(jiān)控整個生產(chǎn)過程并呈現(xiàn)各個工位的生產(chǎn)狀態(tài),及時提供生產(chǎn)報表、每個員工詳細(xì)薪資報表及生產(chǎn)分析圖等重要信息。界面分為4大模塊,具體功能模塊如圖4所示。
其中工作工位實況、生產(chǎn)平衡信息和在生產(chǎn)服裝信息三部分內(nèi)容是生產(chǎn)過程中管理者最需要及時了解的信息,所以將這三個模塊布置在同一個界面,并作為軟件啟動后的默認(rèn)主界面,友好性強。服裝款式管理和服裝加工方案設(shè)計這兩個模塊具有“父子”關(guān)系,每一款服裝都有對應(yīng)的一種或幾種服裝加工方案,在服裝款式管理模塊點擊一種款式即可進入相應(yīng)的方案設(shè)計模塊。
2.2.2 主界面設(shè)計及界面組織
由系統(tǒng)功能圖可以看出,整個上位機交互界面的層次性很強,功能模塊較多,而且某些模塊除自己獨立成塊以外還是其他一些模塊的子模塊。為了增強控件的通用性和重用性,筆者按功能根據(jù)VS2005工具箱中的控件并利用.NET程序集創(chuàng)建相應(yīng)的用戶控件,在主界面對應(yīng)的功能調(diào)用用戶控件。
主界面左面的窗格為系統(tǒng)功能樹,可依次展開,大致功能分布一目了然,利于用戶宏觀把握系統(tǒng)整個功能。右邊區(qū)域顯示各個功能的具體內(nèi)容,在功能樹中雙擊某一功能模塊對應(yīng)的樹節(jié)點,右邊區(qū)域就把對應(yīng)模塊的用戶界面添加進來,實現(xiàn)代碼如下:
sContainer.Panel2.Controls.Add( 用戶空件名 );
2.3 數(shù)據(jù)庫模塊設(shè)計
服裝吊掛生產(chǎn)管理系統(tǒng)大致包含服裝款式、員工、生產(chǎn)工位、加工方案和產(chǎn)量五類數(shù)據(jù)。服裝款式是系統(tǒng)生產(chǎn)的對象,是數(shù)據(jù)庫組織的核心。它們之間的關(guān)系如圖5所示,每個款式制定在線加工方案,立即投入生產(chǎn),制定備用加工方案,以備生產(chǎn)調(diào)整,根據(jù)加工方案分配人員和工位。
.NET提供的數(shù)據(jù)庫訪問組件ADO.NET功能非常強大,與DataSet類對象配合,可以映射出一個完整的數(shù)據(jù)庫。同時.NET還提供了功能強大的列表控件類DataGridView類,給類數(shù)據(jù)庫管理的可視化編程帶來了極大的方便[8]。
數(shù)據(jù)庫訪問的代碼實現(xiàn):由于系統(tǒng)在運行時需要頻繁訪問數(shù)據(jù)庫,因此將數(shù)據(jù)庫數(shù)據(jù)訪問部分的代碼封裝成通用的數(shù)據(jù)庫訪問類,以便實現(xiàn)復(fù)用。數(shù)據(jù)庫訪問類CDataHandle的偽代碼為:
public class CDataHandle
{
private System.Data.SqlClient.SqlConnection connection;
//連接數(shù)據(jù)庫
private System.Data.SqlClient.aAdapter adapter;
//用于填充和更新數(shù)據(jù)集
private System.Data.SqlClient.SqlCommand selectCmd;
private System.Data.SqlClient.SqlCommand insertCmd ;
private System.Data.SqlClient.SqlCommand updateCmd ;
private System.Data.SqlClient.SqlCommand deleteCmd ;
…
public DataTable Select (String sqText ,DataSet ds ,
String tableName)
{
try
{
this.selectCmd.CommandText = sqlText;
this .selectCmd.Connection=this .connection;
this.connection .Open( );
if(ds.Table[tableName]==null)
ds.Table.Add(tableName);
this.adapter.Fill(ds.tableName);
this.connection.Close( );
}
Catch(Exception ex)
{
this.connection.Close( );
MessageBox.Show(ex.Message);
}
return ds.Tables[tableName];
}
…
Public void Insert(string sqlText, DataSet ds,
String tableName){…};
Public void Delete(string sqlText, DataSet ds,
String tableName){…};
Public void Update(string sqlText, DataSet ds,
String tableName){…};
}
該類對ADO. NET進行了封裝,實現(xiàn)了數(shù)據(jù)的查詢、插入、刪除、更新等數(shù)據(jù)庫操作,引用起來非常方便。
3 上位機軟件實現(xiàn)的關(guān)鍵點分析
3.1 數(shù)據(jù)的一致性
管理人員在前臺界面上操作,可能會使得后臺數(shù)據(jù)庫對多個表的數(shù)據(jù)進行Update、Insert或Delete的情形。如果前面的表數(shù)據(jù)已經(jīng)更新成功而后面的表卻更新失敗,這時就會出現(xiàn)相關(guān)聯(lián)的數(shù)據(jù)不一致的問題。
上位機界面中使用.NET中數(shù)據(jù)操作的事務(wù)處理對象SqlTransaction來解決此問題。建立事務(wù)對象與sql命令對象綁定,由sql命令對象來負(fù)責(zé)數(shù)據(jù)操作的提交或回滾,這樣就可以達(dá)到保證數(shù)據(jù)一致性的目的。
3.2 跨線程訪問控件
在多線程編程中,經(jīng)常要在工作線程中去更新界面顯示,而在多線程中直接調(diào)用界面控件的做法是錯誤的,一般采用Invoke和BeginLnvoke解決這個問題。它們的參數(shù)為委托delegate,委托的方法在Control的線程上執(zhí)行,也就是平時所說的UI線程,以此來實現(xiàn)跨線程操作。Invoke在擁有此控件的基礎(chǔ)窗口句柄的線程上執(zhí)行指定的委托,而BeginInvoke是在創(chuàng)建控件的基礎(chǔ)句柄所在線程上異步執(zhí)行指定委托,本系統(tǒng)主要采用Invoke方法。
本研究設(shè)計的基于以太網(wǎng)和RS485總線的服裝吊掛生產(chǎn)控制系統(tǒng)將兩種通信方式混合集成使用達(dá)到了理想的效果,該系統(tǒng)已投入市場,系統(tǒng)運行穩(wěn)定、操作簡單方便,用戶十分滿意。本上位機軟件操作方便,界面簡潔。通信模塊獨立于界面的設(shè)計,不僅增強了軟件的結(jié)構(gòu)性,而且對多線程的操作要求降低。本文對于工業(yè)控制系統(tǒng)的監(jiān)控管理類軟件的編寫也具有一定借鑒意義。
參考文獻(xiàn)
[1] 陳洪倩,陳雁,丁佳,等.服裝吊掛線生產(chǎn)組織分析[J].絲 綢,2012,49(1):30-32.
[2] 周旭東,宋曉霞,劉靜萍.智能服裝吊掛生產(chǎn)管理系統(tǒng)的研究[J].上海工程技術(shù)大學(xué)學(xué)報,2000,14(3):63-67.
[3] 傅菊芬.服裝吊掛生產(chǎn)系統(tǒng)的工藝分析[J].上海紡織科技,2001(6):43-44.
[4] LAN/MAN Standards Committee.IEEE Std.802.3-2005/Corl-2006 part3:carrier sense multiple access with collision detection(CSMA/CD) access method and physical layer specifications corrigendum 1[S].2006.
[5] 穆斌,羅珣.RS-485總線網(wǎng)絡(luò)應(yīng)用中的安全與可靠性[J].光學(xué)精密工程,2003,11(2):193-197.
[6] 王林瑋.delphi7數(shù)據(jù)庫工程實用編程技術(shù)[M].北京:電子工業(yè)出版社,2006.
[7] 李煒,孫志宏,陳慶龍,等.基于.NET的服裝生產(chǎn)管理系統(tǒng)的研究與實踐[J].計算機應(yīng)用與軟件,2005,22(9):127-129.
[8] 張立.C#程序設(shè)計編程經(jīng)典[M].北京:清華大學(xué)出版社,2008.