2023年2月1日

MES in vehicle manufacturing - Welding & Order Release

Normally vehicle manufacturing is scheduled by Work Orders.

There’s a term OTD(Order To Delivery), means the whole process from creating Sales Order to delivering product.

Based on customer request, market investigation and forecast, shop dealer create Sales Order in car maker’s sales system.

Sales system will bind the information with market strategy, then release Sales Order.

Then Sales Order is loaded into plant’s ERP system, which will check with plant calendar/machine status/material storage/purchase plan, then run MRP/APS, and create daily Work Order for it.

And then SRM system will generate component delivery request, and send it to vendors.

After vehicle is built, it will be transported to dealer.

Diagram 2.2-1 shows OTD flow:

 


Diagram 2.2-1: OTD flow


Normally for process of punching, welding, painting, and assembly, each process costs 1 day for manufacturing, and then costs a couple of days for transporting. ERP will base on Sales Order to generate Work Orders of Assembly Shop, then create Work Orders of other 3 shops accordingly.

ERP Work Orders have the vehicle data such as model type, they also show the building sequence of each day.

But in Punch Shop, because it uses batch build model, it will not follow the Work Order sequence strictly.

In Welding Shop, MES downloads ERP Work Orders, and generate daily MES Work Orders. In MES, planners can lock/freeze/re-sequence these Work Orders, so the final sequence could be different than original sequence.

After completing welding, vehicles come into Paint Shop through WBS, these vehicles can be re-sequenced according to WBS routing rules.

After complaint painting, vehicles come into Assembly Shop through PBS, based on PBS routing rules, normally vehicles will be re-sequenced based on model type, VIN numbers, etc.

Normally only Welding Shop’s Work Order sequence is highly aligned with ERP planning.

In Welding Shop, MES needs to accomplish these planning functions:

1) Download Work Orders from ERP automatically.

2) Lock, freeze, re-sequence Work Orders.

3) Validate Work Order, such as to check process readiness.

4) Send Work Orders into PLCs of main line and sub-assembly lines.

5) Broadcast Work Orders to later stations.

As showed in diagram 2.2-2:

1) MES releases Orders into stations of Front Floor, Back Floor, Front Cabinet, and SL010/SR010/SL070/SR070 of Main line.

2) In UB010 merge station, PLC will check if the components from 3 sub-assembly are matched, if so then generate VIN number for it.

3) When vehicle comes to main line, PLC will check if it matches with components from sub-assembly lines, if not then get component from buffer zone.

 


Diagram2.2-2: Order release in Welding Shop


At Work Order downloading stations, device PLC downloads Work Order data from MES, including: Sales Order, Work Order, VIN number, model type, vehicle attributes, etc. The key data will be written into RFID Tag in merging station.

As off-line buffer, normally PLC will buffer Order data of 3~10 vehicles.


MES in Vehicle Manufacturing - Punch & PMC

Building a vehicle requires lots of money. To develop a new type of vehicle, almost needs 500 million RMB for development and 2 billion RMB for manufacturing. Development cost include: model design, prototyping, process design, component design, vehicle calibration, vehicle testing, component testing. Manufacturing cost include: facility building, device buying and setup, production preparation. During manufacturing cost, device buying and setup take almost 3/4, and Punch Shop takes 35% of device cost in whole plant. Suppose one type of vehicle is very welcomed by customers, its sales number is beyond plant’s building capacity, in that case, is it possible to expand plant and buy more devices to build more vehicles? From point of view of Punch Shop, it’s very difficult. Because punch machine has very high requirement to ground flatness and stability, so it’ll take very long time to build punch facility. Besides that, punch models also need long time to build. So in order to improve plant capacity, it’s most likely to use current devices effectively as possible. Punch process includes: Unpack, get material, transfer material, positioning, feed material, cleaning, punch, test. Most processes are done by punch machine automatically, operators assist machine accordingly. So, production and devices and systems need to support devices: - Operators need to assist devices to ensure daily work continuously. - Device engineers need to maintain devices, and fix problems ASAP. - Systems need to find out any errors or alerts, and to notify engineers accordingly. So in Punch Shop, the main functions of MES is PMC. PMS is short of Production Monitoring and Control, in MES field, it’s focus on devices. PMC collects below information: 1) Devices’ running state. 2) Device abnormal information, such as alert code, error code. 3) Number counters, such as shift production counter, buffer zone counter. 4) Time counters, such as accumulated down time. 5) Devices’ key process parameters. 6) Working-in-process product information, such as serial number, material number, model type. 7) Production rate information, such as assembly time, waiting time, blocked time. 8) Line speed. Technically speaking, MES is mainly collecting device data via PLC. PLC is short of Programmable Logic Controller, is the logic layer and application interface of devices. PLC stores PMC related business data into specific Data Blocks, and then MES get data from PLC via OPC. OPC is short of OLE for Process Control, can map PLC data into OPC Server memory tags. MES communicates with OPC via OPC client or IIoT gateway. Below diagram shows PMC data flow:


