Commit 4b8e2868 张东亮

添加空包装料架检测

1 个父辈 992e9594
......@@ -182,7 +182,12 @@ namespace OnlineStore.DeviceLibrary
}
else
{
if (MoveInfo.NextShelfPos())
if(CheckShelfIsEmpty())
{
InOutStoreLog("检测到料架为空,送出料架");
StartShelfOut();
}
else if (MoveInfo.NextShelfPos())
{
//新的料架库位
startInStoreTime = DateTime.Now;
......@@ -195,6 +200,7 @@ namespace OnlineStore.DeviceLibrary
else
{
//所有料盘已取料完成,送出料架
InOutStoreLog("所有料盘已取料完成,送出料架");
StartShelfOut();
}
}
......
......@@ -45,6 +45,14 @@ namespace OnlineStore.DeviceLibrary
return storeRunStatus.Equals(StoreRunStatus.Runing) && (MoveInfo?.MoveType.Equals(StoreMoveType.None) ?? false);
}
/// <summary>
/// 检查料架是否是空料架
/// </summary>
/// <returns></returns>
bool CheckShelfIsEmpty()
{
return IOValue(IO_Type.EmptyShelf_Check).Equals(IO_VALUE.HIGH);
}
/// <summary>
/// 获取料架备注
/// 包含料信息
/// </summary>
......
......@@ -184,35 +184,44 @@ namespace OnlineStore.DeviceLibrary
{
if (instoreShelf)
{
MoveInfo.NextMoveStep(StoreMoveStep.BI_10_StartGetTray);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime((int)TimeSpan.FromMinutes(75).TotalMilliseconds));
//获取料架的锁定状态
bool lockState = StoreManager.GetShelfLockInfo(Name, CID, CurrShelfID, out MoveInfo.shelfLockDatas);
if (lockState && MoveInfo.shelfLockDatas != null)
if (CheckShelfIsEmpty())//空料架
{
MoveInfo.IsShelfLocked = true;
if (MoveInfo.shelfLockDatas.Count.Equals(0))
LogRunStepInfo(moveName + "该锁定料架上的料盘不属于该料仓,即将送出锁定料架");
else
LogRunStepInfo(moveName + "开始到料架指定位置取料盘 ");
LogRunStepInfo(moveName + "检测到料架为空料架,不进行入库,即将送出料架");
StartShelfOut();
}
else
{
MoveInfo.IsShelfLocked = false;
LogRunStepInfo(moveName + "开始循环料架取料盘 ");
MoveInfo.NextMoveStep(StoreMoveStep.BI_10_StartGetTray);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime((int)TimeSpan.FromMinutes(75).TotalMilliseconds));
//获取料架的锁定状态
bool lockState = StoreManager.GetShelfLockInfo(Name, CID, CurrShelfID, out MoveInfo.shelfLockDatas);
if (lockState && MoveInfo.shelfLockDatas != null)
{
MoveInfo.IsShelfLocked = true;
if (MoveInfo.shelfLockDatas.Count.Equals(0))
LogRunStepInfo(moveName + "该锁定料架上的料盘不属于该料仓,即将送出锁定料架");
else
LogRunStepInfo(moveName + "开始到料架指定位置取料盘 ");
}
else
{
MoveInfo.IsShelfLocked = false;
LogRunStepInfo(moveName + "开始循环料架取料盘 ");
}
MoveInfo.EndStepWait();
}
MoveInfo.EndStepWait();
}
else
{
//if (string.IsNullOrEmpty(StoreManager.FindRealRfidByTempRfid(MoveInfo.MoveParam.rfid)))
//{
// //新料架,检查料架上是否有治具
// MoveInfo.NextMoveStep(StoreMoveStep.SO_PreCheck_01_StartGetTray);
//}
//else
if (string.IsNullOrEmpty(StoreManager.FindRealRfidByTempRfid(MoveInfo.MoveParam.rfid))
&& !CheckShelfIsEmpty())//还未出库的料架检查是否是空料架
{
LogRunStepInfo(moveName + "未使用的出库料架检测到料架不为空,即将送出料架");
StartShelfOut();
}
else
{
SO_03_ToBagPosition();
}
......
......@@ -18,7 +18,7 @@ namespace OnlineStore.DeviceLibrary
/// 流水线自动料仓-流水线类
/// </summary>
public partial class PackingStoreBean : KTK_Store
{
{
/// <summary>
/// 灯闪烁定时器
/// </summary>
......@@ -27,7 +27,7 @@ namespace OnlineStore.DeviceLibrary
public Dictionary<int, AC_BOX_Config> BoxConfigMap { get; set; }
public Dictionary<int, AC_BOX_Bean> BoxMap = new Dictionary<int, AC_BOX_Bean>();
public Store_Config Config { get; set; }
public bool UseBuzzer = Setting_Init.UseBuzzer;
/// <summary>
......@@ -51,14 +51,14 @@ namespace OnlineStore.DeviceLibrary
baseConfig = lineConfig;
this.Config = lineConfig;
this.DeviceID = lineConfig.DeviceID;
MoveInfo = new DeviceMoveInfo(DeviceID);
Name = (" Store_" + Config.CID + " ").ToUpper();
List<string> ioList = new List<string>();
AddDeviceName(ioList, Config.DIODeviceNameList);
foreach (AC_BOX_Config config in configList.Values)
{
AC_BOX_Bean equip = new AC_BOX_Bean(config);
......@@ -79,7 +79,7 @@ namespace OnlineStore.DeviceLibrary
Task.Factory.StartNew(delegate
{
// RFIDManager.RfidReader.Open(rfidList.ToArray());
// RFIDManager.RfidReader.Open(rfidList.ToArray());
IOManager.instance.ConnectionIOList(ioList);
addLastDI(IO_Type.Airpressure_Check, IOValue(IO_Type.Airpressure_Check));
addLastDI(IO_Type.SuddenStop_BTN, IOValue(IO_Type.SuddenStop_BTN));
......@@ -87,7 +87,7 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.Alarm_HddLed, IO_VALUE.LOW);
IOMove(IO_Type.AutoRun_HddLed, IO_VALUE.LOW);
IOMove(IO_Type.RunSign_HddLed, IO_VALUE.LOW);
mainTimer.Enabled = true;
mainTimer.Enabled = true;
canStart = true;
serverConnectTimer.Enabled = true;
......@@ -122,7 +122,7 @@ namespace OnlineStore.DeviceLibrary
}
private void IoCheckTimerProcess(object sender, ElapsedEventArgs e)
{
{
}
#endregion
......@@ -152,7 +152,7 @@ namespace OnlineStore.DeviceLibrary
storeRunStatus = StoreRunStatus.HomeMoving;
StartTime = DateTime.Now;
//AgvClient.SetCancelState(false);
RFIDManager.Open(rfidList.ToArray());
mainTimer.Enabled = false;
......@@ -160,7 +160,7 @@ namespace OnlineStore.DeviceLibrary
isNoAirCheck = false;
alarmType = StoreAlarmType.None;
WarnMsg = "";
foreach (AC_BOX_Bean box in this.BoxMap.Values)
{
box.StartRun();
......@@ -199,14 +199,14 @@ namespace OnlineStore.DeviceLibrary
else
{
LogUtil.info(Name + "收到复位信号," + equip.Name + " 正常无报警,不需要复位");
}
}
}
mainTimer.Enabled = true;
}
public override void StopRun()
{
{
mainTimer.Enabled = false;
ledProcessTimer.Enabled = false;
AgvClient.SetCancelState(true);
......@@ -217,11 +217,11 @@ namespace OnlineStore.DeviceLibrary
equip.StopRun();
}
storeRunStatus = StoreRunStatus.Wait;
// RFIDManager.Close();
// RFIDManager.Close();
TimeSpan span = DateTime.Now - StartTime;
LogUtil.info( Name + ",停止运行,关闭rfid,总运行时间:" + span.ToString());
LogUtil.info(Name + ",停止运行,关闭rfid,总运行时间:" + span.ToString());
}
#region 灯光处理
private void LedProcess(object sender, ElapsedEventArgs e)
{
......@@ -231,7 +231,7 @@ namespace OnlineStore.DeviceLibrary
bool isNeedAlarmLed = false;
bool isInOut = false;
StoreRunStatus runs = StoreRunStatus.Wait;
foreach (AC_BOX_Bean box in BoxMap.Values)
{
if (!box.alarmType.Equals(StoreAlarmType.None))
......@@ -245,8 +245,8 @@ namespace OnlineStore.DeviceLibrary
if (box.storeRunStatus > runs)
{
runs = box.storeRunStatus;
}
}
}
}
//黄灯
if (runs.Equals(StoreRunStatus.HomeMoving) || runs.Equals(StoreRunStatus.Reset))
......@@ -260,33 +260,32 @@ namespace OnlineStore.DeviceLibrary
{
IOMove(IO_Type.RunSign_HddLed, IO_VALUE.HIGH);
}
}
}
else if (isInOut)
{
IOMove(IO_Type.RunSign_HddLed, IO_VALUE.HIGH);
}
else
{
if (IsDoValue(IO_Type.RunSign_HddLed, IO_VALUE.HIGH))
{
IOMove(IO_Type.RunSign_HddLed, IO_VALUE.LOW);
}
}
if (alarmType.Equals(StoreAlarmType.None).Equals(false) || isNoAirCheck || isInSuddenDown )
}
if (alarmType.Equals(StoreAlarmType.None).Equals(false) || isNoAirCheck || isInSuddenDown)
{
isNeedAlarmLed = true;
}
//忙碌中,判断是否有移栽在出入库执行,绿灯闪烁
}
//忙碌中,判断是否有移栽在出入库执行 绿灯灭
if (isInOut)
{
if (IsDoValue(IO_Type.AutoRun_HddLed, IO_VALUE.LOW))
{
IOMove(IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
}
else
{
IOMove(IO_Type.AutoRun_HddLed, IO_VALUE.LOW);
}
IOMove(IO_Type.AutoRun_HddLed, IO_VALUE.LOW);
}
else if (IsDoValue(IO_Type.AutoRun_HddLed, IO_VALUE.HIGH))
else
{
IOMove(IO_Type.AutoRun_HddLed, IO_VALUE.LOW);
IOMove(IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
}
//报警中 ,红灯闪烁
......@@ -350,17 +349,17 @@ namespace OnlineStore.DeviceLibrary
{
BusyMoveProcess();
}
}
}
public override void StopMove()
{
{
foreach (AC_BOX_Bean equip in this.BoxMap.Values)
{
// if (!equip.IsDebug)
// if (!equip.IsDebug)
{
equip.StopMove();
}
}
}
MoveInfo.EndMove();
MoveInfo.EndMove();
}
protected override void ResetProcess()
......@@ -370,9 +369,9 @@ namespace OnlineStore.DeviceLibrary
foreach (AC_BOX_Bean box in this.BoxMap.Values)
{
if ((box.storeRunStatus.Equals(StoreRunStatus.HomeMoving) || box.storeRunStatus.Equals(StoreRunStatus.Reset)) )
if ((box.storeRunStatus.Equals(StoreRunStatus.HomeMoving) || box.storeRunStatus.Equals(StoreRunStatus.Reset)))
//if ((box.storeRunStatus.Equals(StoreRunStatus.HomeMoving) || box.storeRunStatus.Equals(StoreRunStatus.Reset)) && box.IsDebug.Equals(false))
{
{
if (box.alarmType.Equals(StoreAlarmType.None))
{
isOk = false;
......@@ -384,16 +383,16 @@ namespace OnlineStore.DeviceLibrary
}
}
}
if (isOk)
{
{
//所有原点重置完成
storeRunStatus = StoreRunStatus.Runing;
AgvClient.SetCancelState(AgvClient.CurrCancelState);
LogUtil.info(Name + "所有设备重置完成");
}
}
private void SetWarnMsg(string msg)
{
if (String.IsNullOrEmpty(WarnMsg).Equals(false))
......@@ -431,11 +430,11 @@ namespace OnlineStore.DeviceLibrary
{
if (box.Config.AgvNodeName.Equals(name))
{
return box.ProcessAGVAction(name,rfid, action);
return box.ProcessAGVAction(name, rfid, action);
}
}
return false;
}
}
public override void Alarm(StoreAlarmType alarmType, string alarmDetial, string alarmMsg, StoreMoveType storeMoveType)
{
......
......@@ -563,7 +563,7 @@ namespace OnlineStore.DeviceLibrary
///
/// </summary>
/// <param name="tempRfid"></param>
/// <returns>"":未找到真实料架,即任务还未出库</returns>
/// <returns>"":未找到真实料架,即任务还未出库</returns>
public static string FindRealRfidByTempRfid(string tempRfid)
{
string msg = "";
......
......@@ -3,6 +3,7 @@ DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X01,DI-01,0,
DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X02,DI-02,0,
DI,气压检测,Airpressure_Check,2,PRO_AOI_IP_1,0,门禁,X03,DI-03,0,
DI,L侧门禁,DoorLimit,3,PRO_AOI_IP_1,0,料盘检测1(进料口),X04,DI-04,0,
DI,L侧线体空料架检测,EmptyShelf_Check,7,PRO_AOI_IP_1,0,线体空料架检测1,X08,DI-08,0,
DO,NG料线体电机运转,NGLine_Run,4,PRO_AOI_IP_1,0,NG料线体电机运转,Y05,DO-05,0,
DO,NG料线体电机反转,NGLine_BackRun,5,PRO_AOI_IP_1,0,NG料线体电机反转,Y06,DO-06,0,
,,,,,,,,,,
......
......@@ -3,6 +3,7 @@ DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X01,DI-01,0,
DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X02,DI-02,0,
DI,气压检测,Airpressure_Check,2,PRO_AOI_IP_1,0,门禁,X03,DI-03,0,
DI,R侧门禁,DoorLimit,4,PRO_AOI_IP_1,0,料盘检测2(料叉),X05,DI-05,0,
DI,R侧线体空料架检测,EmptyShelf_Check,8,PRO_AOI_IP_1,0,线体空料架检测2,X09,DI-09,0,
DO,NG料线体电机运转,NGLine_Run,4,PRO_AOI_IP_1,0,NG料线体电机运转,Y05,DO-05,0,
DO,NG料线体电机反转,NGLine_BackRun,5,PRO_AOI_IP_1,0,NG料线体电机反转,Y06,DO-06,0,
,,,,,,,,,,
......
......@@ -48,6 +48,10 @@ namespace OnlineStore.LoadCSVLibrary
/// </summary>
public static string DoorLimit = "DoorLimit";
/// <summary>
/// DI,L侧线体空料架检测,EmptyShelf_Check,7,PRO_AOI_IP_1,0,线体空料架检测1,X08,DI-08,0,
/// </summary>
public static string EmptyShelf_Check = "EmptyShelf_Check";
/// <summary>
/// DI L侧料盘检测1(识别区) TrayCheck_1 0 X21 DI-21
/// </summary>
public static string TrayCheck_1 = "TrayCheck_1";
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!