MainMachine _IOMonitor.cs
7.0 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 OnlineStore;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
namespace DeviceLibrary
{
partial class MainMachine
{
public bool RightShelfEmpty = false;
public bool LeftShelfFull = false;
void IOMonitor()
{
//agv感应io处理逻辑
string isskiptest = ConfigHelper.Config.Get("Hardwareversion", "V2");
//新的AGV信号处理逻辑
string newagvdispose = ConfigHelper.Config.Get("HardwareversionofAGV", "V2");
if (isskiptest == "V2")
{
if ((RightMoveInfo.IsStep(MoveStep.Wait) || RightMoveInfo.IsStep(MoveStep.REND)))
{
// && IOValue(IO_Type.FeedAGV_Feed).Equals(IO_VALUE.LOW) && IOValue(IO_Type.FeedAGV_Feed).Equals(IO_VALUE.LOW)
//无料且无agv送料请求转到进料步骤
if (IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.LOW) && IOValue(IO_Type.FeedAGV_Feed).Equals(IO_VALUE.LOW))
{
//Msg.add("入料口有料串,请将料串先取出!", MsgLevel.warning);
RightMoveInfo.NewMove(MoveStep.R40_InShelf);
}
//有料无AGV进料请求转到出料步骤
else if(IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH)
&& IOValue(IO_Type.FeedAGV_Receiving).Equals(IO_VALUE.LOW)
&& BtnEnableCheck())
{
RightMoveInfo.NewMove(MoveStep.R30_OutShelf);
LogUtil.info("IOMonitor:进料串感应到有料");
}
}
if ((LeftMoveInfo.IsStep(MoveStep.Wait) || LeftMoveInfo.IsStep(MoveStep.LEND)))
{
//&& && IOValue(IO_Type.DischargeAGV_Receiving).Equals(IO_VALUE.LOW)
//无料且无agv收料请求转到进料步骤
if (IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.LOW)&& IOValue(IO_Type.DischargeAGV_Feeding).Equals(IO_VALUE.LOW))
{
LeftMoveInfo.NewMove(MoveStep.L60_InShelf);
}
//有料无AGV收料请求转到出料步骤
else if (IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.DischargeAGV_Receiving).Equals(IO_VALUE.LOW))
{
LeftMoveInfo.NewMove(MoveStep.L50_OutShelf);
}
}
}
if (newagvdispose == "V2")
{
if ((RightMoveInfo.IsStep(MoveStep.Wait) || RightMoveInfo.IsStep(MoveStep.REND)))
{
//按下确认按钮有料串出没有进
if (IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.LOW)
&& IOValue(IO_Type.RightCar_Check).Equals(IO_VALUE.HIGH)
&& (IOValue(IO_Type.Right_BTN).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.DischargeAGV_Feeding).Equals(IO_VALUE.HIGH)))
{
RightMoveInfo.NewMove(MoveStep.R40_InShelf);
}
else if (IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH)
&& IOValue(IO_Type.RightCar_Check).Equals(IO_VALUE.HIGH)
&& BtnEnableCheck()
&& (IOValue(IO_Type.Right_BTN).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.FeedAGV_Receiving).Equals(IO_VALUE.HIGH)))
{
RightMoveInfo.NewMove(MoveStep.R30_OutShelf);
}
}
if ((LeftMoveInfo.IsStep(MoveStep.Wait) || LeftMoveInfo.IsStep(MoveStep.LEND)))
{
if (IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.LOW)
&& IOValue(IO_Type.LeftCar_Check).Equals(IO_VALUE.HIGH)
&& (IOValue(IO_Type.DischargeAGV_Feeding).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.Left_BTN).Equals(IO_VALUE.HIGH)))
{
LeftMoveInfo.NewMove(MoveStep.L60_InShelf);
}
else if (IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.HIGH)
&& IOValue(IO_Type.LeftCar_Check).Equals(IO_VALUE.HIGH)
&& (IOValue(IO_Type.DischargeAGV_Receiving).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.Left_BTN).Equals(IO_VALUE.HIGH)))
{
LeftMoveInfo.NewMove(MoveStep.L50_OutShelf);
}
}
}
//等待步骤且进料前端有料后端无料进入进料步骤
if (RightMoveInfo.IsStep(MoveStep.Wait)
&& IOValue(IO_Type.RightFornt_Check).Equals(IO_VALUE.HIGH)
&& IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.LOW))
{
RightMoveInfo.NewMove(MoveStep.R40_InShelf);
LogUtil.info("IOMonitor:右侧检测到入料信号");
}
//等待步骤且料串到位且并非料盘取完的步骤转到上料步骤
if (RightMoveInfo.IsStep(MoveStep.Wait)
&& IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH)
&& !RightShelfNoTray)
{
RightMoveInfo.NewMove(MoveStep.R01);
LogUtil.info("IOMonitor:右侧有新料,准备上料");
}
//等待步骤且前端有料后端无料进入进料步骤
if (LeftMoveInfo.IsStep(MoveStep.Wait)
&& IOValue(IO_Type.LeftFornt_Check).Equals(IO_VALUE.HIGH)
&& IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.LOW))
{
LeftMoveInfo.NewMove(MoveStep.L60_InShelf);
LogUtil.info("IOMonitor:左侧检测到入料信号");
}
if (LeftMoveInfo.IsStep(MoveStep.Wait)
&& IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.HIGH)
&& !LeftShelfNoTray)
{
LeftMoveInfo.NewMove(MoveStep.L01);
LogUtil.info("IOMonitor:左侧有新料,准备上料");
}
//右侧料串已空
if (RightMoveInfo.IsStep(MoveStep.Wait) && IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH) && RightShelfNoTray)
{
RightShelfEmpty = true;
Msg.add(crc.GetString("Res0093","右侧料串已空,等待取走料串"), MsgLevel.warning);
}
else
{
RightShelfEmpty = false;
}
//左侧料串已满
if (LeftMoveInfo.IsStep(MoveStep.Wait) && IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.HIGH) && LeftShelfNoTray)
{
LeftShelfFull = true;
Msg.add(crc.GetString("Res0094", "左侧料串已满,等待取走料串"), MsgLevel.warning);
}
else
{
LeftShelfFull = false;
}
}
}
}