Diagram 2.1-1: PMC Data Flow We can see that, after OPC collected devices data from PLC, it uses data for 2 purpose: 1) OPC sends data to SCADA Server, and then output data in real time via SCADA client. 2) OPC sends data to MES Server, archives in Database, then outputs as report. In lineside, operators and engineers are checking real time data. SCADA is short of Supervisory Control And Data Acquisition. Production department can monitor and control devices remotely, and IT uses SCADA for collecting and displaying data. Popular SCADA products include: Siemens WinCC, Rockwell FTView, GE Cimplicity. SCADA server can synchronize data from OPC server quickly, its rate frequency is 250ms~1000ms, and then SCADA client gets data from SCADA Server, and then output data into TV or LED board.


2021年5月27日

沃尔沃ANDON系统介绍

沃尔沃是知名的豪华乘用车品牌制造商,它的工厂特点是:

- 质量标准高

- 单车利润高

- 车型少

- 生产节拍慢

ANDON呼叫系统是沃尔沃的核心车间管理系统,体现了沃尔沃质量第一、零缺陷的生产管理理念。当现场出现质量问题时,ANDON系统会自动通知生产线停线,直到问题解决。


1. 业务功能

沃尔沃工厂的应用系统由3个层次组成。

第1层是核心的生产执行系统,包括:

- GOB计划执行系统,相当于其它整车厂的MES。

- ANDON呼叫管理系统,集成了PMC设备监控、ANDON呼叫、AVI车辆识别、EPS防错功能。

- ATACQ质量执行系统。

- XPS零件追溯系统。

- SJC拧紧管理系统。

- VCATS车辆配置与检测系统。

- VD设备层接口

第2层是外围的工厂系统,包括:

- ARO订单管理系统。

- OHF计划管理系统。

- BIS车辆属性配置系统。

- CMP物料计划管理系统。

- PLUS库存管理系统。

- CHIMAS物料拉动系统。

- SBS工艺节拍平衡。

- API设备管理系统。

第3层是部署在集团的系统,包括:

- HERCULES销售商系统。

- PIE车载软件系统。

- QW90质量分析系统。

ANDON系统的功能主要包括:

1) 设备监控。

ANDON系统通过与线体PLC集成,从PLC采集设备运行状态、报警信息、故障信息、计划执行情况、车辆队列、产量、停线时间等。

2) 异常呼叫。

ANDON系统通过与拉绳、按钮、设备的集成,提供人工质量呼叫、人工物料呼叫、设备自动呼叫等呼叫方式,并通过柱灯、音箱、大屏等方式通知到责任人员。现场ANDON大屏同时也集成PMC的部分关键数据。

3) 车辆识别。

ANDON系统通过与RFID阅读器的集成,获取车辆VIN号,并从GOB系统获取车辆配置信息。

4) 防错集成。

在总装车间,ANDON PLC集成了RFID阅读器、编码器、传感器,从而通过计算得到车辆在流水线上的实时位置,为拧紧、打刻、加注、涂胶、试漏等工位提供车辆VIN号、车辆属性、工艺参数信息,用于指导设备进行操作;当作业完成后,设备PLC会向ANDON PLC发送作业结果和关键数据;如果作业失败,ANDON PLC会通知线体PLC停线。


2. 架构特点

图3.4-1是沃尔沃ANDON系统的架构示意图:

 


图3.4-1 沃尔沃ANDON系统架构


架构要点:

1) 在车间现场配置ANDON PLC,作为现场控制器。

由于业务逻辑复杂、兼容程序多、代码容量大,采用西门子WINAC作为主控PLC。WINAC是特殊的工业PC,使用WINDOWS操作系统,然后安装软PLC软件,组态到网络中后,在编程和使用上和硬件PLC没有区别。

2) ANDON PLC集成了RFID阅读器、编码器、传感器、拉绳、按钮、柱灯、播放器等现场硬件设施。

