Commit 977f5e7f LN

增加T3C1代码

1 个父辈 de5831f7
......@@ -18,7 +18,8 @@
上料机构,入料判断托盘是否到位,放行托盘,从lineBean里调用
紧急出料,开始紧急出库横移主动调用开始 托盘出库方法。放行从lineBean里调用
......
......@@ -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" />
......
......@@ -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.111,,
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.119,,
PRO,0,横移-HY2-托盘-RFID-IP,PRO_RFIP_202,192.168.210.122,,
PRO,0,横移-HY3-托盘-RFID-IP,PRO_RFIP_203,192.168.210.127,,
PRO,0,横移-HY4-托盘-RFID-IP,PRO_RFIP_204,192.168.210.130,,
PRO,0,横移-HY5-托盘-RFID-IP,PRO_RFIP_205,192.168.210.133,,
PRO,0,横移-HY6-托盘-RFID-IP,PRO_RFIP_206,192.168.210.136,,
PRO,0,横移-HY7-托盘-RFID-IP,PRO_RFIP_207,192.168.210.139,,
PRO,0,横移-HY8-托盘-RFID-IP,PRO_RFIP_208,192.168.210.142,,
PRO,0,横移-HY9-托盘-RFID-IP,PRO_RFIP_209,192.168.210.145,,
PRO,0,横移-HY10-托盘-RFID-IP,PRO_RFIP_210,192.168.210.148,,
PRO,0,横移-HY11-托盘-RFID-IP,PRO_RFIP_211,192.168.210.151,,
PRO,0,横移-HY12-托盘-RFID-IP,PRO_RFIP_212,192.168.210.154,,
PRO,0,横移-HY13-托盘-RFID-IP,PRO_RFIP_213,192.168.210.157,,
PRO,0,横移-HY14-托盘-RFID-IP,PRO_RFIP_214,192.168.210.160,,
PRO,0,横移-HY15-托盘-RFID-IP,PRO_RFIP_215,192.168.210.163,,
PRO,0,横移-HY16-托盘-RFID-IP,PRO_RFIP_216,192.168.210.166,,
PRO,0,横移-HY17-托盘-RFID-IP,PRO_RFIP_217,192.168.210.169,,
PRO,0,横移-HY18-托盘-RFID-IP,PRO_RFIP_218,192.168.210.172,,
PRO,0,横移-HY19-托盘-RFID-IP,PRO_RFIP_219,192.168.210.175,,
PRO,0,横移-HY20-托盘-RFID-IP,PRO_RFIP_220,192.168.210.178,,
PRO,0,横移-HY21-托盘-RFID-IP,PRO_RFIP_221,192.168.210.181,,
PRO,0,上料模块1-料架-RFID-IP,PRO_RFIP_101,192.168.210.102,,
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.119,,
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.121,,
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.144,,
PRO,0,横移-HY2-托盘-RFID-IP,PRO_RFIP_202,192.168.210.145,,
PRO,0,横移-HY3-托盘-RFID-IP,PRO_RFIP_203,,,
PRO,0,横移-HY4-托盘-RFID-IP,PRO_RFIP_204,192.168.210.146,,
PRO,0,横移-HY5-托盘-RFID-IP,PRO_RFIP_205,,,
PRO,0,横移-HY6-托盘-RFID-IP,PRO_RFIP_206,192.168.210.137,,
PRO,0,横移-HY7-托盘-RFID-IP,PRO_RFIP_207,,,
PRO,0,横移-HY8-托盘-RFID-IP,PRO_RFIP_208,192.168.210.123,,
PRO,0,横移-HY9-托盘-RFID-IP,PRO_RFIP_209,192.168.210.135,,
PRO,0,横移-HY10-托盘-RFID-IP,PRO_RFIP_210,192.168.210.136,,
PRO,0,横移-HY11-托盘-RFID-IP,PRO_RFIP_211,192.168.210.127,,
PRO,0,横移-HY12-托盘-RFID-IP,PRO_RFIP_212,192.168.210.128,,
PRO,0,横移-HY13-托盘-RFID-IP,PRO_RFIP_213,192.168.210.115,,
PRO,0,横移-HY14-托盘-RFID-IP,PRO_RFIP_214,,,
PRO,0,横移-HY15-托盘-RFID-IP,PRO_RFIP_215,192.168.210.107,,
PRO,0,横移-HY16-托盘-RFID-IP,PRO_RFIP_216,192.168.210.102,,
PRO,0,横移-HY17-托盘-RFID-IP,PRO_RFIP_217,192.168.210.101,,
PRO,0,横移-HY18-托盘-RFID-IP,PRO_RFIP_218,192.168.210.110,,
PRO,0,横移-HY19-托盘-RFID-IP,PRO_RFIP_219,,,
PRO,0,横移-HY20-托盘-RFID-IP,PRO_RFIP_220,192.168.210.111,,
PRO,0,横移-HY21-托盘-RFID-IP,PRO_RFIP_221,192.168.210.105,,
PRO,0,上料模块T1-料架-RFID-IP,PRO_RFIP_101,192.168.210.142,,
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.120,,
,,,,,,
DI,0,急停,SuddenStop_BTN,0,HC,X00
DI,0,复位,Reset_BTN,1,HC,X01
......
......@@ -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_FixtureCheck) ||
moveInfo.MoveStep.Equals(LineMoveStep.MIO_01_TrayCheck) ||
moveInfo.MoveStep.Equals(LineMoveStep.MO_17_Stop2Check)))
{
return true;
......
......@@ -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
......
......@@ -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))
{
......
......@@ -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托盘:" + Sw23TrayNum + "\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";
......
......@@ -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;
}
}
}
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();
}
}
}
......@@ -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_Stop2Down);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopUp);
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_FixtureCheck);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_TrayCheck);
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_FixtureCheck))
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_01_TrayCheck))
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopUp);
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_Stop2Down))
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_03_StopUp))
{
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_WaitLetFixtureGo);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_09_WaitTrayCanGo);
}
#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_StopCylinder_Back);
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_19_StopUp);
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_StopCylinder_Back))
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_19_StopUp))
{
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();
}
}
......
......@@ -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)
......
......@@ -285,15 +285,15 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
///移载(流水线)装置出入库处理,夹具检测1-4=1
/// </summary>
MIO_01_FixtureCheck = 3081,
MIO_01_TrayCheck = 3081,
/// <summary>
/// 移载(流水线)装置出入库处理,等待夹具持续500毫秒
/// </summary>
MIO_02_WaitFixture = 3082,
MIO_02_TrayCheck2 = 3082,
/// <summary>
///移载(流水线)装置出入库处理,阻挡气缸1-1上升
/// </summary>
MIO_03_Stop2Down = 3083,
MIO_03_StopUp = 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_WaitLetFixtureGo = 3089,
MIO_09_WaitTrayCanGo = 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_StopCylinder_Back = 3109,
MO_19_StopUp = 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!