Commit 44252d09 LN

1

1 个父辈 fc3aba05
......@@ -79,7 +79,7 @@ namespace OnlineStore.AssemblyLine
private void button1_Click(object sender, EventArgs e)
{
string ip = txtIP.Text;
RFIDData data = RFIDManager.ReadRFIDData(ip);
RFIDData data = RFIDManager.ReadData(ip);
string resul = "";
if (data != null)
{
......
......@@ -378,8 +378,8 @@ namespace OnlineStore.DeviceLibrary
#endregion
#region AGV
private bool ProcessReviceShelf = false;
private bool ProcessSendShelf = false;
private bool ProcessShelfEnter = false;
private bool ProcessShelfOut = false;
internal bool ProcessAGVAction(string name, Actions action)
{
string logN = name + "收到调度【" + name + "】=【" + action + "】";
......@@ -389,9 +389,10 @@ namespace OnlineStore.DeviceLibrary
if (action.Equals(Asa.Actions.Usable))
{
//判断入口是否可用:入口无料架,缓冲工位无料架,不在入料架处理中
bool usable = (runStatus.Equals(LineRunStatus.Runing) &&
MoveInfo.MoveType.Equals(LineMoveType.None) &&
ProcessReviceShelf.Equals(false)
bool usable = (runStatus.Equals(LineRunStatus.Runing)
&& MoveInfo.MoveType.Equals(LineMoveType.None)
&& ProcessShelfEnter.Equals(false)
&& IOValue(IO_Type.SL_Entry_Check).Equals(IO_VALUE.LOW)
&& IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.LOW));
LogUtil.info(logN + ":" + usable);
......@@ -405,10 +406,10 @@ namespace OnlineStore.DeviceLibrary
return false;
}
//小车到达,开始处理
if (runStatus >= (LineRunStatus.Runing) &&
MoveInfo.MoveType.Equals(LineMoveType.None) &&
ProcessReviceShelf.Equals(false) &&
IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.LOW))
if (runStatus >= (LineRunStatus.Runing)
&& MoveInfo.MoveType.Equals(LineMoveType.None)
&& ProcessShelfEnter.Equals(false)
&& IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.LOW))
{
ShelfEnterProcess();
return true;
......@@ -431,7 +432,7 @@ namespace OnlineStore.DeviceLibrary
//小车到达,开始处理
if (runStatus >= (LineRunStatus.Runing) &&
MoveInfo.MoveType.Equals(LineMoveType.None) &&
ProcessReviceShelf.Equals(false) &&
ProcessShelfOut.Equals(false) &&
IOValue(IO_Type.SL_Out_Check).Equals(IO_VALUE.HIGH))
{
ShelfOutProcess();
......@@ -464,25 +465,29 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.info(Name + "出库料架送入AGV 开始");
AgvClient.MayOut(Config.AgvOutName);
ProcessSendShelf = true;
ProcessShelfOut = true;
//出口阻挡下降,出口线体转动
IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.HIGH);
WaitIo(IO_Type.SL_Out_Check, IO_VALUE.LOW, 2000);
//等待收到AGV消息
WaitUtil.Wait(3000, delegate
if (WaitIo(IO_Type.SL_Out_Check, IO_VALUE.LOW, 2000))
{
return AgvClient.GetAction(Config.AgvOutName).Equals(Actions.FinishOut);
}, "等待AGV收到料架");
//停止转动
IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.LOW);
ProcessSendShelf = false;
LogUtil.info(Name + "出库料架送入AGV 结束");
//等待收到AGV消息
WaitUtil.Wait(3000, delegate
{
return AgvClient.GetAction(Config.AgvOutName).Equals(Actions.FinishOut);
}, "等待AGV收到料架");
//停止转动
IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.LOW);
ProcessShelfOut = false;
LogUtil.info(Name + "出库料架送入AGV 结束");
}
else
{
LogUtil.info(Name + "出库料架送入AGV 等待SL_Out_Check=LOW超时");
}
}
}
catch (TimeoutException te)
......@@ -496,15 +501,15 @@ namespace OnlineStore.DeviceLibrary
finally
{
IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.LOW);
ProcessSendShelf = false;
ProcessShelfOut = false;
}
});
}
internal void ShelfEnterProcess()
{
//判断料架的编码是否正确
int num = TrayManager.GetShelfNum(DeviceID);
if (num <= 0)
RFIDData data = TrayManager.GetShelfData(DeviceID);
if (data.Num <= 0)
{
MoveInfo.EndMove();
runStatus = LineRunStatus.Runing;
......@@ -512,7 +517,8 @@ namespace OnlineStore.DeviceLibrary
return ;
}
//发送料架信息给调度系统
AgvClient.SendRFID(Config.AgvInName, TrayManager.GetShelfData(DeviceID));
AgvClient.SendRFID(Config.AgvInName, data.ToData());
LogUtil.info(Name + "入料口读取到料架:" + data.ToStr());
Task.Factory.StartNew(delegate
{
try
......@@ -521,7 +527,7 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.info(Name + "AGV料架进入缓冲工位 开始");
AgvClient.MayEnter(Config.AgvInName);
ProcessReviceShelf = true;
ProcessShelfEnter = true;
//进料阻挡下降,缓冲阻挡上升
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH);
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
......@@ -529,23 +535,29 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
//等待阻挡检测信号
WaitIo(IO_Type.SL_Stop_Check, IO_VALUE.HIGH, 3000);
if (WaitIo(IO_Type.SL_Stop_Check, IO_VALUE.HIGH, 3000))
{
//料架完成进入
//AgvClient.FinishEnter(Config.AgvInName);
//料架完成进入
//AgvClient.FinishEnter(Config.AgvInName);
//上升入口阻挡信号
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH);
//上升入口阻挡信号
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH);
//等待200毫秒后停止转动
Thread.Sleep(200);
IOMove(IO_Type.SL_Line_Run, IO_VALUE.LOW);
//等待200毫秒后停止转动
Thread.Sleep(200);
IOMove(IO_Type.SL_Line_Run, IO_VALUE.LOW);
//料架可离开
AgvClient.FinishEnter(Config.AgvInName);
//料架可离开
AgvClient.FinishEnter(Config.AgvInName);
ProcessReviceShelf = false;
LogUtil.info(Name + "AGV料架进入缓冲工位 结束");
ProcessShelfEnter = false;
LogUtil.info(Name + "AGV料架进入缓冲工位 结束");
}
else
{
LogUtil.info(Name + "AGV料架进入缓冲工位 等待SL_Stop_Check=High超时");
}
}
}
......@@ -560,7 +572,7 @@ namespace OnlineStore.DeviceLibrary
finally
{
IOMove(IO_Type.SL_Line_Run, IO_VALUE.LOW);
ProcessReviceShelf = false;
ProcessShelfEnter = false;
}
});
}
......
......@@ -369,7 +369,7 @@ namespace OnlineStore.DeviceLibrary
//小车到达,开始处理
if (runStatus >= (LineRunStatus.Runing) &&
MoveInfo.MoveType.Equals(LineMoveType.None) &&
ProcessReviceShelf.Equals(false) &&
ProcessShelfEnter.Equals(false) &&
IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.LOW))
{
ShelfEnterProcess();
......
......@@ -199,7 +199,7 @@ namespace OnlineStore.DeviceLibrary
{
string ip = GetRFIP(subType);
//获取盘号
RFIDData data = RFIDManager.ReadRFIDData(ip);
RFIDData data = RFIDManager.ReadData(ip);
if (data != null)
{
if (data.RFType.Equals("E"))
......@@ -213,31 +213,25 @@ namespace OnlineStore.DeviceLibrary
}
return 0;
}
public static int GetShelfNum(int subType)
public static RFIDData GetShelfData(int subType)
{
string ip = GetRFIP(subType, 1);
//获取盘号
RFIDData data = RFIDManager.ReadRFIDData(ip);
RFIDData data = RFIDManager.ReadData(ip);
if (data != null)
{
if (data.RFType.Equals("B"))
{
return data.Num;
return data;
}
else
{
LogUtil.error("读取料架RFID[" + subType + "][" + ip + "]的数据出错:" + data.ToStr());
}
}
return 0;
}
public static byte[] GetShelfData(int subType)
{
string ip = GetRFIP(subType, 1);
//获取盘号
byte[] data = RFIDManager.ReadData(ip);
return data;
}
public static string GetRFIP(int subType, int rtType = 0)
{
string ip = "";
......
......@@ -134,7 +134,7 @@ namespace OnlineStore.DeviceLibrary
byte[] sendData = obj.ToData();
return WriteData(IP, sendData, 3);
}
public static RFIDData ReadRFIDData(string IP)
public static RFIDData ReadData(string IP)
{
byte[] reviceData = ReadData(IP, 3);
if (reviceData != null)
......@@ -143,11 +143,11 @@ namespace OnlineStore.DeviceLibrary
}
return null;
}
public static byte[] ReadData(string IP)
{
byte[] reviceData = ReadData(IP, 3);
return reviceData;
}
//public static byte[] ReadData(string IP)
//{
// byte[] reviceData = ReadData(IP, 3);
// return reviceData;
//}
public static string SearchIP(string localIp)
{
string ip = "";
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!