3) ANDON PLC通过VD实现和线体PLC、设备PLC、ANDON服务器、GOB服务器的通信。

VD是沃尔沃自己开发的一个现场通信层,能够实现和应用系统、OPC、PLC、拧紧枪控制器等系统和设备的通信。

4) ANDON服务器驱动现场ANDON大屏的显示画面。

5) 实时通信,参与现场控制,当防错失败时,会通知线体停线。


3. 架构优点

1) 可移植性好。PMC、ANDON、AVI、EPS等相关业务模块的代码经过封装,容易移植到新的项目。

2) 硬件、网络、画面等规范一致,采购和实施周期得到控制。

3) WINAC能够通过硬盘缓存大量的数据,因此防错需要的工艺参数可以提前从应用系统获取,以减少控制系统和应用系统的耦合性。


4. 架构缺点

1) 单个项目的PLC设备多,成本高。

2) 业务逻辑复杂,难理解。

3) 冗余代码多,由于要兼容旧版本的设计,PLC程序包里包含大量的各类设备控制程序。

4) 程序逻辑复杂,最核心的呼叫处理程序,包含了188个程序段和76个外部参数,引用时非常困难。

5) 由于采用WINAC,可靠性比硬件PLC差。


福特NGAVS介绍

作为第一个将流水线技术引入汽车工厂的汽车制造商,福特一直以来非常注意自动化技术的应用,而NGAVS等系统,就充分利用了IT相关技术,实现了业务系统和控制系统的高度集成。


1. 业务功能

NGAVS即Next Generation Automatic Vehicle Scheduling,即下一代自动车辆调度系统。

NGAVS主要实现以下业务功能:

1) 焊装车间计划的下发。系统自动将计划下发给发动机舱、前地板、后地板、左侧围、右侧围的线体PLC,PLC根据NGAVS队列执行抓料、焊接等作业。

2) 车型识别。PLC从RFID TAG读取VIN号,然后从NGAVS查询得到对应的车型信息。

3) 过站记录。PLC完成装配作业后,将VIN号和过站标识发送给NGAVS,NGAVS处理后转发给ERP系统(用于物料结算)和物流系统(用于物料拉动)。

4) 防错集成。在总装车间装配线的线头安装RFID阅读器,识别车辆后由NGAVS转发给防错系统,用于计算流水线上车辆的队列和实时位置,作为防错系统的计算依据。

5) 质量检查站集成。在质量检查站的前、后工位安装RFID站,NGAVS查询哪些车辆已经通过前一站尚未通过后一站,把符合条件的车辆队列转发给质量检查站,这样工人无需手动扫描VIN号就可以识别车辆。

6) 拉入拉出。通常在质量检查站后一站紧接着设置拉入拉出站。拉出是把存在质量缺陷或特殊标记的车辆从生产线上移除,用于判定、维修,从而不影响主线的正常作业。拉入是指将已离线的车辆,经维修等操作后重新送回主线。拉入拉出操作会更新主线的车辆队列,从而影响分装线的零件配套和物料的配送需求。

7) 质量门。在焊、涂、总三个车间的车辆移交点设置质量门,并通过PLC和升降梯集成。如在焊装车间,NGAVS通过RFID识别车辆,并查询得到其质量状态;对于正常车辆,通知PLC将其通过升降梯送入WBS;对于异常车辆,通知PLC将其送入维修区。

8) 安全门。在总装车间出口设置安全门,并通过和道闸集成,根据车辆的VIN号,查询得到车辆的质量状态、工单状态等,从而判断是否允许车辆进入商品车停车场、工艺停车场、路试区域。

由于历史原因,福特的工厂制造系统非常多,每个系统都有特定的应用领域,如:

- FIS, Factory Information System工厂信息系统,相当于其它整车厂的PMC系统,主要通过采取现场PLC数据,来实现对生产现场的监控,并通过车间大屏进行展示。

- EP, Error Proofing防错系统,提供拧紧防错、料架防错、加注涂胶打刻防错等。

- CDC II, Component Data Collection II零件数据采集系统,即通过扫描枪来采集零件的原始供应商序列号信息,主要用于追溯和召回。

- QLS VO, Quality Leadership System for Vehicle Operation整车质量领先系统,通过缺陷管理和分析来提升质量控制。

- SKS,Sequence and Kitting System序列和配套系统,用于物料准备。

