wanshenmean
6 天以前 5171d3f59b89389bf75293afd210cfa6de4ccff7
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLine/ConveyorLineTaskCommandNew.cs
@@ -1,111 +1,165 @@
#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 命名空间:WIDESEAWCS_Tasks.ConveyorLineJob
 * 创建者:胡童庆
 * 创建时间:2024/8/2 16:13:36
 * 版本:V1.0.0
 * 描述:
 *
 * ----------------------------------------------------------------
 * 修改人:
 * 修改时间:
 * 版本:V1.0.1
 * 修改说明:
 *
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
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>
        public short Source {  get; set; }
        /// <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就绪标志 WCS下发完成时,触发为1
        /// WCS 下发完成标志
        /// </summary>
        /// <remarks>
        /// WCS 下发任务时置 1,通知 PLC 开始执行任务。
        /// PLC 读取后应立即清除此标志。
        /// </remarks>
        public byte WCS_STB { get; set; }
        /// <summary>
        /// WCS应答标志 WCS收到完成时,触发为1
        /// WCS 应答标志
        /// </summary>
        /// <remarks>
        /// WCS 收到 PLC 请求后的回复标志。
        /// 当值为 1 时表示 WCS 已收到请求并处理。
        /// </remarks>
        public byte WCS_ACK { get; set; }
        /// <summary>
        /// PLC就绪标志 完成任务时,触发为1
        /// PLC 任务完成标志
        /// </summary>
        /// <remarks>
        /// PLC 完成任务时置 1,通知 WCS 任务已完成。
        /// WCS 读取后应清除此标志。
        /// </remarks>
        public byte PLC_STB { get; set; }
        /// <summary>
        /// PLC应答标志 收到任务时,触发为1
        /// PLC 应答标志
        /// </summary>
        /// <remarks>
        /// PLC 收到 WCS 命令后的回复标志。
        /// 当值为 1 时表示 PLC 已收到命令。
        /// </remarks>
        public byte PLC_ACK { get; set; }
        /// <summary>
        /// PLC请求标志 入库站台,到位写1
        /// PLC 请求标志
        /// </summary>
        /// <remarks>
        /// PLC 主动请求服务时置 1。
        /// 通常用于入库站台,表示货物已到位可以开始处理。
        /// </remarks>
        public byte PLC_REQ { get; set; }
        /// <summary>
        /// WCS错误代码
        /// WCS 错误代码
        /// </summary>
        /// <remarks>
        /// WCS 报告的业务错误代码。
        /// 用于标识任务执行过程中的业务逻辑错误。
        /// </remarks>
        public byte WCS_ERRCode { get; set; }
        /// <summary>
        /// WCS特殊标志 (旋转标识、强制放行、循环、特殊申请、是否叠盘、是否堵塞)
        /// WCS 特殊标志
        /// </summary>
        /// <remarks>
        /// 用于标识特殊处理需求,包含多个位标志:
        /// - 位0: 旋转标识 - 是否需要旋转托盘
        /// - 位1: 强制放行 - 忽略常规检查直接放行
        /// - 位2: 循环 - 是否循环执行
        /// - 位3: 特殊申请 - 是否有特殊请求需要处理
        /// - 位4: 是否叠盘 - 是否需要叠盘处理
        /// - 位5: 是否堵塞 - 是否处于堵塞状态
        /// </remarks>
        public byte WCS_Special { get; set; }
        /// <summary>
        /// 设备自动模式 手动1,自动2
        /// 设备自动模式
        /// </summary>
        /// <remarks>
        /// 标识设备的运行模式:
        /// - 1: 手动模式
        /// - 2: 自动模式
        /// </remarks>
        public byte Equ_Auto { get; set; }
        /// <summary>
        /// 尾板标志
        /// 尾板/尾盘标志
        /// </summary>
        /// <remarks>
        /// 标识当前托盘是否为最后一个(尾盘)。
        /// 用于电池生产线的最后一道工序,标记整批任务的结束。
        /// </remarks>
        public byte Last_pallet { get; set; }
        /// <summary>
        /// 条码(22个字符)
        /// 托盘条码(20个字符)
        /// </summary>
        [DataLength(22)]
        /// <remarks>
        /// 存储托盘的条码信息,用于货物追踪和库位管理。
        /// </remarks>
        [DataLength(20)]
        public string Barcode { get; set; }
    }
}