2 MES服务程序的具体设计
基于上述的MES的构思,我们设计了一套服务程序支持的MES,其基本架构如图2所示。其中服务程序部分是该MES的核心部分其具体的设计及讨论如下:

2.1 通信协议的设计
在本MES系统中,服务程序需要完成与下层通信模块和上层管理模块的通信,首先要考虑的必然是通信协议的选用,在计算机与计算机的网络通讯中我们采用局域网中常用的TCP/IP协议,这一层协议的选用主要与MES系统建立的硬件网络环境有关。除了网络硬件层协议的选择,在软件层也需要设计一套请求应答协议,许多软件开发者认为程序在与不同的模块间进行通信时应该采用统一的请求应答协议,并且将这些程序放在同一个程序文件中,虽然这种设计方式有利于减少程序的开发周期但是却增加了软件的后期维护难度,尤其在移植MES的部分模块时甚至会造成协议混乱而导致移植失败。
因此,我们在设计MES的服务程序的请求应答协议时把与不同模块通信的协议及程序放在相互独立的文件中以提高服务程序与其它MES模块通信的效率以及这部分代码的可读性和可维护性。例如,与底层的通信模块通信时可采用:CMDFlag +请求命令类型+CMDSplit+信息1+DataSplit+信息2+DataSplit+……+信息n+Data0ver其中CMDFIag为通信模块向服务程序请求的命令类型起始分割符,MDSplit为请求命令类型的结束分割符同时表示请求命令中具体信息的开始,请求命令中的具体信息之间以DataSplit作为分割符,最后请求命令以Data0ver为结束符。
相应的应答协议或其它MES模块与服务程序通信的请求应答协议也可以仿照这种格式来制定,需要注意的是在具体的程序设计中要注意保持命令类型的唯一性,以避免系统在解释命令类型时产生歧义,同时程序对协议进行解释时还必须具有一定的容错能力。