Commit 44252d09 LN

1

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