MainMachine _Out.cs
5.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using CodeLibrary;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeviceLibrary
{
partial class MainMachine
{
public bool IsOutLiftEmpty
{
get {
return IOValue(IO_Type.OutEntryMaterialTop_Check).Equals(IO_VALUE.LOW) && OutSideLift.isAtTOP;
}
}
void OutProcess()
{
if (CheckWait(OutMoveInfo))
return;
//常规上料扫码流程
switch (OutMoveInfo.MoveStep)
{
case MoveStep.Wait:
if (OutSideLift.isAtBOTTOM)
{
OutMoveInfo.NextMoveStep(MoveStep.WaitErr);
return;
}
else if (IOValue(IO_Type.OutEntryMaterialTop_Check).Equals(IO_VALUE.HIGH) && OutMoveInfo.IsTimeOut(20))
{
Msg.add("检测到出料口有周转箱,等待信息超时", MsgLevel.warning);
OutMoveInfo.log($"检测到出料口有周转箱,等待信息超时,送出");
OutMoveInfo.NextMoveStep(MoveStep.OutBoxPutOn);
return;
}
else if (IOValue(IO_Type.OutEntryMaterialTop_Check).Equals(IO_VALUE.HIGH))
return;
OutMoveInfo.NextMoveStep(MoveStep.Wait);
break;
case MoveStep.WaitErr:
OutMoveInfo.NextMoveStep(MoveStep.Wait);
OutSideLift.LiftUp(OutMoveInfo);
OutMoveInfo.log($"出料口周转箱顶升上升");
break;
case MoveStep.OutBoxPutOn:
if (IOValue(IO_Type.OutEntryMaterialTop_Check).Equals(IO_VALUE.LOW))
{
Msg.add("出口X39没有检测到周转箱", MsgLevel.warning);
}
else
{
OutMoveInfo.NextMoveStep(MoveStep.Out01);
OutSideLift.LiftDown(OutMoveInfo);
OutMoveInfo.log($"顶升机构下降");
}
break;
case MoveStep.Out01:
//if (IOMonitor.IODebound(IO_Type.OutStopMaterial_Check, Config, IO_VALUE.LOW, 2000) && IOMonitor.IODebound(IO_Type.OutExitMaterial_Check, Config, IO_VALUE.LOW, 2000))
if (IOValue(IO_Type.OutStopMaterial_Check).Equals(IO_VALUE.LOW) && IOValue(IO_Type.OutExitMaterial_Check).Equals(IO_VALUE.LOW))
{
OutMoveInfo.NextMoveStep(MoveStep.Out02);
LineOut.LineRun("out", 999);
CylinderMove(OutMoveInfo, IO_Type.OutStop_Down, IO_Type.OutStop_Up, IO_VALUE.LOW);
OutMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.OutStopMaterial_Check, IO_VALUE.HIGH));
OutMoveInfo.log($"线体转动");
}
else
{
Msg.add("等待出口清空周转箱", MsgLevel.warning);
}
break;
case MoveStep.Out02:
OutMoveInfo.NextMoveStep(MoveStep.Out03);
LineOut.LineRun("out", 6);
OutMoveInfo.log($"料箱抵达出口等待阻挡信号X33消失");
OutMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1500));
OutMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.OutStopMaterial_Check, IO_VALUE.LOW));
break;
case MoveStep.Out03:
OutMoveInfo.NextMoveStep(MoveStep.Out04);
LineOut.LineRun("out", 5);
OutMoveInfo.log($"料箱抵达出口再运行5秒");
OutMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
OutMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.OutExitMaterial_Check, IO_VALUE.HIGH));
OutMoveInfo.OneWaitCanEndStep = true;
break;
case MoveStep.Out04:
OutMoveInfo.NextMoveStep(MoveStep.Out05);
CylinderMove(OutMoveInfo, IO_Type.OutStop_Down, IO_Type.OutStop_Up, IO_VALUE.HIGH);
LineOut.LineStop("out");
OutSideLift.LiftUp(OutMoveInfo);
OutMoveInfo.log($"出料中间阻挡升起");
ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreEnd);
break;
case MoveStep.Out05:
OutMoveInfo.NextMoveStep(MoveStep.Wait);
break;
default:
OutMoveInfo.log($"未找到对应步骤:{OutMoveInfo.MoveStep}");
break;
}
}
string OutState() {
string state = "";
if (OutMoveInfo.MoveStep >= MoveStep.OutBoxPutOn)
{
return "送出周转箱:" + OutMoveInfo.MoveParam.ToStr();
}
else
{
return "最后的周转箱:" + OutMoveInfo.MoveParam.ToStr();
}
return state;
}
}
}