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格式上手还是相当简单的。