Commit 952af3b5 张东亮

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

1 个父辈 7e18084f
......@@ -36,6 +36,9 @@
<PropertyGroup>
<ApplicationIcon>line.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="AsaPL.AgvClient">
<HintPath>..\AgvClient\bin\Debug\AsaPL.AgvClient.dll</HintPath>
......@@ -103,6 +106,7 @@
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.manifest" />
<None Include="log4net.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</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
CrossDoor_07_CloseAntherDoor,
CrossDoor_08_Finish,
#endregion
/// <summary>
/// 结束
/// </summary>
......
......@@ -447,7 +447,7 @@ namespace DeviceLibrary
}
CheckErrorState();
CheckOfflineTimeOut();
CheckStandTimeOut(position);
//CheckStandTimeOut(position);
UpdateDisplayBoard();
return isChange;
}
......
......@@ -148,7 +148,7 @@ namespace DeviceLibrary
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.NextNode = JobParam.CurTargetNode;
......@@ -228,10 +228,10 @@ namespace DeviceLibrary
}
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
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,
$"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"),true);
// //报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
// 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,
// $"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"),true);
}
}
else if (JobRunStep.IsStep(RunStep.SD_LiftToLine_10_CheckNextLine))
......@@ -240,7 +240,7 @@ namespace DeviceLibrary
{
JobParam.CurTargetNode = JobParam.TargetNodes[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.NextNode = JobParam.CurTargetNode;
......@@ -260,7 +260,7 @@ namespace DeviceLibrary
{
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.NextNode = JobParam.SrcNode;
......@@ -269,7 +269,7 @@ namespace DeviceLibrary
GenJobCallBack(this.GetType(), RunStep.SD_LiftToLine_11_CrossTwoDoor, 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.NextNode = JobParam.SrcNode;
......@@ -377,6 +377,7 @@ namespace DeviceLibrary
}
else if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().destinationFloor, agv))
{
ChargePileManager.StopCharge(agv);
JobRunStep.ToNextStep(RunStep.SD_LiftToLine_13_CheckLiftStatus);
runInfo = $"{JobParam.SrcNode.AliceName}门已开,检查电梯内该层是否有料车";
JobRunStep.Msg = runInfo;
......@@ -385,13 +386,25 @@ namespace DeviceLibrary
}
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);
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true);
//上报运输状态
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,
$"等待电梯到达超时"));
////上报运输状态
//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,
// $"等待电梯到达超时"));
}
}
else if (JobRunStep.IsStep(RunStep.SD_LiftToLine_13_CheckLiftStatus))
......@@ -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.NextNode = JobParam.SrcNode;
......
......@@ -115,9 +115,9 @@ namespace DeviceLibrary.bean.job
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
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,
$"等待{ JobParam.CurTargetNode.Name }确认超时{timeoutval.ToString("f2")}分"),true);
// 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,
// $"等待{ JobParam.CurTargetNode.Name }确认超时{timeoutval.ToString("f2")}分"),true);
}
}
else if (JobRunStep.IsStep(RunStep.SD_Line_OneToMany_06_CheckNextLine))
......
......@@ -162,6 +162,7 @@ namespace DeviceLibrary
{
if (LiftContext.CheckHasEmptyFinished(agv, JobParam.CurTargetNode.Name, out JobParam.LiftStatus))
{
ChargePileManager.StopCharge(agv);
MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? "");
if (missionInfo != null)
{
......@@ -182,8 +183,10 @@ namespace DeviceLibrary
}
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))
{
ChargePileManager.StopCharge(agv);
MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? "");
if (missionInfo != null)
{
......@@ -212,15 +215,23 @@ namespace DeviceLibrary
}
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);
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
//上报运输状态
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,
$"等待电梯到达超时"));
////上报运输状态
//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,
// $"等待电梯到达超时"));
}
Thread.Sleep(2000);
}
else if (JobRunStep.IsStep(RunStep.LineToLift_05_01_ToStandby))
{
......
......@@ -109,9 +109,9 @@ namespace DeviceLibrary.bean.job
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
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,
$"等待{ JobParam.CurTargetNode.Name }确认超时{timeoutval.ToString("f2")}分"), true);
// 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,
// $"等待{ JobParam.CurTargetNode.Name }确认超时{timeoutval.ToString("f2")}分"), true);
}
}
}
......
......@@ -174,9 +174,9 @@ namespace DeviceLibrary.bean.job
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
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,
$"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"), true);
// 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,
// $"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"), true);
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_10_CheckNextLine))
......
......@@ -168,9 +168,9 @@ namespace DeviceLibrary.bean.job
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
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,
$"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"), true);
// 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,
// $"等待{JobParam.CurTargetNode.Name}确认超时{timeoutval.ToString("f2")}分"), true);
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_10_CheckNextLine))
......@@ -360,6 +360,7 @@ namespace DeviceLibrary.bean.job
{
if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().sourceFloor, agv))
{
ChargePileManager.StopCharge(agv);
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus);
runInfo = $"{JobParam.SrcNode.AliceName}门已开,检查电梯内该层是否有料车";
JobRunStep.Msg = runInfo;
......@@ -368,19 +369,29 @@ namespace DeviceLibrary.bean.job
}
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);
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
//上报运输状态
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,
$"等待电梯到达超时"));
//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,
// $"等待电梯到达超时"));
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus))
{
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))
{
MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? "");
......@@ -399,12 +410,6 @@ namespace DeviceLibrary.bean.job
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 电梯内无料车
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_24_01_EnterLift))
......
......@@ -113,9 +113,9 @@ namespace DeviceLibrary
else if (JobRunStep.IsTimeOut(WaitTimeOut, out double timeoutval))
{
//报警,$"等待{JobParam.CurTargetNode.AliceName}的人员确认超时{timeoutval}分"
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,
$"等待{JobParam.SrcNode.Name}确认超时{timeoutval.ToString("f2")}分"),true);
// 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,
// $"等待{JobParam.SrcNode.Name}确认超时{timeoutval.ToString("f2")}分"),true);
}
}
else if (JobRunStep.IsStep(RunStep.LineToLift_WaitConfirm))
......@@ -170,6 +170,7 @@ namespace DeviceLibrary
{
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))
{
MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? "");
......@@ -198,13 +199,22 @@ namespace DeviceLibrary
}
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);
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
//上报运输状态
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,
$"等待电梯到达超时"));
//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,
// $"等待电梯到达超时"));
}
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!