Wms 预任务执行,新增Agv任务,呼梯任务,电梯任务条件过滤进行区分

This commit is contained in:
yang.lee
2023-10-13 09:38:05 +08:00
parent 8100ce0a21
commit 02b718157d
7 changed files with 151 additions and 100 deletions

View File

@@ -40,64 +40,30 @@ namespace Tnb.WarehouseMgr
}
/// <summary>
/// 一楼电梯操作流程
/// 呼梯测试
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> FirstFloorElevatorFlow(string value)
public async Task<dynamic> CallLiftTest(string devName, int floor)
{
//CancellationTokenSource cts = new CancellationTokenSource();//扩展用
////如果不是1楼,判断电梯状态,如果电梯是空闲的向电梯发送一个到一楼的指令
//var wirteRes = await SetAgvControlStatus(1);
//JObject jo = JObject.Parse(wirteRes);
//var propName = "IsStarted";
//if (!_fetchStartedStausValue.TryGetValue(propName, out var func))
//{
// var isStartedProp = _agvHeartbeatMonitor.GetType().GetProperty(propName);
// var paramExp = Expression.Parameter(typeof(BackgroundService), "_agvHeartbeatMonitor");
// var propExp = Expression.Property(Expression.ConvertChecked(paramExp, isStartedProp.DeclaringType), isStartedProp);
// var body = Expression.Lambda<System.Func<BackgroundService, Boolean>>(propExp, paramExp);
// func = body.Compile();
// _fetchStartedStausValue[propName] = func;
//}
//var isStarted = func(_agvHeartbeatMonitor);
//if (!isStarted)
//{
// _agvHeartbeatMonitor.StartAsync(cts.Token);
//}
////获取电梯状态
//(int sysStatus, int runStatus, int floorNo) multi = (-1, -1, -1);
//do
//{
// //multi = await GetElevatorStatus(CancellationToken.None);
// await Task.Delay(2000);
//} while (multi.sysStatus != 3 && multi.runStatus != 0);
//if (multi.sysStatus == 3 && multi.runStatus == 0 && multi.floorNo != 1)
//{
// await WriteTagAsync("FloorExecute", 1);
// if (true) //此处为Agv到一楼开门位通知操作目前默认为true
// {
// //向电梯发送前门开门指令
// await SendOpenCloseCmd(3);
// //获取门状态 是否为 开门到位保持
// var doorStatus = await GetTagAsync("DoorStatus");
// if (doorStatus == 3)
// {
// //通知Agv进入电梯放货,默认为true
// if (true)
// {
// //向电梯发送关门指令
// await SendOpenCloseCmd(4);
// }
// }
// }
//}
return Task.FromResult(0);
var isSuccefuly = false;
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await GetElevatorStatus(devName, CancellationToken.None);
//判断当前楼层是否是放货楼层,如不是则呼叫电梯到当前楼层
if (sysStatus.ToEnum<EnumSysStatus>() == EnumSysStatus. && runStatus.ToEnum<EnumRunStatus>() == EnumRunStatus. &&
agvStatus.ToEnum<EnumAgvStatus>() != EnumAgvStatus.AGV运行状态)
{
if (doorStatus.ToEnum<EnumDoorStatus>() != EnumDoorStatus.)
{
await SendOpenCloseCmd(devName, (int)EnumAgvControl.);
}
var result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到指定楼层
if (!string.IsNullOrEmpty(result))
{
JObject jo = JObject.Parse(result);
isSuccefuly = jo?.Value<string>("Result")?.Equals("Ok", StringComparison.OrdinalIgnoreCase) ?? false;
}
}
return isSuccefuly;
}
/// <summary>
/// 三楼电梯操作流程
@@ -327,17 +293,17 @@ namespace Tnb.WarehouseMgr
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await GetElevatorStatus(devName, CancellationToken.None);
//判断当前楼层是否是放货楼层,如不是则呼叫电梯到当前楼层
if (sysStatus.ToEnum<EnumSysStatus>() == EnumSysStatus. && runStatus.ToEnum<EnumRunStatus>() == EnumRunStatus. &&
agvStatus.ToEnum<EnumAgvStatus>() != EnumAgvStatus.AGV运行状态 && floorNo != 4)
agvStatus.ToEnum<EnumAgvStatus>() != EnumAgvStatus.AGV运行状态)
{
if (doorStatus.ToEnum<EnumDoorStatus>() != EnumDoorStatus.)
{
await SendOpenCloseCmd(devName, (int)EnumAgvControl.);
}
var result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到4楼
var result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到指定楼层
if (!string.IsNullOrEmpty(result))
{
JObject jo = JObject.Parse(result);
isSuccefuly = jo?.Value<string>("Result").Equals("Ok", StringComparison.OrdinalIgnoreCase) ?? false;
isSuccefuly = jo?.Value<string>("Result")?.Equals("Ok", StringComparison.OrdinalIgnoreCase) ?? false;
}
}
return isSuccefuly;