- SMART,Synchronous Material Replenishment Trigger同步物料消耗触发系统,用于计算物料的消耗和拉动。

- eCATS, Electronic Customer Acceptance Test System电子化客户接收检验系统,用于总装车辆的自动化检测,如四轮定位、刹车、灯光、尾气等。

这其中,NGAVS和EP、QLS VO、SMART、eCATS都有集成关系。


2. 架构特点

图3.3-1是NGAVS的架构示意图:

 


图3.3-1 福特NGAVS系统架构


架构要点:

1) 由线体PLC集成RFID阅读器和传感器,并通过PN/PN Coupler和IT PLC集成。IT PLC作为NGAVS的现场控制器。

2) IT PLC通过PLC网关实现信息格式转换,并通过MQ服务器和NGAVS应用服务器通信。PLC网关采用了西门子工业PC,并安装ILS DeviceWise软件,此软件能够自动将PLC信息转换成JAVA消息队列。

3) 应用服务器用于业务逻辑处理、外部系统接口通信、触发装车单打印等。

4) 客户端主要用于配置和查询处理。


3. 架构优点

1) 由于采用了IT PLC,现场调度的核心代码部署在IT PLC上,对线体PLC的逻辑影响较小,实施风险小。

2) 由于通过PN/PN Coupler进行IT PLC和线体PLC的通信,通信效率高并且实时,数据安全有保障。

3) 无论系统应用层还是PLC执行层都采用了标准模块、标准代码,工厂实施时订制化工作量小,实施难度得到控制。


4. 架构缺点

1) 由于大量采用IT PLC和PN/PN Coupler,硬件成本高。

2) 相对于主流OPC Server,ILS DeviceWise是一个较新的软件产品,存在一定的技术风险。

3) 由于RFID不缓存数据,线体PLC要获取车型信息必须和NGAVS实时集成,形成紧耦合设计,对系统可用性要求高。


康明斯NGMES介绍

康明斯是全球知名的柴油发动机制造商,NGMES是其全球统一实施的MES系统。

NGMES基于Apriso FlexNet平台开发,由制造工程部门的业务专家、控制专家,和IT部门的技术专家进行联合设计,由Apriso公司顾问指导,由Tata公司技术人员进行开发。

NGMES基于康明斯发动机制造流程设计,由于采用了通用化设计,可配置程序较高,因此也适用于零部件制造工厂。


1. 业务功能

NGMES不包含机加车间业务,覆盖了缸盖分装线、发动机内装线、外装线、检测线的整体业务。

其业务模块包含计划管理、工艺管理、零件追溯、料架防错、拧紧防错、设备防错、质量管理、质量门、装配防呆等。

计划模块能够自动接收ERP工单,并生成序列号下发给上线工位PLC。

工艺管理模块提供工艺BOM配置功能,提供界面将物料BOM进一步拆分到装配工位、配料工位、拧紧工位、料架位置、装配顺序、图片地址等,为防呆防错提供依据。

零件追溯模块提供序列号、批次号追溯形式,可实时配置。

料架防错通过与PLC集成,在发动机到达时,通过发动机序列号自动识别零件在料架上的位置,并通过料架灯通知工人,工人在捡料后料架灯自动熄灭,并自动判断防错是否完成。

拧紧防错通过与PLC集成,在发动机到达时,通过发动机序列号自动识别拧紧枪号、拧紧次数,并通过拧紧枪控制器通知工人,在拧紧作业完成后,自动采集拧紧数据。

设备防错通过与PLC集成,自动向设备下发工艺参数,并收集操作结果数据。

质量模块提供了质量报警、问题检查、缺陷管理、短装管理、质量评审、维修管理、报废管理等功能。

质量门工位会检查质量状态是否合格、是否漏工位、是否漏装多装、是否检测不合格、是否评审不通过、是否有缺陷未清除。

工人使用的NGMES客户端界面通过与PLC集成,当发动机到达时,自动显示发动机的产品信息和质量信息,以及要装配的零件顺序、要扫描的零件清单、关键零件图片、问题清单,从而实现装配防呆的效果。

此外,NGMES通过消息队列服务器从ERP接收工单,从PLM接收物料BOM。

图3.2-1是其业务架构示意图:

 


图3.2-1 康明斯NGMES业务架构


2. 架构特点

如图3.2-1所示,NGMES的系统架构非常典型:

 


图3.2-2 康明斯NGMES系统架构


