工控双机协作流程

 流程图下载地址:https://download.csdn.net/download/cjh16606260986/88711468

项目背景

        最近做了两台超声波一体针焊接机已交货,为提高效率和与客户的流水线并线,所以两台机不能单独工作要协调工作。以发挥最大产能。因此做了这个双机协作通讯。

相关技术

        1.Socket通讯

        2.ConcurrentQueue对列

        3.Task线程

总体思路

        模拟两个的交流。两台机比成两组人。每组有两个人。一个负责通讯(交流,对话),一个负责生产。分工协作。

        一号机:一个ConcurrentQueue对列服务这里有两个成员(QS成员、QSM成员)

                      一个P成员。

       二号机也一样。

        拆垛机,缓存机区,清扫机

成员工作说明

       ConcurrentQueue对列服务

        主要用于管理所有的通讯请求,为了避免出现冲突,用对列可以实现请求排对效果,先进先出,一个一个处理。

        ConcurrentQueue对列服务中有两个成员:QS成员和QSM成员成员。

                QS成员主要负责处理:

                        所有设备的进料,出料请求

               QSM成员主要负责处理:

                        监控待料位是否有料,没料向拆垛机发送要料请求。让待料位始终有一盘物料在。监控QS成员是否活着,对列中未处理的请求个数。也可以做一个监控报警的功能。

               P成员是生产成员:

                        监控上料位是否有料,没有料时发向ConcurrentQueue对列服务发送要料请求。上料位到料后,监控QS成员是发送的生产料盘码。收到生产料盘码就进行生产流程。生产完成后向ConcurrentQueue对列服务发送出料请求,QS成员收到出料请求后进行处理,在可以出料后,通知P成员出料。

                SS成员:

                        Socket服务端主要用于和Socket客户端进行发送消息和接收消息。

                SL成员:

                        Socket客户端用于和Socket服务端进行发送消息和接收消息。

具体逻辑

       一号机(服务端)

        负责处理进料,出料,向拆垛机要料,接收缓存区到料通知,接收缓存区出料通知

        一号机(服务端)进料

                当一号机(服务端)P成员没有物料时和ConcurrentQueue对列服务说我没有生产的物料了(发送要料请求)。

        一号机(服务端)出料

                P成员生产完成后向ConcurrentQueue对列服务发送出料请求,然后等待QS成员的处理通知,收到出料通知后执行出料动作。

        二号机(客户端)

