change - 提升机SDK 修改,封装提升机状态获取方法

dev
WenJY 2 weeks ago
parent 44896da02d
commit f42c148210

@ -0,0 +1,71 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2026 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Wcs.HoistSdk.Dto.GetHoistStatus
* 981CC5F0-DFD1-49A7-AABC-7903408521FC
*
* WenJY
*
* 2026-05-26 11:16:59
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace Sln.Wcs.HoistSdk.Dto.GetHoistStatus;
public class GetHoistStatusDto
{
/// <summary>
/// 提升机编号
/// </summary>
public string hoistCode { get; set; }
/// <summary>
/// 反馈任务执行指令:是否可以下发任务
/// </summary>
public string canDispatchTask { get; set; }
/// <summary>
/// 当前楼层
/// </summary>
public string currentFloor { get; set; }
/// <summary>
/// 接驳位状态1~5 楼)
/// 索引 0 → 1楼索引 1 → 2楼... 索引 4 → 5楼
/// </summary>
public List<string> transferStationStatus { get; set; }
/// <summary>
/// 读写器触发状态1~5 楼)
/// 索引 0 → 1楼索引 1 → 2楼... 索引 4 → 5楼
/// </summary>
public List<string> readerTriggerStatus { get; set; }
/// <summary>
/// 自动状态true = 自动模式false = 手动模式
/// </summary>
public string isAutoMode { get; set; }
/// <summary>
/// 屏蔽调度true = 屏蔽中false = 未屏蔽
/// </summary>
public string isDispatchBlocked { get; set; }
/// <summary>
/// 状态指示(详见 <see cref="IndicatorState"/>
/// </summary>
public string stateIndicator { get; set; }
}

@ -0,0 +1,82 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2026 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Wcs.HoistSdk.Dto.GetHoistStatus
* 45891DDF-A22B-4259-BBEE-7960917D6A0E
*
* WenJY
*
* 2026-05-26 11:13:56
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace Sln.Wcs.HoistSdk.Dto.GetHoistStatus;
public class GetHoistStatusResultDto
{
/// <summary>
/// 返回码
/// </summary>
public string code { get; set; }
/// <summary>
/// 返回消息
/// </summary>
public string message { get; set; }
/// <summary>
/// 提升机编号
/// </summary>
public string hoistCode { get; set; }
/// <summary>
/// 反馈任务执行指令:是否可以下发任务
/// </summary>
public int canDispatchTask { get; set; }
/// <summary>
/// 当前楼层
/// </summary>
public int currentFloor { get; set; }
/// <summary>
/// 接驳位状态1~5 楼)
/// 索引 0 → 1楼索引 1 → 2楼... 索引 4 → 5楼
/// </summary>
public int[] transferStationStatus { get; set; } = new int[5];
/// <summary>
/// 读写器触发状态1~5 楼)
/// 索引 0 → 1楼索引 1 → 2楼... 索引 4 → 5楼
/// </summary>
public int[] readerTriggerStatus { get; set; } = new int[5];
/// <summary>
/// 自动状态true = 自动模式false = 手动模式
/// </summary>
public int isAutoMode { get; set; }
/// <summary>
/// 屏蔽调度true = 屏蔽中false = 未屏蔽
/// </summary>
public int isDispatchBlocked { get; set; }
/// <summary>
/// 状态指示(详见 <see cref="IndicatorState"/>
/// </summary>
public int stateIndicator { get; set; }
}

@ -24,6 +24,7 @@
#endregion << 版 本 注 释 >>
using Sln.Wcs.HoistSdk.Config;
using Sln.Wcs.HoistSdk.Dto.GetHoistStatus;
using Sln.Wcs.HoistSdk.Dto.HoistControl;
using Sln.Wcs.HoistSdk.Dto.HoistTaskExecutor;
using Sln.Wcs.Plc.Service;
@ -72,4 +73,64 @@ public class HoistSdk:IHoistSdk
{
throw new NotImplementedException();
}
public GetHoistStatusResultDto GetHoistStatus(GetHoistStatusDto hoistStatusDto)
{
//一号提升机
//反馈任务执行指令:是否可以下发任务
//当前楼层
//接驳位状态1-5楼
//读写器触发状态1-5楼
//自动状态true/1-自动模式
//屏蔽调度true/1-屏蔽中
//状态指示0-静态1-上升2-下降3-进料4-出料
GetHoistStatusResultDto result = new GetHoistStatusResultDto();
try
{
var plc = _plcs.Where(x => x.ConfigKey.Equals(hoistStatusDto.hoistCode)).ToList().First();
result.hoistCode = hoistStatusDto.hoistCode;
result.canDispatchTask = plc.readInt16ByAddress(hoistStatusDto.canDispatchTask);
result.currentFloor = plc.readInt16ByAddress(hoistStatusDto.currentFloor);
//读取接驳位状态
List<int> transferStationStatus = new List<int>();
foreach (var item in hoistStatusDto.transferStationStatus)
{
transferStationStatus.Add(plc.readInt16ByAddress(item));
}
result.transferStationStatus = transferStationStatus.ToArray();
//读取读写器触发状态
List<int> readerTriggerStatus = new List<int>();
foreach (var item in hoistStatusDto.readerTriggerStatus)
{
readerTriggerStatus.Add(plc.readInt16ByAddress(item));
}
result.readerTriggerStatus = readerTriggerStatus.ToArray();
result.isAutoMode = plc.readInt16ByAddress(hoistStatusDto.isAutoMode);
result.isDispatchBlocked = plc.readInt16ByAddress(hoistStatusDto.isDispatchBlocked);
result.stateIndicator = plc.readInt16ByAddress(hoistStatusDto.stateIndicator);
// hoistStatusDto.hoistCode = "";
// hoistStatusDto.canDispatchTask = "D3101";
// hoistStatusDto.currentFloor = "D3102";
// hoistStatusDto.transferStationStatus = new List<string>(){"D3104","D3105","D3106","D3107","D3108"};
// hoistStatusDto.readerTriggerStatus = new List<string>(){"D3109","D3110","D3111","D3112","D3113"};
// hoistStatusDto.isAutoMode = "D3124";
// hoistStatusDto.isDispatchBlocked = "D3125";
// hoistStatusDto.stateIndicator = "D3127";
result.code = "0";
result.message = "状态更新成功";
}
catch (Exception e)
{
result.code = "99";
result.message = e.Message;
}
return result;
}
}

@ -23,6 +23,7 @@
#endregion << 版 本 注 释 >>
using Sln.Wcs.HoistSdk.Dto.GetHoistStatus;
using Sln.Wcs.HoistSdk.Dto.HoistControl;
using Sln.Wcs.HoistSdk.Dto.HoistTaskExecutor;
@ -47,6 +48,12 @@ public interface IHoistSdk
/// <param name="hoistTaskExeDto"></param>
/// <returns></returns>
HoistTaskExeResultDto HoistTaskExecutor(HoistTaskExeDto hoistTaskExeDto);
/// <summary>
/// 获取提升机状态
/// </summary>
/// <param name="hoistStatusDto"></param>
/// <returns></returns>
GetHoistStatusResultDto GetHoistStatus(GetHoistStatusDto hoistStatusDto);
}
Loading…
Cancel
Save