MainMachine _Out.cs
4.3 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
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
{
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);
}
else if (IOValue(IO_Type.OutEntryMaterialTop_Check).Equals(IO_VALUE.HIGH))
{
Msg.add("检测到出料口有周转箱", MsgLevel.warning);
OutMoveInfo.log($"检测到出料口有周转箱,送出");
OutMoveInfo.NextMoveStep(MoveStep.OutBoxPutOn);
}
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("出口没有检测到周转箱", MsgLevel.warning);
}
else
{
OutMoveInfo.NextMoveStep(MoveStep.Out01);
OutSideLift.LiftDown(OutMoveInfo);
OutMoveInfo.log($"顶升机构下降");
}
break;
case MoveStep.Out01:
OutMoveInfo.NextMoveStep(MoveStep.Out02);
if (IOMonitor.IODebound(IO_Type.OutStopMaterial_Check, Config, IO_VALUE.LOW, 2000) && IOMonitor.IODebound(IO_Type.OutExitMaterial_Check, Config, IO_VALUE.LOW, 2000))
{
LineOut.LineRun("out", 999);
CylinderMove(OutMoveInfo, IO_Type.OutStop_Down, IO_Type.OutStop_Up, IO_VALUE.LOW);
OutMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.OutExitMaterial_Check, IO_VALUE.HIGH));
OutMoveInfo.log($"线体转动");
}
else
{
Msg.add("等待出口清空周转箱", MsgLevel.warning);
}
break;
case MoveStep.Out02:
OutMoveInfo.NextMoveStep(MoveStep.Out03);
LineIn.LineRun("work", 3);
OutMoveInfo.log($"料箱抵达出口");
OutMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
break;
case MoveStep.Out03:
OutMoveInfo.NextMoveStep(MoveStep.Out04);
CylinderMove(OutMoveInfo, IO_Type.OutStop_Down, IO_Type.OutStop_Up, IO_VALUE.HIGH);
OutSideLift.LiftDown(OutMoveInfo);
OutMoveInfo.log($"出料中间阻挡升起");
ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreEnd);
break;
case MoveStep.Out04:
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;
}
}
}