
我作为一个多年的上位机开发,经常与工厂的MES对接,下面分析一下我最近的对接项目:
摘要
介绍如何用 .NET 8 构建设备向客户 MES 上抛测试数据的完整工程实践。涵盖登录验证、心跳、站位信息、作业人员、SN条码验证入站、机台数据上抛、出站、机台状态上报共8个API接口程式,我希望上位机从业人员,特别是新入行的小白,通过这个案例,能对设备与工厂数据交互有个完整的概念,甚至可以拿来当作面试实战经验
一、背景:这是我最近真实副业接到的一个项目,国内某面板厂的MES对接(哪个厂就不说了,免得纠纷),我使用这个软件分别给同一条线体的2个类型的设备上抛数据,分别是Cell段的画面检测设备和排线检测设备
客户提供了标准的API接口文档,对8个接口做了详细的说明,下面我对8个接口做简单的描述:
1、登录验证:
上传一些设备的基本信息,告诉MES系统这是哪个机台,比如哪个厂区的哪个机台,设备厂商的账号密码是多少,这些信息都是面板厂内部编排好告诉给个设备厂商的,照填就可以了。最重要的一点是接口会返回一个token,这个token作用很大,后面其他接口也需要用到,需要缓存下来。
只有登录验证成功后,才能继续做后面的步骤,否则不能继续进行
2、心跳:保持通讯连接
因为第1步登录验证拿到的token,时效性只有1个小时,所以需要通过心跳,确保这个token一直有效,MES系统通过心跳接口确保与各个设备保持通讯正常,所以设备端上位机需要有个定时任务,比如在30分钟内发送一次心跳,如果心跳异常,需要提供报警告诉操作人员。
3、站位信息
这个接口主要是告诉MES一些关于设备更加具体的细节,比如线体名称、制程名称、站别名称等信息,这些都是面板厂家提供的,设备端只需要负责填对就行了
4、作业人员接口:
这个接口是告诉MES系统,是哪个操作员在操作这台设备,后面有问题可以追溯到每个人身上
5、SN条码入站接口:
这个接口非常重要,入站的意思就是设备询问MES系统,现在产品是否可以在我这个站点的设备进行加工,MES会返回结果告诉设备端是否可以做料。
重要是因为MES系统要很清楚的知道产品到哪个站点进行加工了,比方说产品本来在第8个站点加工完,那下一个加工站点就应该是9号站点,但如果有操作人员违规把料拿到10号站点进行加工,那么10号站点的设备在SN条码入站时,MES系统就会发现异常,并拒绝入站
看到这里的小伙伴应该明白这个接口的重要行了吧,MES系统可以没有作业人员接口等,但不能没有入站接口。
6、机台数据上抛接口:
这个接口主要是把设备加工完产品后,告诉MES加工后的数据,比如我对接的API画面检测,就需要把屏幕不同的算法检测结果,OTP检测数据(对比度、Lv、Lx、Ly)等值上传给MES系统,排线检测设备是把不同排线的检测结果以true/false形式上传,这个接口每台设备都不一样,设备厂家和面板厂家协商定义好就可以,一般我们会双方用一个Excel表格来统一数据格式,比如下面是API画面检上传的数据格式:
7、出站接口:
这个接口是在设备已经检测完产品后执行的,目的是告诉MES产品已经加工完了,可以进行下一个站点的加工了
8、机台状态接口:
状态接口主要是告诉MES设备现在处于哪种状态
以上8个流程就是一个比较完整的MES对接流程,还有一些厂可能没有这么完整,不如只有入站、数据上抛、出站,还有一些厂商比这个流程复杂,这些都有,看实际情况而定
下面展示下软件界面和一些接口实现,只展示部分
软件主界面:
登录验证接口代码:
入站接口代码:
最后一下日志,日志在MES对接中非常重要,可以根据日志快速查找问题:
感谢收看!!!
