这篇文章只作为工作记录和个人感悟。
作为刚入职的新人,第一个接到的项目就很有挑战性。项目要求是对一摞从高温烘烤箱里拿出来的磨片进行分拣,如下图所示:
可以看到,每个磨片之间有一层特氟龙片进行间隔,每隔十个磨片有一个铝合金片。项目的主要任务就是将特氟龙,铝合金片和磨片都分类放在不同的post上,之后会有图片解释什么是post.
第一个task是建立一个TCPsocket,实现上位机(机械臂和机器视觉)和下位机(PLC)的通讯。这里所使用的PLC是Delta的,使用的通讯协议是modbus,而机器视觉(Halcon)是基于C#运行的。机械臂本身虽然支持I/O串口通讯,但是只有16个input和16个output端口,略少。所以决定使用一个MCU作为信息交互的中转站,所有的信息处理都在MCU上运行。这里就要求基于C#写个程序,可以同时实现和机械臂,Halcon和PLC的通讯。具体的程序我发到Github上了,有需要的话可以去查看 TCP socket for Modbus. 这里就不再赘述关于代码的内容了,只来谈谈我遇到的困难和一些思考。
第一个遇到的困难是如何使用socket和PLC进行通讯,众所周知,PLC上有很多registers和coils,而我们每次运行的时候其实也是在不断读取和存储不同的数值。这里就有一个问题,我使用的PLC是基于Modbus通讯协议的,而这个协议要求