2018年3月29日

MES与PLC握手的几种方式


  
在汽车制造行业,MES与设备层有深入的集成,而PLC集成是最主流的形式。
本文主要介绍MESPLC集成时的几种握手方式及特点。

方式1:定期抓取数据
某些设备的关键工艺参数(如变速器轴齿热处理炉的温度)非常重要,需要定期抓取以生成实时曲线,及用于长期追溯分析。
这些工艺参数通常都是模拟量,数值始终不停地变化。
通常我们可以通过OPC软件读取这些数据,经过精度处理,然后定期写入实时数据库中。
这些数据的特点是:读取频率高,数据变化小,因此存入数据库时会存在大量重复的记录,而实时数据库提供数据压缩的功能,特别适合此类数据的存储。

方式2:基于条件触发
有许多工艺参数(如螺栓的拧紧值)的收集,主要是用于事后的质量追溯分析的,通常我们会定义一个触发信号通知MES读取。
比如发动机在某工位完成物理装配作业后,PLC会把关键的工艺参数写入数据交换区,然后给DATA_READY信号置位。
MES会每隔1秒扫描监听DATA_READY信号,当此信号处于高位时,则读取数据交换区的质量追溯数据。
可参考下图:


具体握手过程为:
1)       发动机完成某个装配步骤,PLC写入参数1
2)       发动机完成某个装配步骤,PLC写入参数2
3)       发动机完成所有物理装配作业,PLCDATA_READY置位。MES读取参数1、参数2
4)       发动机准备离开当前工位,PLC将所有数据复位。

方式3:请求-响应机制,1次握手
这种方式和IT系统的MQ/WEB SERVICE等消息处理机制非常类似。
如发动机上线工位,MESPLC下发工单,过程可参考下图:

具体握手过程为:
1)       PLCPLC_MSG写入请求数据,如工位,同时将REQUEST_SENT置位。
2)       MES扫描到REQUEST_SENT,读取PLC_MSG,然后生成工单数据,并写入MES_MSG,同时将RESPONSE_SENT置位。
3)       PLC扫描RESPONSE_SENT,读取MES_MSG并写入本地数据块,然后将REQUEST_SENTPLC_MSG复位。
4)       MES将所有数据和控制位复位。

我们可以看出,整个数据交换的过程只发生了1个来回,即1-2步,而3-4步是将消息销毁的动作。
这种方式还有一个特点,就是封装性好,同样一个接口,既可以下发工单,也可以上传过站数据,区别在于PLC_MSG/MES_MSG里存储的数据内容不一样。

方式4:请求-响应机制,2次握手
同样是发动机上线的例子,过程可参考下图:


具体握手过程为:
1)       PLCPLC_MSG写入请求数据,如工位。
2)       PLCREQUEST_SENT置位。
3)       MES扫描到REQUEST_SENT,读取PLC_MSG,然后发送REQUEST_RECEIVED
4)       MES生成工单数据,并写入MES_MSG
5)       MESRESPONSE_SENT置位。
6)       PLC扫描RESPONSE_SENT,读取MES_MSG并写入本地数据块,然后将RESPONSE_RECEIVED置位。
7)       MES扫描RESPONSE_RECEIVED,将所有数据和控制位复位。
8)       PLC将本地数据和控制位复位。

我们可以看出,整个过程相当于进行了2次握手,其中1-3步是第1次握手,用于接收请求;4-8步是第2次握手,用于下发数据。
我们可以看出,方式4比方式3繁琐很多,但是这种方式在实际项目中用得还非常多。这是因为完整响应时间可能多达数秒,而PLC的扫描周期只有几十毫秒,中间多出的状态位可以作为状态指示缓解工人等待的焦虑,也可以作为断点方便通信调试。

方式5:基于工位生产周期
在一些工位,会有多个关键的业务过程,比如发动机上线工位先上线,然后装配,最后发送过站记录。
那么在一个完整的工位生产周期中,PLC需要和MES2次数据交换,第1次下载工单,第2次上传过站记录,如下图所示:


具体握手过程为:
1)       发动机到达,PLCENGINE_ARRIVAL置位。
2)       PLC检查托盘、设备、物料,条件具备后将STATION_READY置位。
3)       MESSTATION_READY_RECEIVED置位。
4)       MES将工单数据写入MES_DATA
5)       MESMES_DATA_SENT置位。
6)       PLCMES_DATA写入本地数据块,并将MES_DATA_RECEIVED置位。
7)       MES复位IT侧所有数据和状态位。
8)       PLC开始本工位的装配作业,并将发动机序列号写入ENGINE_SN
9)       PLC装配完成后,PLCPLC_COMPLETE置位。
10)   MESPLC_COMPLETE_RECEIVED置位。
11)   MES执行过站逻辑,完成后将MES_COMPLETE置位。
12)   PLCMES_COMPLETE_RECEIVED置位。
13)   MES复位IT侧所有数据和状态位。
14)   发动机准备离开,PLCENGINE_LEAVE置位。
15)   PLC复位所有数据和状态位。

我们可以看到,此方式非常繁琐,但是优点是:
1)       生产周期中的关键状态都有体现,可以很方便地通过HMI进行监控。
2)       PLC状态对应于实际的生产执行情况,发生问题时容易追踪。
3)       程序出错时,可以很直观地看到通信执行到哪一步。

另外,我们还应理解,下载工单和上传过站记录都只是完整生产周期的一部分,并且有内在的逻辑联系,比如:在装配的过程上发现缸体有问题,需要换一个缸体上线,此时由于MES还没有接收到过站记录,因此即使在第2次接收到STATION_READY信号时,MES下发的仍旧是同一个工单,这样就可以有效避免工单和发动机序列号的损失。


2018年3月27日

工厂上MES的两种方式



方式一:数据采集型
这几年由于政府对制造企业信息化的重视,有不少补贴流入到MES领域,出现了不少为信息化而信息化的项目。
这类项目的特点是:往往是工厂投产后实施的,IT系统不会造成生产停线,需求提出方是工厂高层,不涉及运营流程的改造,与上下游系统集成少,与控制层集成浅。
典型的系统有:PMCBIEAMEMS、大数据(?)
有一些工厂,会把许多小的功能模块,包装成一个MES/智能制造项目,申请政府补贴。
这类项目最直接的效益是:自动生成高层需要的报表,提升工厂的整体形象。
这类项目通常只是单向地采集数据,不干涉设备和流程,因此技术风险较小。
这类项目的工厂高层往往对IT了解不多,对IT系统不信任,给IT系统的预算较少。

方式二:流程驱动型
这种方式中IT和业务流程、上下游系统、控制层结合较为紧密,需求主要由现场管理人员、工程师提出,通常会在工厂建设的过程中进行实施。
由于IT系统和现场运营、设备控制紧耦合,因此业务的调整会对系统造成伤筋动骨的影响,反过来IT系统一旦停线则生产也无法进行。
因此IT系统技术风险大,预算高,对项目管理、沟通、组织配合等都提出了较高的要求。
典型的系统有:车辆调度系统、发动机防错系统、物流拉动系统。
这类项目通常由业务和IT联合设计,IT系统在工厂日常运营中承担非常重要的角色。

2018年3月6日

螺栓RFID在发动机装配中的应用


在汽车制造行业,通常采用纸质条码、激光蚀刻二维码、RFID标签等多种形式进行车辆或发动机的识别。
而在RFID标签方面,也会封装成各种形式,如高速公路ETC的矩形标签、南京地铁的圆形筹码标签、汽车总装车间的带磁铁标签、发动机机加的螺栓标签。
本文介绍螺栓RFID标签在发动机制造中的应用。
2013年,通用汽车与巴鲁夫合作,在通用纽约工厂应用巴鲁夫的高频螺栓RFID标签,用于机加车间缸体线和缸盖线的识别和追溯。
巴鲁夫的螺栓RFID标签有M6M8等规格,存储容量最高可达128KB,其外观和普通螺栓非常相似,如下图红圈所示:


以缸体加工为例,缸体上线时,先将RFID螺栓安装、拧紧、写入工单及序列号信息;当缸体经过关键加工工位时,PLC将关键作业信息如拧紧值、试漏检测结果等写入螺栓RFID;当缸体进入下一工位,PLC读取RFID并检查上道工序结果;缸体下线时,PLC读取RFID数据并同步给MES系统。
巴鲁夫螺栓RFID标签提供IP68等级的防护,可以应用于有润滑剂、金属屑、清洗设备的环境中。
在一台发动机的完整制造流程中,会使用多个RFID标签,如:
1)       缸体机架的螺栓RFID
2)       缸盖机架的螺栓RFID
3)       内装线的托盘RFID
4)       缸盖分装的托盘RFID
5)       活塞连杆分装的托盘RFID
6)       外装线的托盘RFID
7)       卡车发动机的测试线托盘RFID
当发动机从内装转运到外装时,或者需要离线返修时,由于发动机和托盘分离,这时就需要将RFID数据与MES之间进行备份和恢复,较为繁琐。
因此,如果能够将缸体上的螺栓RFID标签一直延用到完整的制造过程中,就不存在数据转运的问题,可以大量减少MESPLC之间的数据交互,但是面临很大的困难。
由于发动机工位间距小,因此采用了高频而不是超高频RFID技术,这就造成了RFID标签阅读距离短(一般<0 .2="" span="">)、角度小,因此一般要求阅读器要正对标签、紧贴安装。
而缸体在经过装配之后,大部分被包裹在发动机内部,如果螺栓RFID安装在内部则难以识别;安装在外部的话,也可能在装配过程中,造成和零件设备的干涉,也难以识别。
那么假如我们希望做到利用缸体螺栓RFID进行全程跟踪的话,则需要从设计入手,和工艺、控制专家一起制订方案:
1)       在缸体上设计螺栓RFID专用的工艺安装孔;此孔不会影响发动机的刚性;在装配后也一直暴露在发动机的外侧;在出厂前用普通螺栓或橡胶塞进行封闭。
2)       螺栓RFID在缸体机加安装后,全程不会和其它零件、设备形成干涉。
3)       设备和OEM工程师,要根据螺栓RFID的位置和角度,调整各工位RFID阅读器的安装位置。
此方案能够有效地确保数据安全,但是增加了工艺的复杂性,可谓各有利弊。



2018年2月8日

为什么工厂里IT的地位不高



这两年随着互联网的广泛渗透,IT从业人员受到越来越多人的认可,IT工程师被许多人看成天之骄子。
但是作为一个从事制造IT十多年的工程师,我的感受是,在制造领域,IT工程师的地位较低。
那么为什么会有这个差异呢?
首先我们看看制造IT的业务方:工艺工程师、设备工程师、质量工程师,通常在这些领域,一个有十年行业经验的工程师才能称为资深专家,而在IT行业,3年从业经验就是资深了,30出头的总监比比皆是。
再来看看费用支出:通常设备建设会占用工厂投资额的一半,而IT费用少得可怜,外资企业少于3%,民营企业一般少于1%。
再来看看流程授权:通常所有IT项目都需要业务部门签字,而业务方即使是与IT有关联的事务,通常不会让IT参与签字,能及时通知到IT就很不错了。
在招标的过程中也可以看出明显的差异。在设备招标前,设备供应商会准备详细的技术方案,包括全套的AUTOCAD图纸、关键设备的型号和报价,通常由中年老工程师讲标。而IT讲标主要看PPT,讲标的顾问通常在30岁出头。
再来看商务条款的差异:通常工厂会要求设备供应商签署严格的赔付条款,当生产停线时会赔付大笔费用;而IT供应商的赔款则非常有限。
综合以上信息,我们不难看出为什么工厂对设备供应商和相关从业人员更为放心,而对IT不太信任。

那么为什么同样作为IT从事人员,BAT那么牛逼,而工厂IT怎么就这么苦逼呢?
一个很重要的原因是:在互联网行业,IT工程师是生产力工具,与企业的效益直接相关;而在制造行业,IT通常是辅助系统,IT的投入产出都是间接性的,IT的领导往往会汇报给人事、财务、物流等领导,而不是汇报给CEO。
在开发模式上,互联网应用通常采用敏捷开发模式,快速迭代、分次发布、快速上线。而在制造领域,主要还是采用传统的瀑布式开发交付模式,一次开发、一次发布,这其中的主要原因是,IT项目的节点不是独立的,通常都是依附于业务方的项目节点。
在制造领域,作为一个IT工程师,一定要摆正自己的位置,调整好自己的心态,严谨务实,脚踏实地,才能得到更多人的尊敬和认可。

2018年2月7日

来来来,MES大数据了解一下






