Commit 952af3b5 张东亮

关闭停留报警以及在电梯电量低去充电

1 个父辈 7e18084f
...@@ -36,6 +36,9 @@ ...@@ -36,6 +36,9 @@
<PropertyGroup> <PropertyGroup>
<ApplicationIcon>line.ico</ApplicationIcon> <ApplicationIcon>line.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="AsaPL.AgvClient"> <Reference Include="AsaPL.AgvClient">
<HintPath>..\AgvClient\bin\Debug\AsaPL.AgvClient.dll</HintPath> <HintPath>..\AgvClient\bin\Debug\AsaPL.AgvClient.dll</HintPath>
...@@ -103,6 +106,7 @@ ...@@ -103,6 +106,7 @@
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
</Compile> </Compile>
<None Include="app.manifest" />
<None Include="log4net.config"> <None Include="log4net.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
......
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 清单选项
如果想要更改 Windows 用户帐户控制级别,请使用
以下节点之一替换 requestedExecutionLevel 节点。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
如果你的应用程序需要此虚拟化来实现向后兼容性,则移除此
元素。
-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
Windows 版本的列表。取消评论适当的元素,
Windows 将自动选择最兼容的环境。 -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
</application>
</compatibility>
<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
-->
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>
...@@ -620,6 +620,7 @@ namespace DeviceLibrary.bean ...@@ -620,6 +620,7 @@ namespace DeviceLibrary.bean
CrossDoor_07_CloseAntherDoor, CrossDoor_07_CloseAntherDoor,
CrossDoor_08_Finish, CrossDoor_08_Finish,
#endregion #endregion
/// <summary> /// <summary>
/// 结束 /// 结束
/// </summary> /// </summary>
......
...@@ -447,7 +447,7 @@ namespace DeviceLibrary ...@@ -447,7 +447,7 @@ namespace DeviceLibrary
} }
CheckErrorState(); CheckErrorState();
CheckOfflineTimeOut(); CheckOfflineTimeOut();
CheckStandTimeOut(position); //CheckStandTimeOut(position);
UpdateDisplayBoard(); UpdateDisplayBoard();
return isChange; return isChange;
} }
......
...@@ -148,7 +148,7 @@ namespace DeviceLibrary ...@@ -148,7 +148,7 @@ namespace DeviceLibrary
job = new CrossDoorJob(JobParam); job = new CrossDoorJob(JobParam);
} }
//是否需要跨门 //是否需要跨门
else if (NodeManager.NeedCrossDoor(agv, JobParam.SrcNode,JobParam.CurTargetNode, out bool isin, out bool isair)) else if (NodeManager.NeedCrossDoor(agv, JobParam.SrcNode, JobParam.CurTargetNode, out bool isin, out bool isair))
{ {
JobParam.CrossDoor.CurNode = JobParam.SrcNode; JobParam.CrossDoor.CurNode = JobParam.SrcNode;
JobParam.CrossDoor.NextNode = JobParam.CurTargetNode; JobParam.CrossDoor.NextNode = JobParam.CurTargetNode;
...@@ -228,10 +228,10 @@ namespace DeviceLibrary ...@@ -228,10 +228,10 @@ namespace DeviceLibrary
} }
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval)) else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{ {
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分" // //报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, // manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.CurTargetNode.Name, service.model.TransportStatus.ModeStr.agvButton, //service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.CurTargetNode.Name, service.model.TransportStatus.ModeStr.agvButton,
$"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"),true); // $"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"),true);
} }
} }
else if (JobRunStep.IsStep(RunStep.SD_LiftToLine_10_CheckNextLine)) else if (JobRunStep.IsStep(RunStep.SD_LiftToLine_10_CheckNextLine))
...@@ -240,7 +240,7 @@ namespace DeviceLibrary ...@@ -240,7 +240,7 @@ namespace DeviceLibrary
{ {
JobParam.CurTargetNode = JobParam.TargetNodes[0]; JobParam.CurTargetNode = JobParam.TargetNodes[0];
JobParam.TargetNodes.RemoveAt(0); JobParam.TargetNodes.RemoveAt(0);
if (NodeManager.NeedCrossDoor(agv, agv.Place,JobParam.CurTargetNode, out bool isin, out bool isair)) if (NodeManager.NeedCrossDoor(agv, agv.Place, JobParam.CurTargetNode, out bool isin, out bool isair))
{ {
JobParam.CrossDoor.CurNode = agv.Place; JobParam.CrossDoor.CurNode = agv.Place;
JobParam.CrossDoor.NextNode = JobParam.CurTargetNode; JobParam.CrossDoor.NextNode = JobParam.CurTargetNode;
...@@ -260,7 +260,7 @@ namespace DeviceLibrary ...@@ -260,7 +260,7 @@ namespace DeviceLibrary
{ {
if (JobParam.GetMissionInfo() != null && JobParam.GetMissionInfo().needBack) if (JobParam.GetMissionInfo() != null && JobParam.GetMissionInfo().needBack)
{ {
if (NodeManager.NeedCrossTwoDoor(agv,agv.Place,JobParam.SrcNode)) if (NodeManager.NeedCrossTwoDoor(agv, agv.Place, JobParam.SrcNode))
{ {
JobParam.CrossDoor.CurNode = agv.Place; JobParam.CrossDoor.CurNode = agv.Place;
JobParam.CrossDoor.NextNode = JobParam.SrcNode; JobParam.CrossDoor.NextNode = JobParam.SrcNode;
...@@ -269,7 +269,7 @@ namespace DeviceLibrary ...@@ -269,7 +269,7 @@ namespace DeviceLibrary
GenJobCallBack(this.GetType(), RunStep.SD_LiftToLine_11_CrossTwoDoor, JobParam); GenJobCallBack(this.GetType(), RunStep.SD_LiftToLine_11_CrossTwoDoor, JobParam);
job = new CrossDoorJob(JobParam); job = new CrossDoorJob(JobParam);
} }
else if (NodeManager.NeedCrossDoor(agv, agv.Place,JobParam.SrcNode, out bool isin, out bool isair)) else if (NodeManager.NeedCrossDoor(agv, agv.Place, JobParam.SrcNode, out bool isin, out bool isair))
{ {
JobParam.CrossDoor.CurNode = agv.Place; JobParam.CrossDoor.CurNode = agv.Place;
JobParam.CrossDoor.NextNode = JobParam.SrcNode; JobParam.CrossDoor.NextNode = JobParam.SrcNode;
...@@ -377,6 +377,7 @@ namespace DeviceLibrary ...@@ -377,6 +377,7 @@ namespace DeviceLibrary
} }
else if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().destinationFloor, agv)) else if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().destinationFloor, agv))
{ {
ChargePileManager.StopCharge(agv);
JobRunStep.ToNextStep(RunStep.SD_LiftToLine_13_CheckLiftStatus); JobRunStep.ToNextStep(RunStep.SD_LiftToLine_13_CheckLiftStatus);
runInfo = $"{JobParam.SrcNode.AliceName}门已开,检查电梯内该层是否有料车"; runInfo = $"{JobParam.SrcNode.AliceName}门已开,检查电梯内该层是否有料车";
JobRunStep.Msg = runInfo; JobRunStep.Msg = runInfo;
...@@ -385,13 +386,25 @@ namespace DeviceLibrary ...@@ -385,13 +386,25 @@ namespace DeviceLibrary
} }
else if (JobRunStep.IsTimeOut(20) && !lift.LiftContext.CheckIfRequestOk(JobParam.SrcNode.Name, JobParam.GetMissionInfo())) else if (JobRunStep.IsTimeOut(20) && !lift.LiftContext.CheckIfRequestOk(JobParam.SrcNode.Name, JobParam.GetMissionInfo()))
{ {
if (agv?.Battery <= 10 && !agv.IsInCharge)
{
if (ChargePileManager.HasEmpty(agv, out ChargePile charge))
{
ChargePileManager.StartCharge(agv, charge.Name);
AllocateTask(agv, charge);
return job;
}
}
JobRunStep.ToNextStep(RunStep.SD_LiftToLine_12_WaitDoorOpen); JobRunStep.ToNextStep(RunStep.SD_LiftToLine_12_WaitDoorOpen);
//请求电梯 //请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true); lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true);
//上报运输状态 ////上报运输状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, //manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto, // service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto,
$"等待电梯到达超时")); // $"等待电梯到达超时"));
} }
} }
else if (JobRunStep.IsStep(RunStep.SD_LiftToLine_13_CheckLiftStatus)) else if (JobRunStep.IsStep(RunStep.SD_LiftToLine_13_CheckLiftStatus))
...@@ -538,7 +551,7 @@ namespace DeviceLibrary ...@@ -538,7 +551,7 @@ namespace DeviceLibrary
} }
} }
else if(JobRunStep.IsStep(RunStep.SD_LiftToLine_16_CrossTwoDoor)) else if (JobRunStep.IsStep(RunStep.SD_LiftToLine_16_CrossTwoDoor))
{ {
JobParam.CrossDoor.CurNode = JobParam.CurTargetNode; JobParam.CrossDoor.CurNode = JobParam.CurTargetNode;
JobParam.CrossDoor.NextNode = JobParam.SrcNode; JobParam.CrossDoor.NextNode = JobParam.SrcNode;
......
...@@ -115,9 +115,9 @@ namespace DeviceLibrary.bean.job ...@@ -115,9 +115,9 @@ namespace DeviceLibrary.bean.job
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval)) else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{ {
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分" //报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, // manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.agvButton, //service.model.TransportStatus.TypeStr.error, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.agvButton,
$"等待{ JobParam.CurTargetNode.Name }确认超时{timeoutval.ToString("f2")}分"),true); // $"等待{ JobParam.CurTargetNode.Name }确认超时{timeoutval.ToString("f2")}分"),true);
} }
} }
else if (JobRunStep.IsStep(RunStep.SD_Line_OneToMany_06_CheckNextLine)) else if (JobRunStep.IsStep(RunStep.SD_Line_OneToMany_06_CheckNextLine))
......
...@@ -162,6 +162,7 @@ namespace DeviceLibrary ...@@ -162,6 +162,7 @@ namespace DeviceLibrary
{ {
if (LiftContext.CheckHasEmptyFinished(agv, JobParam.CurTargetNode.Name, out JobParam.LiftStatus)) if (LiftContext.CheckHasEmptyFinished(agv, JobParam.CurTargetNode.Name, out JobParam.LiftStatus))
{ {
ChargePileManager.StopCharge(agv);
MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? ""); MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? "");
if (missionInfo != null) if (missionInfo != null)
{ {
...@@ -182,8 +183,10 @@ namespace DeviceLibrary ...@@ -182,8 +183,10 @@ namespace DeviceLibrary
} }
else if (lift.LiftContext.IsDoorOpen(JobParam.CurTargetNode.Name, JobParam.GetMissionInfo().sourceFloor, agv)) else if (lift.LiftContext.IsDoorOpen(JobParam.CurTargetNode.Name, JobParam.GetMissionInfo().sourceFloor, agv))
{ {
ChargePileManager.StopCharge(agv);
if (lift.LiftContext.HasShelfNeedLeave(JobParam.CurTargetNode.Name, agv.Client, out JobParam.LiftStatus)) if (lift.LiftContext.HasShelfNeedLeave(JobParam.CurTargetNode.Name, agv.Client, out JobParam.LiftStatus))
{ {
ChargePileManager.StopCharge(agv);
MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? ""); MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? "");
if (missionInfo != null) if (missionInfo != null)
{ {
...@@ -212,15 +215,23 @@ namespace DeviceLibrary ...@@ -212,15 +215,23 @@ namespace DeviceLibrary
} }
else if (JobRunStep.IsTimeOut(20) && !lift.LiftContext.CheckIfRequestOk(JobParam.CurTargetNode.Name, JobParam.GetMissionInfo())) else if (JobRunStep.IsTimeOut(20) && !lift.LiftContext.CheckIfRequestOk(JobParam.CurTargetNode.Name, JobParam.GetMissionInfo()))
{ {
if (agv?.Battery <= 10 && !agv.IsInCharge)
{
if (ChargePileManager.HasEmpty(agv, out ChargePile charge))
{
ChargePileManager.StartCharge(agv, charge.Name);
AllocateTask(agv, charge);
return job;
}
}
JobRunStep.ToNextStep(RunStep.LineToLift_04_CheckLiftStatus); JobRunStep.ToNextStep(RunStep.LineToLift_04_CheckLiftStatus);
//请求电梯 //请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv); lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
//上报运输状态 ////上报运输状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, //manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.CurTargetNode.Name, service.model.TransportStatus.ModeStr.auto, // service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.CurTargetNode.Name, service.model.TransportStatus.ModeStr.auto,
$"等待电梯到达超时")); // $"等待电梯到达超时"));
} }
Thread.Sleep(2000);
} }
else if (JobRunStep.IsStep(RunStep.LineToLift_05_01_ToStandby)) else if (JobRunStep.IsStep(RunStep.LineToLift_05_01_ToStandby))
{ {
......
...@@ -109,9 +109,9 @@ namespace DeviceLibrary.bean.job ...@@ -109,9 +109,9 @@ namespace DeviceLibrary.bean.job
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval)) else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{ {
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分" //报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, // manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.agvButton, //service.model.TransportStatus.TypeStr.error, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.agvButton,
$"等待{ JobParam.CurTargetNode.Name }确认超时{timeoutval.ToString("f2")}分"), true); // $"等待{ JobParam.CurTargetNode.Name }确认超时{timeoutval.ToString("f2")}分"), true);
} }
} }
} }
......
...@@ -174,9 +174,9 @@ namespace DeviceLibrary.bean.job ...@@ -174,9 +174,9 @@ namespace DeviceLibrary.bean.job
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval)) else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{ {
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分" //报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, // manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.CurTargetNode.Name, service.model.TransportStatus.ModeStr.agvButton, //service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.CurTargetNode.Name, service.model.TransportStatus.ModeStr.agvButton,
$"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"), true); // $"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"), true);
} }
} }
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_10_CheckNextLine)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_10_CheckNextLine))
......
...@@ -168,9 +168,9 @@ namespace DeviceLibrary.bean.job ...@@ -168,9 +168,9 @@ namespace DeviceLibrary.bean.job
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval)) else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{ {
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分" //报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, // manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.CurTargetNode.Name, service.model.TransportStatus.ModeStr.agvButton, //service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.CurTargetNode.Name, service.model.TransportStatus.ModeStr.agvButton,
$"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"), true); // $"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"), true);
} }
} }
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_10_CheckNextLine)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_10_CheckNextLine))
...@@ -360,6 +360,7 @@ namespace DeviceLibrary.bean.job ...@@ -360,6 +360,7 @@ namespace DeviceLibrary.bean.job
{ {
if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().sourceFloor, agv)) if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().sourceFloor, agv))
{ {
ChargePileManager.StopCharge(agv);
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus);
runInfo = $"{JobParam.SrcNode.AliceName}门已开,检查电梯内该层是否有料车"; runInfo = $"{JobParam.SrcNode.AliceName}门已开,检查电梯内该层是否有料车";
JobRunStep.Msg = runInfo; JobRunStep.Msg = runInfo;
...@@ -368,19 +369,29 @@ namespace DeviceLibrary.bean.job ...@@ -368,19 +369,29 @@ namespace DeviceLibrary.bean.job
} }
else if (JobRunStep.IsTimeOut(20) && !lift.LiftContext.CheckIfRequestOk(JobParam.SrcNode.Name, JobParam.GetMissionInfo())) else if (JobRunStep.IsTimeOut(20) && !lift.LiftContext.CheckIfRequestOk(JobParam.SrcNode.Name, JobParam.GetMissionInfo()))
{ {
if (agv?.Battery <= 10 && !agv.IsInCharge)
{
if (ChargePileManager.HasEmpty(agv, out ChargePile charge))
{
ChargePileManager.StartCharge(agv, charge.Name);
AllocateTask(agv, charge);
return job;
}
}
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_21_WaitDoorOpen); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_21_WaitDoorOpen);
//请求电梯 //请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv); lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
//上报运输状态 //上报运输状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, //manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto, // service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto,
$"等待电梯到达超时")); // $"等待电梯到达超时"));
} }
} }
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus))
{ {
if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().sourceFloor, agv)) if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().sourceFloor, agv))
{ {
ChargePileManager.StopCharge(agv);
if (lift.LiftContext.HasShelfNeedLeave(JobParam.SrcNode.Name, agv.Client, out liftStatus)) if (lift.LiftContext.HasShelfNeedLeave(JobParam.SrcNode.Name, agv.Client, out liftStatus))
{ {
MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? ""); MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? "");
...@@ -399,12 +410,6 @@ namespace DeviceLibrary.bean.job ...@@ -399,12 +410,6 @@ namespace DeviceLibrary.bean.job
AllocateTask(agv, $"{JobParam.SrcNode.Name}_{SettingString.TakeShelfOff}"); AllocateTask(agv, $"{JobParam.SrcNode.Name}_{SettingString.TakeShelfOff}");
} }
} }
else if (JobRunStep.IsTimeOut(20) && !lift.LiftContext.CheckIfRequestOk(JobParam.SrcNode.Name, JobParam.GetMissionInfo()))
{
JobRunStep.ToNextStep(RunStep.SD_LiftToLine_12_WaitDoorOpen);
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
}
} }
#region 电梯内无料车 #region 电梯内无料车
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_24_01_EnterLift)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_24_01_EnterLift))
......
...@@ -113,9 +113,9 @@ namespace DeviceLibrary ...@@ -113,9 +113,9 @@ namespace DeviceLibrary
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval)) else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{ {
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分" //报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, // manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.agvButton, //service.model.TransportStatus.TypeStr.error, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.agvButton,
$"等待{JobParam.SrcNode.Name}确认超时{timeoutval.ToString("f2")}分"),true); // $"等待{JobParam.SrcNode.Name}确认超时{timeoutval.ToString("f2")}分"),true);
} }
} }
else if (JobRunStep.IsStep(RunStep.LineToLift_WaitConfirm)) else if (JobRunStep.IsStep(RunStep.LineToLift_WaitConfirm))
...@@ -170,6 +170,7 @@ namespace DeviceLibrary ...@@ -170,6 +170,7 @@ namespace DeviceLibrary
{ {
if (lift.LiftContext.IsDoorOpen(JobParam.CurTargetNode.Name, JobParam.GetMissionInfo().sourceFloor, agv)) if (lift.LiftContext.IsDoorOpen(JobParam.CurTargetNode.Name, JobParam.GetMissionInfo().sourceFloor, agv))
{ {
ChargePileManager.StopCharge(agv);
if (lift.LiftContext.HasShelfNeedLeave(JobParam.CurTargetNode.Name, agv.Client, out JobParam.LiftStatus)) if (lift.LiftContext.HasShelfNeedLeave(JobParam.CurTargetNode.Name, agv.Client, out JobParam.LiftStatus))
{ {
MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? ""); MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? "");
...@@ -198,13 +199,22 @@ namespace DeviceLibrary ...@@ -198,13 +199,22 @@ namespace DeviceLibrary
} }
else if (JobRunStep.IsTimeOut(20) && !lift.LiftContext.CheckIfRequestOk(JobParam.CurTargetNode.Name, JobParam.GetMissionInfo())) else if (JobRunStep.IsTimeOut(20) && !lift.LiftContext.CheckIfRequestOk(JobParam.CurTargetNode.Name, JobParam.GetMissionInfo()))
{ {
if (agv?.Battery <= 10 && !agv.IsInCharge)
{
if (ChargePileManager.HasEmpty(agv, out ChargePile charge))
{
ChargePileManager.StartCharge(agv, charge.Name);
AllocateTask(agv, charge);
return job;
}
}
JobRunStep.ToNextStep(RunStep.LineToLift_04_CheckLiftStatus); JobRunStep.ToNextStep(RunStep.LineToLift_04_CheckLiftStatus);
//请求电梯 //请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv); lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
//上报运输状态 //上报运输状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, //manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.CurTargetNode.Name, service.model.TransportStatus.ModeStr.auto, // service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.CurTargetNode.Name, service.model.TransportStatus.ModeStr.auto,
$"等待电梯到达超时")); // $"等待电梯到达超时"));
} }
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!