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