Big data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it...
大数据就象青少年性爱:每个人都在谈论它,没有人真的知道它是怎么一回事,每个人都以为别人都在做,于是每个人都声称他们也做了。。。。。。”
这是网上广为流传的一个大数据段子。
这两年随着互联网应用的广泛普及和推广,各类IT术语层出不穷,犹如雨后春笋:互联网+、物联网、万物互联、智能制造、大数据、人工智能、区块链、神经网络,PPT中增加一些新名称,仿佛泥菩萨贴上了金身,逼格一下子就提升不少。
但是网络是有记忆的:
大约十年前,IBM大力推广商业智能BI,花数倍的钱做同样的报表,后来IBM因为专注于高端客户而裁员了。。。
大约两年前,GE誓言进军工业互联网,打造工业软件帝国,后来GE也裁员了。。。
相反,老老实实做自动化和MESROCKWELL活得很好。
别的不说,至少在MES领域还是相当务实的,或者说MES的客户(各制造工厂)是相当务实的。
其实从技术的角度而言,MES大数据需求利用传统的数据库技术完全可以实现。
这两年内存的价格很低,SSD的技术也已经成熟,所以利用SSD存储、分配大量SGAORACLE数据库完全可以满足大部分制造企业的存储和查询需求。
以年产20万台车的整车工厂MES为例,通常64GB SGA即可满足要求。
本人曾经在一个电子制造工厂实施项目,该工厂有100多道工艺,每天生产80多万件产品,MES最大的一张表每天新增1亿条记录,每个月建1个分区,用ORACLE管理轻而易举、非常稳定。
以汽车制造为例,MES采集的数据确实可能会比较多,如BOM信息、装配关系信息、工艺追溯数据等,但通常数据量也在亿这个级别。所以用ORACLE存储是不成问题的。
关键是在设计时需要对表结构进行认真的规划。
这两年用JAVA的程序员比较多,而JAVA基于面向对象的思想,通常仅仅把数据库作为一个存储工具,而数据库本身的强大工具,如ORACLE的物化视图、动态游标等神器很少得到发挥。
MES作为一个“执行”系统,有大量的存储设备的操作,这些操作通常基于关系型数据库实现,很难通过内存优化得到本质上的改进。
而所谓大数据,往往是针对数据的统计分析需求。
关系型数据库针对统计查询,有一个简单的优化法则:所有过滤条件(WHERE)、分组字段(GROUP BY/MIN/MAX)、排序字段(ORDER BY)必须使用整型数据。因此我们在设计数据库表结构时,必须思考哪些字段需要做统计分析,如果需要则建立对应的字段映射。或者建新的表,专门用于存储整理后的数据,然后编写计划任务和存储过程,将业务数据转移到利于统计的新表中。
与其花大量时间、精力、费用在不知所谓的新技术上,不如老老实实地了解业务、分析数据结构、编写数据处理算法。制造是个苦活、累活,老老实实做事并不丢人,犯不着和互联网公司比,肯花心思的话老工具也能玩出新花样。



2018年2月6日

PLC编程再思考(5) – 高级语言编程




PLC的编程语言中,梯形图最常用,同时也会结合STLSCL等语言使用。
梯形图LAD语言,由于其简单、直观、方便逻辑表达,使用最为广泛,但也有一定的限制。
比如在AVI和防错系统中,需要在PLC中存储车辆的实时队列,通常以数组的形式保存在数据块中。当车辆移动时,我们可以使用SCL语言,通过FOR循环对数组进行移动操作,非常方便。此时用LAD会让人抓狂。
此外,由于SCL语言是纯文本格式,因此我们可以非常方便地利用SVN工具进行版本控制。
因此,在AVIANDONEPSIT高度参与的系统中,会在PLC中交叉使用LADSCL语言。
我们可以针对不同的语言分别编写FC,然后在程序段中进行调用。
但有时我们希望用同一个FC完成所有相关的逻辑,这时我们可以适当地将LAD转换成SCL格式,以方便理解和调试。
本文举几个常见例子予以说明。

1.     直接赋值
LAD格式:





SCL格式:



需要说明的是,SCL只能通过变量的符号名进行运算。

2.     上升沿处理
LAD格式:






SCL格式:






我们可以看出,上升沿的处理原理是:通过两个地址,分别存储信号在上一个扫描周期值、当前扫描周期值;当上一次值为0且当前值为1时,则定义为上升沿触发。
SCL表达略显繁琐,但是也很好理解。

3.      串并联逻辑判断
LAD格式:







SCL格式:









我们可以看出,当有多个条件需要进行组合逻辑判断时,用LAD表达非常简洁直观,SCL需要将串、并联转换成AND/OR条件,而电路的闭/合也要转换成1/0值,因此不够直观。但是对于写惯了VB等高级语言的工程师,SCL格式上手还是相当简单的。