基于达索系统3DEXPERIENCE平台厂房电气设计端到端解决方案概览
在科技日新月异的当下,我们身旁的一切无时无刻不在发生着变化。大数据和高级分析、机器人和自动化、人工智能和虚拟现实,这些技术的融合及发展成熟,催生出了工业4.0。制造企业面临着机遇和挑战,达索系统的DELMIA Apriso为企业转型提供了良好的解决方案,它是一个全球制造平台,具有高柔性、高效率的流程设计,易于配置的多系统集成接口,内置了丰富的标准BC及开发控件,开箱即用的功能可以通过GPM包在各个工厂导入使用。
技术架构如下:
工欲善其事必先利其器。Process Builder是低代码平台,通过项目导入,配置数据库及SAP连接,即可实现系统登录(可配置账号密码或单点登录)。登录进系统后,进行主数据配置,主数据是生产、质量、仓储、设备、人力劳资五大功能的基础数据,包括组织结构(工厂、部门、产线、工作中心、设备)、角色维护、雇员维护、权限维护、产品维护、打印机等维护。定制化开发过程使用BPM可视化界面,并且可以调用标准BC简化工作。Process Builder中的大部分功能都包含了数据配置和定制化开发两项工作,下面分别以数据采集、成品报工两个功能做详细论述。
数据采集是MES系统最基础,也是最重要的一个功能。项目实施过程往往把数据采集作为首要工作来做,博格华纳是通过PLC-Connect(博格华纳自建自动化产线通讯系统)将产线设备的PLC数据转化成结构化数据发送给MES。
接口开发首先需要完成雇员、设备、产线、产品、工作中心等主数据的配置,由于这些数据都是动态维护的,可以满足用户日后自主改扩线的需求。登录DELMIA Apriso Desktop Client,在查找屏幕中输入“雇员维护”,打开雇员列表,列表中可以增、删、改、查操作,具体维护明细如下图:
其他主数据都是按照这个方式进行配置。
接口定制化开发没有用户页面,都是后台的处理逻辑,Process Builder的流程处理基于BPM框架,通过可视化的箭线连接各个节点完成业务逻辑处理。
外形上是不是有点与当年火遍一时的微软workflow产品相似,功能却要比workflow强大的多。开发流程就与平时绘制流程图一样,所见即所得。在以后发生变更处理时,只要在两个节点之间新增或移除节点,实现快速响应需求的变更。这也是Apriso产品最具亮点、最具吸引力的地方。下面是过站的部分处理逻辑:
流程中的Cycle开始和结束、物料消耗、质量数据上传都包含一个子流程,业务逻辑复杂,处理速度慢,而这些操作不需要立即返回结果,把它们设置为异步操作。通过异步的设置,提高了接口并发处理数据的能力。
接口开发中使用了大量标准Business Component,以提高系统的通用扩展性。Business Component是管理单个业务概念的功能单元。业务逻辑封装在实体中,可以直接集成到流程或标准操作中。一个BC组件包括用途和描述、参数信息、验证、受影响的数据库表及列四部分内容。使用时,从工具箱拖拽一个BusinessComponent组件到操作中,会立即弹出一个可供筛选的BC下拉列表,选中需要的组件,标题会自动使用BC名称生成,也可以自定义修改。
GetSequences业务组件的目的是为任何需要系统生成的字母或数字范围的地方获取序列号。它用于生成一个唯一的序列名称,然后将其传递给函数,根据需要可以添加前缀,后缀或函数应用等选项,返回范围内的下一个序列。在返回范围内的下一个序列之前,将验证SEQUENCE_表中是否存在记录。找不到记录,则返回报错信息。
CreateSerial业务组件的目的是创建一个可以在应用程序中使用的SerialNo。创建的序列号既可以用于生产,也可以用于仓库。它将ProductID和序列号组合,生成SERIAL_NO表的一条记录。在插入SERIAL_NO表之前,将验证产品是否存在,并且产品是否被串行跟踪。如果是批量跟踪,则提供并验证批次。还会确认生成的序列号是否存在。
ConvertToUTCTime方法可以实现本地时间转换成UTC时间,只要传入需要转换的时间,时区默认,就可以输出UTC时间。系统之间存在时区差异,转换UTC存储后,系统数据实现了全球化。
其他的BC还有绑定和解绑托盘,解绑序列号,扣减库存,获取机器设备速度和状态等。在使用BC一定要先查看BC说明文档,文档既可以精确查找,也可以按照类型查找不同分类的BC。只有清楚了解BC功能,系统校验逻辑和处理逻辑,以及影响的数据库表,才能事半功倍。
每个业务组件至少影响一个数据库表,业务组件完全依赖数据模型。使用业务组件的前提需要对数据库非常熟悉。Apriso官方提供了数据库文档资料,文档中可以按照类别查找相关表,也可以精确搜索。
每个业务表都包含表的用途说明,列描述,状态值描述,主外键,索引等信息。通过表列中的最后Links可以查看表之间的关系,关联表时以这些列作为关联条件。每个数据库表都会有一部分相同的列:LASTUPDATEON、LASTUPDATEDBY、CREATEDON、CREATEDBY用于显示记录是由谁在什么时间创建或更新的列,时间在插入时会以UTC存储;ACTIVE用于标志记录是否处于活动状态,在做删除操作时不用做物理删除;ROWVERSIONSTAMP记录当前的版本,用于并发验证;TextID用于链接到Text表,实现表中数据的转义显示。
成品报工是将产成品扫码装箱,将结果同步到SAP,并打印标签转运到仓库准备发货的过程。
成品报工主要有产品截码规则、报工台、打印机等的配置。登录DELMIA Apriso Desktop Client,在查找屏幕中输入“成品报工校验规则维护”,具体配置截图如下:
点击新增按钮,增加一个空白行,输入成品编号,序列号格式(X表示任意一位字符,N表示任意一位数字),序列号长度,截码标记符,截取长度,截取开始位,截取结束位。
成品报工需要有生产操作员的交互页面,生产操作员通过选择工单、产线、报工工位,打印机。系统自动检索出该产品的最大装箱数,已报工数。当扫码达到最大包装数,则系统将新生成的HU连同报工信息同步到SAP系统,SAP系统将处理结果返回到MES系统,MES系统如果收到成功信息,则打印出标签,现场生产操作员封箱发给仓库准备发货。
先创建一个框架,划分成三部分,上面是输入区控件有下拉框、文本框;下面等分成左右两块的Grid控件,左面是扫描枪扫入的序列号列表,右边是满箱自动提交或手动触发的SAP返回信息列表。
文本框和下拉框的标题需要定义成数据字典,数据字典可以实现多语言显示功能,在不同的语言设置下,显示字典中维护的内容。以后需要修改标题,不需要再修改代码发布程序,只要登录DELMIA Apriso Desktop Client,在查找屏幕中输入“字典翻译”,搜索需要修改的标题项,修改在不同语言环境下需要显示的内容。如下图,客户端在中文环境下运行页面,显示“生产订单号”;客户端在英文环境下运行页面,则显示“WipOrderNo”。
下拉列表的内容值定义成系统参数,系统参数可以是常量,静态列表,也可以是一个查询SQL,动态从数据库表中取值。以后需要修改下拉列表值,同样不需要再修改代码发布程序,只要登录DELMIA Apriso Desktop Client,在查找屏幕中输入“系统参数”,搜索需要修改的参数项,修改其中对应值,重新打开客户端页面,就可以看到新维护的值。
下面的列表使用的是grid控件,在工具箱中拖拽Business Controls在操作中,或直接复制链接PortalGrid,新生成一个列表。Process Builder提供了丰富的工具箱控件,在流程设计中可以直接拖拽使用。
Grid包含两部分,运行时的显示,后端的配置。配置页有三个标签,数据查询、属性、权限设置。在查询中输入SQL语句,点击Execute按钮,下面列表显示的内容就是要在页面中加载的内容。属性中可以对整个表格设置标题,样式等;还可以对每一列做具体显示设置,是否显示,显示宽度,显示格式,是否变色等;表格上面可以设置按钮列,按钮操作的执行事件可以是同步也可以是异步的。在权限设置中,可以按用户角色设置按钮的是否显示。
前端页面中的序列号是通过扫码枪输入,扫码速度特别快。这个功能很容易出现两个问题:第一个页面扫码输入框没有反应,扫不进来序列号;第二个丢码问题。这两个问题的根本原因是处理速度慢,实际业务场景是每个序列号都需要经过截码,跨不同数据库做数据规则校验,达到条件还需要与SAP系统接口同步,最终结果输出打印机。在做性能优化基础上,最好的处理方式是做异步提交,每扫一个序列号异步调用后端一个操作。因为现场操作员并不关心每个序列号处理的返回结果,扫码过程并不看电脑屏幕,将一个批次全部扫完,才查看所有件的扫码结果,这个实际的业务操作完全符合每次扫码的异步提交。
异步操作是通过HTML Layout Editor实现,这个面板中可以通过编写html生成页面,JavaScript面板中编写JS事件,CSS面板中设置控件的样式。Apriso中的控件不能通过ID获取,只能通过Class获取。
丢码问题是比较普遍的问题,事实上有不少同业者被这个问题困扰,因做成了异步的处理方式,很难实现代码跟踪,也就不知道问题出现在哪里。这个问题通过分析后端的操作,在可能出现问题的节点处增加日志输出,然后分析日志,其结果也就与调试模式下拥有同样的效果,整个操作的处理步骤由此清晰可见。Apriso中的所有操作都是事务的,这样能有效地保证数据库表中数据的一致性,所以就会有明明有插入表的操作,而表中没有新增数据,这是出现了异常错误,导致整个提交做了事务的回滚。
与SAP系统的握手是一个通用模块开发,Apriso内置封装了SAP BC功能,只需要配置好BC连接凭证就可以与SAP BC通过通用xml格式做数据交互。两个系统都在实时监控SAP BC的一个叫IDOC的容器,只要侦听到新文件存入,就触发相应的操作,将对方系统字段根据提前配置好的Mapping文件,映射成本系统所需要的字段,实现两个系统的快速交互,整个交互过程的性能表现确实是很好的。成品报工是由MES系统发起,将新的HU和工单等信息输出xml文件,Apriso的相应文件目录下要提前将xml文件转换成XSD文件、XLST文件和MFD文件。这样就将MES系统输出的xml文件转换成了提前约定好的SAP系统所需要的文件,存入到IDOC中。SAP系统接收到文件做数据处理后,将处理结果以同样方式输出到IDOC,MES系统监控到文件立即调用后端的指定操作,将数据做序列化处理,并以结构化数据存储。这里推荐三个工具,xmlLinguist(把CSV,DAT等平文件,转换为自定义结构的XML文件。)、XMLSpy(把CSV,DAT等平文件,转换为自定义结构的XML文件。)、MapForce(根据不同格式XML文件的定义文件(XSD)作结构转换的工具,XSD源文件与目标文件的字段做映射。)。经过实践证明,如果不是特别熟练,手动创建这些文件还是比较繁琐的,而利用工具会使工作简化从而提升效率,也减少了错误的发生。
总结
低代码思想已经有近20多年的发展历程,早期出现过以易语言为代表的开发语言工具变革,经过大量的业务和技术积累,封装出了许多BC组件,后期逐渐发展为产品化平台。Apriso Process Builder无疑是一款比较成熟的产品,为企业信息化建设提供良好的解决方案,从系统的考量标准(健壮性、可扩展性、可维护性)来看,它满足所有技术指标,并在后期可持续开发上表现尤为突出。
产品的成长一定要有一个迭代过程,Apriso Process Builder流程是事务的,在异步并发情况下会出现锁表、存储表主键冲突等问题,可以通过异常处理机制规避事务回滚。如果能将是否执行事务做成可选项,应该会更便于开发操作。总体上Apriso Process Builder优势是明显的,我们期待它越来越完善,越来越好,能够助力中国制造业高质量可持续发展。