RobotEquip_OutExecute.cs
6.1 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
144
145
using CodeLibrary;
using OnlineStore.Common;
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 RobotEquip
{
#region 出库
private void OutstoreExecute()
{
switch (MoveInfo.MoveStep)
{
case StepEnum.OutStore_01_Wait:
SetBoxStatus(DeviceStatus.OutStoreExecute, RunStatus.Busy, MoveInfo.MoveParam.PosInfo);
NextMoveStep(StepEnum.OutStore_02_ArmToP1, "出库开始,机械臂回待机点");
OutStore_02_ArmToP1();
break;
case StepEnum.OutStore_02_ArmToP1:
NextMoveStep(StepEnum.OutStore_03_MoveAxisToStore, "行走机构到仓门口");
OutStore_03_MoveAxisToStore();
break;
case StepEnum.OutStore_03_MoveAxisToStore:
NextMoveStep(StepEnum.OutStore_04_CheckStoreState, "到达仓门口,检查其状态");
break;
case StepEnum.OutStore_04_CheckStoreState:
if (OutStore_04_CheckStoreState())
{
NextMoveStep(StepEnum.OutStore_05_ArmToStoreDoorLow, "当前仓可取料,机械臂到仓取料低点");
OutStore_05_ArmToStoreDoorLow();
}
break;
case StepEnum.OutStore_05_ArmToStoreDoorLow:
NextMoveStep(StepEnum.OutStore_06_CompressTray, "机械臂到仓取料高点,压紧轴压紧");
OutStore_06_CompressTray();
break;
case StepEnum.OutStore_06_CompressTray:
NextMoveStep(StepEnum.OutStore_07_ArmBackToP1, "在仓门口取料完成,添加机器人缓存,机械臂回待机点");
OutStore_07_ArmBackToP1();
break;
case StepEnum.OutStore_07_ArmBackToP1:
NextMoveStep(StepEnum.OutStore_08_MoveAxisToOutlet, "机械臂到待机点,上报状态,行走机构到出料口");
UpdateLocInfo(MoveInfo.MoveParam.PosInfo, TaskStatus.INROBOT);
OutStore_08_MoveAxisToOutlet();
break;
case StepEnum.OutStore_08_MoveAxisToOutlet:
NextMoveStep(StepEnum.OutStore_09_CheckOutletState, "到达出料口,检查其状态:顶升上升且无料盘");
break;
case StepEnum.OutStore_09_CheckOutletState:
if (OutStore_09_CheckOutletState())
{
NextMoveStep(StepEnum.OutStore_10_ArmToTrayHigh, "机械臂到出料口放料高点");
OutStore_10_ArmToTrayHigh();
}
break;
case StepEnum.OutStore_10_ArmToTrayHigh:
NextMoveStep(StepEnum.OutStore_11_ReleaseTray, "机械臂到出料口放料低点,压紧轴张开");
OutStore_11_ReleaseTray();
break;
case StepEnum.OutStore_11_ReleaseTray:
NextMoveStep(StepEnum.OutStore_12_ArmBackToP1, "在出料口放料完成,清除机器人缓存,机械臂回待机点");
OutStore_12_ArmBackToP1();
break;
case StepEnum.OutStore_12_ArmBackToP1:
NextMoveStep(StepEnum.OutStore_13_Finish, "出库结束");
break;
case StepEnum.OutStore_13_Finish:
MoveInfo.EndMove();
runStatus = RunStatus.Runing;
break;
}
}
private void OutStore_02_ArmToP1()
{
SendCmd(GetCmd_Standby());
}
private void OutStore_03_MoveAxisToStore()
{
MoveAxisToStore();
}
private bool OutStore_04_CheckStoreState()
{
return true;
}
private void OutStore_05_ArmToStoreDoorLow()
{
SendCmd(GetCmd_StoreLow(targetIndex));
}
private void OutStore_06_CompressTray()
{
SendCmd(GetCmd_StoreUp());
CompressAxis.AbsMove(MoveInfo, Config.CompressAxis_P4, Config.CompressAxis_P4_Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RobotArm_ClampingSig, IO_VALUE.HIGH));
}
private void OutStore_07_ArmBackToP1()
{
//添加机器人缓存,并上报任务状态
BufferDataManager.TrayInRobotInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
SendCmd(GetCmd_Standby());
}
private void OutStore_08_MoveAxisToOutlet()
{
MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P3_Outlet, Config.MoveAxis_P3_Outlet_Speed);
}
private bool OutStore_09_CheckOutletState()
{
if (IOValue(IO_Type.Outlet_JackUpSig).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.Outlet_TrayCheck1).Equals(IO_VALUE.LOW))
{
return true;
}
return false;
}
private void OutStore_10_ArmToTrayHigh()
{
SendCmd(GetCmd_OutletHigh());
}
private void OutStore_11_ReleaseTray()
{
SendCmd(GetCmd_OutletDown());
CompressAxis.AbsMove(MoveInfo,Config.CompressAxis_P2, Config.CompressAxis_P2_Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RobotArm_ClampingSig, IO_VALUE.LOW));
}
private void OutStore_12_ArmBackToP1()
{
//上报任务状态
BufferDataManager.TrayInRobotInfo = null;
BufferDataManager.TrayInOutletInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
UpdateLocInfo(MoveInfo.MoveParam.PosInfo, TaskStatus.FINISHED);
SendCmd(GetCmd_Standby());
}
#endregion
}
}