using System.Runtime.InteropServices;
|
using WIDESEAWCS_QuartzJob.DeviceBase;
|
|
namespace WIDESEAWCS_Tasks
|
{
|
/// <summary>
|
/// 输送线 PLC 通信命令数据类(新版)
|
/// </summary>
|
/// <remarks>
|
/// 继承自 DeviceCommand,用于与输送线 PLC 进行通信。
|
/// 包含任务号、源/目标地址、托盘条码、WCS/PLC 应答标志等字段。
|
/// WCS 通过这些字段与 PLC 交互,实现任务的下发、状态同步和完成确认。
|
/// </remarks>
|
public class ConveyorLineTaskCommandNew : DeviceCommand
|
{
|
/// <summary>
|
/// 任务号
|
/// </summary>
|
/// <remarks>
|
/// WCS 分配的任务唯一标识号。
|
/// 用于在 WCS 和 PLC 之间建立任务对应的关联。
|
/// </remarks>
|
public short TaskNo { get; set; }
|
|
/// <summary>
|
/// 源位置/起始地址
|
/// </summary>
|
/// <remarks>
|
/// 任务的起始位置地址编码。
|
/// 入库任务时表示货物来自哪个站台,出库任务时表示货物当前所在位置。
|
/// </remarks>
|
public short Source { get; set; }
|
|
/// <summary>
|
/// 目标位置
|
/// </summary>
|
/// <remarks>
|
/// 任务的目标位置地址编码。
|
/// 入库任务时表示货物存入哪个库位,出库任务时表示货物送达哪个站台。
|
/// </remarks>
|
public short Target { get; set; }
|
|
/// <summary>
|
/// 箱型/托盘类型
|
/// </summary>
|
/// <remarks>
|
/// 标识托盘的规格类型,用于区分不同的货物载体。
|
/// </remarks>
|
public byte BoxType { get; set; }
|
|
/// <summary>
|
/// 输送线状态
|
/// </summary>
|
/// <remarks>
|
/// 输送线的空闲/占用状态。
|
/// 用于判断输送线是否可以接受新任务。
|
/// </remarks>
|
public byte CV_State { get; set; }
|
|
/// <summary>
|
/// 输送线错误代码
|
/// </summary>
|
/// <remarks>
|
/// PLC 报告的设备故障代码。
|
/// 0 表示正常运行,非零值表示具体的故障类型。
|
/// </remarks>
|
public byte CV_ERRCode { get; set; }
|
|
/// <summary>
|
/// WCS 下发完成标志
|
/// </summary>
|
/// <remarks>
|
/// WCS 下发任务时置 1,通知 PLC 开始执行任务。
|
/// PLC 读取后应立即清除此标志。
|
/// </remarks>
|
public byte WCS_STB { get; set; }
|
|
/// <summary>
|
/// WCS 应答标志
|
/// </summary>
|
/// <remarks>
|
/// WCS 收到 PLC 请求后的回复标志。
|
/// 当值为 1 时表示 WCS 已收到请求并处理。
|
/// </remarks>
|
public byte WCS_ACK { get; set; }
|
|
/// <summary>
|
/// PLC 任务完成标志
|
/// </summary>
|
/// <remarks>
|
/// PLC 完成任务时置 1,通知 WCS 任务已完成。
|
/// WCS 读取后应清除此标志。
|
/// </remarks>
|
public byte PLC_STB { get; set; }
|
|
/// <summary>
|
/// PLC 应答标志
|
/// </summary>
|
/// <remarks>
|
/// PLC 收到 WCS 命令后的回复标志。
|
/// 当值为 1 时表示 PLC 已收到命令。
|
/// </remarks>
|
public byte PLC_ACK { get; set; }
|
|
/// <summary>
|
/// PLC 请求标志
|
/// </summary>
|
/// <remarks>
|
/// PLC 主动请求服务时置 1。
|
/// 通常用于入库站台,表示货物已到位可以开始处理。
|
/// </remarks>
|
public byte PLC_REQ { get; set; }
|
|
/// <summary>
|
/// WCS 错误代码
|
/// </summary>
|
/// <remarks>
|
/// WCS 报告的业务错误代码。
|
/// 用于标识任务执行过程中的业务逻辑错误。
|
/// </remarks>
|
public byte WCS_ERRCode { get; set; }
|
|
/// <summary>
|
/// WCS 特殊标志
|
/// </summary>
|
/// <remarks>
|
/// 用于标识特殊处理需求,包含多个位标志:
|
/// - 位0: 旋转标识 - 是否需要旋转托盘
|
/// - 位1: 强制放行 - 忽略常规检查直接放行
|
/// - 位2: 循环 - 是否循环执行
|
/// - 位3: 特殊申请 - 是否有特殊请求需要处理
|
/// - 位4: 是否叠盘 - 是否需要叠盘处理
|
/// - 位5: 是否堵塞 - 是否处于堵塞状态
|
/// </remarks>
|
public byte WCS_Special { get; set; }
|
|
/// <summary>
|
/// 设备自动模式
|
/// </summary>
|
/// <remarks>
|
/// 标识设备的运行模式:
|
/// - 1: 手动模式
|
/// - 2: 自动模式
|
/// </remarks>
|
public byte Equ_Auto { get; set; }
|
|
/// <summary>
|
/// 尾板/尾盘标志
|
/// </summary>
|
/// <remarks>
|
/// 标识当前托盘是否为最后一个(尾盘)。
|
/// 用于电池生产线的最后一道工序,标记整批任务的结束。
|
/// </remarks>
|
public byte Last_pallet { get; set; }
|
|
/// <summary>
|
/// 托盘条码(20个字符)
|
/// </summary>
|
/// <remarks>
|
/// 存储托盘的条码信息,用于货物追踪和库位管理。
|
/// </remarks>
|
[DataLength(20)]
|
public string Barcode { get; set; }
|
}
|
}
|