NGMES基于Apriso FlexNet平台开发,其核心模块是Process Designer,用于定义核心业务逻辑和流程,同时也是一个集成开发和调试环境,能够直接调用数据库函数和存储过程,能够直接和OPC通信。

为提高运算效率,有大量业务逻辑直接写在数据库里,然后通过Process Designer调用,然后进行类型转换、流程跳转。

为简化构架,应用服务器集成了DB Client、OPC Client、MQ Client、打印机服务器等功能。

由于客户端采用B/S架构,因此采用网络服务器实现负载均衡。由于Apriso FlexNet基于.Net框架,因此支持本地JS脚本和DLL调用,如人工装配工位的OPC Client直接部署在客户端上,从而实现了OPC通信的分布式架构。

NGMES的重大特点是高度可配置和界面一致性,大部分装配工位运行的是同一个程序,程序界面根据工艺配置自动生成,根据PLC信号自动刷新页面和进行握手。


3. 架构优点

由于界面一致性高,操作工上手非常容易,可使用相同版本的培训文件,对所有工厂的同户进行集中培训。

由于基于.Net框架开发,组件工具多,界面友好,再搭配大尺寸触摸屏,工人操作方便,形象很高大上。

由于所有工厂采用相同的程序包,可在项目实施前搭建演示和培训系统。

由于高度可配置,所有工厂80%的业务功能使用相同的核心代码,只有20%的订制开发,因此实施周期短,通常一个大型项目只要半年的实施时间。

由于所有工厂使用相同的代码,可在全球共享设计、实施、运维团队。


4. 架构缺点

由于可配置性高,这就要求核心模块要考虑各种各样的应用场景,如装配工位界面有考虑:有没有追溯件(如有是什么规则)、有没有料架防错、有没有拧紧防错、有没有质量检查、有没有质量报警、有没有零件图片、有没有短装检查,这样核心程序的流程跳转逻辑就变得非常复杂,非常难以理解,当现场出现问题时难以迅速找到症结。

同样的原因,造成OPC侦听进程较多,拖慢了OPC响应速度。

系统逻辑部分部署在Process Designer,部分部署在数据库中,这样提高了应用服务器的响应速度,减少了应用服务器与数据库之间的I/O,但是运维人员对模块的设计更难以理解。



ANDON背后的管理思想

在很多现代化生产制造企业内,ANDON系统是一个非常重要的管理子系统,具体业务分析可参考本人的文章《MES在汽车制造中的应用之业务篇(13) -- 安灯呼叫》。

本文从企业管理的角度出发,论述ANDON背后所体现的企业管理思想。

评价工厂综合能力的一个重要指标是生产效率,即工厂在单位时间内产出的产品数量,如汽车主机厂最重要的指标JPH是每小时产出的车辆数量。

那么要提高生产效率,主要有两种方式。

方式一,提高生产能力。方法有:通过工艺改进,改进设备的利用率;通过培训提高工人的技能;通过生产线节拍平衡,提高工厂的整体效率。

方式二,减少生产浪费。方法有:通过控制质量,减少产出不良品;通过班组长和工艺工程师支持,减少工人因技能不足造成的时间浪费;通过设备工程师支持,减少设备异常造成的时间浪费;通过物流部门支持,减少物料不足造成的时间浪费。

ANDON又叫求援系统,主要是通过获取援助来减少生产现场的时间浪费。

我们可以把工人和设备看成一线生产作业单元,因为工人和设备的作业时间、作业效率决定了工厂的整体作业时间、作业效率;而质量、工艺、设备、物流等部门是二线生产作业单元,这些部门通过对工人和设备的援助来间接地提升工厂的整体效率。

我们可以用军事术语做一个类比。

如果把一个生产任务当成一个作战任务,那么计划部好比参谋部,提前做好作战计划;物流部好比后勤部,兵马未动,粮草先行;生产经理好比前线指挥,负责执行作战计划;工人和设备好比兵和马,奋战厮杀推进阵地;班组长好比基层军官,协调指挥基层作战单元;设备部好比装备部门,兵有甲,兵有鞍,射手有箭,如此才有士气;质量部门好比督战队,确保作战原则。

有了这个类比之后,我们可以把ANDON求援这样翻译。

向班组长求援:班长,有人受伤,请求援助!

向工艺工程师求援:我部有损,不敌敌军,请求中军援助!

向质量工程师求援:兵心混乱,请求督战队弹压!

