Wms 预任务执行,新增Agv任务,呼梯任务,电梯任务条件过滤进行区分
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user