《电子技术应用》
您所在的位置:首页 > 其他 > 设计应用 > 服装吊挂系统上位机软件设计与实现
服装吊挂系统上位机软件设计与实现
来源:微型机与应用2013年第18期
吴 鑫,俞建定,赵鹏飞,骆国庆
(宁波大学 信息科学与工程学院,浙江 宁波315211)
摘要: 介绍了一种基于以太网和RS485总线的服装吊挂系统设计,阐述了该系统的上位机软件的设计与实现。上位机软件是系统的控制中心,监控管理每个工作站的生产状况,实时生成薪资报表、产量报表、生产分析图。软件界面采用C#编程语言,通信模块的程序采用Delphi技术实现,后台数据库采用SQL2000。该系统已经投入企业使用,系统各项功能运行稳定,界面友好,满足用户需求。
Abstract:
Key words :

摘  要: 介绍了一种基于以太网和RS485总线的服装吊挂系统设计,阐述了该系统的上位机软件的设计与实现。上位机软件是系统的控制中心,监控管理每个工作站的生产状况,实时生成薪资报表、产量报表、生产分析图。软件界面采用C#编程语言,通信模块的程序采用Delphi技术实现,后台数据库采用SQL2000。该系统已经投入企业使用,系统各项功能运行稳定,界面友好,满足用户需求。
关键词: 服装吊挂;上位机软件;C#语言;Delphi;SQL2000

    服装生产属于劳动密集型生产,生产过程基本是流水式作业。目前,我国许多服装企业采用的仍然是“捆绑式”生产模式,生产浮余率高,生产效率低下,而且生产过程中容易发生衣片遗失和错片等现象,造成较高的返工率。如何对生产过程进行控制、提高生产效率、提升生产质量,是每个服装企业面临的问题,服装吊挂系统就是在这种需求下应运而生的。通过电脑系统集成控制,对加工工位生产数据进行实时采集、分析和处理,改变了服装行业传统的“捆绑式”生产方式,有效解决了制作过程中辅助作业时间比例大、生产周期长、成衣质量难以控制等问题[1]。作为一种先进的服装生产管理系统,服装吊挂系统在国内服装企业中的普及率并不高。本研究针对服装加工工艺特点,经大量市场需求调研,设计并实现了一种基于以太网和RS485总线的服装吊挂生产控制系统。上位机通过以太网和RS485与每个制衣工位进行实时通信,实现对服装生产加工过程的实时监控管理。
1 系统构成
    服装吊挂系统宏观上是一套悬空的流水线式物件传输流水线,它通过一个循环运输轨道把多个服装生产工作站结合起来,可根据生产加工工艺的要求,利用特制衣架,自动将衣片、半成品及成衣按加工顺序输送到各个加工工作站,并且直接输送到每个操作人员方便的位置上。它可以不受加工线路长短和加工位置排列的限制,可长可短,可高可低,可根据需要自由排列组合,灵活方便[2-3]。
    本研究设计的服装吊挂系统由上位机、若干个数据一级下位机和多个二级下位机组成,如图1所示。上位机作为总控设备,通过以太网对一级下位机通信,一级下位机重新对上位机数据进行预处理,通过RS485与二级下位机进行数据交换。上位机动态显示各个款式的加工状况,为管理人员提供每个工作站、每个工人、每个衣架、每种款式等每时每刻的状况,追踪目标产量,显示生产进度,产生生产报表以便管理人员及时掌握现场状况,及时做出调整。一级下位机作为一个数据传输设备,完成两种通信方式的连接和对上下间通信数据的转换处理。二级下位机对应各个加工工作站,对工作站的加工过程进行控制,并实时采集工作的生产数据反馈给上位机。

    随着电脑的普及,以太网接口成为目前使用最广泛的网络接口,具有接口简单、通信速度高、传输距离远、通信协议完善和工作性能稳定等优点,能够实现远程高速数据通信[4]。RS485串行总线又有通信距离长、抗干扰能力强[5]等优点,在工业控制系统中,尤其在中小型数据采集和控制系统中运用广泛。利用这两种总线的控制方式,不仅有效解决了目前市场上服装吊挂系统通信不稳定、总控设备和控制设备存在数据传输的瓶颈问题,而且整个系统的线路连接更加简洁方便,利用交换机就可以实现对多条流水线的集中控制,扩展性增强,整体的成本也不高。