向装备部门求援:盔甲有损,请速修复!

向物料部门求援:粮草不足,速速支援!


Thingworx查看PDF和图片的方法

Thingworx提供了一个File Upload widget用于上传文件,文件存储在ThingworxStorage\repository目录。

我们可以利用Web Frame以实现对常用文件格式(PDF/JPG/BMP/PNG)的在线查看。

首先我们要理解Web Frame的原理,它相当于一个浏览器内置iFrame。

如果在一个Mashup内部使用Web Frame,那么Mashup对应的网页相当于主网页,而Web Frame调用的网页相当于一个内置网页,这两个网页有各自独立的进程。


下面介绍详细的配置和调用方法。

1. 设置Tomcat

编辑Tomcat 8.5\webapps\Thingworx\WEB-INF\web.xml,启用ClickjackFilterSameOrigin设置。

这部分的设置允许同一个域之间的网页进行相互调用。


2. 配置Thingworx PlatformSubsystem

Allow Request Method Switch = True

Filter Content Type = False


3. Web Frame URL调用格式:

https://<host:port>/Thingworx/FileRepositoryDownloader?download-repository=<YourThingWorxRepository>&directRender=true&download-path=/your_pdf.pdf

此处须注意:

1) Mashup和Web Frame的协议http/https必须保持一致,否则会被浏览器拦截。

2) download-path是文件所在文件夹的详细路径,如果有子目录,则须包含各级子目录。

3) 可以自己编写JavaScript Service,根据各项参数生成最终URL,然后绑定给Web Frame URL。

谈谈MES和ERP的差异

经常有网友问我MES和ERP的异同点,在这里我就谈谈个人的一些体会吧。

现代企业往往是哑铃型企业,即研发和销售两头大,制造过程中间小。

研发定义了产品的特点,销售将产品交付给最终用户,而制造过程将产品原型转变成实物。

从系统的角度来看,研发主要用PLM系统,销售主要用ERP系统,制造主要用ERP(计划、物流、采购模块)、MES、LES(物流执行)系统。

PLM和ERP针对的对象是一种/一类产品,如单价指的是此类产品在某段时间内的平均价格。

而MES不仅定义了某类产品的工艺过程,而且还要追溯到单件产品的生产过程,这是为什么呢?

前面说过,制造是将产品从原型转变成实物的过程,这个过程受到了人、机、料、法、环的限制。

人的方面,每个工人的知识、能力、熟练程度、身体素质都会存在差异,因此同样的生产过程,在不同的人操作时都会带来差异,从而影响产品的最终质量以及车间的生产率。

机器设备方面,也有品牌、控制系统、接口、使用时间、保养效果方面的差异,甚至同一批购入的机器也会有差异。

材料方面,有供应商、批次的差异,因此很多MES都有模块进行材料批次的追溯。

规范方面,MES可能包含一些动态的过程,如A工位检查间隙,B工位选择垫片,B就依赖于A的实际结果。

环境方面,有一些作业对环境因素(如温度、湿度)非常敏感,工艺过程需要将环境因素作为输入参数。

因此MES不仅要面对这些差异,而且要将这些差异进行量化管理。

另一方面,从企业的角度来说,PLM和ERP都非常强调产品的稳定,而MES则存在更多的变化和调整。

这是因为PLM和ERP管理的都是一种/一类产品。在PLM中如果产品有较大的变化,通常我们会创建新产品进行区分。而在ERP中如果产品有较大的变化,其在计划、采购等方面都会带来巨大的管理成本,因此ERP非常强调产品的稳定。

针对制造过程的考核指标主要是:质量、生产率、成本,这三者都要求生产部门进行持续地优化,而优化就意味着差异化、改变。

如质量优化的方法,就有改进工艺过程、提高检验标准。

生产率优化的方法,就有人、机、料、法、环的改进。

成本的降低,就意味着减少不必要的浪费和损耗,通常也包含工艺过程的改进。

因此在制造过程和MES中,差异化是不可避免的:不仅没有所有行业通用的解决方法,同一行业也会有相当多的差异,甚至同一企业内部、同一工厂内部,针对相同产品也要进行差异化管理。

这就是MES相较于ERP更为百花齐放的原因,也是大的MES系统通常自带集成开发工具,以满足用户差异化开发的原因。



SQL Server优化笔记 – 索引部分

1. 聚集索引

通俗地来说,聚集索引是表在新增数据时的排序方式。如字典以字母排序,小说以章节排序,历史书以区域排序等。

