0 引言
20世纪90年代初,工业界开始认识到需要一个可以将业务系统和控制系统集成在一起的中间层。同时,企业信息化建设的过程又是变革管理思想、改进管理模式、优化管理流程、提高员工素质的过程.是提升企业经营管理水平、缩小企业目标与资源能力之间缺口的有力手段。在基于ERP/MES/PCS的三层体系结构中,ERP完成从销售订单到生产订单的转化,而从生产订单投入到产品完成的整个生产过程中生产订单信息在各级系统中流动,经各级系统的不同处理,直到产品完成的整个订单在制造执行阶段的管理任务由MES实现”。MES介于ERP与底层控制和自动化系统之间,起着承上启下的作用,是ERP系统数据基础和保证。本文介绍的生产订单管理系统是汽车发动机生产线制造执行系统(MEs)的一个子系统。该系统承担MES所赋予的生产订单管理业务,同时MES实现与ERP系统集成的关键,是MES正常运行的前提和基础。
本系统运用Visual C#编程语言编写,采用SQLserver 2008作为后台数据库。目前,本系统正在某汽车发动机生产线投入使用,运行稳定。
1 生产订单管理系统结构
本系统主要由订单信息导入,订单信息下达,计划调度,查看订单状态等部分组成。
订单信息导入模块是负责把sAP生成的生产订单信息(包括发动机订单计划、发动机装配指南、操作指导等信息)自动导入到sQL server 2008数据库。通过订单信息下达模块把生产订单信息自动下达到各个工控机的MES中。查看订单信息模块可以查询和维护订单信息并且可以查询历史订单的执行状况,如果发现订单执行出现异常可以手动管理这些订单信息。通过计划调度调模块调整生产订单的执行顺序。
根据现场的设备情况和要求,网络结构采用图1所示的结构。本信息系统服务器和SAP服务器放置在不同的地理位置,通过光纤进行连接。所有装配线上的工控机通过100M以太网卡与交换机连接,与本信息系统服务器实时通讯。
图1 系统结构
该企业信息系统中存在着异构数据库。异构数据库系统是指异构的多数据库系统,即组成它的成员数据库的硬件、系统软件(如操作系统)不同,或成员数据库具有不同数据库管理系统(DBMS),例如该企业SAP系统的后台Oracle数据库与MES系统的后台SQL Server2008数据库。那么在进行系统之间的数据整合过程中,将不可避免的涉及到异构数据库之间的无逢的数据访问。因此在导人订单信息之前先解决不同数据库之间数据交互问题是实现整个系统的第一步。
在Oracle数据库访问SQL Server2008数据库中需要利用Oracle中提供的透明网关技术。针对Oracle与其他异构平台之间的数据访问,Oracle通过异构服务实现对异种数据源的连接,根据代理程序的不同,分为透明网关和普通连接2种技术。普通连接是一种使用ODBC或者OLEDB驱动程序访问任何ODBC或OLEDB兼容的非Oracle系统的通用解决方案。透明网关是一种为非Omcle系统特别编码、量身定制的解决方案,它提供一种比普通连接拥有更多功能和更好性能的优化解决方案。普通连接依赖于业界标准,而透明网关使用它的本地接口访问非Oracle系统。其关键配置如下:
(1)安装Oracle中提供的透明网关组件。
(2)配置网关初始参数文件。
HS_FDS_CONNECT_INF0=”SERVER=10.10.135.6;
DATABASE=MES”
HS_FDS_TRACE_LEVEL=0FF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
(3)为透明网关配置网络监听器。
(4)配置tnsname.ora配置文件。
CON=
(DESCRIPTI0N=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.135.11)(PORT=1521)))
(CONNECT_DATA=
(SID=SAP))
(HS=0K)
)
(5)建立数据库连接。
Creat public database link MES connect to sa identifid by 126 using CON’
2 订单信息自动导入模块
2.1 SQL Server2008中的CLR集成技术
SQL Server2008引入了Microsoft Windows的.NET Framework的公共语言运行库(CLR) Common LanguageRuntime组件的集成。CLR是Microsoft .NET Framework的核心,为所有. NET Fmmework代码提供执行环境。这意味着可以使用任意.NET Fmmework语言编写存储过程、触发器、用户定义类型、用户定义函数、用户定义聚合函数以及流处理表值函数。
2.2 基于UDP协议的网络通信技术
用户数据报协议(UDP)是ISO参考模型中一种无连接的传输层协议,提供面向操作的简单非可靠信息传送服务。UDP协议在数据传输之前,通信双方不需要建立连接,因此不需要维护连接状态,UDP信息包的标题很短,只有8个字节,相对于TCP的建立连接并20个字节信息包的额外开销很小,因此本系统采用UDP协议来实现通讯。C#中UDP的编程有两种方式:直接使用Socket类和使用uDP类。UDPCIient类对基础的Socket进行了封装、发送和接受数据时不必考虑底层套接字收发时必须处理的一些细节问题,开发简单、效率较高。因此本系统利用.NET中的UDP.Client类对UDP协议进行编程,实现网络通讯。
2.3 自动导入订单模块设计与实现
建立SQL Server2008数据库与Oracle数据库之间的连接后,本系统会监测到Oracle数据库中的新生成的订单信息并把订单信息自动导人到本系统的后台SQL server2008数据库中,订单信息导人到本系统的SQL Server2008数据库时,需要检测该订单在本系统数据库中的合法性(包括订单计划是否已经存在,发动机号是否存在,工位号是否存在,装配指南的订单号是否有重号,发动机类型是否正确等),因此并没有实际导人到实际表中,而存储在数据库所在的计算机内存中的临时表里,此过程由数据库来负责检测。如果检测成功数据库把订单信息导人到实际表中,同时把订单导入成功结果反馈给Oracle数据库。如果检测失败则把导人失败信息反馈给Omcle数据库以便于SAP计划员根据此信息维护订单信息。如图2所示。
图2 生产订单流程图
为了实现自动化,SQL Server2008数据库成功导入订单信息后,需要主动通知生产订单管理系统。此功能通过SQL Senrer 2008中的CLR集成技术和基于UDP协议的网络通信技术来实现的。主要步骤如下。
(1)编写客户端UDPclient通讯类并生成一个动态链接库。主要代码如下:
UdpClient myUdp=new UdpClient();
IPEndPoint iep=new IPEndPoint(IPAddress.Broadcast,41121);
Msg=System.Text.Encoding.UTF8.GetBytes(Message);
myUdp.Send(Msg,Msg.Length,iep);
myudp.Close();
(2)把通讯类生成为动态链接库后,需要在SQLServer2008数据库上注册程序集。
(3)在数据库SQL senrer2008中建立自定义函数准备调用程序集。代码如下:
CREATE FUNCTION dbo.Func_SAPSend
(@Msg as nvarchar(20))
RETURNS nvarchar(20)AS EXTERNAL NAME SAPSend.[MYSAPCIient.MySAPsqlSend].[send]
(4)在数据库SQL Senrer2008中定义触发器来自动调用已经写好的自定义函数,把通讯信号发送给订单管理系统。
3 订单信息自动下达模块
订单管理系统接收到SQL Server2008数据库的导人成功信号后,自动把生产订单信息通过UDP通信协议下达到各个工控机的MES中。各个工位的工控机接收订单信息后,把收到信息结果写入到数据库中,以便管理员查出订单下达的执行情况。
4 查询订单状态模块
系统在自动导入并下达订单时,不可避免出现异常,导致自动订单导人失败、订单下达失败,因此需要管理员查询订单的执行状态,并手动管理订单信息。
4.1 查询历史生产订单导入状态信息
管理员可以查询历史生产订单导入状态,订单导人状态分别为导人成功,导人失败,可以导入。导入成功:订单信息成功导入到本系统的SQLServer2008数据库。
导入失败:订单信息没有成功导人到本系统得sQL Server2008数据库。
可以导入:SAP系统根据本系统反馈的导入失败信息,修改相应的错误信息后把导入状态从导入失败改成可以导入,本系统管理员根据此状态手动导入。
单击界面上的SAP导入按钮把SAP中的订单信息显示在界面上。管理员查看订单状态,如果其中订单状态为【可以导入】,就说明此订单可以从SAP系统的Oracle数据库手动导人到本系统的后台SQLSenrer2008数据库中。
4.2 查询历史订单下达信息
管理员根据订单号查询各个工位的订单下达情况,该界面可以查询哪个工位下达成功,哪个工位下达失败。如果有下达失败的工位,选择要下达的订单信息和工位号后单击下达按钮,把订单信息重新下达到各个工控机中。下达过程中界面上实时显示订单下达状态信息。订单下达界面如图3所示。
图3 订单下达界面
4.3 查询和维护订单信息
此外此模块可以查询和维护已经导人的订单信息,包括订单号、发动机号、装配指南等信息。
5 计划调度模块
计划调度模块主要功能是通过时间和订单下达状态进行筛选订单,选定订单后调整生产订单的执行顺序。订单下达状态分别为未下达,已下达,已完成。未下达:表示生产订单信息没有下达到各个工控机当中。
已下达:表示生产订单信息已经下达到各个工控机当中。
已完成:表示已经下达的订单号正常完成生产。
当订单状态为未下达时这个订单没有下达到各个工控机只在本系统的数据库中,因此只需调数据库上的订单顺序即可,不需要计划同步到各个工控机。当订单状态为已下达时这个订单已经下达到各个工控机当中,因此调整完订单顺序后必须同步到各个工控机中。
此外此模块可以工位订单管理功能,工位订单管理是对生产订单中的每台发动机生产顺序进行管理。
6 结束语
生产订单管理是制造业信息化的重要组成部分,是提升制造企业生产管理水平和制造效率的重要途径。订单管理系统使MES系统与SAP系统进行信息交互的功能,其运行状况直接影响到两个信息系统的集成和整体运行效果。尽管本文主要以汽车发动机生产线为背景,但是其内容对其他类型的制造业MES的生产订单管理系统开发与应用也有一定的参考和借鉴作用。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文网址:http://www.toberp.com/html/consultation/1082009530.html