2 上位机软件设计
    从系统的总架构图看到,系统由上位机和下位机(包括一级下位机和二级下位机)组成。上位机对下位机上传的数据进行分析、保存和显示,下位机实时采集数据,上传给上位机并接收上位机指令完成相应动作。
    上位机软件主要由通信模块、人机交互界面模块、数据库模块等组成,其结构框架如图2所示。

2.1 通信模块设计
2.1.1 数据包格式

    上位机与每个工作站的通信其实并不是直接“点对点”式进行,而是通过数据传输设备这一媒介进行数据交互的。上位机与数据传输设备之间的通信数据包含了所有的制衣工位信息、数据传输设备对整体数据的拆解和工位数据的收集等数据转换功能。为保证整个通信可靠高效,数据包格式必须规划布置合理,其数据包格式如图3所示。

    数据包总体格式为:公共数据+工位数据,公共数据部分是上位机下发给每个工作站的统一调度信息或各个工作站上传的共有信息。 因每个工位做的工序不一样,执行功能不同,每个时刻执行的动作也不一样,所以将每个工位的数据分开,以工位数据的头部作为地址。这种数据格式布局全面地涵盖交互信息,利于拆解分析数据且有效地控制了数据包的大小。
2.1.2 功能命令
    整个制衣加工过程的顺利进行:上位机要设置制衣工作站的类型,即确立工作站做具体的某一道工序;合理控制工位的工作状态,衣料的分发要根据员工的上线、离线及时地调整;实时广播给每个工位下个动作的指令,保证衣料按照制定的加工方案调度;实时地将每个工位的生产情况发送给每个工位,督促员工的生产。每个工位根据生产情况,可以向上位机发送请求,以控制自己的生产;每个工位完成上位机下发的指令动作后需及时回复给上位机,以便上位机对其下一个任务安排。上位机和工作站信息交互的命令种类如表1所示。

2.1.3 通信模块程序实现
    在整个制衣加工过程中,各个工位的操作并不是同步进行,各个工位的数据量不一样,为了实时监控每个工位的生产情况,系统上位机和工位间需频繁进行数据交互,则对后台数据库操作会很频繁。整个系统的数据大致可以分成两类,一类数据需要频繁更新,例如当前工位存有的衣数、当前的产量等;一类数据在较长一段时间固定不变,例如各个款式的备用加工方案。 所以对后台数据库频繁操作的数据表相对比较固定。基于这种考虑,将通信部分从上位机管理终端中分离独立开来,通信部分专门处理与工位的交互信息,操作后台数据库。管理终端负责数据查询,呈现结果给用户,两者相辅相成,使得系统结构稳定性更强。
    基于Delphi在数据库操作方面的强大优势[6],通信模块使用Delphi技术实现。对通信模块来说,对收到的数据要做两个工作,一是对接收到的每个生产工位动作命令及数据进行处理,将生产工位的相关数据同步到数据库;二是响应工位的上传请求或对工位进行操作,下发指令给每个生产工位。以太网数据通信在Delphi7中可以利用TcpClient控件比较方便地实现。处理程序的伪代码如下:
    procedure TFormComm.TcpCommReceive( )
    {
        HandleRevData( )//处理所有工位信息进行
        {
            While(…)
            {
            HandleAveStData( );//处理每个工位数据
            }
        }
        SendtoAllStData( ) //发送应答信息
        {
            While(…)
            {
                SendWhatdatatoAveSation ( );
            }
        }
    }
    在主界面上通过点击“开始”按钮,启动通信模块,进行数据交互。
2.2 人机交互界面模块设计
    本上位机界面是在Visual Studio 2005.NET编程环境中使用C#语言编程完成。C#语言是Microsoft专门为其推出.NET平台“量身定做”的一种新型的面向对象的编程语言,它吸收了Java的许多优点,既具有VB的简单易用性,又具有C++的灵活和功能强大的特点,而且克服了运用C/C++进行项目开发时难度大和周期长的缺点。在.NET平台上运用C#可以很便捷地进行企业大型应用的开发,特别是分布式应用[7]。与SQL2000结合开发数据库应用程序,Visual Studio.NET中提供的功能强大的控件和组件,可以轻松地生成非常复杂的SQL语句,使得对数据库的各种操作和数据的展现更加方便。
2.2.1 功能设计
    上位机界面的功能是制定服装加工方案、分配工序工位、对生产进行智能调度、实时监控整个生产过程并呈现各个工位的生产状态,及时提供生产报表、每个员工详细薪资报表及生产分析图等重要信息。界面分为4大模块,具体功能模块如图4所示。

    其中工作工位实况、生产平衡信息和在生产服装信息三部分内容是生产过程中管理者最需要及时了解的信息,所以将这三个模块布置在同一个界面,并作为软件启动后的默认主界面,友好性强。服装款式管理和服装加工方案设计这两个模块具有“父子”关系,每一款服装都有对应的一种或几种服装加工方案,在服装款式管理模块点击一种款式即可进入相应的方案设计模块。
