wanshenmean
4 天以前 f7ec7a32e8cddcb976093c826e3a0d1ed61fb335
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
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; }
    }
}