Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
李娜
/
SO664-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 977f5e7f
由
LN
编写于
2020-11-05 10:20:41 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加T3C1代码
1 个父辈
de5831f7
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
500 行增加
和
669 行删除
source/AssemblyLineClient/记录.txt
source/DeviceLibrary/DeviceLibrary.csproj
source/DeviceLibrary/LineConfig/Config_Line.csv
source/DeviceLibrary/assemblyLine/EquipBase.cs
source/DeviceLibrary/assemblyLine/FeedingEquip_InStore.cs
source/DeviceLibrary/assemblyLine/FeedingEquip_OutStore.cs
source/DeviceLibrary/assemblyLine/LineBean.cs
source/DeviceLibrary/assemblyLine/LineBean_Partial.cs
source/DeviceLibrary/assemblyLine/LineBean_T3-C1.cs
source/DeviceLibrary/assemblyLine/MoveEquip_Partial.cs
source/DeviceLibrary/assemblymanager/RFIDManagercs.cs
source/DeviceLibrary/model/StoreStep.cs
source/AssemblyLineClient/记录.txt
查看文件 @
977f5e7
...
...
@@ -18,7 +18,8 @@
上料机构,入料判断托盘是否到位,放行托盘,从lineBean里调用
紧急出料,开始紧急出库横移主动调用开始 托盘出库方法。放行从lineBean里调用
...
...
source/DeviceLibrary/DeviceLibrary.csproj
查看文件 @
977f5e7
...
...
@@ -70,6 +70,7 @@
<Compile Include="assemblyLine\HY\HY_C1_SLStation.cs" />
<Compile Include="assemblyLine\HY\HY_OutLine.cs" />
<Compile Include="assemblyLine\HY\HY_C1Line.cs" />
<Compile Include="assemblyLine\LineBean_T3-C1.cs" />
<Compile Include="assemblymanager\ALineManager.cs" />
<Compile Include="assemblyLine\FeedingEquip_InStore.cs" />
<Compile Include="assemblyLine\FeedingEquip.cs" />
...
...
source/DeviceLibrary/LineConfig/Config_Line.csv
查看文件 @
977f5e7
...
...
@@ -7,57 +7,57 @@ PRO,0,IO模块对应的DI数量,IO_DILength,192.168.111.33#8;192.168.111.35#8;192.168.1
PRO,0,模块对应的DO数量,IO_DOLength,192.168.111.33#8;192.168.111.35#8;192.168.111.37#16;192.168.111.39#8;192.168.111.41#16;,,
,,,,,,
,,,,,,
PRO,0,
移栽装置1-托盘-RFID-IP,PRO_RFIP_001,192.168.210.103
,,
PRO,0,
移栽装置2-托盘-RFID-IP,PRO_RFIP_002,192.168.210.104
,,
PRO,0,
移栽装置3-托盘-RFID-IP,PRO_RFIP_003,192.168.210.105
,,
PRO,0,
移栽装置4-托盘-RFID-IP,PRO_RFIP_004,192.168.210.106
,,
PRO,0,
移栽装置5-托盘-RFID-IP,PRO_RFIP_005,192.168.210.107
,,
PRO,0,
移栽装置6-托盘-RFID-IP,PRO_RFIP_006,192.168.210.108
,,
PRO,0,
移栽装置7-托盘-RFID-IP,PRO_RFIP_007,192.168.210.11
1,,
PRO,0,
移栽装置8-托盘-RFID-IP,PRO_RFIP_008,192.168.210.112
,,
PRO,0,
移栽装置
9-托盘-RFID-IP,PRO_RFIP_009,192.168.210.113,,
PRO,0,
移栽装置
10-托盘-RFID-IP,PRO_RFIP_010,192.168.210.114,,
PRO,0,
移栽装置11-托盘-RFID-IP,PRO_RFIP_011,192.168.210.120
,,
PRO,0,
移栽装置12-托盘-RFID-IP,PRO_RFIP_012,192.168.210.121
,,
PRO,0,
移栽装置13-托盘-RFID-IP,PRO_RFIP_013,192.168.210.123
,,
PRO,0,
移栽装置14-托盘-RFID-IP,PRO_RFIP_014,192.168.210.124
,,
PRO,0,
移栽装置15-托盘-RFID-IP,PRO_RFIP_015,192.168.210.125
,,
PRO,0,
移栽装置16-托盘-RFID-IP,PRO_RFIP_016,192.168.210.126
,,
PRO,0,
移栽装置17-托盘-RFID-IP,PRO_RFIP_017,192.168.210.128
,,
PRO,0,
移栽装置18-托盘-RFID-IP,PRO_RFIP_018,192.168.210.129
,,
PRO,0,
移栽装置19-托盘-RFID-IP,PRO_RFIP_019,192.168.210.130
,,
PRO,0,
移栽装置20-托盘-RFID-IP,PRO_RFIP_020,192.168.210.131
,,
PRO,0,
移栽装置21-托盘-RFID-IP,PRO_RFIP_021,192.168.210.132
,,
PRO,0,
移栽装置22-托盘-RFID-IP,PRO_RFIP_022,192.168.210.133
,,
PRO,0,
移栽装置23-托盘-RFID-IP,PRO_RFIP_023,192.168.210.134
,,
PRO,0,
移栽装置24-托盘-RFID-IP,PRO_RFIP_024,192.168.210.135
,,
PRO,0,横移-HY1-托盘-RFID-IP,PRO_RFIP_201,192.168.210.1
19
,,
PRO,0,横移-HY2-托盘-RFID-IP,PRO_RFIP_202,192.168.210.1
22
,,
PRO,0,横移-HY3-托盘-RFID-IP,PRO_RFIP_203,
192.168.210.127
,,
PRO,0,横移-HY4-托盘-RFID-IP,PRO_RFIP_204,192.168.210.1
30
,,
PRO,0,横移-HY5-托盘-RFID-IP,PRO_RFIP_205,
192.168.210.133
,,
PRO,0,横移-HY6-托盘-RFID-IP,PRO_RFIP_206,192.168.210.13
6
,,
PRO,0,横移-HY7-托盘-RFID-IP,PRO_RFIP_207,
192.168.210.139
,,
PRO,0,横移-HY8-托盘-RFID-IP,PRO_RFIP_208,192.168.210.1
42
,,
PRO,0,横移-HY9-托盘-RFID-IP,PRO_RFIP_209,192.168.210.1
4
5,,
PRO,0,横移-HY10-托盘-RFID-IP,PRO_RFIP_210,192.168.210.1
48
,,
PRO,0,横移-HY11-托盘-RFID-IP,PRO_RFIP_211,192.168.210.1
51
,,
PRO,0,横移-HY12-托盘-RFID-IP,PRO_RFIP_212,192.168.210.1
54
,,
PRO,0,横移-HY13-托盘-RFID-IP,PRO_RFIP_213,192.168.210.1
57
,,
PRO,0,横移-HY14-托盘-RFID-IP,PRO_RFIP_214,
192.168.210.160
,,
PRO,0,横移-HY15-托盘-RFID-IP,PRO_RFIP_215,192.168.210.1
63
,,
PRO,0,横移-HY16-托盘-RFID-IP,PRO_RFIP_216,192.168.210.1
66
,,
PRO,0,横移-HY17-托盘-RFID-IP,PRO_RFIP_217,192.168.210.1
69
,,
PRO,0,横移-HY18-托盘-RFID-IP,PRO_RFIP_218,192.168.210.1
72
,,
PRO,0,横移-HY19-托盘-RFID-IP,PRO_RFIP_219,
192.168.210.175
,,
PRO,0,横移-HY20-托盘-RFID-IP,PRO_RFIP_220,192.168.210.1
78
,,
PRO,0,横移-HY21-托盘-RFID-IP,PRO_RFIP_221,192.168.210.1
81
,,
PRO,0,上料模块
1-料架-RFID-IP,PRO_RFIP_101,192.168.210.10
2,,
PRO,0,上料模块
2-料架-RFID-IP,PRO_RFIP_102,192.168.210.109
,,
PRO,0,上料模块
3-料架-RFID-IP,PRO_RFIP_103,192.168.210.115
,,
PRO,0,上料模块
4-料架-RFID-IP,PRO_RFIP_104,192.168.210.118
,,
PRO,0,上料模块
5-料架-RFID-IP,PRO_RFIP_105,192.168.210.119
,,
PRO,0,上料模块T3-C1-托盘-RFID-IP,PRO_RFIP_300,192.168.210.1
19
,,
PRO,0,
D1-1移栽1-托盘-RFID-IP,PRO_RFIP_001,192.168.210.138
,,
PRO,0,
D1-2移栽2-托盘-RFID-IP,PRO_RFIP_002,192.168.210.139
,,
PRO,0,
D2-1移栽3-托盘-RFID-IP,PRO_RFIP_003,192.168.210.132
,,
PRO,0,
D2-2移栽4-托盘-RFID-IP,PRO_RFIP_004,192.168.210.131
,,
PRO,0,
D3-1移栽5-托盘-RFID-IP,PRO_RFIP_005,192.168.210.124
,,
PRO,0,
D3-2移栽6-托盘-RFID-IP,PRO_RFIP_006,192.168.210.122
,,
PRO,0,
D4-1移栽7-托盘-RFID-IP,PRO_RFIP_007,192.168.210.12
1,,
PRO,0,
D4-2移栽8-托盘-RFID-IP,PRO_RFIP_008,192.168.210.118
,,
PRO,0,
D5-1移栽
9-托盘-RFID-IP,PRO_RFIP_009,192.168.210.113,,
PRO,0,
D5-2移栽
10-托盘-RFID-IP,PRO_RFIP_010,192.168.210.114,,
PRO,0,
D6-1移栽11-托盘-RFID-IP,PRO_RFIP_011,192.168.210.108
,,
PRO,0,
D6-2移栽12-托盘-RFID-IP,PRO_RFIP_012,192.168.210.109
,,
PRO,0,
D7-1移栽13-托盘-RFID-IP,PRO_RFIP_013,192.168.210.140
,,
PRO,0,
D7-2移栽14-托盘-RFID-IP,PRO_RFIP_014,192.168.210.141
,,
PRO,0,
D8-2移栽15-托盘-RFID-IP,PRO_RFIP_015,192.168.210.134
,,
PRO,0,
D8-1移栽16-托盘-RFID-IP,PRO_RFIP_016,192.168.210.133
,,
PRO,0,
D9-2移栽17-托盘-RFID-IP,PRO_RFIP_017,192.168.210.125
,,
PRO,0,
D9-1移栽18-托盘-RFID-IP,PRO_RFIP_018,192.168.210.126
,,
PRO,0,
D10-2移栽19-托盘-RFID-IP,PRO_RFIP_019,192.168.210.129
,,
PRO,0,
D10-1移栽20-托盘-RFID-IP,PRO_RFIP_020,192.168.210.130
,,
PRO,0,
D11-2移栽21-托盘-RFID-IP,PRO_RFIP_021,192.168.210.116
,,
PRO,0,
D11-1移栽22-托盘-RFID-IP,PRO_RFIP_022,192.168.210.117
,,
PRO,0,
D12-2移栽23-托盘-RFID-IP,PRO_RFIP_023,192.168.210.103
,,
PRO,0,
D12-1移栽24-托盘-RFID-IP,PRO_RFIP_024,192.168.210.104
,,
PRO,0,横移-HY1-托盘-RFID-IP,PRO_RFIP_201,192.168.210.1
44
,,
PRO,0,横移-HY2-托盘-RFID-IP,PRO_RFIP_202,192.168.210.1
45
,,
PRO,0,横移-HY3-托盘-RFID-IP,PRO_RFIP_203,,,
PRO,0,横移-HY4-托盘-RFID-IP,PRO_RFIP_204,192.168.210.1
46
,,
PRO,0,横移-HY5-托盘-RFID-IP,PRO_RFIP_205,,,
PRO,0,横移-HY6-托盘-RFID-IP,PRO_RFIP_206,192.168.210.13
7
,,
PRO,0,横移-HY7-托盘-RFID-IP,PRO_RFIP_207,,,
PRO,0,横移-HY8-托盘-RFID-IP,PRO_RFIP_208,192.168.210.1
23
,,
PRO,0,横移-HY9-托盘-RFID-IP,PRO_RFIP_209,192.168.210.1
3
5,,
PRO,0,横移-HY10-托盘-RFID-IP,PRO_RFIP_210,192.168.210.1
36
,,
PRO,0,横移-HY11-托盘-RFID-IP,PRO_RFIP_211,192.168.210.1
27
,,
PRO,0,横移-HY12-托盘-RFID-IP,PRO_RFIP_212,192.168.210.1
28
,,
PRO,0,横移-HY13-托盘-RFID-IP,PRO_RFIP_213,192.168.210.1
15
,,
PRO,0,横移-HY14-托盘-RFID-IP,PRO_RFIP_214,,,
PRO,0,横移-HY15-托盘-RFID-IP,PRO_RFIP_215,192.168.210.1
07
,,
PRO,0,横移-HY16-托盘-RFID-IP,PRO_RFIP_216,192.168.210.1
02
,,
PRO,0,横移-HY17-托盘-RFID-IP,PRO_RFIP_217,192.168.210.1
01
,,
PRO,0,横移-HY18-托盘-RFID-IP,PRO_RFIP_218,192.168.210.1
10
,,
PRO,0,横移-HY19-托盘-RFID-IP,PRO_RFIP_219,,,
PRO,0,横移-HY20-托盘-RFID-IP,PRO_RFIP_220,192.168.210.1
11
,,
PRO,0,横移-HY21-托盘-RFID-IP,PRO_RFIP_221,192.168.210.1
05
,,
PRO,0,上料模块
T1-料架-RFID-IP,PRO_RFIP_101,192.168.210.14
2,,
PRO,0,上料模块
T2-料架-RFID-IP,PRO_RFIP_102,192.168.210.143
,,
PRO,0,上料模块
T3-料架-RFID-IP,PRO_RFIP_103,192.168.210.119
,,
PRO,0,上料模块
T4-料架-RFID-IP,PRO_RFIP_104,192.168.210.112
,,
PRO,0,上料模块
T5-料架-RFID-IP,PRO_RFIP_105,192.168.210.106
,,
PRO,0,上料模块T3-C1-托盘-RFID-IP,PRO_RFIP_300,192.168.210.1
20
,,
,,,,,,
DI,0,急停,SuddenStop_BTN,0,HC,X00
DI,0,复位,Reset_BTN,1,HC,X01
...
...
source/DeviceLibrary/assemblyLine/EquipBase.cs
查看文件 @
977f5e7
...
...
@@ -579,7 +579,7 @@ namespace OnlineStore.DeviceLibrary
// [_进仓_14-SMove] [CheckFixture] [MO_17_Stop2Check] 等待[X462 - 进仓14阻挡2托盘检测 - StopCylinder_Check2 = LOW] 超时[181.7]秒
if
(
moveInfo
.
MoveType
.
Equals
(
LineMoveType
.
CheckFixture
)
&&
(
moveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_00_Stop1Down
)
||
moveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_01_
Fixture
Check
)
||
moveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_01_
Tray
Check
)
||
moveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_17_Stop2Check
)))
{
return
true
;
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip_InStore.cs
查看文件 @
977f5e7
...
...
@@ -59,469 +59,18 @@ namespace OnlineStore.DeviceLibrary
NextCodeList
=
new
List
<
string
>();
}
}
}
public
event
TrayProcessEnd
TrayPEndEvent
;
#
region
托盘检测
private
InOutParam
CheckParam
=
new
InOutParam
();
internal
DateTime
lastStopDown
=
DateTime
.
Now
;
private
Stopwatch
swWaitWatch
=
new
Stopwatch
();
}
private
object
lockObj
=
""
;
#
region
托盘检测
private
void
StartCheckFixture
()
{
//if (Monitor.TryEnter(lockObj, 100))
//{
// try
// {
// if (SecondMoveInfo.MoveType.Equals(LineMoveType.None).Equals(false))
// {
// LogUtil.error(Name + " StartCheckFixture " + " 不在空闲中,直接返回 ");
// return;
// }
// if (!LineManager.Line.CanProcessLine())
// {
// swWaitWatch.Stop();
// return;
// }
// if (Config.SidesWayNum > 0)
// {
// if (IOValue(IO_Type.SW_TrayCheck).Equals(IO_VALUE.HIGH))
// {
// bool canProcess = (LineManager.Line.SwNoProcess(Config.SidesWayNum));
// if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, false) && canProcess)
// {
// swWaitWatch.Stop();
// UpdateTrayNum();
// //判断是否是需要的托盘
// if (CurrTrayIsNeed(currTrayNum, true))
// {
// SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam);
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopUp);
// IOMove(IO_Type.SW_StopDown, IO_VALUE.LOW);
// LogUtil.info(Name + " [" + trayCount + "] 检测到SW_TrayCheck:" + SecondMoveInfo.SLog + "横移顶升气缸上升 )");
// CylinderMove(SecondMoveInfo, IO_Type.SW_TopCylinder_Down, IO_Type.SW_TopCylinder_Up);
// }
// else
// {
// SMoveEnd();
// }
// }
// }
// else if (Config.SidesWayNum.Equals(2) && IOValue(IO_Type.SW_StopCheck).Equals(IO_VALUE.HIGH)
// && (DateTime.Now - lastStopDown).TotalSeconds > 3)
// {
// bool canProcess = (LineManager.Line.SwNoProcess(Config.SidesWayNum));
// if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, false) && canProcess)
// {
// swWaitWatch.Stop();
// lastStopDown = DateTime.Now;
// SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam);
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_Stop1Down);
// LogUtil.debug(Name + " [" + trayCount + "] 检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,等待 SW_StopCheck=0,清理托盘RFID");
// ClearTrayRFID();
// IOMove(IO_Type.SW_StopDown, IO_VALUE.HIGH, 1200);
// SecondMoveInfo.OneWaitCanEndStep = true;
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_StopCheck, IO_VALUE.LOW));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.HIGH));
// }
// }
// else
// {
// swWaitWatch.Stop();
// }
// }
// else
// {
// //托盘在两个阻挡内
// if (IOValue(IO_Type.FL_TrayCheck).Equals(IO_VALUE.HIGH))
// {
// if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, true))
// {
// SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
// CheckLog("检测到FL_TrayCheck:" + SecondMoveInfo.SLog + " FL阻挡1上升)");
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
// IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW);
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW));
// }
// }
// else if (IOValue(IO_Type.FL_StopCheck).Equals(IO_VALUE.HIGH))
// {
// if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, true))
// {
// //托盘在第一个阻挡处
// SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_Stop1Down);
// CheckLog(" 检测到FL_StopCheck:" + SecondMoveInfo.SLog + " FL阻挡1下降 ,等待 FL_StopCheck=0");
// IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.HIGH, 1200);
// SecondMoveInfo.OneWaitCanEndStep = true;
// //SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down1, IO_VALUE.HIGH));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCheck, IO_VALUE.LOW));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_TrayCheck, IO_VALUE.HIGH));
// /// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
// }
// }
// else
// {
// swWaitWatch.Stop();
// }
// }
// }
// catch (Exception ex)
// {
// LogUtil.error(Name + " StartCheckFixture " + " 出错:" + ex.ToString());
// }
// finally
// {
// Monitor.Exit(lockObj);
// }
//}
//else
//{
// LogUtil.error(Name + " StartCheckFixture " + "失败,未得到锁");
//}
{
}
protected
override
void
CheckFixtureProcess
()
{
//if (!LineManager.Line.LineCanRun())
//{
// return;
//}
//if (SecondMoveInfo.IsInWait)
//{
// CheckWait(SecondMoveInfo);
//}
//if (SecondMoveInfo.IsInWait)
//{
// return;
//}
//#region 托盘检测
//if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_00_Stop1Down))
//{
// if (Config.SidesWayNum <= 0)
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
// CheckLog("托盘检测:" + SecondMoveInfo.SLog + "阻挡1上升,等待FL_TrayCheck=1 ");
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_TrayCheck, IO_VALUE.HIGH));
// }
// else
// {
// TimeSpan span = DateTime.Now - SecondMoveInfo.LastSetpTime;
// //去掉延迟
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
// LogUtil.debug(Name + "托盘阻挡:" + SecondMoveInfo.SLog + "阻挡气缸上升,下降耗时(" + FormUtil.GetSpanStr(span) + "),等待SW_TrayCheck=1)");
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.HIGH));
// }
//}
////else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_01_FixtureCheck))
////{
//// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_02_WaitFixture);
//// CheckLog("托盘检测:" + SecondMoveInfo.SLog + "再次等待SW_TrayCheck=1 :");
//// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.HIGH));
////}
////else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_02_WaitFixture))
////{
//// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
//// CheckLog("托盘检测:" + SecondMoveInfo.SLog + "阻挡气缸上升,等待SW_TrayCheck=1)");
//// CheckAndMove(IO_Type.SW_StopDown, IO_VALUE.LOW);
//// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.HIGH));
////}
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_03_Stop2Down))
//{
// UpdateTrayNum();
// //出料中,需要拦盘
// if (CurrTrayIsNeed(currTrayNum, true))
// {
// SecondMoveInfo.MoveParam = CheckParam;
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopUp);
// if (Config.SidesWayNum <= 0)
// {
// CheckLog("托盘检测: " + SecondMoveInfo.SLog + " 顶升气缸上 升 )");
// CylinderMove(SecondMoveInfo, IO_Type.FL_TopCylinder_Down, IO_Type.FL_TopCylinder_Up);
// }
// else
// {
// CylinderMove(SecondMoveInfo, IO_Type.SW_TopCylinder_Down, IO_Type.SW_TopCylinder_Up);
// if (Config.SidesWayNum.Equals(2) && LineManager.Line.SwCanUpMove(3))
// {
// CheckLog("托盘检测:" + SecondMoveInfo.SLog + " 需要此托盘,横移顶升气缸上升,同时横移3处的顶升也可以上升 ");
// LineManager.Line.CylinderMove(null, IO_Type.SW3_TopCylinder_Down, IO_Type.SW3_TopCylinder_Up);
// }
// else
// {
// CheckLog("托盘检测:" + SecondMoveInfo.SLog + " 需要此托盘,横移顶升气缸上 升 ");
// }
// }
// }
// else
// {
// if (Config.SidesWayNum <= 0)
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_15_WaitCanGo);
// TrayInfo tray = TrayManager.GetTrayInfo(currTrayNum);
// CheckLog(SecondMoveInfo.MoveNum + "***************上个托盘号【" + preTrayNum + "】,当前 【" + tray.ToStr() + "】没有出入料任务,放盘通过~");
// //CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,移栽2,需要判断是否可以放盘通过,最多等待10000)");
// CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,等待 NextStopCheck=0");
// // SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.NextStopCheck, IO_VALUE.LOW));
// }
// else
// {
// CheckLog("托盘检测:不需要此托盘,写一下顶升上升,结束处理");
// if (Config.SidesWayNum.Equals(2))
// {
// CylinderMove(null, IO_Type.SW_TopCylinder_Down, IO_Type.SW_TopCylinder_Up);
// if (LineManager.Line.SwCanUpMove(3))
// {
// LineManager.Line.CylinderMove(null, IO_Type.SW3_TopCylinder_Down, IO_Type.SW3_TopCylinder_Up);
// }
// }
// SMoveEnd();
// }
// }
//}
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_06_TopUp))
//{
//// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_07_LocationUp);
//// CheckLog("托盘检测: " + SecondMoveInfo.SLog + " , 定位气缸上升 )");
//// if (Config.SidesWayNum > 0)
//// {
//// CylinderMove(SecondMoveInfo, IO_Type.SW_LocationCylinder_Down, IO_Type.SW_LocationCylinder_Up);
//// }
////}
////else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_07_LocationUp))
////{
// CheckLog("托盘阻挡*************** 托盘号【" + currTrayNum + "】");
// //判断盘是空盘,空盘并且编号正确才需要放料盘过去
// if (MoveInfo.MoveType.Equals(LineMoveType.InStore))
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_11_CodeRember);
// LogInfo(SecondMoveInfo.MoveNum + SecondMoveInfo.SLog + "*************** 托盘号【" + currTrayNum + "】 ,需要入料,移栽料盘");
// SecondMoveInfo.EndStepWait();
// if (Config.SidesWayNum > 0)
// {
// // CylinderMove(null, IO_Type.SW_LocationCylinder_Down, IO_Type.SW_LocationCylinder_Up);
// }
// }
// else
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_200_WaitInoutParam);
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
// // SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitFeedNoMove());
// LogInfo(SecondMoveInfo.MoveNum + SecondMoveInfo.SLog + " ,托盘号【" + currTrayNum + "】需要出库,等待开始出库");
// if (Config.SidesWayNum > 0)
// {
// //CylinderMove(null, IO_Type.SW_LocationCylinder_Down, IO_Type.SW_LocationCylinder_Up);
// }
// }
//}
//#endregion
//#region 不需要托盘或移栽入库料盘完成
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_12_MoveOk))
//{
// if (Config.SidesWayNum > 0)
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_13_LoactionDown);
// SInLog("托盘放行, " + SecondMoveInfo.SLog + " 托盘开始放行,环形线定位气缸下降");
// CylinderMove(SecondMoveInfo, IO_Type.SW_LocationCylinder_Up, IO_Type.SW_LocationCylinder_Down);
// }
// else
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_14_TopDown);
// CheckLog("托盘放行, " + SecondMoveInfo.SLog + " , 顶升气缸下降)");
// CylinderMove(SecondMoveInfo, IO_Type.FL_TopCylinder_Up, IO_Type.FL_TopCylinder_Down);
// }
//}
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_13_LoactionDown))
//{
// if (Config.SidesWayNum.Equals(2))
// {
// //preTrayNum = currTrayNum;
// CheckLog("托盘放行: 此处为环形线横移2,顶升气缸不需要下降, (托盘放行结束) ");
// SMoveEnd();
// }
// else
// {
// if (CylinderIsOk(IO_Type.SW_TopCylinder_Up, IO_Type.SW_TopCylinder_Down))
// {
// MO_15_WaitCanGo();
// }
// else
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_14_TopDown);
// CheckLog("托盘放行, " + SecondMoveInfo.SLog + " ,环形线顶升气缸下降)");
// CylinderMove(SecondMoveInfo, IO_Type.SW_TopCylinder_Up, IO_Type.SW_TopCylinder_Down);
// }
// }
//}
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_14_TopDown))
//{
// MO_15_WaitCanGo();
//}
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_15_WaitCanGo))
//{
// if (Config.SidesWayNum > 0)
// {
// if (Config.SidesWayNum.Equals(3) || Config.SidesWayNum.Equals(1))
// {
// CylinderMove(null, IO_Type.SW_TopCylinder_Down, IO_Type.SW_TopCylinder_Up);
// }
// CheckLog("托盘放行 SecondStoreMove:(托盘放行结束)横移顶升先上升 ");
// SMoveEnd();
// }
// else
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_16_Stop2Down);
// CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,阻挡气缸1-2下降,等待");
// IOMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.HIGH);
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down2, IO_VALUE.HIGH));
// // SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
// }
// // SecondMoveInfo.EndStepWait();
//}
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_16_Stop2Down))
//{
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_17_Stop2Check);
// CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,等待FL_TrayCheck=0");
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_TrayCheck, IO_VALUE.LOW));
//}
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_17_Stop2Check))
//{
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_18_WaitTime);
// CheckLog("托盘放行 " + SecondMoveInfo.SLog + " , 等待500ms后阻挡2上升");
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
//}
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_18_WaitTime))
//{
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_19_StopCylinder_Back);
// CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,等待托盘离开 )");
// IOMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.LOW);
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down2, IO_VALUE.LOW));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(200));
//}
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_19_StopCylinder_Back))
//{
// //preTrayNum = currTrayNum;
// CheckLog("托盘放行 SecondStoreMove:(托盘放行结束) ");
// SMoveEnd();
//}
//#endregion
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_200_WaitInoutParam))
//{
// if ( StartTrayOut(SecondMoveInfo.MoveParam))
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_201_WaitOutEnd);
// }
// //如果当前无料串,或者料串已离开,直接放行 托盘
// else if (SecondMoveInfo.IsTimeOut(30))
// {
// WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待出库移栽超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
// LogUtil.error(WarnMsg + ",暂时放托盘离开");
// TrayMoveOk();
// }
// else if (SecondMoveInfo.IsTimeOut(20))
// {
// WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待出库移栽超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
// LogUtil.error(WarnMsg, DeviceID * 1000 + 21);
// Alarm(LineAlarmType.IoSingleTimeOut);
// }
//}
}
private
void
TrayMoveOk
(
bool
needCheck
=
false
)
{
//if (needCheck && (!SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_11_CodeRember)))
//{
// return;
//}
//SecondMoveInfo.NextMoveStep(LineMoveStep.MO_12_MoveOk);
//InLog("料盘移栽" + MoveInfo.SLog + ","+SecondMoveInfo.SLog+":托盘开始放行");
//if (Config.SidesWayNum > 0)
//{
// if (CylinderIsOk(IO_Type.SW_LocationCylinder_Up, IO_Type.SW_LocationCylinder_Down))
// {
// if (Config.SidesWayNum.Equals(2))
// {
// //preTrayNum = currTrayNum;
// CheckLog("托盘放行: 此处为环形线横移2,顶升气缸不需要下降, (托盘放行结束) ");
// SMoveEnd();
// }
// else
// {
// if (CylinderIsOk(IO_Type.SW_TopCylinder_Up, IO_Type.SW_TopCylinder_Down))
// {
// MO_15_WaitCanGo();
// }
// else
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_14_TopDown);
// CheckLog("托盘放行, " + SecondMoveInfo.SLog + " ,环形线顶升气缸下降)");
// CylinderMove(SecondMoveInfo, IO_Type.SW_TopCylinder_Up, IO_Type.SW_TopCylinder_Down);
// }
// }
// }
// else
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_13_LoactionDown);
// SInLog("托盘放行, " + SecondMoveInfo.SLog + " 托盘开始放行,环形线定位气缸下降,判断顶升是否需要同时下降");
// CylinderMove(SecondMoveInfo, IO_Type.SW_LocationCylinder_Up, IO_Type.SW_LocationCylinder_Down);
// if (!Config.SidesWayNum.Equals(2))
// {
// CylinderMove(SecondMoveInfo, IO_Type.SW_TopCylinder_Up, IO_Type.SW_TopCylinder_Down);
// }
// }
//}
//else
//{
// if (CylinderIsOk(IO_Type.FL_TopCylinder_Up, IO_Type.FL_TopCylinder_Down))
// {
// MO_15_WaitCanGo();
// }
// else
// {
// SecondMoveInfo.NextMoveStep(LineMoveStep.MO_14_TopDown);
// CheckLog("托盘放行, " + SecondMoveInfo.SLog + " , 顶升气缸下降)");
// CylinderMove(SecondMoveInfo, IO_Type.FL_TopCylinder_Up, IO_Type.FL_TopCylinder_Down);
// }
//}
}
private
void
MO_15_WaitCanGo
()
{
//SecondMoveInfo.NextMoveStep(LineMoveStep.MO_15_WaitCanGo);
//if (Config.SidesWayNum > 0)
//{
// CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,等待托盘离开");
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.LOW));
//}
//else
//{
// CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,等待 NextStopCheck=0");
// // SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.NextStopCheck, IO_VALUE.LOW));
//}
}
private
void
SMoveEnd
()
{
lastStopDown
=
DateTime
.
Now
.
AddSeconds
(-
1
);
SecondMoveInfo
.
EndMove
();
this
.
TrayPEndEvent
?.
Invoke
(
Config
.
SidesWayNum
,
currTrayNum
);
{
}
#
endregion
#
region
入料流程
...
...
@@ -942,7 +491,8 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FI_32_WaitTray
))
//TODO
{
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_11_CodeRember
))
currTrayNum
=
-
1
;
if
(
LineManager
.
Line
.
TrayIsReady
(
DeviceID
,
out
currTrayNum
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FI_33_CylinderDown
);
//CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Up, IO_Type.SL_MoveCylinder_Down);
...
...
@@ -1496,7 +1046,10 @@ namespace OnlineStore.DeviceLibrary
#
endregion
#
region
判断托盘是否需要
private
void
TrayMoveOk
(
bool
needCheck
=
false
)
{
LineManager
.
Line
.
TrayCanLeave
(
DeviceID
);
}
internal
bool
CurrTrayIsNeed
(
int
trayNum
,
bool
NeedSaveParam
)
{
try
...
...
@@ -1556,8 +1109,7 @@ namespace OnlineStore.DeviceLibrary
}
if
(
NeedSaveParam
)
{
LogInfo
(
" 【"
+
info
.
ToStr
()
+
"】需要出库 ,拦截托盘 "
);
CheckParam
=
param
;
LogInfo
(
" 【"
+
info
.
ToStr
()
+
"】需要出库 ,拦截托盘 "
);
}
return
true
;
}
...
...
@@ -1569,19 +1121,17 @@ namespace OnlineStore.DeviceLibrary
if
(
trayCanUse
&&
runStatus
.
Equals
(
LineRunStatus
.
Busy
)
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
InStore
))
{
//入料执行中, 且需要空托盘
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FI_32_WaitTray
)
&&
MoveInfo
.
IsInWait
.
Equals
(
false
))
//if (MoveInfo.MoveStep >= LineMoveStep.FI_11_CylinderUp && MoveInfo.MoveStep <= LineMoveStep.FI_20_WaitTray)
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FI_32_WaitTray
)
&&
MoveInfo
.
IsInWait
.
Equals
(
false
))
{
if
(
NeedEmptyTrayGo
())
{
LogUtil
.
info
(
Name
+
"拦截到空托盘【"
+
trayNum
+
"】,后续料仓需要空托盘,放行托盘"
);
return
false
;
}
//
if (NeedEmptyTrayGo())
//
{
//
LogUtil.info(Name + "拦截到空托盘【" + trayNum + "】,后续料仓需要空托盘,放行托盘");
//
return false;
//
}
if
(
NeedSaveParam
)
{
CheckParam
=
param
;
{
LogUtil
.
info
(
Name
+
"拦截到空托盘【"
+
trayNum
+
"】,入料执行中,需要空托盘"
);
}
return
true
;
...
...
@@ -1627,30 +1177,30 @@ namespace OnlineStore.DeviceLibrary
return
false
;
}
private
bool
NeedEmptyTrayGo
()
{
try
{
if
(
DeviceID
.
Equals
(
102
))
{
MoveEquip
moveEquip7
=
LineManager
.
Line
.
MoveEquipMap
[
7
];
if
(
moveEquip7
.
IsWaitEmptyTray
())
{
return
true
;
}
MoveEquip
moveEquip8
=
LineManager
.
Line
.
MoveEquipMap
[
8
];
if
(
moveEquip8
.
IsWaitEmptyTray
())
{
return
true
;
}
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"NeedEmptyTrayGo出错:"
+
ex
.
ToString
());
}
return
false
;
}
//
private bool NeedEmptyTrayGo()
//
{
//
try
//
{
//
if (DeviceID.Equals(102))
//
{
//
MoveEquip moveEquip7 = LineManager.Line.MoveEquipMap[7];
//
if (moveEquip7.IsWaitEmptyTray())
//
{
//
return true;
//
}
//
MoveEquip moveEquip8 = LineManager.Line.MoveEquipMap[8];
//
if (moveEquip8.IsWaitEmptyTray())
//
{
//
return true;
//
}
//
}
//
}
//
catch (Exception ex)
//
{
//
LogUtil.error("NeedEmptyTrayGo出错:" + ex.ToString());
//
}
//
return false;
//
}
#
endregion
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip_OutStore.cs
查看文件 @
977f5e7
...
...
@@ -17,24 +17,7 @@ namespace OnlineStore.DeviceLibrary
private
InOutParam
LastOutParam
=
new
InOutParam
();
private
bool
NeedCheckShelf
=
true
;
internal
bool
CanStartCheckOut
(
int
trayNum
)
{
//preTrayNum = currTrayNum;
//currTrayNum = trayNum;
//if (CurrTrayIsNeed(currTrayNum, true))
//{
// SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam);
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopUp);
// CheckLog("检测到SW_TrayCheck:" + SecondMoveInfo.SLog + "横移顶升气缸上升 )");
// CylinderMove(SecondMoveInfo, IO_Type.SW_TopCylinder_Down, IO_Type.SW_TopCylinder_Up);
// return true;
//}
//else
{
// currTrayNum = num;
return
false
;
}
}
private
bool
StartTrayOut
(
InOutParam
outParam
)
{
...
...
@@ -66,10 +49,7 @@ namespace OnlineStore.DeviceLibrary
}
runStatus
=
LineRunStatus
.
Busy
;
lineStatus
=
LineStatus
.
OutStoreExecute
;
lineStatus
=
LineStatus
.
OutStoreExecute
;
string
lastXuniRfid
=
LastOutParam
.
rfid
;
if
(
lastXuniRfid
.
Equals
(
""
)
||
lastXuniRfid
.
Equals
(
outParam
.
rfid
))
{
...
...
source/DeviceLibrary/assemblyLine/LineBean.cs
查看文件 @
977f5e7
...
...
@@ -281,11 +281,11 @@ namespace OnlineStore.DeviceLibrary
{
//如果已经转动5秒,先停止链条
TimeSpan
span
=
DateTime
.
Now
-
StartTime
;
//
if (span.TotalSeconds > 5)
//
{
//
LogUtil.info(Name + "链条转动超过5秒,先停止链条转动");
// WriteDrivetMotorRun(IO_VALUE.LOW);
//
}
if
(
span
.
TotalSeconds
>
5
)
{
LogUtil
.
info
(
Name
+
"链条转动超过5秒,先停止链条转动"
);
WriteDrivetMotorRun
(
IO_VALUE
.
LOW
);
}
if
(
runStatus
.
Equals
(
LineRunStatus
.
Wait
))
{
LogUtil
.
error
(
Name
+
"启动过程中发现 runStatus=Wait,中断启动"
);
...
...
@@ -339,7 +339,8 @@ namespace OnlineStore.DeviceLibrary
}
TrayManager
.
ErrorDeviceId
=
-
1
;
T3C1_Stop
(
MoveInfo
);
T3C1_TrayNum
=
-
1
;
//横移轨道下降
//SideWayStop();
//SW23WaitTrayNum = -1;
...
...
@@ -738,10 +739,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
error
(
Name
+
"定时检测报警出错:"
,
ex
);
}
Thread
.
Sleep
(
1
);
}
/// <summary>
/// 定时处理,监听信号,监听IO
/// </summary>
}
protected
override
void
mainTimer_Elapsed
(
object
sender
,
System
.
Timers
.
ElapsedEventArgs
e
)
{
try
...
...
@@ -830,6 +828,7 @@ namespace OnlineStore.DeviceLibrary
default
:
break
;
}
T3C1_TimerProcess
();
//SideWayTimerProcess();
//ShuntTimerProcess();
...
...
@@ -841,10 +840,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
error
(
Name
+
"LineTimerPro 出错:"
,
ex
);
}
busyPro
=
false
;
}
/// <summary>
/// 气压检测处理
/// </summary>
}
private
IO_VALUE
CheckAir
(
IO_VALUE
airCheck
,
IO_VALUE
lastAir
)
{
IO_VALUE
airValue
=
IO_VALUE
.
HIGH
;
...
...
@@ -875,10 +871,7 @@ namespace OnlineStore.DeviceLibrary
}
#
region
是否已经接收到过出库信息
/// <summary>
///是否已经接收到过出库信息
///</summary>
public
bool
IsReviceInPosId
(
MoveEquip
moveEquip
,
string
posId
)
{
bool
isReviceInfo
=
false
;
...
...
@@ -925,7 +918,8 @@ namespace OnlineStore.DeviceLibrary
}
MoveInfo
.
EndMove
();
WriteDrivetMotorRun
(
IO_VALUE
.
LOW
);
WriteDrivetMotorRun
(
IO_VALUE
.
LOW
);
T3C1_Stop
();
//IOMove(IO_Type.SW4_MotorRun, IO_VALUE.LOW);
//IOMove(IO_Type.SW4_TopCylinder_Down, IO_VALUE.LOW);
//IOMove(IO_Type.SW4_TopCylinder_Up, IO_VALUE.LOW);
...
...
@@ -1030,11 +1024,12 @@ namespace OnlineStore.DeviceLibrary
string
msg
=
""
;
// int tLength = 20;
//msg += "横移41托盘:" + Sw41TrayNum + "\n";
//msg += "横移23托盘:" + Sw23
TrayNum + "\n";
msg
+=
"T3C1托盘:"
+
T3C1_
TrayNum
+
"\n"
;
msg
+=
"状态: "
+
runStatus
+
"\t "
;
msg
+=
" "
+
lineStatus
+
"\n"
;
msg
+=
"alarm: "
+
alarmType
+
"\n"
;
msg
+=
"Move:"
+
MoveInfo
.
MoveType
+
" "
+
MoveInfo
.
SLog
+
"\n"
;
msg
+=
"T3C1:"
+
T3C1__MoveInfo
.
MoveType
+
" "
+
T3C1__MoveInfo
.
MoveStep
+
"\n"
;
//msg += "横移41托盘:" + Sw41TrayNum.ToString().PadLeft(2,'0') + ":" + SW41_MoveInfo.MoveType + " " + SW41_MoveInfo.MoveStep + "\n";
//msg += "横移23托盘:" + Sw23TrayNum.ToString().PadLeft(2,'0') + ":" + SW23_MoveInfo.MoveType + " " + SW23_MoveInfo.MoveStep + "\n";
...
...
source/DeviceLibrary/assemblyLine/LineBean_Partial.cs
查看文件 @
977f5e7
...
...
@@ -375,56 +375,42 @@ namespace OnlineStore.DeviceLibrary
// LogUtil.error("runStatus【" + runStatus + "】,move.MoveInfo.MoveType【" + move.MoveInfo.MoveType + "】,move.runStatus【" + move.runStatus + "】 ");
return
false
;
}
#
endregion
#
region
上料机构托盘到位验证及放行
/// <summary>
///
判断指定的皮带线是否可用
///
上料机构,判断对应的空托盘是否准备完成
/// </summary>
/// <param name="lineNum"></param>
/// <param name="deviceID">上料机构ID</param>
/// <param name="currTrayNum">空托盘号</param>
/// <returns></returns>
internal
bool
ProvidingCanUse
(
List
<
int
>
lineList
)
internal
bool
TrayIsReady
(
int
deviceID
,
out
int
currTrayNum
)
{
//有一条线可用就返回true
foreach
(
int
lineNum
in
lineList
)
{
int
deviceN
=
200
+
lineNum
;
if
(
HYEquipMap
.
ContainsKey
(
deviceN
))
currTrayNum
=
-
1
;
if
(
deviceID
.
Equals
(
103
))
{
if
(
T3C1__MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
CheckFixture
)
&&
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_11_CodeRember
))
{
HYEquipBase
pro
=
HYEquipMap
[
deviceN
];
if
(
pro
.
runStatus
>=
LineRunStatus
.
HomeMoving
&&
pro
.
isInSuddenDown
.
Equals
(
false
)
&&
pro
.
isNoAirCheck
.
Equals
(
false
))
{
return
true
;
}
currTrayNum
=
T3C1_TrayNum
;
return
true
;
}
}
return
false
;
}
/// <summary>
/// 判断出料流水线是否可以开始出料
/// </summary>
internal
bool
DLineStartOut
(
int
dlineId
,
int
LineNum
)
/// 上料机构,料盘已放入托盘,托盘可以离开
/// </summary>
/// <param name="deviceID"></param>
internal
void
TrayCanLeave
(
int
deviceID
)
{
//foreach (DischargeLine line in DisLineMap.Values)
//{
// if ((line.DeviceID % 100).Equals(dlineId))
// {
// if (line.CanStartOut(LineNum))
// {
// return true;
// }
// }
//}
return
false
;
if
(
deviceID
.
Equals
(
103
))
{
MO_16_Stop2Down
();
}
}
#
endregion
internal
bool
Move5CanProcessTray
(
int
deviceId
)
{
return
true
;
}
internal
bool
Move9CanStop2Down
(
int
deviceId
,
int
trayNum
=
0
)
{
return
true
;
}
}
}
source/DeviceLibrary/assemblyLine/LineBean_T3-C1.cs
0 → 100644
查看文件 @
977f5e7
using
OnlineStore.Common
;
using
OnlineStore.LoadCSVLibrary
;
using
System
;
using
System.Collections.Generic
;
using
System.Diagnostics
;
using
System.Linq
;
using
System.Text
;
using
System.Threading
;
using
System.Threading.Tasks
;
namespace
OnlineStore.DeviceLibrary
{
partial
class
LineBean
{
private
bool
T3C1_Pro
=
false
;
private
DateTime
T3C1_ProTime
=
DateTime
.
Now
;
private
static
LineMoveInfo
T3C1__MoveInfo
=
null
;
internal
int
T3C1_TrayNum
=
0
;
private
void
Update_T3C1_TrayNum
()
{
T3C1_TrayNum
=
RFIDManager
.
GetTrayNum
(
300
);
}
public
void
T3C1_Stop
(
LineMoveInfo
moveInfo
=
null
)
{
T3C1__MoveInfo
.
EndMove
();
IOMove
(
IO_Type
.
HY_FrontStopDown
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
HY_StopDown
,
IO_VALUE
.
LOW
);
CylinderMove
(
moveInfo
,
IO_Type
.
HY_TopCylinder_UP
,
IO_Type
.
HY_TopCylinder_Down
);
}
private
void
T3C1_TimerProcess
()
{
TimeSpan
span
=
DateTime
.
Now
-
T3C1_ProTime
;
if
(
T3C1_Pro
&&
span
.
TotalSeconds
<
5
)
{
return
;
}
try
{
T3C1_Pro
=
true
;
T3C1_ProTime
=
DateTime
.
Now
;
if
(!
CanProcessLine
())
{
T3C1_Pro
=
false
;
return
;
}
if
(
T3C1__MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
))
{
T3C1_CheckFixture
();
}
else
{
T3C1_BusyProcess
();
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
Name
+
"T3C1_TimerProcess 出错:"
,
ex
);
}
T3C1_Pro
=
false
;
}
private
Stopwatch
trayCheckWait
=
new
Stopwatch
();
private
Stopwatch
trayCheck2LowWait
=
new
Stopwatch
();
private
object
lockObj
=
""
;
private
void
T3C1_CheckFixture
()
{
if
(
Monitor
.
TryEnter
(
lockObj
,
100
))
{
try
{
if
(
T3C1__MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
).
Equals
(
false
))
{
if
(
IOValue
(
IO_Type
.
HY_TrayCheck
).
Equals
(
IO_VALUE
.
HIGH
))
{
trayCheck2LowWait
.
Stop
();
}
else
{
TrayManager
.
checkWatch
(
trayCheck2LowWait
,
30000
,
false
);
}
LogUtil
.
error
(
Name
+
" T3C1_CheckFixture "
+
" 不在空闲中,直接返回 "
);
return
;
}
if
(
T3C1__MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
))
{
if
(
IOValue
(
IO_Type
.
HY_TrayCheck
).
Equals
(
IO_VALUE
.
HIGH
))
{
trayCheck2LowWait
.
Stop
();
if
(
TrayManager
.
checkWatch
(
trayCheckWait
,
TrayManager
.
SwTrayWaitTime
,
true
))
{
T3C1__MoveInfo
.
NewMove
(
LineMoveType
.
CheckFixture
);
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_03_StopUp
);
T3C1_Log
(
"检测到阻挡托盘,"
+
T3C1__MoveInfo
.
SLog
+
" ,前阻挡上升,阻挡上升"
);
Update_T3C1_TrayNum
();
IOMove
(
IO_Type
.
HY_FrontStopDown
,
IO_VALUE
.
LOW
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_FrontStopCheck
,
IO_VALUE
.
LOW
));
IOMove
(
IO_Type
.
HY_StopDown
,
IO_VALUE
.
LOW
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_StopDown
,
IO_VALUE
.
LOW
));
}
}
else
{
bool
check2IsOk
=
TrayManager
.
checkWatch
(
trayCheck2LowWait
,
TrayManager
.
SwTrayWaitTime
,
false
);
if
(
IOValue
(
IO_Type
.
HY_FrontStopCheck
).
Equals
(
IO_VALUE
.
HIGH
))
{
if
(
TrayManager
.
checkWatch
(
trayCheckWait
,
TrayManager
.
SwTrayWaitTime
,
false
)
&&
check2IsOk
)
{
trayCheckWait
.
Stop
();
trayCheck2LowWait
.
Stop
();
//托盘在第一个阻挡处
T3C1__MoveInfo
.
NewMove
(
LineMoveType
.
CheckFixture
);
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_00_Stop1Down
);
T3C1_Log
(
" 托盘检测:"
+
T3C1__MoveInfo
.
SLog
+
",检测到HY_FrontStopCheck,前阻挡下降 , 等待 HY_FrontStopCheck=0,清理托盘RFID"
);
T3C1_TrayNum
=
0
;
IOMove
(
IO_Type
.
HY_FrontStopCheck
,
IO_VALUE
.
HIGH
,
1200
);
T3C1__MoveInfo
.
OneWaitCanEndStep
=
true
;
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_FrontStopCheck
,
IO_VALUE
.
LOW
));
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_TrayCheck
,
IO_VALUE
.
HIGH
));
}
}
else
{
trayCheckWait
.
Stop
();
}
}
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
Name
+
" StartCheckFixture "
+
" 出错:"
+
ex
.
ToString
());
}
finally
{
Monitor
.
Exit
(
lockObj
);
}
}
else
{
LogUtil
.
error
(
Name
+
" StartCheckFixture "
+
"失败,未得到锁"
);
}
}
private
void
T3C1_BusyProcess
()
{
if
(
T3C1__MoveInfo
.
IsInWait
)
{
CheckWait
(
T3C1__MoveInfo
);
}
if
(
T3C1__MoveInfo
.
IsInWait
)
{
return
;
}
#
region
托盘检测
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_00_Stop1Down
))
{
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_01_TrayCheck
);
T3C1_Log
(
"托盘阻挡"
+
T3C1__MoveInfo
.
SLog
+
" 前阻挡上升,等待 阻挡托盘检测=1"
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_TrayCheck
,
IO_VALUE
.
HIGH
));
}
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_01_TrayCheck
))
{
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_03_StopUp
);
T3C1_Log
(
"托盘阻挡"
+
T3C1__MoveInfo
.
SLog
+
" 再次等待托盘信号"
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_TrayCheck
,
IO_VALUE
.
HIGH
));
}
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_03_StopUp
))
{
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_04_Wait
);
T3C1_Log
(
"托盘阻挡"
+
T3C1__MoveInfo
.
SLog
+
" ,等待编码信号稳定 HY_TrayCheck=1"
);
CheckAndMove
(
IO_Type
.
HY_FrontStopDown
,
IO_VALUE
.
LOW
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_TrayCheck
,
IO_VALUE
.
HIGH
));
}
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_04_Wait
))
{
try
{
Update_T3C1_TrayNum
();
if
(
TrayNeedT3C1
(
T3C1_TrayNum
))
{
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_05_WaitTime
);
T3C1_Log
(
"托盘阻挡"
+
T3C1__MoveInfo
.
SLog
+
" 入库中需要空托盘,等待200"
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
200
));
}
else
{
LogUtil
.
debug
(
Name
+
T3C1__MoveInfo
.
MoveNum
+
"*************** ,当前托盘【"
+
T3C1_TrayNum
+
"】放盘通过~"
);
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_15_WaitCanGo
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
100
));
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"判断托盘是否需要顶升出错:"
,
ex
);
}
}
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_05_WaitTime
))
{
//如果是出库,且盘高大于30,暂不顶升
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_06_TopUp
);
T3C1_Log
(
"托盘阻挡"
+
T3C1__MoveInfo
.
SLog
+
" 顶升气缸上 升 )"
);
CylinderMove
(
T3C1__MoveInfo
,
IO_Type
.
TopCylinder_Down
,
IO_Type
.
TopCylinder_UP
);
}
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_06_TopUp
))
{
T3C1_Log
(
"托盘阻挡*************** 托盘号【"
+
T3C1_TrayNum
+
"】"
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
10000
));
//托盘号正确
//判断盘是空盘,空盘并且编号正确才需要放料盘过去
if
(
TrayNeedT3C1
(
T3C1_TrayNum
))
{
T3C1__MoveInfo
.
MoveParam
=
new
InOutParam
(
T3C1_TrayNum
);
LogInfo
(
T3C1__MoveInfo
.
MoveNum
+
"*************** 空托盘【"
+
T3C1_TrayNum
+
"】,正在入库中,移栽料盘"
);
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_11_CodeRember
);
}
else
{
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_14_TopDown
);
T3C1_Log
(
"托盘检测"
+
T3C1__MoveInfo
.
SLog
+
" ,托盘号【"
+
T3C1_TrayNum
+
"】,直接放盘通过,顶升气缸下降 "
);
CylinderMove
(
T3C1__MoveInfo
,
IO_Type
.
TopCylinder_UP
,
IO_Type
.
TopCylinder_Down
);
}
}
#
endregion
#
region
不需要出入库,直接放行
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_14_TopDown
))
{
MO_16_Stop2Down
();
}
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_15_WaitCanGo
))
{
MO_16_Stop2Down
();
}
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_16_Stop2Down
))
{
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_17_Stop2Check
);
T3C1_Log
(
"托盘放行"
+
T3C1__MoveInfo
.
SLog
+
" , 等待StopCylinder_Check2=0"
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_TrayCheck
,
IO_VALUE
.
LOW
));
}
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_17_Stop2Check
))
{
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_18_WaitTime
);
T3C1_Log
(
"托盘放行 "
+
T3C1__MoveInfo
.
SLog
+
" , 等待300ms后阻挡2上升"
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
300
));
}
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_18_WaitTime
))
{
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_19_StopUp
);
T3C1_Log
(
"托盘放行"
+
T3C1__MoveInfo
.
SLog
+
" , 阻挡气缸1-2上升 )"
);
IOMove
(
IO_Type
.
StopDown2
,
IO_VALUE
.
LOW
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
100
));
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
StopDown2
,
IO_VALUE
.
LOW
));
}
else
if
(
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_19_StopUp
))
{
T3C1_Log
(
"托盘放行 SecondMove:(托盘放行结束) "
);
T3C1__MoveInfo
.
EndMove
();
}
#
endregion
}
private
void
MO_16_Stop2Down
()
{
T3C1__MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_16_Stop2Down
);
T3C1_Log
(
"托盘放行"
+
T3C1__MoveInfo
.
SLog
+
" ,阻挡气缸2下降 "
);
IOMove
(
IO_Type
.
HY_StopDown
,
IO_VALUE
.
HIGH
);
T3C1__MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_StopDown
,
IO_VALUE
.
HIGH
));
}
private
bool
TrayNeedT3C1
(
int
trayNum
)
{
try
{
TrayInfo
trayInfo
=
TrayManager
.
GetTrayInfo
(
trayNum
);
if
(
trayInfo
.
IsFull
)
{
return
false
;
}
//判断T3是否在入库等待托盘
FeedingEquip
feedT3
=
FeedingEquipMap
[
103
];
if
(
feedT3
.
CurrTrayIsNeed
(
T3C1_TrayNum
,
false
))
{
LogInfo
(
"T3C1: T3在入库托盘等待中,拦截托盘【"
+
T3C1_TrayNum
+
"】"
);
return
true
;
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"TrayNeedT3C1_出错:"
+
ex
.
ToString
());
}
return
false
;
}
private
void
T3C1_Log
(
string
msg
)
{
LogUtil
.
debug
(
Name
+
"["
+
T3C1_TrayNum
+
"]"
+
msg
);
}
internal
bool
T3C1TrayIsReady
()
{
if
(
T3C1__MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
CheckFixture
)
&&
T3C1__MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_11_CodeRember
))
{
return
true
;
}
return
false
;
}
internal
void
T3C1TrayCanLeave
()
{
MO_16_Stop2Down
();
}
}
}
source/DeviceLibrary/assemblyLine/MoveEquip_Partial.cs
查看文件 @
977f5e7
...
...
@@ -121,10 +121,10 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_56_ClampCheck
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
200
));
OutLog
(
"出库 "
+
MoveInfo
.
SLog
+
": 检测夹爪料盘检测=HIGH"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
ClampCylinder_Check
,
IO_VALUE
.
HIGH
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
ClampCylinder_Check
,
IO_VALUE
.
HIGH
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_56_ClampCheck
))
{
{
if
(
UpdownIsUp
())
{
if
(
IsBigStore
())
...
...
@@ -247,7 +247,7 @@ namespace OnlineStore.DeviceLibrary
lineStatus
=
LineStatus
.
InStoreExecute
;
MoveInfo
.
MoveParam
=
param
;
MoveInfo
.
NewMove
(
LineMoveType
.
InStore
);
if
(
UpdownIsUp
())
{
LogInfo
(
"入库【"
+
posId
+
"】处理(移栽):MI_02_ToLineUp, 前后气缸后退,等待夹爪检测=LOW"
);
...
...
@@ -288,7 +288,7 @@ namespace OnlineStore.DeviceLibrary
}
string
posId
=
MoveInfo
.
MoveParam
!=
null
?
MoveInfo
.
MoveParam
.
PosId
:
""
;
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MI_01_UpdownUp
))
{
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MI_02_ToLineUp
);
InLog
(
"入库 "
+
MoveInfo
.
SLog
+
": 前后气缸后退,等待夹爪检测=LOW"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
...
...
@@ -329,7 +329,8 @@ namespace OnlineStore.DeviceLibrary
InLog
(
"入库 "
+
MoveInfo
.
SLog
+
": 等待夹爪料盘检测信号=HIGH"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
ClampCylinder_Check
,
IO_VALUE
.
HIGH
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MI_07_ClampCheck
))
{
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MI_07_ClampCheck
))
{
int
num
=
MoveInfo
.
MoveParam
.
TrayNumber
;
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MI_10_WaitBox
);
LogInfo
(
"入库【"
+
posId
+
"】 "
+
MoveInfo
.
SLog
+
": 等待box可入库,更新托盘【"
+
num
+
"】为空盘"
);
...
...
@@ -613,14 +614,15 @@ namespace OnlineStore.DeviceLibrary
}
if
(
SecondMoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
))
{
bool
canpro
=
LineManager
.
Line
.
Move5CanProcessTray
(
DeviceID
);
//bool canpro = LineManager.Line.Move5CanProcessTray(DeviceID);
bool
canpro
=
true
;
if
(
IOValue
(
IO_Type
.
StopCheck2
).
Equals
(
IO_VALUE
.
HIGH
))
{
trayCheck2LowWait
.
Stop
();
if
(
canpro
&&
TrayManager
.
checkWatch
(
trayCheckWait
,
TrayManager
.
SwTrayWaitTime
,
true
))
{
{
SecondMoveInfo
.
NewMove
(
LineMoveType
.
CheckFixture
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_03_Stop
2Down
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_03_Stop
Up
);
CheckLog
(
"托盘阻挡"
+
SecondMoveInfo
.
SLog
+
" 阻挡气缸1-1上升)"
);
IOMove
(
IO_Type
.
StopDown1
,
IO_VALUE
.
LOW
);
...
...
@@ -686,7 +688,7 @@ namespace OnlineStore.DeviceLibrary
#
region
托盘检测
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_00_Stop1Down
))
{
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_01_
Fixture
Check
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_01_
Tray
Check
);
CheckLog
(
"托盘阻挡"
+
SecondMoveInfo
.
SLog
+
" 阻挡气缸1-1上升,等待 阻挡2托盘检测=1)"
);
if
(
DeviceID
.
Equals
(
5
))
...
...
@@ -695,14 +697,14 @@ namespace OnlineStore.DeviceLibrary
}
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
StopCheck2
,
IO_VALUE
.
HIGH
));
}
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_01_
Fixture
Check
))
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_01_
Tray
Check
))
{
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_03_Stop
2Down
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_03_Stop
Up
);
CheckLog
(
"托盘阻挡"
+
SecondMoveInfo
.
SLog
+
" 再次等待托盘信号"
);
// IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
StopCheck2
,
IO_VALUE
.
HIGH
));
}
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_03_Stop
2Down
))
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_03_Stop
Up
))
{
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_04_Wait
);
CheckLog
(
"托盘阻挡"
+
SecondMoveInfo
.
SLog
+
" ,等待编码信号稳定StopCylinder_Check2=1"
);
...
...
@@ -755,7 +757,7 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
100
));
//CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,等待 NextStopCheck=0");
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.NextStopCheck, IO_VALUE.LOW));
}
}
catch
(
Exception
ex
)
...
...
@@ -837,13 +839,13 @@ namespace OnlineStore.DeviceLibrary
{
StartInStoreMove
(
SecondMoveInfo
.
MoveParam
);
CheckLog
(
"托盘放行"
+
SecondMoveInfo
.
SLog
+
" ,等待移栽完成后放开阻挡)"
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_09_Wait
LetFixture
Go
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_09_Wait
TrayCan
Go
);
}
#
endregion
#
region
不需要出入库,直接放行
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_14_TopDown
))
{
{
MO_16_Stop2Down
();
}
...
...
@@ -865,13 +867,13 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_18_WaitTime
))
{
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_19_Stop
Cylinder_Back
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_19_Stop
Up
);
CheckLog
(
"托盘放行"
+
SecondMoveInfo
.
SLog
+
" , 阻挡气缸1-2上升 )"
);
IOMove
(
IO_Type
.
StopDown2
,
IO_VALUE
.
LOW
);
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
100
));
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
StopDown2
,
IO_VALUE
.
LOW
));
}
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_19_Stop
Cylinder_Back
))
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_19_Stop
Up
))
{
CheckLog
(
"托盘放行 SecondMove:(托盘放行结束) "
);
// IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
...
...
@@ -881,7 +883,8 @@ namespace OnlineStore.DeviceLibrary
}
private
void
MO_16_Stop2Down
()
{
if
(
LineManager
.
Line
.
Move9CanStop2Down
(
DeviceID
,
currTrayNum
))
//if (LineManager.Line.Move9CanStop2Down(DeviceID,currTrayNum))
if
(
true
)
{
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_16_Stop2Down
);
CheckLog
(
"托盘放行"
+
SecondMoveInfo
.
SLog
+
" ,阻挡气缸1-2下降 "
);
...
...
@@ -901,14 +904,14 @@ namespace OnlineStore.DeviceLibrary
#
region
如果是进仓
5
,托盘横移后直接结束处理
internal
void
EndProcessTray
()
internal
void
EndProcessTray
()
{
if
(
DeviceID
.
Equals
(
5
))
{
if
(
SecondMoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
CheckFixture
)&&
SecondMoveInfo
.
MoveStep
<=
LineMoveStep
.
MIO_04_Wait
)
if
(
SecondMoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
CheckFixture
)
&&
SecondMoveInfo
.
MoveStep
<=
LineMoveStep
.
MIO_04_Wait
)
{
UpdateTrayNum
();
LogUtil
.
info
(
Name
+
" EndProcessTray ,结束当前托盘["
+
currTrayNum
+
"]处理【"
+
SecondMoveInfo
.
MoveType
+
"】【"
+
SecondMoveInfo
.
MoveStep
+
"】 "
);
LogUtil
.
info
(
Name
+
" EndProcessTray ,结束当前托盘["
+
currTrayNum
+
"]处理【"
+
SecondMoveInfo
.
MoveType
+
"】【"
+
SecondMoveInfo
.
MoveStep
+
"】 "
);
SecondMoveInfo
.
EndMove
();
}
}
...
...
source/DeviceLibrary/assemblymanager/RFIDManagercs.cs
查看文件 @
977f5e7
...
...
@@ -45,17 +45,13 @@ namespace OnlineStore.DeviceLibrary
if
(
DefaultTrayNum
>
0
)
{
return
DefaultTrayNum
;
}
//if (subType.Equals(104))
//{
// return LineManager.Line.Sw23TrayNum;
//}
//else if (subType.Equals(101))
//{
// return LineManager.Line.Sw41TrayNum;
//}
}
string
ip
=
GetRFIP
(
subType
);
if
(
String
.
IsNullOrEmpty
(
ip
))
{
return
0
;
}
//获取盘号
RFIDData
data
=
ReadRFID
(
ip
,
isClear
);
if
(
data
!=
null
)
...
...
source/DeviceLibrary/model/StoreStep.cs
查看文件 @
977f5e7
...
...
@@ -285,15 +285,15 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
///移载(流水线)装置出入库处理,夹具检测1-4=1
/// </summary>
MIO_01_
Fixture
Check
=
3081
,
MIO_01_
Tray
Check
=
3081
,
/// <summary>
/// 移载(流水线)装置出入库处理,等待夹具持续500毫秒
/// </summary>
MIO_02_
WaitFixture
=
3082
,
MIO_02_
TrayCheck2
=
3082
,
/// <summary>
///移载(流水线)装置出入库处理,阻挡气缸1-1上升
/// </summary>
MIO_03_Stop
2Down
=
3083
,
MIO_03_Stop
Up
=
3083
,
/// <summary>
/// 检测夹具检测IO1=1
/// </summary>
...
...
@@ -307,10 +307,10 @@ namespace OnlineStore.DeviceLibrary
///移载(流水线)装置出入库处理,顶 升气缸上升
/// </summary>
MIO_06_TopUp
=
3086
,
/// <summary>
/// 移载(流水线)装置出入库处理,定位气缸上升
/// </summary>
MIO_07_LocationUp
=
3087
,
///
//
<summary>
///
//
移载(流水线)装置出入库处理,定位气缸上升
///
//
</summary>
//
MIO_07_LocationUp = 3087,
/// <summary>
/// 等待StoreMove完成当前操作开始入库
/// </summary>
...
...
@@ -318,12 +318,13 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 等待StoreMove移走料盘开始放托盘通过
/// </summary>
MIO_09_Wait
LetFixture
Go
=
3089
,
MIO_09_Wait
TrayCan
Go
=
3089
,
#
endregion
#
region
移栽装置出库处理
3100
-
3200
/// <summary>
/// 移载(流水线)装置出库处理, 检测夹具编码并记忆,托盘 是空盘,并且BOX在出库等待中,开始移栽料盘
/// 上料模块横移,空托盘已准备好,可以放料
/// </summary>
MO_11_CodeRember
=
3101
,
/// <summary>
...
...
@@ -357,7 +358,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 移载(流水线)装置出库处理, 阻挡气缸1-1下降 阻挡气缸1-2上升
/// </summary>
MO_19_Stop
Cylinder_Back
=
3109
,
MO_19_Stop
Up
=
3109
,
/// <summary>
/// 移栽装置出库处理,开始出库
...
...
@@ -1253,8 +1254,7 @@ namespace OnlineStore.DeviceLibrary
#
region
MyRegion
80000
开始
HY_R_01StopMove
=
80001
,
#
endregion
}
public
enum
LineAlarmType
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论