分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-06-20 00ad010a45f2f58807eb0f4f70e2dcf66ef35085
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using WIDESEA_Comm;
using WIDESEA_Core.Extensions;
using WIDESEA_WCS.WCSClient;
 
namespace WIDESEA_WCS
{
    public class GetDate
    {
        /// <summary>
        /// 获取车轮数据信息
        /// </summary>
        public static List<WheelDBItem> GetWheelDate(PLCClient client)
        {
            List<WheelDBItem> wheelDBItems = new List<WheelDBItem>();
            PropertyInfo[] propertyInfos = typeof(WheelDBItem).GetProperties();
            var groups = client.itemGroups.Where(x => x.opratortype == "wheel").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
            foreach (var key in groups)
            {
                WheelDBItem StackerDBItem = new WheelDBItem();
                foreach (var propertyInfo in propertyInfos)
                {
                    if (propertyInfo.Name == "StackerNo")
                    {
                        StackerDBItem.StackerNo = key.Key;
                    }
                    else
                    {
                        DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name);
                        if (group != null)
                        {
                            var readData = DBExtension.Read(group, client);
                            switch (propertyInfo.Name)
                            {
                                case "R_wheel_SN":
                                    StackerDBItem.R_wheel_SN = readData.ToString();
                                    break;
                                case "R_wheel_type":
                                    StackerDBItem.R_wheel_type = Convert.ToInt16(readData);
                                    break;
                                case "R_part_status":
                                    StackerDBItem.R_part_status = Convert.ToByte(readData);
                                    break;
                                case "R_part_process":
                                    StackerDBItem.R_part_process = Convert.ToByte(readData);
                                    break;
                            }
                        }
                    }
                }
                wheelDBItems.Add(StackerDBItem);
            }
            return wheelDBItems;
        }
        /// <summary>
        /// 获取VK状态信息
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public static List<VKDBItem> GetVKDate(PLCClient client)
        {
            List<VKDBItem> vKDBItems = new List<VKDBItem>();
            PropertyInfo[] propertyInfos = typeof(VKDBItem).GetProperties();
            var groups = client.itemGroups.Where(x => x.opratortype == "VK").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
            foreach (var key in groups)
            {
                VKDBItem StackerDBItem = new VKDBItem();
                foreach (var propertyInfo in propertyInfos)
                {
                    if (propertyInfo.Name == "Name")
                    {
                        StackerDBItem.Name = key.Key;
                    }
                    else
                    {
                        DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name);
                        if (group != null)
                        {
                            var readData = DBExtension.Read(group, client);
                            switch (propertyInfo.Name)
                            {
                                case "power_on":
                                    StackerDBItem.power_on = Convert.ToBoolean(readData);
                                    break;
                                case "ready_for_operate":
                                    StackerDBItem.ready_for_operate = Convert.ToBoolean(readData);
                                    break;
                                case "ready_for_auto_start":
                                    StackerDBItem.ready_for_auto_start = Convert.ToBoolean(readData);
                                    break;
                                case "VK_Fault":
                                    StackerDBItem.VK_Fault = Convert.ToBoolean(readData);
                                    break;
                                case "bag_out_1_Fault":
                                    StackerDBItem.bag_out_1_Fault = Convert.ToBoolean(readData);
                                    break;
                                case "bag_in_1_Fault":
                                    StackerDBItem.bag_in_1_Fault = Convert.ToBoolean(readData);
                                    break;
                                case "bag_out_2_Fault":
                                    StackerDBItem.bag_out_2_Fault = Convert.ToBoolean(readData);
                                    break;
                                case "bag_in_2_Fault":
                                    StackerDBItem.bag_in_2_Fault = Convert.ToBoolean(readData);
                                    break;
                                case "safety_OK":
                                    StackerDBItem.safety_OK = Convert.ToBoolean(readData);
                                    break;
                                case "state_JOG_bag1":
                                    StackerDBItem.state_JOG_bag1 = Convert.ToBoolean(readData);
                                    break;
                                case "state_AUTO_bag1":
                                    StackerDBItem.state_AUTO_bag1 = Convert.ToBoolean(readData);
                                    break;
                                case "state_JOG_bag2":
                                    StackerDBItem.state_JOG_bag2 = Convert.ToBoolean(readData);
                                    break;
                                case "state_AUTO_bag2":
                                    StackerDBItem.state_AUTO_bag2 = Convert.ToBoolean(readData);
                                    break;
                                case "state_JOG_bag3":
                                    StackerDBItem.state_JOG_bag3 = Convert.ToBoolean(readData);
                                    break;
                                case "state_AUTO_bag3":
                                    StackerDBItem.state_AUTO_bag3 = Convert.ToBoolean(readData);
                                    break;
                                case "state_JOG_bag4":
                                    StackerDBItem.state_JOG_bag4 = Convert.ToBoolean(readData);
                                    break;
                                case "state_AUTO_bag4":
                                    StackerDBItem.state_AUTO_bag4 = Convert.ToBoolean(readData);
                                    break;
                                case "safetydoor_1_closed":
                                    StackerDBItem.safetydoor_1_closed = Convert.ToBoolean(readData);
                                    break;
                                case "safetydoor_2_closed":
                                    StackerDBItem.safetydoor_2_closed = Convert.ToBoolean(readData);
                                    break;
                                case "safetydoor_3_closed":
                                    StackerDBItem.safetydoor_3_closed = Convert.ToBoolean(readData);
                                    break;
                                case "safetydoor_4_closed":
                                    StackerDBItem.safetydoor_4_closed = Convert.ToBoolean(readData);
                                    break;
                                case "safetydoor_5_closed":
                                    StackerDBItem.safetydoor_5_closed = Convert.ToBoolean(readData);
                                    break;
                                case "safetydoor_6_closed":
                                    StackerDBItem.safetydoor_6_closed = Convert.ToBoolean(readData);
                                    break;
                                case "safetydoor_7_closed":
                                    StackerDBItem.safetydoor_7_closed = Convert.ToBoolean(readData);
                                    break;
                                case "safetydoor_8_closed":
                                    StackerDBItem.safetydoor_8_closed = Convert.ToBoolean(readData);
                                    break;
                                case "safetydoor_9_closed":
                                    StackerDBItem.safetydoor_9_closed = Convert.ToBoolean(readData);
                                    break;
                                case "vk_state":
                                    StackerDBItem.vk_state = Convert.ToInt16(readData);
                                    break;
                            }
                        }
                    }
                }
                vKDBItems.Add(StackerDBItem);
            }
            return vKDBItems;
        }
        /// <summary>
        /// 获取机床状态信息
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public static List<MachineDBItem> GetMachineDate(PLCClient client)
        {
            List<MachineDBItem> machineDBItems = new List<MachineDBItem>();
            PropertyInfo[] propertyInfos = typeof(MachineDBItem).GetProperties();
            var groups = client.itemGroups.Where(x => x.opratortype == "machine").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
            foreach (var key in groups)
            {
                MachineDBItem StackerDBItem = new MachineDBItem();
                foreach (var propertyInfo in propertyInfos)
                {
                    if (propertyInfo.Name == "Name")
                    {
                        StackerDBItem.Name = key.Key;
                    }
                    else
                    {
                        DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name);
                        if (group != null)
                        {
                            var readData = DBExtension.Read(group, client);
                            switch (propertyInfo.Name)
                            {
                                case "Power_on":
                                    StackerDBItem.Power_on = Convert.ToBoolean(readData);
                                    break;
                                case "Ready_for_operate":
                                    StackerDBItem.Ready_for_operate = Convert.ToBoolean(readData);
                                    break;
                                case "Ready_for_Auto_start":
                                    StackerDBItem.Ready_for_Auto_start = Convert.ToBoolean(readData);
                                    break;
                                case "state_JOG":
                                    StackerDBItem.state_JOG = Convert.ToBoolean(readData);
                                    break;
                                case "state_MDA":
                                    StackerDBItem.state_MDA = Convert.ToBoolean(readData);
                                    break;
                                case "state_AUTO":
                                    StackerDBItem.state_AUTO = Convert.ToBoolean(readData);
                                    break;
                                case "Safetydoors_closed":
                                    StackerDBItem.Safetydoors_closed = Convert.ToBoolean(readData);
                                    break;
                                case "Spindel_running":
                                    StackerDBItem.Spindel_running = Convert.ToBoolean(readData);
                                    break;
                                case "Kommunikation_IO":
                                    StackerDBItem.Kommunikation_IO = Convert.ToBoolean(readData);
                                    break;
                                case "Hydraulik_fault":
                                    StackerDBItem.Hydraulik_fault = Convert.ToBoolean(readData);
                                    break;
                                case "feeddrive_fault":
                                    StackerDBItem.feeddrive_fault = Convert.ToBoolean(readData);
                                    break;
                                case "Maindrive_fault":
                                    StackerDBItem.Maindrive_fault = Convert.ToBoolean(readData);
                                    break;
                                case "Machine_fault":
                                    StackerDBItem.Machine_fault = Convert.ToBoolean(readData);
                                    break;
                                case "Coolant_fault":
                                    StackerDBItem.Coolant_fault = Convert.ToBoolean(readData);
                                    break;
                                case "Chipremoval_fault":
                                    StackerDBItem.Chipremoval_fault = Convert.ToBoolean(readData);
                                    break;
                                case "Coolant_ready_operate":
                                    StackerDBItem.Coolant_ready_operate = Convert.ToBoolean(readData);
                                    break;
                                case "Chipremoval_ready_operat":
                                    StackerDBItem.Chipremoval_ready_operat = Convert.ToBoolean(readData);
                                    break;
                                case "Emergency_Stop_machine":
                                    StackerDBItem.Emergency_Stop_machine = Convert.ToBoolean(readData);
                                    break;
                                case "Breakdown_repair":
                                    StackerDBItem.Breakdown_repair = Convert.ToBoolean(readData);
                                    break;
                                case "Breakdown_maintenance":
                                    StackerDBItem.Breakdown_maintenance = Convert.ToBoolean(readData);
                                    break;
                                case "Breakdown_Toolchange":
                                    StackerDBItem.Breakdown_Toolchange = Convert.ToBoolean(readData);
                                    break;
                                case "Breakdown_changeover":
                                    StackerDBItem.Breakdown_changeover = Convert.ToBoolean(readData);
                                    break;
                                case "Programm_running":
                                    StackerDBItem.Programm_running = Convert.ToBoolean(readData);
                                    break;
                                case "Prog_sel_side_1":
                                    StackerDBItem.Prog_sel_side_1 = Convert.ToBoolean(readData);
                                    break;
                                case "Prog_sel_side_2":
                                    StackerDBItem.Prog_sel_side_2 = Convert.ToBoolean(readData);
                                    break;
                                case "programm_side_1_finished":
                                    StackerDBItem.programm_side_1_finished = Convert.ToBoolean(readData);
                                    break;
                                case "load_side_1_finished":
                                    StackerDBItem.load_side_1_finished = Convert.ToBoolean(readData);
                                    break;
                                case "programm_side_2_finished":
                                    StackerDBItem.programm_side_2_finished = Convert.ToBoolean(readData);
                                    break;
                                case "load_side_2_finished":
                                    StackerDBItem.load_side_2_finished = Convert.ToBoolean(readData);
                                    break;
                                case "Toolchange_magazine_1":
                                    StackerDBItem.Toolchange_magazine_1 = Convert.ToBoolean(readData);
                                    break;
                                case "Toolchange_magazine_2":
                                    StackerDBItem.Toolchange_magazine_2 = Convert.ToBoolean(readData);
                                    break;
                                case "Changed_tool_mag_1":
                                    StackerDBItem.Changed_tool_mag_1 = Convert.ToInt16(readData);
                                    break;
                                case "Dupl_tool_mag_1":
                                    StackerDBItem.Dupl_tool_mag_1 = Convert.ToInt16(readData);
                                    break;
                                case "Changed_tool_mag_2":
                                    StackerDBItem.Changed_tool_mag_2 = Convert.ToInt16(readData);
                                    break;
                                case "Dupl_tool_mag_2":
                                    StackerDBItem.Dupl_tool_mag_2 = Convert.ToInt16(readData);
                                    break;
                                case "Parttype":
                                    StackerDBItem.Parttype = Convert.ToInt16(readData);
                                    break;
                                case "partcounter":
                                    StackerDBItem.partcounter = Convert.ToInt32(readData);
                                    break;
                                case "operator_ID":
                                    StackerDBItem.operator_ID = Convert.ToInt16(readData);
                                    break;
                                case "machine_state":
                                    StackerDBItem.machine_state = Convert.ToInt16(readData);
                                    break;
                            }
                        }
                    }
                }
                machineDBItems.Add(StackerDBItem);
            }
            return machineDBItems;
        }
        /// <summary>
        /// 获取桁架机械手状态信息
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public static List<GantryDBItem> GetGantryDate(PLCClient client)
        {
            List<GantryDBItem> gantryDBItems = new List<GantryDBItem>();
            PropertyInfo[] propertyInfos = typeof(GantryDBItem).GetProperties();
            var groups = client.itemGroups.Where(x => x.opratortype == "Gantry").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
            foreach (var key in groups)
            {
                GantryDBItem StackerDBItem = new GantryDBItem();
                foreach (var propertyInfo in propertyInfos)
                {
                    if (propertyInfo.Name == "Name")
                    {
                        StackerDBItem.Name = key.Key;
                    }
                    else
                    {
                        DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name);
                        if (group != null)
                        {
                            var readData = DBExtension.Read(group, client);
                            switch (propertyInfo.Name)
                            {
                                case "power_on":
                                    StackerDBItem.power_on = Convert.ToBoolean(readData);
                                    break;
                                case "ready_for_operate":
                                    StackerDBItem.ready_for_operate = Convert.ToBoolean(readData);
                                    break;
                                case "ready_for_auto_start":
                                    StackerDBItem.ready_for_auto_start = Convert.ToBoolean(readData);
                                    break;
                                case "state_JOG":
                                    StackerDBItem.state_JOG = Convert.ToBoolean(readData);
                                    break;
                                case "state_MDA":
                                    StackerDBItem.state_MDA = Convert.ToBoolean(readData);
                                    break;
                                case "state_AUTO":
                                    StackerDBItem.state_AUTO = Convert.ToBoolean(readData);
                                    break;
                                case "communication_IO":
                                    StackerDBItem.communication_IO = Convert.ToBoolean(readData);
                                    break;
                                case "drive_fault":
                                    StackerDBItem.drive_fault = Convert.ToBoolean(readData);
                                    break;
                                case "portal_fault":
                                    StackerDBItem.portal_fault = Convert.ToBoolean(readData);
                                    break;
                                case "emergency_stop_portal":
                                    StackerDBItem.emergency_stop_portal = Convert.ToBoolean(readData);
                                    break;
                                case "programm_running":
                                    StackerDBItem.programm_running = Convert.ToBoolean(readData);
                                    break;
                                case "gantry_state":
                                    StackerDBItem.gantry_state = Convert.ToInt16(readData);
                                    break;
                            }
                        }
                    }
                }
                gantryDBItems.Add(StackerDBItem);
            }
            return gantryDBItems;
        }
    }
}