BoxEquip_OutExecute_Partial.cs
7.6 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using CodeLibrary;
using OnlineStore.Common;
using OnlineStore.DeviceLibrary.deviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms.VisualStyles;
namespace OnlineStore.DeviceLibrary
{
partial class BoxEquip
{
#region 出库
private void OutstoreExecute_BothSide()
{
switch (MoveInfo.MoveStep)
{
case StepEnum.SOB_14_GetReels_Ready:
//两侧已有同尺寸的料
MoveInfo.NextMoveStep(StepEnum.SOB_14_GetReels_Ready1);
LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]取料完成,准备送往出料口,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
//MoveAxisToP1();
PullAxis_UpdownToP1();
UpdownAxisTo_P4_P10();
// BuffAreaOutstoreDoor(true);
break;
case StepEnum.SOB_14_GetReels_Ready1:
if (!CheckBothReel(true))
{
if (isAlarmForkCheck())
SetCriticalMsg($"运动过程中两面的料叉丢失料盘信号【{MoveInfo.MoveParam?.PosInfo?.barcode}】【{MoveInfo.MoveParam?.PosInfoBack?.barcode}】,请检查");
return;
}
SetWarnMsg("");
//两侧已有同尺寸的料
MoveInfo.NextMoveStep(StepEnum.SOB_15_ToBufferArea);
ignoreCurFork = false;
checkForkCnt = 0;
LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]取料完成,准备送往出料口。行走机构到待机点P1");
MoveAxisToP1();
//PullAxis_UpdownToP1();
// UpdownAxisTo_P4_P10();
BuffAreaOutstoreDoor(true);
ForkCheckWhenRunning();
break;
case StepEnum.SOB_15_ToBufferArea:
if (!BothOutDoorCheck(MoveInfo.MoveParam))
{
SetWarnMsg($"出库 {MoveInfo.SLog}:出料口有其他料盘,无法放置料盘[barcode={MoveInfo.MoveParam.PosInfo.barcode}][barcode={MoveInfo.MoveParam.PosInfoBack.barcode}]");
}
else
{
MoveInfo.NextMoveStep(StepEnum.SOB_16_VerifyBufferState);
BuffAreaOutstoreDoor(true);
StopForkCheck();
LogInfo($"出库 {MoveInfo.SLog}:出料口无料盘确认,打开出料防护门,准备放料[barcode={MoveInfo.MoveParam.PosInfo.barcode}][barcode={MoveInfo.MoveParam.PosInfoBack.barcode}]");
}
break;
case StepEnum.SOB_16_VerifyBufferState:
if (!CheckInputMiddleAxisInBuff())
{
MoveInfo.NextMoveStep(StepEnum.SOB_17_InOutToBuff);
SetBoxStatus(DeviceStatus.OutStoreBoxEnd, RunStatus.Busy, MoveInfo.MoveParam.PosInfo.PosId, MoveInfo.MoveParam.PosInfo.barcode);
LogInfo($"出库 {MoveInfo.SLog}:移栽X轴到进出料暂存区取放点P2,行走机构到进出料机构取放点P2");
BothXAxis_To_P2();
MoveAxisToP2();
}
else if (MoveInfo.IsTimeOut())
{
SetWarnMsg($"等待上料机构旋转轴离开{MoveInfo.MoveParam.PosInfo.GetPosSide()}面暂存区超时");
}
break;
case StepEnum.SOB_17_InOutToBuff:
MoveInfo.NextMoveStep(StepEnum.SOB_18_ReleaseReel);
LogInfo($"出库 {MoveInfo.SLog}:松开料盘,移栽压紧轴到压紧前点P2");
BothComAxis_To_P2();
break;
case StepEnum.SOB_18_ReleaseReel:
MoveInfo.NextMoveStep(StepEnum.SOB_18_PutReel);
LogInfo($"出库 {MoveInfo.SLog}:放料盘,移栽升降轴到下暂存区放料低点P5/P11");
executeTime = (DateTime.Now - startTime).TotalSeconds.ToString("f2");
SetBoxStatus(DeviceStatus.OutStoreBoxEnd, RunStatus.Busy, MoveInfo.MoveParam.PosInfoBack.PosId, MoveInfo.MoveParam.PosInfoBack.barcode);
UpdownAxisTo_P5_P11();
break;
case StepEnum.SOB_18_PutReel:
MoveInfo.NextMoveStep(StepEnum.SOB_19_InOutBackFromBuff);
LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}]出库完成[耗时:{(DateTime.Now - startTime).TotalSeconds.ToString("f2")}秒],移栽X轴到待机点P1,行走机构到待机点P1");
BothXAxis_To_P1();
MoveAxisToP1();
break;
case StepEnum.SOB_19_InOutBackFromBuff:
if (!CheckBothReel(false))
{
if (isAlarmForkCheck())
SetCriticalMsg($"放完料盘后,两面料叉上还能检测到料盘【{MoveInfo.MoveParam?.PosInfo?.barcode}】【{MoveInfo.MoveParam?.PosInfoBack?.barcode}】,请检查");
return;
}
if (!StoreManager.XLRStore.boxEquip.SendStoreState(MoveInfo.MoveParam.PosInfo.PosId, MoveInfo.MoveParam.PosInfo.barcode, DeviceStatus.OutStoreBoxEnd))
return;
if (!StoreManager.XLRStore.boxEquip.SendStoreState(MoveInfo.MoveParam.PosInfoBack.PosId, MoveInfo.MoveParam.PosInfoBack.barcode, DeviceStatus.OutStoreBoxEnd))
return;
SetWarnMsg("");
//出库料盘放置成功,将料盘信息写入对应出料口
if (CheckASide())
{
BufferDataManager.AOutStoreInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
BufferDataManager.BOutStoreInfo = MoveInfo.MoveParam.PosInfoBack.ToCopy();
}
else
{
BufferDataManager.BOutStoreInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
BufferDataManager.AOutStoreInfo = MoveInfo.MoveParam.PosInfoBack.ToCopy();
}
MoveInfo.NextMoveStep(StepEnum.SOB_20_Finish);
BuffAreaOutstoreDoor(false);
checkForkCnt = 0;
ignoreCurFork = false;
LogInfo($"出库 {MoveInfo.SLog}:关闭出料防护门,出库结束");
recentOutstores.Push(MoveInfo.MoveParam.PosInfo.PosId);
recentOutstores.Push(MoveInfo.MoveParam.PosInfoBack.PosId);
LogInfo($"{recentOutstores}");
break;
case StepEnum.SOB_20_Finish:
SetBoxStatus(DeviceStatus.StoreOnline, RunStatus.Runing);
MoveInfo.EndMove();
//停止记录
StopRecord();
Alarm(AlarmType.None);
AutoInout.InOutEndProcess(this, MoveType.OutStore);
break;
}
}
#endregion
}
}