很多人以自增的ID主键作为表的聚集索引,这种定义能够满足唯一性要求,也不会增加索引碎片。

但是除了对表进行周期性处理外,在业务上我们很少把ID作为WHERE的条件,因为自增ID很少有业务含义。

相反,我们应该思考,在查询时,我们会利用哪个WHERE条件,把要查询的数据从一个非常大的数据集筛选出来。

例如,我们有一个OrderInfo表,存储了10年的工单数据,表里有ID(自增变量)、OrderNumber(工单号)、ScheduleDate(计划时间)、CreatedOn(创建时间)等字段。

在日常业务上我们通常只查询近3个月创建的工单,那么我们可以联合CreatedOn和ID这2个字段创建聚集索引(ID字段保证唯一性),在查询时我们总是带上WHERE CreatedOn > GETDATE() – 90这个条件,那么我们可以很快通过聚集索引定位到一个非常小的数据集。


2. 非索引列的定位

同样以OrderInfo表为例,假如我们为ScheduleDate创建非聚集索引。

如运行以下SQL,以获取计划时间为最近一周的数据:

SELECT

OrderNumber,

ScheduleDate

FROM OrderInfo

WHERE CreatedOn > GETDATE() – 90

AND (ScheduleDate BETWEEN GETDATE() AND GETDATE() + 7)

ORDER BY ScheduleDate;

我们可以看到用于筛选的2个字段CreatedOn和ScheduleDate都已经建立了索引,因此筛选速度很快。

但是在输出的2个字段中,ScheduleDate已有索引,而OrderNumber却没有索引,那么数据库是怎么定位的呢。

数据库在创建索引的时候,除了索引引用的字段外,还会包含一个隐藏的字段,即表的原始行号ROWID。

在此例中,ScheduleDate通过索引查找定位(Index Seek),同时得到ROWID,再通过ROWID得到OrderNumber的值(Cluster Index Scan)。

如果表的数据量大,那么Cluster Index Scan要扫描的记录数非常多,也要尽可能避免,改进的方式是针对要SELECT输出的字段都加上索引。

也就是说,不仅是WHERE字段、GROUP BY字段、ORDER字段要建立索引,SELECT字段也要建立索引,而且常用的查询要尽可能建立多个字段复合索引。


3. 类型转换

类型转换会使索引失效。这是很多人会犯的错误。

例如:

1) 日期和字符串转换

错误:WHERE CONVERT(VARCHAR, OrderDate, 111) >= '2011/06/01'

正确:WHERE OrderDate >= CONVERT(DATE, '2011/06/01', 111)


2) 大小写转换

错误:WHERE UPPER(FirstName) = 'ALICE'

正确:新建一字段并建立索引,在新增数据时,将UPPER(FirstName)值写入此字段,然后将此字段用于WHERE条件。


3) 字符串LIKE操作

错误:WHERE SalesOrderNumber LIKE 'SO43%'

正确的做法是从要比较的字段中拆出一个字段,在此字段中建立索引,然后在此字段中建立WHERE比较,符号为=或<>。


4) 数值运算

错误:WHERE UnitPrice * Qty > 10000

正确:创建计算字段ALTER TABLE ADD COLUMN TotalPrice AS UnitPrice * Qty,在此字段上建立索引。


4. 视图索引

视图上也可以建立索引,但是创建视图时必须包含WITH SCHEMABINDING。


机加工刀具的管理流程和系统设计

在机加工制造过程中,刀具是影响产品最终质量的重要因素,本文就谈谈刀具相关的管理流程和系统设计。

一个典型的制造企业是由研发和销售驱动的,研发定义了一款产品,来自销售部门的订单转化成生产工单,触发了将产品变成最终实体的制造过程。

工单包含了产品的物料BOM信息,即需要投入哪些物料。

在制造过程中,我们需要将物料BOM细化到工序、工位。如某产品物料BOM包含4颗螺栓A,在工位1由工人放置,在工位2预拧紧,在工位3终拧紧。我们可以看到多出了额外的信息,从BOM的角度来看,工位1:数量4,工位2:数量0,工位3:数量0。此类BOM属于工艺BOM的范围,在这里我们称之为1类工艺BOM,它的特点是各物料的总数和MBOM是一致的。

