private void BadShape(RollPosition roll) { var layerLabels = LableCode.GetLableCodesOfRecentFloor(roll.ToLocation, roll.PanelNo, roll.Floor); if (LayerShape.IsSlope(layerLabels) || LayerShape.IsVshape(layerLabels)) { lock (client) { PlcHelper.NotifyBadLayerShape(client, param, roll.RealLocation); } log($"!{roll.RealLocation}/{roll.Floor}形状不规则。板号{roll.PanelNo}", LogType.ROBOT_STACK); } }
private static void notifyOpc(string lcode) { var param = new OPCParam(); IOpcClient client; #if DEBUG client = new FakeOpcClient(param); #else client = new OPCClient(); #endif client.Open(clsSetting.OPCServerIP); param.DeleteLCode = new LCodeSignal(client, "DeleteLCode"); PlcHelper.NotifyLabelCodeDeleted(client, param, lcode); }
public void NotifyOpcJobFinished(string panelNo, string tolocation, string reallocation, bool panelfull) { try { var pState = panelfull ? PanelState.Full : PanelState.HalfFull; switch (pState) { case PanelState.HalfFull: var lcode = FrmMain.taskQ.UFGetPanelLastRoll(tolocation, panelNo); LableCode.UserSetPanelLastRoll(lcode); //设置板最后一卷布。 log($"{reallocation} 半板信号发出,最后一卷布标签{lcode}。slot: {param.BAreaFloorFinish[reallocation]}", LogType.ROBOT_STACK); client.TryWrite(param.BAreaFloorFinish[reallocation], true); break; case PanelState.Full: string msg; ErpHelper.NotifyPanelEnd(erpapi, panelNo, reallocation, out msg); log(msg, LogType.ROBOT_STACK); LableCode.SetPanelFinished(panelNo); // 满板时设置自由板位标志。 lock (TaskQueues.LOCK_LOCHELPER) { TaskQueues.lochelper.OnFull(reallocation); } lock (client) { PlcHelper.NotifyFullPanel(client, param, reallocation); } break; case PanelState.LessHalf: break; default: log($"!板状态不明,不发信号, {pState}", LogType.ROBOT_STACK); break; } } catch (Exception ex) { log($"!来源: {nameof(NotifyOpcJobFinished)}, {ex}", LogType.ROBOT_STACK); } }
public void NotifyOpcJobFinished(RollPosition roll) { try { switch (roll.PnlState) { case PanelState.HalfFull: lock (client) { client.TryWrite(param.BAreaFloorFinish[roll.RealLocation], true); } log($"{roll.RealLocation}: 半板信号发出。slot: {param.BAreaFloorFinish[roll.RealLocation]}", LogType.ROBOT_STACK); break; case PanelState.Full: string msg; ErpHelper.NotifyPanelEnd(erpapi, roll.PanelNo, roll.RealLocation, out msg); log(msg, LogType.ROBOT_STACK); LableCode.SetPanelFinished(roll.PanelNo); lock (TaskQueues.LOCK_LOCHELPER) { TaskQueues.lochelper.OnFull(roll.RealLocation); } lock (client) { PlcHelper.NotifyFullPanel(client, param, roll.RealLocation); } break; case PanelState.LessHalf: break; default: log($"!板状态不明,不发信号, {roll.PnlState}", LogType.ROBOT_STACK); break; } if (roll.Status == (int)LableState.FloorLastRoll && roll.PnlState != PanelState.Full) { BadShape(roll); } var panel = LableCode.GetPanel(roll.PanelNo); if (roll.Status == (int)LableState.FloorLastRoll && roll.PnlState != PanelState.Full && roll.Floor == panel.MaxFloor) { log("!---异常板满状态处理---", LogType.ROBOT_STACK); roll.PnlState = PanelState.Full; string msg; ErpHelper.NotifyPanelEnd(erpapi, roll.PanelNo, roll.RealLocation, out msg); client.TryWrite(param.BAreaPanelFinish[roll.RealLocation], true); log($"{roll.RealLocation}: 异常满板信号发出。slot: {param.BAreaPanelFinish[roll.RealLocation]}", LogType.ROBOT_STACK); log(msg, LogType.ROBOT_STACK); LableCode.SetPanelFinished(roll.PanelNo); lock (TaskQueues.LOCK_LOCHELPER) { TaskQueues.lochelper.OnFull(roll.RealLocation); } const int SIGNAL_3 = 3; client.TryWrite(param.BAreaPanelState[roll.RealLocation], SIGNAL_3); log($"{roll.RealLocation}: 异常板状态信号发出,状态值: {SIGNAL_3}。slot: {param.BAreaPanelState[roll.RealLocation]}", LogType.ROBOT_STACK); } } catch (Exception ex) { log($"!来源: {nameof(NotifyOpcJobFinished)}, {ex}", LogType.ROBOT_STACK); } }