Commit 0e02f2f0 张东亮

1

1 个父辈 6f57bfb2
正在显示 52 个修改的文件 包含 667 行增加213 行删除
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<HintPath>..\AgvClient\bin\Debug\AsaPL.AgvClient.dll</HintPath> <HintPath>..\AgvClient\bin\Debug\AsaPL.AgvClient.dll</HintPath>
</Reference> </Reference>
<Reference Include="log4net"> <Reference Include="log4net">
<HintPath>..\..\..\..\DLL\log4net.dll</HintPath> <HintPath>dll\log4net.dll</HintPath>
</Reference> </Reference>
<Reference Include="Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <Reference Include="Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
</layout> </layout>
</appender> </appender>
<logger> <logger>
<level value="Debug"/> <level value="ALL"/>
<appender-ref ref="LineWebService"/> <appender-ref ref="LineWebService"/>
</logger> </logger>
<root> <root>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<host> <host>
<baseAddresses> <baseAddresses>
<!--添加调用服务地址--> <!--添加调用服务地址-->
<add baseAddress="http://10.85.199.1/BenQMIR/Webservice/AGVService.asmx/"/> <add baseAddress="http://127.0.0.1/BenQMIR/Webservice/AGVService.asmx/"/>
</baseAddresses> </baseAddresses>
</host> </host>
......
...@@ -11,7 +11,88 @@ namespace BLL ...@@ -11,7 +11,88 @@ namespace BLL
{ {
public class AGVManager public class AGVManager
{ {
private static string Addr_CurSO = "/rest/api/qisda/device/currentOutLine";
/// <summary>
/// 查询当前出料工单信息
/// </summary>
/// <returns></returns>
public static bool FindCurSO(out WOData woData)
{
woData = null;
try
{
Dictionary<string, string> paramMap = new Dictionary<string, string>();
//paramMap.Add("deviceAlarmList", msgListStr);
string server = GetAddr(Addr_CurSO, paramMap);
DateTime startTime = DateTime.Now;
string resultStr = HttpHelper.Get(server);
Common.log.Debug("当前正在出工单料信息【" + server + "】【" + resultStr + "】");
WorkOrder workOrder = JsonHelper.DeserializeJsonToObject<WorkOrder>(resultStr);
if (workOrder == null)
{
return false;
}
else
{
if (workOrder.data == null)
{
return false;
}
else
{
if(workOrder.data.line !=null)
{
string tempLocation = workOrder.data.line;
if (workOrder.data.line.Equals("Feeder"))
{
tempLocation = "FeederIn";
}
else if (workOrder.data.line.Equals("4CFeeder"))
{
tempLocation = "4CFeederIn";
}
workOrder.data.line = tempLocation;
woData = workOrder.data;
return true;
}
}
}
}
catch (Exception ex)
{
Common.log.Error(ex);
return false;
}
return false;
}
/// <summary>
/// 当前正在出的工单信息
/// </summary>
public class WorkOrder
{
//{"code":0,"msg":"ok","data":{"hSerial":"32622","line":null,"so":"2506287"}}
//{"code":0,"msg":"ok","data":{"hSerial":"32651","line":"D2","so":"2508551"}}
public int code { get; set; }
public string msg { get; set; }
public WOData data { get; set; }
}
public class WOData
{
public string hSerial { get; set; }
public string line { get; set; }
public string so { get; set; }
public string ToTxt(string nodeName)
{
return string.Format("[hSerial={0},line={1}[{3}],so={2}]", hSerial,line,so,nodeName);
}
}
public static string A6_Target = ""; public static string A6_Target = "";
/// <summary> /// <summary>
/// 查找满料架目的地 /// 查找满料架目的地
...@@ -42,7 +123,7 @@ namespace BLL ...@@ -42,7 +123,7 @@ namespace BLL
//JavaScriptSerializer serializer = new JavaScriptSerializer(); //JavaScriptSerializer serializer = new JavaScriptSerializer();
if (res == null || res.Count == 0) if (res == null || res.Count == 0)
return false; return false;
string tempLocation = ""; string tempLocation = res[0].location;
if (res[0].id == rfid) if (res[0].id == rfid)
{ {
if (res[0].location.Equals("Feeder")) if (res[0].location.Equals("Feeder"))
...@@ -53,7 +134,8 @@ namespace BLL ...@@ -53,7 +134,8 @@ namespace BLL
{ {
tempLocation = "4CFeederIn"; tempLocation = "4CFeederIn";
} }
if (Common.GetNodeNameByLineName(tempLocation,out string loc))
if (Common.GetNodeNameByLineName(tempLocation, out string loc))
{ {
int i = Common.FindNode(loc); int i = Common.FindNode(loc);
if (i > -1) if (i > -1)
...@@ -84,8 +166,8 @@ namespace BLL ...@@ -84,8 +166,8 @@ namespace BLL
#endregion #endregion
res[0].location = loc; res[0].location = loc;
dest = res[0]; dest = res[0];
A6_Target = "获取周转箱目的地信息: " + url + " Return: " + json+"["+loc+"]"; A6_Target = res[0].ShowInfo() + "[" + loc + "]";
Common.LogInfo("收到满料架任务[RFID=" + rfid + "]:目的地为 " + loc + " [产线名 " + res[0].location + "]"); Common.log.Debug("查找满料架任务[RFID=" + rfid + "]:目的地为 " + loc + " [产线名 " + tempLocation + "]");
return true; return true;
} }
else else
...@@ -118,7 +200,7 @@ namespace BLL ...@@ -118,7 +200,7 @@ namespace BLL
public string ShowInfo() public string ShowInfo()
{ {
return string.Format("RFID={0},SO={1},location={2}",id,SO,location); return string.Format("RFID={0},SO={1},location={2}", id, SO, location);
} }
} }
...@@ -129,10 +211,12 @@ namespace BLL ...@@ -129,10 +211,12 @@ namespace BLL
/// <param name="rfid"></param> /// <param name="rfid"></param>
/// <param name="lineName"></param> /// <param name="lineName"></param>
/// <returns></returns> /// <returns></returns>
public static bool UpdateStatus(string rfid, string lineName) public static bool UpdateStatus(string rfid, string nodeName)
{ {
//GET /ESMTCommonInterface/CommonService.asmx/UpdateStatusBy?id=string&location=string HTTP/1.1 //GET /ESMTCommonInterface/CommonService.asmx/UpdateStatusBy?id=string&location=string HTTP/1.1
//Host: 10.85.17.233 //Host: 10.85.17.233
Common.GetLineNameByNodeName(nodeName, out string lineName);
if (lineName.Equals("FeederIn")) if (lineName.Equals("FeederIn"))
{ {
lineName = "Feeder"; lineName = "Feeder";
...@@ -226,8 +310,8 @@ namespace BLL ...@@ -226,8 +310,8 @@ namespace BLL
List<Msg> msgs = JsonHelper.DeserializeJsonToList<Msg>(result); List<Msg> msgs = JsonHelper.DeserializeJsonToList<Msg>(result);
if (msgs == null || msgs.Count == 0) if (msgs == null || msgs.Count == 0)
return ""; return "";
return string.Format("[{0}] [{1}]", addr, result); return result;
} }
} }
catch (Exception ex) catch (Exception ex)
...@@ -328,7 +412,7 @@ namespace BLL ...@@ -328,7 +412,7 @@ namespace BLL
return data.Succeed.ToString(); return data.Succeed.ToString();
} }
} }
catch(Exception e) catch (Exception e)
{ {
return e.ToString(); return e.ToString();
} }
...@@ -454,7 +538,7 @@ namespace BLL ...@@ -454,7 +538,7 @@ namespace BLL
/// <summary> /// <summary>
/// X轴方位 /// X轴方位
/// </summary> /// </summary>
public double orientation { set; get; } public double orientation { set; get; }
/// <summary> /// <summary>
/// x轴 /// x轴
......
...@@ -479,11 +479,12 @@ namespace BLL ...@@ -479,11 +479,12 @@ namespace BLL
eNodeStatus action = (eNodeStatus)buff[idx++]; eNodeStatus action = (eNodeStatus)buff[idx++];
idx += 1; ClientLevel level = (ClientLevel)buff[idx++];
idx += 4; //预留 idx += 4; //预留
if (buff[idx] != 0xDA) return null; if (buff[idx] != 0xDA) return null;
ClientNode node = new ClientNode(name, rfid, action); ClientNode node = new ClientNode(name, rfid, action);
node.ClientLevel = level;
return node; return node;
} }
...@@ -503,12 +504,13 @@ namespace BLL ...@@ -503,12 +504,13 @@ namespace BLL
} }
if (!Common.nodeInfo[idx].StateEquals(node.GetState()) || if (!Common.nodeInfo[idx].StateEquals(node.GetState()) ||
Common.nodeInfo[idx].RFID != node.RFID) Common.nodeInfo[idx].RFID != node.RFID || Common.nodeInfo[idx].ClientLevel != node.ClientLevel)
{ {
Common.nodeInfo[idx].UpdateNodeStatus(node.GetState()); Common.nodeInfo[idx].UpdateNodeStatus(node.GetState());
Common.nodeInfo[idx].ClientLevel = node.ClientLevel;
Common.nodeInfo[idx].RFID = node.RFID; Common.nodeInfo[idx].RFID = node.RFID;
Common.LogInfo("节点更新 " + node.StatetText()); Common.LogInfo("节点更新 " + node.StatetText()+" "+ node.ClientLevel.ToString());
NodeChanged?.Invoke(idx); NodeChanged?.Invoke(idx);
} }
} }
......
...@@ -10,6 +10,7 @@ using System.Text; ...@@ -10,6 +10,7 @@ using System.Text;
namespace BLL namespace BLL
{ {
[ServiceContract(Name = "Services")] [ServiceContract(Name = "Services")]
internal interface IWebService internal interface IWebService
{ {
...@@ -43,6 +44,7 @@ namespace BLL ...@@ -43,6 +44,7 @@ namespace BLL
{ {
internal ClsWebService() internal ClsWebService()
{ {
} }
public string CreateEmptyRecycleTask(Stream stream) public string CreateEmptyRecycleTask(Stream stream)
......
...@@ -92,7 +92,7 @@ namespace BLL ...@@ -92,7 +92,7 @@ namespace BLL
{ {
input = null; input = null;
output = null; output = null;
Common.log.Error("", ex); //Common.log.Error("", ex);
return false; return false;
} }
} }
...@@ -174,9 +174,13 @@ namespace BLL ...@@ -174,9 +174,13 @@ namespace BLL
{ {
try try
{ {
//var key = Common.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key);
//Common.log.Info(string.Format("{0} Add_Mission [{1}]", info.Name, key.ToList()[0]));
Common.LogInfo(string.Format("{0} Add_Mission [{1}]", info.Name, mission_id));
//防止上一个任务已执行但返回失败时,删除任务 //防止上一个任务已执行但返回失败时,删除任务
// if (isRemovePreMission) // if (isRemovePreMission)
Del_Mission(info); Del_Mission(info);
string url = "http://" + info.IP + "/api/v2.0.0/mission_queue"; string url = "http://" + info.IP + "/api/v2.0.0/mission_queue";
string body = "{\"mission_id\":\"" + mission_id + "\"}"; string body = "{\"mission_id\":\"" + mission_id + "\"}";
...@@ -188,15 +192,22 @@ namespace BLL ...@@ -188,15 +192,22 @@ namespace BLL
if (dic == null) return false; if (dic == null) return false;
string s = dic["mission_id"].ToString(); string s = dic["mission_id"].ToString();
string id = dic["id"].ToString();
if (s == mission_id) if (s == mission_id)
{ {
try try
{ {
info.CurTaskID = Convert.ToInt32(id);
info.CurTaskGUID = mission_id;
var key = Common.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key); var key = Common.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key);
info.CurTaskName = key.ToList()[0];
Common.LogInfo(string.Format("{0} Add_Mission [{1}]", info.Name, key.ToList()[0])); Common.LogInfo(string.Format("{0} Add_Mission [{1}]", info.Name, key.ToList()[0]));
} }
catch { Common.LogInfo(string.Format("{0} Add_Mission [{1}]", info.Name, mission_id)); } catch
{
Common.LogInfo(string.Format("{0} Add_Mission [{1}]", info.Name, mission_id));
info.CurTaskName = "";
}
return true; return true;
} }
...@@ -220,10 +231,13 @@ namespace BLL ...@@ -220,10 +231,13 @@ namespace BLL
{ {
try try
{ {
var key = Common.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key); //var key = Common.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key);
Common.log.Info(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, key.ToList()[0])); //Common.log.Info(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, key.ToList()[0]));
Common.LogInfo(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, mission_id));
info.CurTaskID = -1;
info.CurTaskGUID = "";
info.CurTaskName = "";
info.CurTaskState = SettingString.Wait;
//防止上一个任务已执行但返回失败时,删除任务 //防止上一个任务已执行但返回失败时,删除任务
//if (isRemovePreMission) //if (isRemovePreMission)
Del_Mission(info); Del_Mission(info);
...@@ -239,15 +253,22 @@ namespace BLL ...@@ -239,15 +253,22 @@ namespace BLL
if (dic == null) return false; if (dic == null) return false;
string s = dic["mission_id"].ToString(); string s = dic["mission_id"].ToString();
string id = dic["id"].ToString();
if (s == mission_id) if (s == mission_id)
{ {
//try try
//{ {
info.CurTaskID = Convert.ToInt32(id);
// var key = Common.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key); info.CurTaskGUID = mission_id;
// Common.LogInfo(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, key.ToList()[0])); var key = Common.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key);
//} info.CurTaskName = key.ToList()[0];
//catch { Common.LogInfo(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, mission_id)); } Common.LogInfo(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, key.ToList()[0]));
}
catch
{
Common.LogInfo(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, mission_id));
info.CurTaskName = "";
}
return true; return true;
} }
else else
...@@ -369,7 +390,7 @@ namespace BLL ...@@ -369,7 +390,7 @@ namespace BLL
/// <returns></returns> /// <returns></returns>
public bool Get_State(Agv_Info info, out eAGVState stateID, out string stateText, out int battery, out string mission_text, out Agv_Info.clsPosition position) public bool Get_State(Agv_Info info, out eAGVState stateID, out string stateText, out int battery, out string mission_text, out Agv_Info.clsPosition position)
{ {
stateID = eAGVState.NULL; stateID = eAGVState.UNKNOWN;
stateText = ""; stateText = "";
battery = 0; battery = 0;
mission_text = ""; mission_text = "";
...@@ -379,12 +400,21 @@ namespace BLL ...@@ -379,12 +400,21 @@ namespace BLL
string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text,battery_percentage,mission_text,position"; string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text,battery_percentage,mission_text,position";
string json = HttpGet(url, info.IP, info.Authorization); string json = HttpGet(url, info.IP, info.Authorization);
if (string.IsNullOrWhiteSpace(json)) return false; if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer(); JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> dic = (Dictionary<string, object>)serializer.DeserializeObject(json); Dictionary<string, object> dic = (Dictionary<string, object>)serializer.DeserializeObject(json);
if (dic == null) return false; if (dic == null) return false;
stateID = (eAGVState)Convert.ToInt32(dic["state_id"].ToString()); //state_id不存在:{"args":{},"error_code":"service_unavailable","error_human":"\u670d\u52a1\u4e0d\u53ef\u7528\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5"}
try
{
stateText = dic["state_text"].ToString();
}
catch
{
Common.log.Error("获取状态失败:" + json);
return false;
}
stateID = (eAGVState)(Convert.ToInt32(dic["state_id"].ToString()));
stateText = dic["state_text"].ToString(); stateText = dic["state_text"].ToString();
mission_text = dic["mission_text"].ToString(); mission_text = dic["mission_text"].ToString();
string s = dic["battery_percentage"].ToString(); string s = dic["battery_percentage"].ToString();
...@@ -399,11 +429,48 @@ namespace BLL ...@@ -399,11 +429,48 @@ namespace BLL
} }
catch (Exception ex) catch (Exception ex)
{ {
Common.log.Error("Get_State", ex); Common.log.Error("Get_State: ", ex);
return false; return false;
} }
} }
public bool Get_Task_State(Agv_Info info,out string stateStr)
{
stateStr = "None";
try
{
if (info.CurTaskID == -1)
return true;
string ip = Common.appConfig.AppSettings.Settings["FLEET"].Value;
//http://10.85.199.3/api/v2.0.0/mission_scheduler
string url = "http://" + ip + "/api/v2.0.0/mission_scheduler/" + info.CurTaskID;
string json = HttpGet(url, info.IP, info.Authorization);
Common.log.Debug("URL: " + url + "\n" + "Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> dic = (Dictionary<string, object>)serializer.DeserializeObject(json);
if (dic == null) return false;
// "mission_id": "2e433130-c045-11ea-9a66-94c691a7387d",
// "id": 7178,
// "state": "Done"
string s = dic["id"].ToString();
if (s.Equals(info.CurTaskID.ToString()))
{
stateStr = dic["state"].ToString();
return true;
}
return false;
}
catch(Exception ex)
{
Common.log.Error("Get_Task_State", ex);
return false;
}
}
/// <summary> /// <summary>
/// 获取节点位置 /// 获取节点位置
/// </summary> /// </summary>
......
...@@ -123,16 +123,13 @@ ...@@ -123,16 +123,13 @@
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column21.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Column25.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Column14.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column21.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Column18.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column18.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
...@@ -141,9 +138,6 @@ ...@@ -141,9 +138,6 @@
<metadata name="Column20.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column20.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column23.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column23.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
...@@ -156,9 +150,6 @@ ...@@ -156,9 +150,6 @@
<metadata name="Column11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Column17.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
...@@ -171,10 +162,10 @@ ...@@ -171,10 +162,10 @@
<metadata name="Column7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Column9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Column10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Column5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
...@@ -183,9 +174,6 @@ ...@@ -183,9 +174,6 @@
<metadata name="Column16.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column16.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Column15.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column24.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column24.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
......
...@@ -51,7 +51,7 @@ namespace AGVControl ...@@ -51,7 +51,7 @@ namespace AGVControl
Common.mir = new MiR_API(); Common.mir = new MiR_API();
Common.control = new BLL.Control(); Common.control = new BLL.Control();
//软件开启时检查小车当前的任务状态,并获取各节点的坐标位置 //软件开启时检查小车当前的任务状态,并获取各节点的坐标位置
//Common.CheckAGVMissionState(); // Common.CheckAGVMissionState();
//获取节点位置 //获取节点位置
//Common.GetNodesPosition(); //Common.GetNodesPosition();
...@@ -88,7 +88,7 @@ namespace AGVControl ...@@ -88,7 +88,7 @@ namespace AGVControl
if (temp.Length != 5) continue; if (temp.Length != 5) continue;
//string val = Common.appConfig.AppSettings.Settings[temp[1]].Value; //string val = Common.appConfig.AppSettings.Settings[temp[1]].Value;
bool.TryParse(Common.ReadIni(temp[1], SettingString.IsUse), out isuse); //Convert.ToBoolean(val.Split(',')[0]); bool.TryParse(Common.ReadIni(temp[1], SettingString.IsUse), out isuse); //Convert.ToBoolean(val.Split(',')[0]);
rfid = Common.ReadIni(temp[1],SettingString.RFID); //val.Split(',')[1]; rfid = Common.ReadIni(temp[1], SettingString.RFID); //val.Split(',')[1];
Common.agvInfo.Add(new Agv_Info(temp[0], temp[1], temp[2], temp[3], temp[4], isuse, rfid)); Common.agvInfo.Add(new Agv_Info(temp[0], temp[1], temp[2], temp[3], temp[4], isuse, rfid));
} }
...@@ -112,9 +112,18 @@ namespace AGVControl ...@@ -112,9 +112,18 @@ namespace AGVControl
{ {
temp = line[i].Split(','); temp = line[i].Split(',');
if (temp.Length != 6) continue; if (temp.Length != 6) continue;
Boolean.TryParse(Common.ReadIni(temp[1], SettingString.IsUse),out bool isUse); Boolean.TryParse(Common.ReadIni(temp[1], SettingString.IsUse), out bool isUse);
Int32.TryParse(Common.ReadIni(temp[1], SettingString.EmptyShelfCnt), out int emptyShelfCnt); Int32.TryParse(Common.ReadIni(temp[1], SettingString.EmptyShelfCnt), out int emptyShelfCnt);
Common.nodeInfo.Add(new ClientNode(temp[1], temp[2], temp[3], temp[0], temp[4], temp[5], isUse,emptyShelfCnt)); if (temp[1].Equals("A5"))
{
Common.nodeInfo.Add(new DoubleLineNodeFor4C(temp[1], temp[2], temp[3], temp[0], temp[4], temp[5], isUse, emptyShelfCnt));
}
else if (temp[1].Equals("A6"))
{
Common.nodeInfo.Add(new DoubleLineNodeFor4D(temp[1], temp[2], temp[3], temp[0], temp[4], temp[5], isUse, emptyShelfCnt));
}
else
Common.nodeInfo.Add(new ClientNode(temp[1], temp[2], temp[3], temp[0], temp[4], temp[5], isUse, emptyShelfCnt));
} }
Common.chargeStatus = new ChargeStatus(); Common.chargeStatus = new ChargeStatus();
Common.itsHttp = Common.appConfig.AppSettings.Settings["ITS"].Value; Common.itsHttp = Common.appConfig.AppSettings.Settings["ITS"].Value;
......
...@@ -76,10 +76,7 @@ namespace AGVControl ...@@ -76,10 +76,7 @@ namespace AGVControl
/// 负载 /// 负载
/// </summary> /// </summary>
public bool IsExistShelf { set; get; } = false; public bool IsExistShelf { set; get; } = false;
/// <summary>
/// 小车的状态,(从小车获取)
/// </summary>
public string StateText { private set; get; }
/// <summary> /// <summary>
/// 电量百分比,(从小车获取) /// 电量百分比,(从小车获取)
/// </summary> /// </summary>
...@@ -88,14 +85,7 @@ namespace AGVControl ...@@ -88,14 +85,7 @@ namespace AGVControl
/// 当前任务文本,(从小车获取) /// 当前任务文本,(从小车获取)
/// </summary> /// </summary>
public string MissionText { set; get; } public string MissionText { set; get; }
/// <summary>
/// 下一个地点
/// </summary>
public string NextPlace { set; get; }
/// <summary>
/// 下一个地点
/// </summary>
public string NextPlaceAliceName { set; get; } = "";
/// <summary> /// <summary>
/// 关门,用于执行一次 /// 关门,用于执行一次
...@@ -129,8 +119,66 @@ namespace AGVControl ...@@ -129,8 +119,66 @@ namespace AGVControl
/// 任务内容 /// 任务内容
/// </summary> /// </summary>
public string Msg { get; set; } public string Msg { get; set; }
/// <summary>
/// 当前任务
/// </summary>
public Job CurJob { get; set; } public Job CurJob { get; set; }
/// <summary>
/// 当前任务的ID号
/// </summary>
public int CurTaskID { get; set; } = -1;
public string CurTaskState { get; set; } = "";
/// <summary>
/// 当前任务名称
/// </summary>
public string CurTaskName { get; set; }
/// <summary>
/// 当前任务的GUID
/// </summary>
public string CurTaskGUID { get; set; }
/// <summary>
/// 当前料架的工单信息
/// </summary>
public string BoxDestInfo { get; set; } = "";
public string RunInfo()
{
Job tmpJob = null;
if (CurJob != null)
{
if (CurJob is ChargeJob)
tmpJob = (ChargeJob)CurJob;
else if (CurJob is EmptyAGVBackJob)
tmpJob = (EmptyAGVBackJob)CurJob;
else if (CurJob is EmptyShelfBackJob)
tmpJob = (EmptyShelfBackJob)CurJob;
else if (CurJob is EnterLeaveShelfJob)
tmpJob = (EnterLeaveShelfJob)CurJob;
else if (CurJob is GoEmptyShelfLineJob)
tmpJob = (GoEmptyShelfLineJob)CurJob;
else if (CurJob is GoFullShelfStationJob)
tmpJob = (GoFullShelfStationJob)CurJob;
else if (CurJob is SendFullShelfToLineJob)
tmpJob = (SendFullShelfToLineJob)CurJob;
if (RFID.StartsWith("C"))
{
return string.Format("Name:{1}{0}RFID:{2}{0}CurJob:{3}{0}CurTaskName:{4}{0}RunStep:{5}{0}BoxDestInfo:{6}{0}GetRack:{7}{0}RunInfo:{8}", "\r\n", Name, RFID,CurJob.ToString(), CurTaskName,Msg, BoxDestInfo, BLL.AGVManager.GetRackBy(RFID),MissionText);
}
else if (!RFID.Equals(""))
{
return string.Format("Name:{1}{0}RFID:{2}{0}CurJob:{3}{0}CurTaskName:{4}{0}RunStep:{5}{0}BoxDestInfo:{6}{0}RunInfo:{7}", "\r\n", Name, RFID, CurJob.ToString(), CurTaskName, Msg, BoxDestInfo,MissionText);
}
else
return string.Format("Name:{1}{0}RFID:{2}{0}CurJob:{3}{0}CurTaskName:{4}{0}RunStep:{5}{0}RunInfo:{6}", "\r\n", Name, RFID, CurJob.ToString(), CurTaskName, Msg,MissionText);
}
else
return string.Format("Name:{1}{0}RFID:{2}{0}CurTaskName:{3}{0}RunInfo:{4}", "\r\n", Name, RFID, CurTaskName,MissionText);
}
public Agv_Info(string id, string name, string ip, string authorization, string ioID, bool isUse, string rfid) public Agv_Info(string id, string name, string ip, string authorization, string ioID, bool isUse, string rfid)
{ {
ID = id; ID = id;
...@@ -143,7 +191,6 @@ namespace AGVControl ...@@ -143,7 +191,6 @@ namespace AGVControl
_IsUse = isUse; _IsUse = isUse;
Place = ""; Place = "";
TaskSend = ""; TaskSend = "";
NextPlace = "";
Msg = ""; Msg = "";
Position = new Agv_Info.clsPosition(); Position = new Agv_Info.clsPosition();
} }
...@@ -154,41 +201,42 @@ namespace AGVControl ...@@ -154,41 +201,42 @@ namespace AGVControl
{ {
bool isChange = false; bool isChange = false;
bool preShelfState = IsExistShelf; bool preShelfState = IsExistShelf;
//if (input != null && input.Length == 4) Common.mir.Get_IO_Status(this, out bool[] input, out bool[] output);
//{ if (input != null && input.Length == 4)
// bool reachIoValue = input[3].Equals(true);//input[2] && {
// if (reachIoValue) bool reachIoValue = input[3].Equals(true);//input[2] &&
// { if (reachIoValue)
// //满足给定的IO值,计算持续时间 {
// if (IoStartTime == DateTime.MaxValue) //满足给定的IO值,计算持续时间
// { if (IoStartTime == DateTime.MaxValue)
// IoStartTime = DateTime.Now; {
// } IoStartTime = DateTime.Now;
}
// if (IoLastTime > 0) if (IoLastTime > 0)
// { {
// //持续时间 //持续时间
// TimeSpan lastTimeSpan = DateTime.Now - IoStartTime; TimeSpan lastTimeSpan = DateTime.Now - IoStartTime;
// IsExistShelf = (lastTimeSpan.TotalMilliseconds >= IoLastTime); IsExistShelf = (lastTimeSpan.TotalMilliseconds >= IoLastTime);
// } }
// else else
// { {
// IsExistShelf = true; IsExistShelf = true;
// } }
// } }
// else else
// { {
// //重新计时 //重新计时
// IoStartTime = DateTime.MinValue; IoStartTime = DateTime.MinValue;
// IsExistShelf = input[3]; IsExistShelf = input[3];
// } }
//} }
if (!StateID.Equals(stateID) || !StateText.Equals(stateText) if (!StateID.Equals(stateID) || !CurTaskState.Equals(stateText)
|| !MissionText.Equals(missionText) || !IsExistShelf.Equals(preShelfState)) //!Battery.Equals(battery) || !MissionText.Equals(missionText) || !IsExistShelf.Equals(preShelfState))
isChange = true; isChange = true;
StateID = stateID; StateID = stateID;
StateText = stateText; CurTaskState = stateText;
Battery = battery; Battery = battery;
MissionText = missionText; MissionText = missionText;
Position = position; Position = position;
...@@ -197,7 +245,7 @@ namespace AGVControl ...@@ -197,7 +245,7 @@ namespace AGVControl
public void GetPlace(int value) public void GetPlace(int value)
{ {
Common.log.Debug(Name + " PLC20=" + value); // Common.log.Debug(Name + " PLC20=" + value);
if (value == 0) if (value == 0)
{ {
Place = ""; Place = "";
...@@ -235,34 +283,35 @@ namespace AGVControl ...@@ -235,34 +283,35 @@ namespace AGVControl
List<string> s = new List<string>(); List<string> s = new List<string>();
s.Add(Name); s.Add(Name);
s.Add(IP); s.Add(IP);
if (IsCon) // if (IsCon)
{ //{
s.Add(StateText); s.Add(StateID.ToString());
s.Add(RFID); s.Add(CurTaskState);
s.Add(Msg); s.Add(RFID);
s.Add(MissionText); //s.Add(Msg);
s.Add(PlaceAliceName); // s.Add(MissionText);
//s.Add(Place); s.Add(PlaceAliceName);
s.Add(PlaceState.ToString()); //s.Add(Place);
if (Common.nodeInfo != null && Common.nodeInfo.Count != 0) s.Add(PlaceState.ToString());
{ //if (Common.nodeInfo != null && Common.nodeInfo.Count != 0)
ClientNode node = Common.nodeInfo.Find(q => q.Name == NextPlace); //{
if (node != null) // ClientNode node = Common.nodeInfo.Find(q => q.Name == NextPlace);
NextPlaceAliceName = node.AliceName; // if (node != null)
else // NextPlaceAliceName = node.AliceName;
NextPlaceAliceName = NextPlace; // else
} // NextPlaceAliceName = NextPlace;
s.Add(NextPlaceAliceName); //}
} //s.Add(NextPlaceAliceName);
else //}
{ //else
s.AddRange(new List<string> { "", "", "", "", "", "", "" }); //{
} // s.AddRange(new List<string> { "", "", "", "", "", "", "" });
//}
s.Add(IsExistShelf ? "满载" : "空载"); s.Add(IsExistShelf ? "满载" : "空载");
s.Add(IsCon ? "在线" : "离线"); s.Add(IsCon ? "在线" : "离线");
s.Add(Battery + "%"); s.Add(Battery + "%");
s.Add(IsUse ? "是" : "否"); s.Add(IsUse ? "是" : "否");
s.Add("清空"); // s.Add("清空");
return s.ToArray(); return s.ToArray();
} }
...@@ -274,7 +323,7 @@ namespace AGVControl ...@@ -274,7 +323,7 @@ namespace AGVControl
/// </summary> /// </summary>
public enum eAGVState public enum eAGVState
{ {
None=0, None = 0,
Starting, Starting,
ShuttingDown, ShuttingDown,
Ready, Ready,
...@@ -287,6 +336,6 @@ namespace AGVControl ...@@ -287,6 +336,6 @@ namespace AGVControl
EmergencyStop, EmergencyStop,
ManualControl, ManualControl,
Error, Error,
NULL UNKNOWN
} }
} }
...@@ -17,10 +17,7 @@ namespace AGVControl ...@@ -17,10 +17,7 @@ namespace AGVControl
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public abstract bool IsEnd { get; } public abstract bool IsEnd { get; }
/// <summary>
/// 运行信息
/// </summary>
public string RunInfo { get; set; }
/// <summary> /// <summary>
/// 根据任务状态继续执行任务 /// 根据任务状态继续执行任务
/// </summary> /// </summary>
......
...@@ -18,10 +18,11 @@ namespace AGVControl ...@@ -18,10 +18,11 @@ namespace AGVControl
{ {
if (!string.IsNullOrEmpty(value)) if (!string.IsNullOrEmpty(value))
{ {
value = step.ToString() + ":" + value;
//不为空,且与上一个消息不一样才打印 //不为空,且与上一个消息不一样才打印
if (!value.Equals(msg)) if (!value.Equals(msg))
{ {
Common.LogInfo(step.ToString()+":"+value); Common.LogInfo(value);
} }
} }
msg = value; msg = value;
...@@ -58,7 +59,7 @@ namespace AGVControl ...@@ -58,7 +59,7 @@ namespace AGVControl
TimeSpan span = DateTime.Now - startTime; TimeSpan span = DateTime.Now - startTime;
if (span.TotalMilliseconds > timeOutMilliseconds) if (span.TotalMilliseconds > timeOutMilliseconds)
{ {
timeOutValue = span.TotalMilliseconds; timeOutValue = span.TotalSeconds;
return true; return true;
} }
return false; return false;
...@@ -74,7 +75,7 @@ namespace AGVControl ...@@ -74,7 +75,7 @@ namespace AGVControl
startTime = DateTime.Now; startTime = DateTime.Now;
} }
public string StatusStr() public string CurStep()
{ {
return step.ToString(); return step.ToString();
} }
......
...@@ -125,5 +125,23 @@ namespace AGVControl ...@@ -125,5 +125,23 @@ namespace AGVControl
} }
/// <summary>
/// 客户端的优先级
/// </summary>
public enum ClientLevel : byte
{
/// <summary>
/// 低
/// </summary>
Low = 0,
/// <summary>
/// 中等
/// </summary>
Middle = 1,
/// <summary>
/// 高
/// </summary>
High = 2
}
} }
...@@ -30,10 +30,7 @@ namespace AGVControl ...@@ -30,10 +30,7 @@ namespace AGVControl
/// 接收任务时,agv的位置 /// 接收任务时,agv的位置
/// </summary> /// </summary>
private string agvPlace { get; set; } private string agvPlace { get; set; }
/// <summary>
/// 运行信息
/// </summary>
public string RunInfo { get; set; }
/// <summary> /// <summary>
/// 到达待机位 /// 到达待机位
/// </summary> /// </summary>
...@@ -47,42 +44,77 @@ namespace AGVControl ...@@ -47,42 +44,77 @@ namespace AGVControl
/// <param name="agv"></param> /// <param name="agv"></param>
public override Job Execute(Agv_Info agv) public override Job Execute(Agv_Info agv)
{ {
string msg = ""; string msg = agv.Name+" ";
bool rtn = false; bool rtn = false;
agv.Msg = EmptyAGVBackStep.Msg;
if (EmptyAGVBackStep.IsStep(EMPTY_AGV_BACK_STEP.NONE)) if (EmptyAGVBackStep.IsStep(EMPTY_AGV_BACK_STEP.NONE))
{ {
if(Common.FindEmptyShelfNode(agv,out string nodeName)) if (Common.FindEmptyShelfNode(agv, out string nodeName,true))
{ {
//EmptyAGVBackStep.ToNextStep(EMPTY_AGV_BACK_STEP.END); //EmptyAGVBackStep.ToNextStep(EMPTY_AGV_BACK_STEP.END);
msg = "小车在产线"+agvPlace+"准备返回时检测到"+nodeName+"有空料架"; msg = "小车在产线 " + agvPlace + " 准备返回时检测到 " + nodeName + " 有空料架";
EmptyAGVBackStep.Msg = msg; EmptyAGVBackStep.Msg = msg;
return new GoEmptyShelfLineJob(agvPlace,nodeName); return new GoEmptyShelfLineJob(agvPlace, nodeName);
} }
else else
{ {
if(agvPlace.StartsWith("G")) if (agvPlace.StartsWith("G"))
{ {
EmptyAGVBackStep.ToNextStep(EMPTY_AGV_BACK_STEP.WAIT_AGV_REACH_4D_DOOR); EmptyAGVBackStep.ToNextStep(EMPTY_AGV_BACK_STEP.WAIT_AGV_REACH_4D_DOOR);
msg = "从产线" + agvPlace + "回待机位,先到4D门"; msg = "从产线" + agvPlace + "回待机位,先到4D门";
EmptyAGVBackStep.Msg = msg; EmptyAGVBackStep.Msg = msg;
Common.DoorMission(agv, SettingString.MoveDoorCToD); Common.DoorMission(agv, SettingString.DoorCToD);
} }
else else
{ {
EmptyAGVBackStep.ToNextStep(EMPTY_AGV_BACK_STEP.WAIT_REACH_STANDBY); EmptyAGVBackStep.ToNextStep(EMPTY_AGV_BACK_STEP.WAIT_REACH_STANDBY);
msg = "从产线" + agvPlace + "回待机位"; msg = "从产线" + agvPlace + "回待机位";
EmptyAGVBackStep.Msg = msg; EmptyAGVBackStep.Msg = msg;
Common.MoveToNode(agv, SettingString.MoveStandby); Common.MoveToNode(agv, SettingString.Standby);
} }
} }
} }
else if (EmptyAGVBackStep.IsStep(EMPTY_AGV_BACK_STEP.WAIT_REACH_STANDBY))
{
if (Common.CheckTaskFinished(agv, SettingString.Standby, agv.CurTaskGUID))
{
Job job = Common.control.GetJob(agv);
if (job == null && agv.Battery < Common.chargeStatus.chargeMax)
{
msg = "到达待机位,电量[" + agv.Battery + "]小于最大电量[" + Common.chargeStatus.chargeMax + "],暂无任务,去充电";
EmptyAGVBackStep.Msg = msg;
return new ChargeJob("");
}
else
{
msg = "到达待机位,检测到新任务,执行任务";
EmptyAGVBackStep.Msg = msg;
return job;
}
}
else
{
if (Common.FindFullShelfTask(agv))
{
msg = "从产线" + agvPlace + "回待机位过程中,检测到A6出满料,去A6";
EmptyAGVBackStep.Msg = msg;
return new GoFullShelfStationJob(SettingString.Standby);
}
//else
//{
// msg = "从产线" + agvPlace + "到达4D门,暂无任务,去充电位";
// EmptyAGVBackStep.Msg = msg;
// return new ChargeJob(SettingString.D4_DOOR_Name);
//}
}
}
else if (EmptyAGVBackStep.IsStep(EMPTY_AGV_BACK_STEP.WAIT_AGV_REACH_4D_DOOR)) else if (EmptyAGVBackStep.IsStep(EMPTY_AGV_BACK_STEP.WAIT_AGV_REACH_4D_DOOR))
{ {
if(agv.Place.Equals(SettingString.D4_DOOR_Name)&& agv.PlaceState.Equals(ePlaceState.MoveFinish)) if (Common.CheckTaskFinished(agv, SettingString.DoorCToD, agv.CurTaskGUID))
{ {
if(Common.FindFullShelfTask(agv)) if (Common.FindFullShelfTask(agv))
{ {
msg = "从产线" + agvPlace + "到达4D门,检测到A6出满料,去A6"; msg = "从产线" + agvPlace + "到达4D门,检测到A6出满料,去A6";
EmptyAGVBackStep.Msg = msg; EmptyAGVBackStep.Msg = msg;
...@@ -96,7 +128,6 @@ namespace AGVControl ...@@ -96,7 +128,6 @@ namespace AGVControl
} }
} }
} }
RunInfo = EmptyAGVBackStep.Msg;
return this; return this;
} }
......
...@@ -46,13 +46,10 @@ namespace AGVControl ...@@ -46,13 +46,10 @@ namespace AGVControl
/// <summary> /// <summary>
/// 位置名 /// 位置名
/// </summary> /// </summary>
public string LineName { get; set; } public new string LineName { get; set; }
public string RFID { get; set; } public string RFID { get; set; }
/// <summary>
/// 运行信息
/// </summary>
public string RunInfo { get; set; }
public eEnterLeaveType ActionType { get; set; } public eEnterLeaveType ActionType { get; set; }
private eShelfType shelfType; private eShelfType shelfType;
...@@ -64,22 +61,32 @@ namespace AGVControl ...@@ -64,22 +61,32 @@ namespace AGVControl
{ {
string msg = ""; string msg = "";
bool rtn = false; bool rtn = false;
agv.Msg = EnterLeaveShelfStep.Msg;
if (EnterLeaveShelfStep.IsStep(ENTER_LEAVE_SHELF_STEP.NONE)) if (EnterLeaveShelfStep.IsStep(ENTER_LEAVE_SHELF_STEP.NONE))
{ {
if (ActionType.Equals(eEnterLeaveType.Leave)) if (ActionType.Equals(eEnterLeaveType.Leave))
{ {
EnterLeaveShelfStep.ToNextStep(ENTER_LEAVE_SHELF_STEP.WAIT_LINE_ReadyEnter_RESPONSE); //EnterLeaveShelfStep.ToNextStep(ENTER_LEAVE_SHELF_STEP.WAIT_LINE_ReadyEnter_RESPONSE);
msg = "AGV到达 " + LineName + ",并发送入料架请求[ReadyEnter]"; //msg = "AGV到达 " + LineName + ",并发送入料架请求[ReadyEnter]";
EnterLeaveShelfStep.Msg = msg; //EnterLeaveShelfStep.Msg = msg;
Common.server.ReadyEnter(LineName); //Common.server.ReadyEnter(LineName);
EnterLeaveShelfStep.ToNextStep(ENTER_LEAVE_SHELF_STEP.WAIT__SHELF_IN_LINE);
msg = LineName + "入料架,小车链条运行";
EnterLeaveShelfStep.Msg = msg;
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Leave"]);
agv.TaskSend = rtn ? "Leave" : "";
} }
else if(ActionType.Equals(eEnterLeaveType.Enter)) else if(ActionType.Equals(eEnterLeaveType.Enter))
{ {
EnterLeaveShelfStep.ToNextStep(ENTER_LEAVE_SHELF_STEP.WAIT_LINE_ReadyLeave_RESPONSE); //EnterLeaveShelfStep.ToNextStep(ENTER_LEAVE_SHELF_STEP.WAIT_LINE_ReadyLeave_RESPONSE);
msg = "AGV到达 " + LineName + ",并发送出料架请求[ReadyLeave]"; //msg = "AGV到达 " + LineName + ",并发送出料架请求[ReadyLeave]";
//EnterLeaveShelfStep.Msg = msg;
//Common.server.ReadyLeave(LineName);
EnterLeaveShelfStep.ToNextStep(ENTER_LEAVE_SHELF_STEP.WAIT__SHELF_OUT_LINE);
msg = LineName + "出料架,小车链条运行";
EnterLeaveShelfStep.Msg = msg; EnterLeaveShelfStep.Msg = msg;
Common.server.ReadyLeave(LineName); rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Enter"]);
agv.TaskSend = rtn ? "Enter" : "";
} }
} }
else if (EnterLeaveShelfStep.IsStep(ENTER_LEAVE_SHELF_STEP.WAIT_LINE_ReadyEnter_RESPONSE)) else if (EnterLeaveShelfStep.IsStep(ENTER_LEAVE_SHELF_STEP.WAIT_LINE_ReadyEnter_RESPONSE))
...@@ -128,6 +135,7 @@ namespace AGVControl ...@@ -128,6 +135,7 @@ namespace AGVControl
//EnterLeaveShelfStep.ToNextStep(ENTER_LEAVE_SHELF_STEP.END); //EnterLeaveShelfStep.ToNextStep(ENTER_LEAVE_SHELF_STEP.END);
msg = "料架进入" + LineName + "完成 ["+RFID+"]"; msg = "料架进入" + LineName + "完成 ["+RFID+"]";
EnterLeaveShelfStep.Msg = msg; EnterLeaveShelfStep.Msg = msg;
agv.RFID = "";
return new EmptyAGVBackJob(LineName); return new EmptyAGVBackJob(LineName);
} }
...@@ -160,7 +168,7 @@ namespace AGVControl ...@@ -160,7 +168,7 @@ namespace AGVControl
else if (EnterLeaveShelfStep.IsStep(ENTER_LEAVE_SHELF_STEP.END)) else if (EnterLeaveShelfStep.IsStep(ENTER_LEAVE_SHELF_STEP.END))
{ {
} }
RunInfo = EnterLeaveShelfStep.Msg;
return this; return this;
} }
......
...@@ -26,7 +26,7 @@ namespace AGVControl ...@@ -26,7 +26,7 @@ namespace AGVControl
FullShelfPlace = boxDestInfo.location; FullShelfPlace = boxDestInfo.location;
RFID = boxDestInfo.id; RFID = boxDestInfo.id;
BoxDestInfo = boxDestInfo; BoxDestInfo = boxDestInfo;
IsIgnoreBigShelf = isIgNoreBigShelf; IsIgnoreBigShelf = isIgNoreBigShelf;
} }
/// <summary> /// <summary>
...@@ -35,16 +35,14 @@ namespace AGVControl ...@@ -35,16 +35,14 @@ namespace AGVControl
public string FullShelfPlace { get; set; } public string FullShelfPlace { get; set; }
public string RFID { get; set; } public string RFID { get; set; }
/// <summary>
/// 运行信息
/// </summary>
public string RunInfo { get; set; }
public AGVManager.BoxDestInfo BoxDestInfo { get; private set; } public AGVManager.BoxDestInfo BoxDestInfo { get; private set; }
/// <summary> /// <summary>
/// 是否忽略大料架移库解绑 /// 是否忽略大料架移库解绑
/// </summary> /// </summary>
public bool IsIgnoreBigShelf { get; private set; } public bool IsIgnoreBigShelf { get; private set; }
public override bool IsEnd { get { return SendFullShelfStep.IsStep(SEND_FULL_SHELF_STEP.END); } } public override bool IsEnd { get { return SendFullShelfStep.IsStep(SEND_FULL_SHELF_STEP.END); } }
private JobStep<SEND_FULL_SHELF_STEP> SendFullShelfStep = new JobStep<SEND_FULL_SHELF_STEP>(SEND_FULL_SHELF_STEP.NONE); private JobStep<SEND_FULL_SHELF_STEP> SendFullShelfStep = new JobStep<SEND_FULL_SHELF_STEP>(SEND_FULL_SHELF_STEP.NONE);
...@@ -53,15 +51,17 @@ namespace AGVControl ...@@ -53,15 +51,17 @@ namespace AGVControl
{ {
string msg = ""; string msg = "";
bool rtn = false; bool rtn = false;
agv.RFID = RFID;
agv.Msg = SendFullShelfStep.Msg;
if (SendFullShelfStep.IsStep(SEND_FULL_SHELF_STEP.NONE)) if (SendFullShelfStep.IsStep(SEND_FULL_SHELF_STEP.NONE))
{ {
if(FullShelfPlace.StartsWith("G")) if(FullShelfPlace.StartsWith("G"))
{ {
SendFullShelfStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT_AGV_REACH_DOOR); SendFullShelfStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT_AGV_REACH_DOOR);
msg = "满料架前往4C门,从双层线A6送往[" + FullShelfPlace + "][" + RFID + "]"+ BoxDestInfo.ShowInfo(); msg = "满料架前往4C门,从双层线A6送往[" + FullShelfPlace + "][" + RFID + "]"+ BoxDestInfo.ShowInfo();
SendFullShelfStep.Msg = msg; SendFullShelfStep.Msg = msg;
Common.DoorMission(agv, SettingString.MoveDoorDToC); Common.DoorMission(agv, SettingString.DoorDToC);
} }
else else
{ {
...@@ -75,7 +75,7 @@ namespace AGVControl ...@@ -75,7 +75,7 @@ namespace AGVControl
else if (SendFullShelfStep.IsStep(SEND_FULL_SHELF_STEP.WAIT_AGV_REACH_DOOR)) else if (SendFullShelfStep.IsStep(SEND_FULL_SHELF_STEP.WAIT_AGV_REACH_DOOR))
{ {
if (agv.Place.Equals(SettingString.C4_DOOR_Name) && agv.PlaceState.Equals(ePlaceState.MoveFinish)) if (Common.CheckTaskFinished(agv,SettingString.DoorDToC,agv.CurTaskGUID))
{ {
SendFullShelfStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT_AGV_REACH_LINE); SendFullShelfStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT_AGV_REACH_LINE);
msg = "满料架从双层线A6送往[" + FullShelfPlace + "][" + RFID + "]" + BoxDestInfo.ShowInfo(); msg = "满料架从双层线A6送往[" + FullShelfPlace + "][" + RFID + "]" + BoxDestInfo.ShowInfo();
...@@ -85,10 +85,14 @@ namespace AGVControl ...@@ -85,10 +85,14 @@ namespace AGVControl
} }
else if (SendFullShelfStep.IsStep(SEND_FULL_SHELF_STEP.WAIT_AGV_REACH_LINE)) else if (SendFullShelfStep.IsStep(SEND_FULL_SHELF_STEP.WAIT_AGV_REACH_LINE))
{ {
if (agv.Place.Equals(FullShelfPlace) && agv.PlaceState.Equals(ePlaceState.MoveFinish)) if (Common.CheckTaskFinished(agv,FullShelfPlace,agv.CurTaskGUID))
{ {
// msg = "AGV到达 " + FullShelfPlace + ",并发送入料架请求[ReadyEnter]" + BoxDestInfo.ShowInfo(); if(FullShelfPlace.Equals("G21"))
//SendFullShelfStep.Msg = msg; {
msg = "AGV到达 " + FullShelfPlace + "完成" + BoxDestInfo.ShowInfo();
SendFullShelfStep.Msg = msg;
return new EnterLeaveShelfJob(FullShelfPlace, eEnterLeaveType.Leave);
}
if (IsIgnoreBigShelf) if (IsIgnoreBigShelf)
{ {
SendFullShelfStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT_LINE_RESPONSE); SendFullShelfStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT_LINE_RESPONSE);
...@@ -98,7 +102,7 @@ namespace AGVControl ...@@ -98,7 +102,7 @@ namespace AGVControl
} }
else else
{ {
if (RFID.StartsWith("C")) if (RFID.StartsWith("C") && !agv.Place.Equals("E21"))
{ {
SendFullShelfStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT_BIG_SHELF_UNLOCK); SendFullShelfStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT_BIG_SHELF_UNLOCK);
msg = "AGV到达 " + FullShelfPlace + ",并等待大料架[" + RFID + "]解绑" + BoxDestInfo.ShowInfo(); msg = "AGV到达 " + FullShelfPlace + ",并等待大料架[" + RFID + "]解绑" + BoxDestInfo.ShowInfo();
...@@ -131,11 +135,15 @@ namespace AGVControl ...@@ -131,11 +135,15 @@ namespace AGVControl
ClientNode node = Common.nodeInfo[id]; ClientNode node = Common.nodeInfo[id];
if (node.StateEquals(eNodeStatus.MayEnter)) if (node.StateEquals(eNodeStatus.MayEnter))
{ {
SendFullShelfStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT__SHELF_IN_LINE); if(!agv.CurTaskName.Equals("Leave"))
msg = "收到产线入料架请求[ReadyEnter]的响应 " + FullShelfPlace + "入料架,小车链条运行" + BoxDestInfo.ShowInfo(); {
SendFullShelfStep.Msg = msg; SendFullShelfStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT__SHELF_IN_LINE);
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Leave"]); msg = "收到产线入料架请求[ReadyEnter]的响应 " + FullShelfPlace + "入料架,小车链条运行" + BoxDestInfo.ShowInfo();
agv.TaskSend = rtn ? "Leave" : ""; SendFullShelfStep.Msg = msg;
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Leave"]);
agv.TaskSend = rtn ? "Leave" : "";
}
} }
else if (SendFullShelfStep.IsTimeOut(15000, out double timeOutValue)) else if (SendFullShelfStep.IsTimeOut(15000, out double timeOutValue))
{ {
...@@ -150,6 +158,7 @@ namespace AGVControl ...@@ -150,6 +158,7 @@ namespace AGVControl
{ {
msg = "满料架进入" + FullShelfPlace + "完成 [" + RFID + "]" + BoxDestInfo.ShowInfo(); msg = "满料架进入" + FullShelfPlace + "完成 [" + RFID + "]" + BoxDestInfo.ShowInfo();
SendFullShelfStep.Msg = msg; SendFullShelfStep.Msg = msg;
agv.RFID = "";
AGVManager.UpdateStatus(RFID, FullShelfPlace); AGVManager.UpdateStatus(RFID, FullShelfPlace);
return new EmptyAGVBackJob(FullShelfPlace); return new EmptyAGVBackJob(FullShelfPlace);
} }
...@@ -161,10 +170,11 @@ namespace AGVControl ...@@ -161,10 +170,11 @@ namespace AGVControl
} }
} }
else if (SendFullShelfStep.IsStep(SEND_FULL_SHELF_STEP.END)) //else if (SendFullShelfStep.IsStep(SEND_FULL_SHELF_STEP.END))
{ //{
}
RunInfo = SendFullShelfStep.Msg; //}
return this; return this;
} }
......
...@@ -48,6 +48,8 @@ namespace AGVControl ...@@ -48,6 +48,8 @@ namespace AGVControl
/// 节点位置名称 /// 节点位置名称
/// </summary> /// </summary>
public string Pos_name { get; set; } public string Pos_name { get; set; }
public ClientLevel ClientLevel { get; set; } = ClientLevel.Low;
/// <summary> /// <summary>
/// 节点位置坐标 /// 节点位置坐标
/// </summary> /// </summary>
...@@ -145,26 +147,27 @@ namespace AGVControl ...@@ -145,26 +147,27 @@ namespace AGVControl
/// <returns></returns> /// <returns></returns>
public string StatetText() public string StatetText()
{ {
string s = string.Format("[Name={0}, NodeStatus={1}, RFID={2}, AGVName={3}]", Name, nodeStatus.ToString(), RFID, AgvName); string s = string.Format("[Name={0}, NodeStatus={1}, RFID={2},ClientLevel ={3}]", Name, nodeStatus.ToString(), RFID, ClientLevel.ToString());
return s; return s;
} }
public string[] ToRow() public string[] ToRow()
{ {
//节点,IP,动作,RFID,AGV名称,在线,调用,清除AGV //节点,IP,动作,RFID,AGV名称,在线,调用,清除AGV
string[] s = new string[9]; string[] s = new string[8];
s[0] = AliceName; s[0] = AliceName;
s[1] = IP; s[1] = IP;
// if (Online) // if (Online)
// { // {
s[2] = EmptyShelfCnt.ToString();//string.Format("({0},{1})", position.X.ToString("f2"), position.Y.ToString("f2")); s[2] = EmptyShelfCnt.ToString();//string.Format("({0},{1})", position.X.ToString("f2"), position.Y.ToString("f2"));
s[3] = nodeStatus.ToString(); s[3] = nodeStatus.ToString();
s[4] = RFID; s[4] = ClientLevel.ToString();
s[5] = AgvName; s[5] = RFID;
// s[5] = AgvName;
// } // }
s[6] = Online ? "在线" : "离线"; s[6] = Online ? "在线" : "离线";
s[7] = IsUse ? "是" : "否"; s[7] = IsUse ? "是" : "否";
s[8] = "清除"; // s[8] = "清除";
return s; return s;
} }
......
...@@ -22,7 +22,8 @@ namespace AGVControl ...@@ -22,7 +22,8 @@ namespace AGVControl
/// <returns></returns> /// <returns></returns>
public override Job GetNewJob(Agv_Info currentAgv) public override Job GetNewJob(Agv_Info currentAgv)
{ {
if (!SettingString.C4_AGV_IPs.Contains(currentAgv.IP))
return null;
if (!Common.CheckCanExecuteMission(currentAgv)) if (!Common.CheckCanExecuteMission(currentAgv))
return null; return null;
if (!Common.CheckAGVStatusNone(currentAgv)) if (!Common.CheckAGVStatusNone(currentAgv))
...@@ -67,12 +68,36 @@ namespace AGVControl ...@@ -67,12 +68,36 @@ namespace AGVControl
//出满料 //出满料
if (Common.FindFullShelfTask(currentAgv)) if (Common.FindFullShelfTask(currentAgv))
{ {
if (SettingString.C4_AGV_IPs.Contains(currentAgv.IP))
{
int i = Common.agvInfo.FindIndex(s => s.CurJob is GoFullShelfStationJob && !s.IP.Equals(currentAgv.IP));
if (i > -1)
return null;
}
//foreach (Agv_Info agv in Common.agvInfo)
//{
// if (agv.CurJob is GoFullShelfStationJob)
// {
// return null;
// }
//}
return new GoFullShelfStationJob(currentAgv.Place); return new GoFullShelfStationJob(currentAgv.Place);
} }
//回收空料架 //回收空料架
if (Common.FindEmptyShelfNode(currentAgv, out string emptyNodeName)) if (Common.FindEmptyShelfNode(currentAgv, out string emptyNodeName))
{ {
foreach (Agv_Info agv in Common.agvInfo)
{
if (!SettingString.C4_AGV_IPs.Contains(agv.IP))
continue;
if (agv.CurJob is GoEmptyShelfLineJob && ((GoEmptyShelfLineJob)agv.CurJob).EmptyShelfPlace.Equals(emptyNodeName))
{
return null;
}
}
return new GoEmptyShelfLineJob(currentAgv.Place, emptyNodeName); return new GoEmptyShelfLineJob(currentAgv.Place, emptyNodeName);
} }
return null; return null;
......
...@@ -24,7 +24,8 @@ namespace AGVControl ...@@ -24,7 +24,8 @@ namespace AGVControl
/// <returns></returns> /// <returns></returns>
public override Job GetNewJob(Agv_Info currentAgv) public override Job GetNewJob(Agv_Info currentAgv)
{ {
if (SettingString.C4_AGV_IPs.Contains(currentAgv.IP))
return null;
if (!Common.CheckCanExecuteMission(currentAgv)) if (!Common.CheckCanExecuteMission(currentAgv))
return null; return null;
if (!Common.CheckAGVStatusNone(currentAgv)) if (!Common.CheckAGVStatusNone(currentAgv))
...@@ -71,12 +72,28 @@ namespace AGVControl ...@@ -71,12 +72,28 @@ namespace AGVControl
//出满料 //出满料
if (Common.FindFullShelfTask(currentAgv)) if (Common.FindFullShelfTask(currentAgv))
{ {
if (!SettingString.C4_AGV_IPs.Contains(currentAgv.IP))
{
int i = Common.agvInfo.FindIndex(s=>s.CurJob is GoFullShelfStationJob && !s.IP.Equals(currentAgv.IP));
if(i>-1)
return null;
}
return new GoFullShelfStationJob(currentAgv.Place); return new GoFullShelfStationJob(currentAgv.Place);
} }
//回收空料架 //回收空料架
if (Common.FindEmptyShelfNode(currentAgv, out string emptyNodeName)) if (Common.FindEmptyShelfNode(currentAgv, out string emptyNodeName))
{ {
foreach (Agv_Info agv in Common.agvInfo)
{
if (SettingString.C4_AGV_IPs.Contains(agv.IP))
continue;
if (agv.CurJob is GoEmptyShelfLineJob && ((GoEmptyShelfLineJob)agv.CurJob).EmptyShelfPlace.Equals(emptyNodeName))
{
return null;
}
}
return new GoEmptyShelfLineJob(currentAgv.Place, emptyNodeName); return new GoEmptyShelfLineJob(currentAgv.Place, emptyNodeName);
} }
return null; return null;
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
</layout> </layout>
</appender> </appender>
<logger> <logger>
<level value="Debug"/> <level value="ALL"/>
<appender-ref ref="LineWebService"/> <appender-ref ref="LineWebService"/>
</logger> </logger>
<root> <root>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<host> <host>
<baseAddresses> <baseAddresses>
<!--添加调用服务地址--> <!--添加调用服务地址-->
<add baseAddress="http://10.85.199.1/BenQMIR/Webservice/AGVService.asmx/"/> <add baseAddress="http://127.0.0.1/BenQMIR/Webservice/AGVService.asmx/"/>
</baseAddresses> </baseAddresses>
</host> </host>
......
Fleet ID,agv,IP,Ȩ,IOID
1,MiR_R1580,10.85.199.81,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==,007615a5-2220-11ea-99f2-94c691a73b53
2020-08-29 21:42:35,E1
2020-08-29 21:42:49,E22
2020-08-29 21:42:55,G5
[A5]
EmptyShelfCnt=0
IsUse=False
[E14]
EmptyShelfCnt=0
[MiR_R1763] [MiR_R1763]
IsUse=False
RFID= RFID=
[MiR_R1764]
IsUse=False IsUse=False
[MiR_R1764]
RFID= RFID=
[MiR_R1767] [MiR_R1767]
IsUse=False
RFID= RFID=
[E10]
EmptyShelfCnt=0
[MiR_R1768] [MiR_R1768]
RFID= RFID=
[MiR_R1579] [MiR_R1579]
RFID= RFID=
[MiR_R1580] [MiR_R1580]
RFID= RFID=
[E4] IsUse=True
EmptyShelfCnt=0 [E1]
[E3] EmptyShelfCnt=1
IsUse=True
[A5]
IsUse=False
[E2]
EmptyShelfCnt=0 EmptyShelfCnt=0
IsUse=False
[E22]
EmptyShelfCnt=1
[G5]
EmptyShelfCnt=1
[G9]
IsUse=False

\ No newline at end of file \ No newline at end of file

\ No newline at end of file \ No newline at end of file

\ No newline at end of file \ No newline at end of file
3fb131896028187df2e3607393bdb409455980a9 ce147cdc7d5f84ac5eea7abfb5866dce563042b6
[2020-07-19 17:07:54,759][1]INFO SetStatus Name=E1, Action=None, Level=Low
[2020-07-19 17:07:54,783][1]INFO SetStatus Name=E2, Action=None, Level=Low
[2020-07-19 17:07:54,783][1]INFO SetStatus Name=E3, Action=None, Level=Low
[2020-07-19 17:07:54,784][1]INFO SetStatus Name=E4, Action=None, Level=Low
[2020-07-19 17:07:54,784][1]INFO SetStatus Name=E5, Action=None, Level=Low
[2020-07-19 17:07:54,785][1]INFO SetStatus Name=E6, Action=None, Level=Low
[2020-07-19 17:07:54,785][1]INFO SetStatus Name=E8, Action=None, Level=Low
[2020-07-19 17:07:54,785][1]INFO SetStatus Name=E9, Action=None, Level=Low
[2020-07-19 17:07:54,786][1]INFO SetStatus Name=E10, Action=None, Level=Low
[2020-07-19 17:07:54,786][1]INFO SetStatus Name=E11, Action=None, Level=Low
[2020-07-19 17:07:54,786][1]INFO SetStatus Name=E12, Action=None, Level=Low
[2020-07-19 17:07:54,786][1]INFO SetStatus Name=E14, Action=None, Level=Low
[2020-07-19 17:07:54,786][1]INFO SetStatus Name=E15, Action=None, Level=Low
[2020-07-19 17:07:54,786][1]INFO SetStatus Name=E16, Action=None, Level=Low
[2020-07-19 17:07:54,786][1]INFO SetStatus Name=E21, Action=None, Level=Low
[2020-07-19 17:07:54,786][1]INFO SetStatus Name=E22, Action=None, Level=Low
[2020-07-19 17:07:54,789][1]INFO Connect
[2020-07-19 17:07:54,790][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:07:56,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:07:56,386][3]INFO Server connection failed 1 times
[2020-07-19 17:07:57,387][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:07:59,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:07:59,385][3]INFO Server connection failed 2 times
[2020-07-19 17:08:00,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:02,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:02,385][3]INFO Server connection failed 3 times
[2020-07-19 17:08:03,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:05,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:05,385][3]INFO Server connection failed 4 times
[2020-07-19 17:08:06,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:08,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:08,385][3]INFO Server connection failed 5 times
[2020-07-19 17:08:09,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:11,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:11,385][3]INFO Server connection failed 6 times
[2020-07-19 17:08:12,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:14,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:14,386][3]INFO Server connection failed 7 times
[2020-07-19 17:08:15,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:17,386][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:17,386][3]INFO Server connection failed 8 times
[2020-07-19 17:08:18,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:20,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:20,385][3]INFO Server connection failed 9 times
[2020-07-19 17:08:21,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:23,386][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:23,386][3]INFO Server connection failed 10 times
[2020-07-19 17:08:24,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:26,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:26,385][3]INFO Server connection failed 11 times
[2020-07-19 17:08:27,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:27,622][6]INFO SetStatus Name=E2, Action=MayEnter, Level=Low
[2020-07-19 17:08:29,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:29,385][3]INFO Server connection failed 12 times
[2020-07-19 17:08:30,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:32,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:32,385][3]INFO Server connection failed 13 times
[2020-07-19 17:08:33,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:35,386][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:35,386][3]INFO Server connection failed 14 times
[2020-07-19 17:08:36,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:37,627][6]INFO SetStatus Name=E2, Action=None, Level=Low
[2020-07-19 17:08:38,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:38,385][3]INFO Server connection failed 15 times
[2020-07-19 17:08:39,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:41,386][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:41,386][3]INFO Server connection failed 16 times
[2020-07-19 17:08:42,387][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:44,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:44,385][3]INFO Server connection failed 17 times
[2020-07-19 17:08:45,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:47,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:47,385][3]INFO Server connection failed 18 times
[2020-07-19 17:08:48,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:50,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:50,385][3]INFO Server connection failed 19 times
[2020-07-19 17:08:51,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:53,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:53,385][3]INFO Server connection failed 20 times
[2020-07-19 17:08:54,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:56,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:56,385][3]INFO Server connection failed 21 times
[2020-07-19 17:08:57,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:08:59,128][7]INFO SetStatus Name=A5, Action=None, Level=Low
[2020-07-19 17:08:59,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:08:59,385][3]INFO Server connection failed 22 times
[2020-07-19 17:09:00,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:02,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:02,385][3]INFO Server connection failed 23 times
[2020-07-19 17:09:03,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:05,386][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:05,386][3]INFO Server connection failed 24 times
[2020-07-19 17:09:06,387][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:08,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:08,385][3]INFO Server connection failed 25 times
[2020-07-19 17:09:09,129][7]INFO SetStatus Name=A5, Action=None, Level=Low
[2020-07-19 17:09:09,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:11,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:11,385][3]INFO Server connection failed 26 times
[2020-07-19 17:09:12,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:14,002][8]INFO SetStatus Name=E2, Action=MayEnter, Level=Low
[2020-07-19 17:09:14,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:14,385][3]INFO Server connection failed 27 times
[2020-07-19 17:09:15,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:17,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:17,386][3]INFO Server connection failed 28 times
[2020-07-19 17:09:18,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:20,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:20,385][3]INFO Server connection failed 29 times
[2020-07-19 17:09:21,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:23,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:23,386][3]INFO Server connection failed 30 times
[2020-07-19 17:09:24,005][8]INFO SetStatus Name=E2, Action=None, Level=Low
[2020-07-19 17:09:24,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:26,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:26,385][3]INFO Server connection failed 31 times
[2020-07-19 17:09:27,273][7]INFO SetStatus Name=E22, Action=None, Level=Low
[2020-07-19 17:09:27,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:29,385][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:29,386][3]INFO Server connection failed 32 times
[2020-07-19 17:09:29,744][8]INFO SetStatus Name=E22, Action=None, Level=Low
[2020-07-19 17:09:29,994][9]INFO SetStatus Name=E22, Action=None, Level=Low
[2020-07-19 17:09:30,190][10]INFO SetStatus Name=E22, Action=None, Level=Low
[2020-07-19 17:09:30,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:30,433][11]INFO SetStatus Name=E22, Action=None, Level=Low
[2020-07-19 17:09:30,634][12]INFO SetStatus Name=E22, Action=None, Level=Low
[2020-07-19 17:09:30,830][13]INFO SetStatus Name=E22, Action=None, Level=Low
[2020-07-19 17:09:30,993][14]INFO SetStatus Name=E22, Action=None, Level=Low
[2020-07-19 17:09:31,744][15]INFO SetStatus Name=E22, Action=None, Level=Low
[2020-07-19 17:09:32,386][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:32,386][3]INFO Server connection failed 33 times
[2020-07-19 17:09:33,386][3]INFO Connect 10.85.199.1:9501
[2020-07-19 17:09:35,258][1]INFO Close
[2020-07-19 17:09:35,386][3]INFO Ping 10.85.199.1 request timeout
[2020-07-19 17:09:35,386][3]INFO Server connection failed 34 times
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!