负责二号机要料,一号机出料,二号机出料,缓存区到料通知,缓存区出料通知,清扫机要为处理

        二号机(客户端)进料

                当二号机(服务端)P成员没有物料时和ConcurrentQueue对列服务说我没有生产的物料了(发送要料请求),QS成员收到向一号机(服务端)用Socket客户端发送要料请求。一号机(服务端)收到要料请求后会立刻发送收到要料请求的回复。

        二号机(客户端)出料

                P成员生产完成后向ConcurrentQueue对列服务发送出料请求,QS成员收到向一号机(服务端)用Socket客户端发送出料请求。一号机(服务端)收到出料请求后会立刻发送收到出料请求的回复。然后等待(服务端)QS成员的处理通知,收到出料通知后执行出料动作。

        ConcurrentQueue对列服务QS处理逻辑

                QS成员请求会安顺序处理,取出请求后先判断当前通讯状态是否为空闲中,是 开始处理请求,先用Dequeue方法从对列中取出一个请求,判断请求类型是进料还是出料。

                一号机(服务端)进料:

                        将通讯状态改成进料处理状态,跟据设备ID(DeviceId)判断是否是本机,如果是先询问本机的生产状态是否为生产中,如果是继续下面的放料逻辑,否则放弃处理,将通讯状态改回空闲。如果设备ID(DeviceId)不是本机通过Socket服务端向客户端发送InSendRequest(进料发送请求)这时的请求没有料盘码,客户端在收到请求后要判断是否有料盘码,如果没有说明是询问生产状态的请求,这时的回复内容主要是IsStartWeld(是否工作中(焊接中)...)的赋值。服务端发送请求后开始等待客户端的回复。收到IsStartWeld为1(true)的回复后,开始处理进料逻辑处理,否则放弃处理,将通讯状态改回空闲。

                进料逻辑处理:

                        先看待料位是否有物料,有就直接下降待料位阻挡,打开皮带电机放料。否则去向拆垛机要料,再监控待料位是否到料,待料位到料后放料,上料位到料监控,到料后扫料盘码,再判断这个请求是否是本机发出的,如果是把要生产的料盘码转给P成员生产,再监控生产状态是否为生产中,是的话本机的进料请求处理完成,将通讯状态改成空闲。如果是2号机(客户端)进料发送【进料发送请求】通知2号机这时请求内容中有料盘码,2号机在收到请求后判断是否有料盘码,有说明这个料盘是发给2号机生产的。这时2号机回复收到发料通知,1号机收到回复后执行放料动作,上料位阻挡下降,等待2号机发送到料通知,2号收到料盘后扫码后就知道这个料盘中给自己生产的还是1号机放料料盘了。收到2号机的到料通知后,1号机上料位阻挡上升,将通讯状态改回空闲。进料逻辑完。

        一号机(服务端)出料:      

                 一号机生产完后要出料,这时和QS说我生产完了要出料。QS这时要检查流水线上的二号机缓存区状态是否空闲状态。如果空闲将通讯状态改成出料状态,通知二号机一号机要出料的信息(料盘码)等相关信息通过Socket发送给相关客户端,二号机收到后要马上回复一号机收到的出料请求并同意。一号机收到回复后通知P成员出料。QS要负责一路监控出料执行情况,料盘到了二号机扫码后要发送收到的料盘信息给1号机(发送到料通知)。并继续执行出料。料盘到了缓存区后也要发送通知给一号机(发送到料通知)。这时一号机的QS通讯状态恢复成空闲状态。

        二号机(客户端)进料

                二号机(客户端)的Socket客户端收到一号机发送的InSendRequest(进料发送请求)后将请求数据交给ConcurrentQueue对列服务处理。

                QS成员收到要处理的请求后,从对列中取出判断是InSendRequest(进料发送请求)时走进料逻辑。

        进料逻辑:待料位阻挡下降,监控上料位是否到料,扫料盘码,回复1号机服务端收到料了,判断是否是自己生产(根据1号机发送的请求数据中有生产设备ID和料盘码),如果 是 将料盘码交给P成员进行生产,监控生产状态。将通讯状态改成空闲。

         二号机(客户端)出料:

                 二号机生产完后要出料,先将出料请求交给ConcurrentQueue对列服务,QS收到出料信息后向1号机(服务端)发送出料请求,这时Socket服务端收到请求后将请求数据交给1号机的ConcurrentQueue对列服务进行处理。1号机的QS收到请求后检查2号机缓存区状态是否空闲状态,是通知2号机出料,用Socket服务端发送OutSendRequest(放料(出料)发送请求),等待2号机回复,2号机收到出料通知将出料通知交给2号机的ConcurrentQueue对列服务,2号机的ConcurrentQueue对列服务的QS成员在收到出料通知后先回复1号机收到出料通知并开始处理,通知P成员可以出料了,P成员执行出料动作,QS成员监控缓存的到料情况,缓存区收到料盘后向1号机发送缓存区到料通知,1号机服务端通讯状态改成空闲,2号机通讯状态为空闲,缓存区状态为有料,并记录到料时间。

         二号机缓存区出料:

                   二号机监控线程QSM成员每2秒监控一次清扫机的要料信号,收到后判断缓存区是否有料,如果有,再判断缓存区的到料时间是否超过了两秒,这是用于解决,清扫机要料太快,缓存区刚到料就立刻放料,这里还没给1号机发送到料通知,这时1号机会一直等待缓存区到料通知,导致进入循环,无法处理下一个请求。所以缓存区到料后要2秒后才能出料。如果时间大于2秒了,缓存区执行出料动作。监控出料情况,出料完成后缓存区阻挡上升,给1号机发送缓存区出料通知,更新缓存区状态。

基本流程图

工控双机协作流程_第1张图片

第二版流程图

工控双机协作流程_第2张图片

流程图下载地址:https://download.csdn.net/download/cjh16606260986/88711468

你可能感兴趣的:(上位机,笔记,经验分享)