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