而在制造的过程中,还需要配合一些MBOM之外的设备及材料,如刀具、夹具、量具、试验台等。这些设备的物料或准备参数也是与产品相关的,但是不作为最终产品的一部分销售,因此不在MBOM中体现,在这里我们把相关的BOM称为2类工艺BOM。

产品的刀具BOM就是一个典型的2类工艺BOM。当机床需要更换加工产品时,往往我们需要更换及准备相应的刀具。

在管理刀具时,我们可以在2个层面进行管理:刀具组件和刀具零件。

刀具以组件的形式进行加工作业,但在采购和存储时也可以以零件的形式进行管理,因为共用件非常多,以零件形式运营可以减少库存和运营费用。

本文先以组件的形式进行介绍,之后再补充零件相关信息。

 



一个刀具的生命周期包括:买入、测量、使用、维修、报废等状态。

测量:由于刀具在使用后,刀头和加工件接触后会消耗一小部分,在物理形态上会有细微的变化,因而我们需要使用专用设备进行测量,具体数据会作为补偿值录入机床,以便在下次加工时得到所需的精度。

维修:刀头在使用一定的时间后,其锐度会降低,因此需要修刀,以恢复其锐度,以满足加工要求。

报废:刀具或刀头有一定的使用寿命,达到一定的加工时间后,刀具的强度降低,不能满足加工要求,否则会造成断刀,甚至进而造成加工件报废。

那么针对这些流程,假如我们需要设计一个刀具管理运营系统,需要考虑哪些因素呢?

首先看测量。测量设备(对刀仪)是精密仪器,对稳定性要求高,一般和机床不在同一个物理位置。测量设备输出的数据,需要录入机床HMI。因此有一个数据传输的需求。这个过程如果手工做的话,效率很低,也容易出错。

一些测量设备如Zoller支持通过网络传输数据,但是由于机床支持的传输协议、数据格式有一定的限制,且不同厂家的机床之间没有统一的标准,因此此项方法有一定的局域性,但是如果一个机加车间有大量的同型号机床、对刀仪,则可以联合供应商一起开发,这样做的效率是最高的。

还有一种方式是通过条码(一维码或二维码)来传输数据。我们可以在对刀仪输出测量报告时生成相关的条码,然后在机床HMI上扫描条码以录入数据,这样也可以减小数据输入错误的概率。

另有一种方式是通过RFID标签,详见下文。

维修可通过经验或测量进行判定。

报废或者说刀具使用寿命的判定非常重要,也有不同的管理方法。

一般来说,供应商在刀具出厂时,会说明其使用寿命。在加工时,我们需要对刀具的实际使用时间进行累加,当累加值大于使用寿命时,则需将刀具报废。

在设计系统时,我们尤其要考虑:实际使用时间的数据存储方式、累加的方法。

如果刀具固定安装在某机床上就比较简单了,我们可以定义一个规则,为每把刀具建立编号,并在机床系统里定义对应的系统变量。我们可以在程序中编写指令,当对应的加工程序完成时,自动将刀具变量累加。

如果刀具没有固定安装在某机床上,将必须能够让机床识别刀具的编号,此外需有一种可靠的方式存储其实际使用时间并且能够被机床识别。考虑到机床的工作环境,使用RFID标签是一种不错的选择。如巴鲁夫Balluff提供螺钉形式的RFID标签,安装在刀柄的一侧,我们可以在对刀仪电脑、机床电脑上安装RFID读写器,从而实现机床与对刀仪之间的数据传输,并且持续记录刀具的设定使用寿命和实际使用时间。

 


接下来我们再看一个更加精益的流程:综合刀具组件和刀具零件的方式进行刀具管理,即以刀具组件的形式进行测量和加工,但是以刀具零件的形式进行采购、存储、修理、报废。

从下图我们可以看到,一个刀具组件由以下零件组成:刀柄(Holder/Arm)、刀面(Face)、刀头(Insert/Cutter)。刀头起到实际上的加工作用,需要固定安装到刀面上,然后结合刀柄安装到机床上。这其中,刀面和刀柄都是非消耗件,只有刀头是消耗件。而且相同的零件可以被用到不同的刀具组件上。采用零件的形式进行管理,可以增加刀具的利用率,减少刀具的采购成本。

当刀具库房接到一个新工单时,需要根据工单展开得到刀具组件清单,并且进一步得到刀具零件清单,这里需要做2次BOM展开。此次,还需要将刀具零件组装成组件,然后将库房位置转移到机床。这里的操作与物流配送系统的Kitting及移库操作非常相似。