本次分享项目为本人几年前的亲身经历,不鸡汤,以项目为例谈谈在技术之路中的思考与转型~
原文链接见:一个自动化设备的信息化改造项目,谈谈自动化工程师转型之路—IT融合OT
貌似图片没发上来
01 项目简介
项目名称:XX汽车厂设备联网改造项目实施人员:控制工程师1人,调试工程师1人
项目简介:
该汽车厂进行扩能改造,新购买了部分设备,并对一些旧设备进行功能改造,我曾经的公司为其提供部分设备的联网改造,实现底层设备与上层MES的对接(我们称为中间层),其中底层设备控制系统均为罗克韦尔PLC,上层MES已开发完成。
02 主要功能和流程介绍
下面我们分别从业务和技术角度去看下如何完成客户的功能~
1.每台设备的操作者通过扫码枪将VIN码传到设备PLC,中间层通过OPC采集到扫瞄的VIN;
需求技能 :罗克韦尔PLC、HMI编程调试,串口通讯,OPC通讯等;
2.中间层PC需要每隔两小时同步来自MES的将要通过的车型的各个特征物料码到本地PC;
需求技能 :上位机程序编写能力(C#,也可以为其它语言),MS SQLSERVER(MES的数据库), OPC通讯等;
3.根据OPC获得的VIN码,并配合从MES获得的数据,提取出与加工工艺有关的物料特征值(本次为发动机,变速箱大小等),设定工艺选择的判定规则,判断该车型在本工位的加工工艺,将对应加工循环参数下发到PLC,完成参数自动选择;
需求技能 :与PLC的各种握手方式,时间同步(中间层,PLC, HMI),PLC编程调试,HMI界面修改等;
4.设备加工完成后,将该车辆的加工过程参数和报错信息等存到本地数据库,同时上传至MES;
需求技能 :MYSQL(中间层数据库),C#编程等;
5.根据工序的序列,如果在前面工序漏加工或者加工出现部分故障,则到后续工位需给出报警;
需求技能 :C#编程,通讯知识等;
6.完成中间层网络搭建,如MES悲剧了,网络断开了,中间层悲催了的处理方法;
需求技能 :网络知识(本次用到NAT转换等),基本IT和网络知识NTP服务等。
其实对于会的人来说,实现的功能并不复杂,本文也没有想要从多么宏观或者理论的方向上去讲述,小编只是想从这个项目出发,让大家思考一个技术工程师的转型之路~
03 技术分析与处理
作为中间层,C#编写的程序承接了上层MES的任务下发,并接收来自下层PLC的数据,底层PLC是来自罗克韦尔的Controllogix,上层MES数据库中开放一张表,让我们进行数据读取。(大拿就不要问为啥直接读写数据库了哈,经过与客户沟通,客户就是要这么干,只有最后听客户的,大拿们肯定有更好更优的解决方案,欢迎入群进行讨论分析,此处就不讨论方案的优劣了)。
这样一来就很清晰了,和PLC通讯,我们使用了kepware(就是另一篇文章中写的被PTC收购的那个,详见:侃侃PTC的数字化制造),只要是用过OPC的人,应该都听过它的大名,不过它所带的驱动,应该是我见过的opc服务器中最全面的,下面只截取了一小部分,按照ABC的排序,才到C,你就明白它支持的驱动有多全面了,作为PTC收购之后,在物联网领域的重磅产品,它的强大确实也不是盖的(这玩意儿可不光是一个OPC软件哦)。
既然有了OPC,那和PLC通讯的问题算是解决啦(我知道也许很多小伙伴会说可以不用这个,直接找个开源的或者自己开发的罗克韦尔驱动,也能完成,不在本次讨论范围内),接下来呢,我们来看看网络拓扑
左上侧的东西就是所谓的中间层的PC了,然后它下面的每一个块,就是一个PLC,因为下层所有的设备进行了组网,该汽车厂IT也有自己的网络,因此就出现了中间的power box,就是我们用于中间做NAT转换的(见:设备网络与工厂网络之间的NAT转换—自动化连接信息化)
解决了网络问题,和PLC通讯的问题,接下来就是MES啦,前面说到了我们这次可是直接读写数据库(SQL SERVER),C#读写数据库,我们采用的是ADO.NET(
下图为当时进行数据交换的点表(部分)
虽然这样上层下层都打通了,但是问题就解决了吗?你们觉得小编会如此不负责任吗?万一MES挂了咋办?停线吗?万一中间层PC挂了怎么办?又停线吗?
一般既然产线和MES之间具有这种紧耦合的关系(见:MES与PLC握手的几种方式——大话与PLC通讯的N种方式第三期),这些问题都必须考虑,那怎么办呢?
作为控制工程师我是允许不允许这样的事情发生的,为了防止上面的情况,在PLC中编程分了三种模式:
网络模式:即为正常情况下,MES和中央PC都没问题的时候使用(即使MES挂掉了,因为中间层PC定期会从MES获得两天左右的数据,因此中间层PC可以在MES不工作的情况下持续让产线运作两天左右);
条码**式:当中央PC挂掉之后,在PLC中也编写了一套逻辑,切换到条码**式,根据VIN的特征码,去进行加工工艺的选择(前提是VIN码具有可以进行工艺选择的特征,如果不行的话,也可以采用和中间层PC与MES一样的套路),完成该工艺后,因为中央PC挂了,不能继续存数据,因此我们会在PLC中保留出一定空间来存加工数据便于追溯;
手动模式:当条码枪也悲剧了怎么办,这次就是真的纯人工选择对应工艺参数组了,此时可能很多人会觉得问题来了,没有条码枪扫码那如何去进行追溯?在手动模式下,我们准备了手动输入窗口,方便操作者输入进行追溯。
04 转型与思考
关于本项目:
1.可能有的小伙伴会觉得上面的解决方案其实还不错,但是其实事情始终是相对的,试想一下,这种情况下,如果需要有了新车型?那是不是牵一发而动全身,没有完美的方案。这和很多软件需要二次开发一个道理,越多的二次开发,也许功能变得很强大或者很人性化了,但是当软件升级的时候,也许二次开发的代码,还得三次开发,哈哈!!!!
2.其实在项目过程中,客户还有类似于车辆序列的辨识等功能,还有诸如VIN重码,车辆重复加工检测等功能,稳定性等等,这里就不详述了。
3.可能很多人觉得这个是需要IT工程师和自动化工程师配合的,但是其实这个是我个人完成的项目,当时也是第一次使用罗家的PLC(以前有不错的西家自动化基础,C#学得还行),作为自动化出身的我,也是第一次做信息化改造项目,其实对于这个项目当时是觉得自己搞不定的,但是结果下来,其实很多基础性、原理性的东西,都是一样的,解决问题的思路也是一样的~
关于转型:
1.前面看了小智的文章:
自动化早已不是原来的自动化,为何你却还是原来的你
其实我个人深有感受,因为我就是这样一步步走过来的,其实很多时候是因为自己对自己不够狠,所以会觉得迷茫,觉得无助,正是由于自己心态的转变,所以才让自己慢慢变成自己希望的样子,多的我就不说了,推荐看看文章:
我在“智造圈”的中年危机与技术焦虑,我相信你也有
2.很多以前也做过自动化的朋友,我想有过和我类似的体验,或许很多朋友会觉得很难,也没有类似的项目机会帮你完成转型,不过从我转型的过程中,我深深体会到基础理论扎实的重要性,主动学习和接受新事物的才是我成长的必经之路,很多时候要承认自己的无知,接受自己的无能,用正确的方法完成自己对求知,转型的渴望~
3.如今的我,已经是一个专注于信息化的工程师,但是还保留了很多工业自动化的技能与知识,记得伺服中的速度环增益,位置环增益如何去调整及他们的关系,记得那些各种各样的通讯方式(见:S7-200/300/400/1200/1500全系列通信总结),很多底层的技术,都是殊途同归的,关键还是要搭建自己的底层能力~
4.诸多实际存在的项目,都不是单一的OT层技术或者IT层技术就能实现或者解决的,IT与OT融合必然是大势所趋,因此我和小智他们总是会有意无意的去让大家去多了解你领域之外的东西,也许离你很近,但是你却置若罔闻~