2.2.2 主界面设计及界面组织
    由系统功能图可以看出,整个上位机交互界面的层次性很强,功能模块较多,而且某些模块除自己独立成块以外还是其他一些模块的子模块。为了增强控件的通用性和重用性,笔者按功能根据VS2005工具箱中的控件并利用.NET程序集创建相应的用户控件,在主界面对应的功能调用用户控件。
    主界面左面的窗格为系统功能树,可依次展开,大致功能分布一目了然,利于用户宏观把握系统整个功能。右边区域显示各个功能的具体内容,在功能树中双击某一功能模块对应的树节点,右边区域就把对应模块的用户界面添加进来,实现代码如下:
    sContainer.Panel2.Controls.Add( 用户空件名 );
2.3 数据库模块设计
    服装吊挂生产管理系统大致包含服装款式、员工、生产工位、加工方案和产量五类数据。服装款式是系统生产的对象,是数据库组织的核心。它们之间的关系如图5所示,每个款式制定在线加工方案,立即投入生产,制定备用加工方案,以备生产调整,根据加工方案分配人员和工位。

    .NET提供的数据库访问组件ADO.NET功能非常强大,与DataSet类对象配合,可以映射出一个完整的数据库。同时.NET还提供了功能强大的列表控件类DataGridView类,给类数据库管理的可视化编程带来了极大的方便[8]。
    数据库访问的代码实现:由于系统在运行时需要频繁访问数据库,因此将数据库数据访问部分的代码封装成通用的数据库访问类,以便实现复用。数据库访问类CDataHandle的伪代码为:
    public class CDataHandle
    {
        private System.Data.SqlClient.SqlConnection connection;
//连接数据库
        private System.Data.SqlClient.aAdapter adapter;
//用于填充和更新数据集
        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进行了封装,实现了数据的查询、插入、删除、更新等数据库操作,引用起来非常方便。
3 上位机软件实现的关键点分析
3.1 数据的一致性

 


    管理人员在前台界面上操作,可能会使得后台数据库对多个表的数据进行Update、Insert或Delete的情形。如果前面的表数据已经更新成功而后面的表却更新失败,这时就会出现相关联的数据不一致的问题。
    上位机界面中使用.NET中数据操作的事务处理对象SqlTransaction来解决此问题。建立事务对象与sql命令对象绑定,由sql命令对象来负责数据操作的提交或回滚,这样就可以达到保证数据一致性的目的。
3.2 跨线程访问控件
    在多线程编程中,经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的做法是错误的,一般采用Invoke和BeginLnvoke解决这个问题。它们的参数为委托delegate,委托的方法在Control的线程上执行,也就是平时所说的UI线程,以此来实现跨线程操作。Invoke在拥有此控件的基础窗口句柄的线程上执行指定的委托,而BeginInvoke是在创建控件的基础句柄所在线程上异步执行指定委托,本系统主要采用Invoke方法。
    本研究设计的基于以太网和RS485总线的服装吊挂生产控制系统将两种通信方式混合集成使用达到了理想的效果,该系统已投入市场,系统运行稳定、操作简单方便,用户十分满意。本上位机软件操作方便,界面简洁。通信模块独立于界面的设计,不仅增强了软件的结构性,而且对多线程的操作要求降低。本文对于工业控制系统的监控管理类软件的编写也具有一定借鉴意义。
参考文献
[1] 陈洪倩,陈雁,丁佳,等.服装吊挂线生产组织分析[J].丝 绸,2012,49(1):30-32.
[2] 周旭东,宋晓霞,刘静萍.智能服装吊挂生产管理系统的研究[J].上海工程技术大学学报,2000,14(3):63-67.
[3] 傅菊芬.服装吊挂生产系统的工艺分析[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总线网络应用中的安全与可靠性[J].光学精密工程,2003,11(2):193-197.
[6] 王林玮.delphi7数据库工程实用编程技术[M].北京:电子工业出版社,2006.
[7] 李炜,孙志宏,陈庆龙,等.基于.NET的服装生产管理系统的研究与实践[J].计算机应用与软件,2005,22(9):127-129.
[8] 张立.C#程序设计编程经典[M].北京:清华大学出版社,2008.

此内容为AET网站原创,未经授权禁止转载。