1
刘磊
2026-03-05 f45293a0c3c9838567d6ff01eae53157a9ed5284
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
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Threading;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_Core;
using WIDESEAWCS_Tasks.StackerCraneJob;
using WIDESEAWCS_QuartzJob;
 
namespace WIDESEAWCS_Tasks
{
    public class StackerExecutor
    {
        /// <summary>
        /// 下发堆垛机任务
        /// </summary>
        /// <param name="commonStackerCrane">堆垛机连接</param>
        /// <param name="stacktaskinfo">任务对象</param> //SendHW_StackerTask
        /// <returns></returns>
        public static WebResponseContent SendStackerTask(STK commonStackerCrane, Dt_Task stacktaskinfo, string scName)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                var formInfo = stacktaskinfo.SourceAddress.Split("-");
                var endInfo = stacktaskinfo.TargetAddress.Split("-");
 
                commonStackerCrane.SetValue(StackerCraneDBName.S_Row, formInfo[0], scName);//来源货位行
                commonStackerCrane.SetValue(StackerCraneDBName.S_Bay, formInfo[1], scName);//来源货位列
                commonStackerCrane.SetValue(StackerCraneDBName.S_level, formInfo[2], scName);//来源货位层
                commonStackerCrane.SetValue(StackerCraneDBName.E_Row, endInfo[0], scName);//目的货位行
                commonStackerCrane.SetValue(StackerCraneDBName.E_Bay, endInfo[1], scName);//目的货位列
                commonStackerCrane.SetValue(StackerCraneDBName.E_level, endInfo[2], scName);//目的货位层
 
                commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 1, scName);//工作命令代码
                commonStackerCrane.SetValue(StackerCraneDBName.TaskNum, stacktaskinfo.TaskNum, scName);//工作序号
                commonStackerCrane.SetValue(StackerCraneDBName.RFID, stacktaskinfo.PalletCode.PadLeft(4, '0') + stacktaskinfo.PVI, scName);//pvi
 
                #region todo PLC写入后读取验证
                //commonStackerCrane.GetValue<StackerCraneDBName, Int16>(StackerCraneDBName.S_Row, scName);//来源货位行
                //commonStackerCrane.GetValue<StackerCraneDBName, Int16>(StackerCraneDBName.S_Bay, scName);//来源货位列
                //commonStackerCrane.GetValue<StackerCraneDBName, Int16>(StackerCraneDBName.S_level, scName);//来源货位层
                //commonStackerCrane.GetValue<StackerCraneDBName, Int16>(StackerCraneDBName.E_Row, scName);//目的货位行
                //commonStackerCrane.GetValue<StackerCraneDBName, Int16>(StackerCraneDBName.E_Bay, scName);//目的货位列
                //commonStackerCrane.GetValue<StackerCraneDBName, Int16>(StackerCraneDBName.E_level, scName);//目的货位层
                //commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 1, scName);//工作命令代码
                //commonStackerCrane.SetValue(StackerCraneDBName.TaskNum, stacktaskinfo.TaskNum, scName);//工作序号 
                #endregion 
 
                commonStackerCrane.SetValue(StackerCraneDBName.CMD, 1, scName);//启动命令
 
                content = content.OK();
            }
            catch (Exception ex)
            {
                content = content.Error(scName + "任务下发失败:" + ex.Message);
            }
            return content;
        }
    }
}