Пример #1
0
        /// <summary>
        /// 终止任务
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TerminateBtn_Click(object sender, RoutedEventArgs e)
        {
            string dev = "";

            try
            {
                if (PublicParam.IsDoTask)
                {
                    Notice.Show("请先关闭顶部[设备运作]!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }

                if (CBdev.SelectedIndex == -1)
                {
                    Notice.Show("请选择设备!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }
                dev = CBdev.Text;
                if (!ADS.mSocket.IsConnected(dev))
                {
                    Notice.Show(dev + "已离线,无法操作!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }

                ADS.mArf.devices.Find(c => c.devName == dev).StopTask();

                Notice.Show("终止任务 指令发送成功!", "成功", 3, MessageBoxIcon.Success);
            }
            catch (Exception ex)
            {
                Notice.Show("指令发送失败:" + ex.Message, "错误", 3, MessageBoxIcon.Error);
                // LOG
                CommonSQL.LogErr("TerminateBtn_Click()", "摆渡车界面终止[设备号]", ex.Message, dev);
            }
        }
Пример #2
0
        /// <summary>
        /// 扫码数据处理
        /// </summary>
        /// <param name="devName"></param>
        /// <param name="code"></param>
        public void GetCode(string devName, string code)
        {
            try
            {
                if (!code.StartsWith("@") || code.Split('@').Length != 2)
                {
                    return;
                }

                if (devices.Exists(c => c.devName == devName))
                {
                    DevInfoFRT f = devices.Find(c => c.devName == devName);

                    //if (f._.ActionStatus == ActionEnum.运行中 || f._.RollerStatus != RollerStatusEnum.辊台停止)
                    //{
                    //    throw new Exception(string.Format("辊台未停止,不处理扫码.", code));
                    //}

                    //是否满足任务
                    if (CommonSQL.GetInTask(code, out string tid))
                    {
                        if (!string.IsNullOrEmpty(tid))
                        {
                            if (string.IsNullOrEmpty(f.lockID1))
                            {
                                // 请求WMS分配
                                if (ADS.AssignInSite(f.area, tid))
                                {
                                    f.IsLockUnlockNew(f.isLock, tid, f.lockID2);
                                }
                            }
                            else if (string.IsNullOrEmpty(f.lockID2))
                            {
                                if (tid != f.lockID1)
                                {
                                    // 请求WMS分配
                                    if (ADS.AssignInSite(f.area, tid))
                                    {
                                        f.IsLockUnlockNew(f.isLock, f.lockID1, tid);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        throw new Exception(string.Format("读取二维码[{0}]异常.", code));
                    }
                }
            }
            catch (Exception ex)
            {
                // LOG
                CommonSQL.LogErr("FRT.DoTaskNew()", "固定辊台作业[设备]", (ex.Message + ex.Source), devName);
            }
        }
Пример #3
0
        /// <summary>
        /// 定位任务
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void LocateBtn_Click(object sender, RoutedEventArgs e)
        {
            string dev = "";

            try
            {
                if (PublicParam.IsDoTask)
                {
                    Notice.Show("请先关闭顶部[设备运作]!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }

                if (CBdev.SelectedIndex == -1)
                {
                    Notice.Show("请选择设备!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }
                if (string.IsNullOrEmpty(location.Text.Trim()))
                {
                    Notice.Show("请填写目的坐标!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }
                dev = CBdev.Text;
                if (!ADS.mSocket.IsConnected(dev))
                {
                    Notice.Show(dev + "已离线,无法操作!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }

                if (!WindowCommon.ConfirmAction("是否发送定位指令!!"))
                {
                    return;
                }

                int loc = Convert.ToInt32(location.Text.Trim());

                ADS.mArf.devices.Find(c => c.devName == dev).ToSite(loc);

                Notice.Show("定位任务 指令发送成功!", "成功", 3, MessageBoxIcon.Success);
            }
            catch (Exception ex)
            {
                Notice.Show("指令发送失败:" + ex.Message, "错误", 3, MessageBoxIcon.Error);
                // LOG
                CommonSQL.LogErr("LocateBtn_Click()", "摆渡车界面定位[设备号]", ex.Message, dev);
            }
        }
Пример #4
0
        /// <summary>
        /// 启动辊台
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BTNrun_Click(object sender, EventArgs e)
        {
            string dev = "";

            try
            {
                if (PublicParam.IsDoTask)
                {
                    Notice.Show("请先关闭顶部[设备运作]!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }

                if (CBdev.SelectedIndex == -1)
                {
                    Notice.Show("请选择设备!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }
                dev = CBdev.Text;
                if (!ADS.mSocket.IsConnected(dev))
                {
                    Notice.Show(dev + "已离线,无法操作!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }

                if (!WindowCommon.ConfirmAction("是否发送滚筒启动指令!!"))
                {
                    return;
                }

                ADS.mArf.devices.Find(c => c.devName == dev).ControlRoller(
                    Convert.ToInt32(CBsite1.Text.Substring(0, 1)),
                    Convert.ToInt32(CBsite2.Text.Substring(0, 1)),
                    Convert.ToInt32(CBsite3.Text.Substring(0, 1)),
                    Convert.ToInt32(CBsite4.Text.Substring(0, 1)));

                Notice.Show("启动辊台 指令发送成功!", "成功", 3, MessageBoxIcon.Success);
            }
            catch (Exception ex)
            {
                Notice.Show("指令发送失败:" + ex.Message, "错误", 3, MessageBoxIcon.Error);
                // LOG
                CommonSQL.LogErr("BTNrun_Click()", "摆渡车界面启动辊台[设备号]", ex.Message, dev);
            }
        }
Пример #5
0
        /// <summary>
        /// 扫码数据处理
        /// </summary>
        /// <param name="devName"></param>
        /// <param name="code"></param>
        public void GetCode(string devName, string code)
        {
            try
            {
                if (!code.StartsWith("@") || code.Split('@').Length != 2)
                {
                    return;
                }

                if (devices.Exists(c => c.devName == devName))
                {
                    DevInfoPKL p = devices.Find(c => c.devName == devName);

                    //if (p._.ActionStatus == ActionEnum.运行中)
                    //{
                    //    throw new Exception(string.Format("辊台未停止,不处理扫码.", code));
                    //}

                    if (p.lockID2 != code)
                    {
                        //是否存在任务
                        if (!CommonSQL.IsExistsInTask(code))
                        {
                            // 请求WMS分配
                            if (ADS.AssignInArea(p.area, code))
                            {
                                p.IsLockUnlockNew(p.isLock, p.lockID1, code);
                            }
                        }
                        else
                        {
                            throw new Exception(string.Format("读取二维码[{0}]异常.", code));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // LOG
                CommonSQL.LogErr("PKL.DoTaskNew()", "包装线作业[设备]", (ex.Message + ex.Source), devName);
            }
        }
Пример #6
0
        private void BTNrun_Click(object sender, RoutedEventArgs e)
        {
            string dev = "";

            try
            {
                if (PublicParam.IsDoTask)
                {
                    Notice.Show("请先关闭顶部[设备运作]!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }

                if (CBdev.SelectedIndex == -1)
                {
                    Notice.Show("请选择设备!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }
                dev = CBdev.Text;
                if (!ADS.mSocket.IsConnected(dev))
                {
                    Notice.Show(dev + "已离线,无法操作!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }

                if (!WindowCommon.ConfirmAction("是否发送辊台指令!!"))
                {
                    return;
                }

                ADS.mPkl.devices.Find(c => c.devName == dev).StartGiveRoll();
                Notice.Show("启动辊台 指令发送成功!", "成功", 3, MessageBoxIcon.Success);
            }
            catch (Exception ex)
            {
                Notice.Show("指令发送失败:" + ex.Message, "错误", 3, MessageBoxIcon.Error);
                // LOG
                CommonSQL.LogErr("BTNrun_Click()", "包装线界面启动辊台[设备号]", ex.Message, dev);
            }
        }
Пример #7
0
        /// <summary>
        /// 接货到扫码辊台
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BTNlinkAGV_Click(object sender, RoutedEventArgs e)
        {
            string dev = "";

            try
            {
                if (PublicParam.IsDoTask)
                {
                    Notice.Show("请先关闭顶部[设备运作]!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }

                if (CBdev.SelectedIndex == -1)
                {
                    Notice.Show("请选择设备!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }
                dev = CBdev.Text;
                if (!ADS.mSocket.IsConnected(dev))
                {
                    Notice.Show(dev + "已离线,无法操作!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }

                // 只启动辊台2扫码
                ADS.mFrt.devices.Find(c => c.devName == dev).StartTakeRoll(TaskTypeEnum.入库, 1, true);

                Notice.Show("辊台任务 指令发送成功!", "成功", 3, MessageBoxIcon.Success);
            }
            catch (Exception ex)
            {
                Notice.Show("指令发送失败:" + ex.Message, "错误", 3, MessageBoxIcon.Error);
                // LOG
                CommonSQL.LogErr("BTNlinkAGV_Click()", "固定辊台界面接货扫码[设备号]", ex.Message, dev);
            }
        }
Пример #8
0
        /// <summary>
        /// 检测任务状态
        /// </summary>
        //public void DoTask()
        //{
        //    if (task == null || task.Count == 0) return;

        //    foreach (TaskFRT t in task)
        //    {
        //        //if (!t.activie) continue;
        //        if (t.taskstatus == TaskStatus.finish) continue;
        //        if (string.IsNullOrEmpty(t.device.devName))
        //        {
        //            DevInfoFRT device = FindFreeDevice(t.area, t.tasktype, t.frt);
        //            if (device != null)
        //            {
        //                t.device = device;
        //                t.device.IsLockUnlock(true, t.jobid);
        //                t.UpdateDev();

        //                // AGV搬运 同辊台第2托货按收2货运行
        //                if (t.fromdev == DevType.AGV &&
        //                   t.device._.GoodsStatus != GoodsEnum.辊台满货 && t.device._.GoodsStatus != GoodsEnum.辊台无货)
        //                {
        //                    t.goodsnum = 2;
        //                }
        //            }
        //        }
        //        else
        //        {
        //            // 故障&异常
        //            if (t.device._.CommandStatus == CommandEnum.命令错误 || t.device._.DeviceStatus == DeviceEnum.设备故障)
        //            {
        //                continue;
        //            }

        //            switch (t.taskstatus)
        //            {
        //                case TaskStatus.init:
        //                    t.UpdateStatus(TaskStatus.totakesite);
        //                    break;

        //                case TaskStatus.totakesite:
        //                    // 无来源设备 直接前往送货点
        //                    if (t.fromdev == DevType.空设备)
        //                    {
        //                        t.UpdateStatus(TaskStatus.togivesite);
        //                    }
        //                    else
        //                    {
        //                        t.UpdateStatus(TaskStatus.ontakesite);
        //                    }
        //                    break;

        //                case TaskStatus.ontakesite:
        //                    // 判断是否启动辊台接货
        //                    if (t.takeready)
        //                    {
        //                        if (t.device._.GoodsStatus != GoodsEnum.辊台满货 && t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.device.StartTakeRoll(t.tasktype, t.goodsnum);
        //                        }

        //                        if (t.device._.RollerStatus != RollerStatusEnum.辊台停止 && t.device._.CurrentTask == TaskEnum.辊台任务)
        //                        {
        //                            t.UpdateStatus(TaskStatus.taking);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        // ? JOB 更新请求
        //                        t.takeready = ADS.JobPartFRT_Take(t.jobid, t.fromdev);
        //                    }
        //                    break;

        //                case TaskStatus.taking:
        //                    bool isNext = false;
        //                    switch (t.fromdev)
        //                    {
        //                        case DevType.摆渡车:
        //                            if ((t.goodsnum == 1 && t.device._.GoodsStatus != GoodsEnum.辊台无货 && t.device._.GoodsStatus != GoodsEnum.辊台满货) ||
        //                                (t.goodsnum == 2 && t.device._.GoodsStatus == GoodsEnum.辊台满货))
        //                            {
        //                                isNext = true;
        //                            }
        //                            break;
        //                        case DevType.AGV:
        //                            if ((t.goodsnum == 1 && t.device._.GoodsStatus != GoodsEnum.辊台无货) ||
        //                                (t.goodsnum == 2 && t.device._.GoodsStatus == GoodsEnum.辊台满货))
        //                            {
        //                                isNext = true;
        //                            }
        //                            break;
        //                        default:
        //                            break;
        //                    }
        //                    if (isNext)
        //                    {
        //                        if (t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.UpdateStatus(TaskStatus.taked);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        t.device.StartTakeRoll(t.tasktype, t.goodsnum);
        //                    }
        //                    break;

        //                case TaskStatus.taked:
        //                    // AGV搬运 直接完成
        //                    if (t.tasktype == TaskTypeEnum.无)
        //                    {
        //                        t.UpdateStatus(TaskStatus.gived);
        //                    }
        //                    else
        //                    {
        //                        t.UpdateStatus(TaskStatus.togivesite);
        //                    }
        //                    break;

        //                case TaskStatus.togivesite:
        //                    // 无目的设备 直接送货中(出库暂无后续流程)
        //                    if (t.todev == DevType.空设备)
        //                    {
        //                        t.UpdateStatus(TaskStatus.giving);
        //                    }
        //                    else
        //                    {
        //                        t.UpdateStatus(TaskStatus.ongivesite);
        //                    }
        //                    break;

        //                case TaskStatus.ongivesite:
        //                    // 判断是否启动辊台送货
        //                    if (t.giveready)
        //                    {
        //                        if (t.device._.GoodsStatus != GoodsEnum.辊台无货 && t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.device.StartGiveRoll(t.tasktype);
        //                        }

        //                        if (t.device._.RollerStatus != RollerStatusEnum.辊台停止 && t.device._.CurrentTask == TaskEnum.辊台任务)
        //                        {
        //                            t.UpdateStatus(TaskStatus.giving);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        // ? JOB 更新请求
        //                        t.giveready = ADS.JobPartFRT_Give(t.jobid);
        //                    }
        //                    break;

        //                case TaskStatus.giving:
        //                    if (t.device._.GoodsStatus == GoodsEnum.辊台无货)
        //                    {
        //                        if (t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.UpdateStatus(TaskStatus.gived);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        t.device.StartGiveRoll(t.tasktype);
        //                    }
        //                    break;

        //                case TaskStatus.gived:
        //                    // 解锁设备、完成任务
        //                    t.device.IsLockUnlock(false);
        //                    t.device = new DevInfoFRT();
        //                    t.UpdateStatus(TaskStatus.finish);
        //                    break;
        //                default:
        //                    break;
        //            }
        //        }
        //    }
        //}

        public void DoTaskNew()
        {
            if (devices == null || devices.Count == 0)
            {
                return;
            }

            foreach (DevInfoFRT d in devices)
            {
                try
                {
                    if (!d.isUseful || !ADS.mSocket.IsConnected(d.devName) ||
                        d._.CommandStatus == CommandEnum.命令错误 ||
                        d._.DeviceStatus == DeviceEnum.设备故障)
                    {
                        continue;
                    }
                    if (d._.CurrentTask == TaskEnum.辊台任务 && d._.FinishTask == TaskEnum.辊台任务)
                    {
                        d.StopRoller();
                    }

                    switch (d.taskType)
                    {
                    case TaskTypeEnum.入库:
InTask:
                        if (d.isLock)
                        {
                            if (d._.GoodsStatus == GoodsEnum.辊台无货)
                            {
                                // 锁定摆渡车
                                if (ADS.mArf.LockARF(d.area, d.taskType))
                                {
                                    // 解锁
                                    d.IsLockUnlockNew(false);
                                    d.StopRoller();
                                }
                            }
                            else
                            {
                                // 判断当前运输车任务
                                if (ADS.mRgv.GetNowTaskType(d.area) != TaskTypeEnum.出库)
                                {
                                    // 空闲摆渡车
                                    if (ADS.mArf.IsFreeARF(d.area, d.taskType))
                                    {
                                        int site = CommonSQL.GetArfByFrt(d.devName);
                                        if (site == 0)
                                        {
                                            throw new Exception("无对应固定辊台-摆渡车对接点!");
                                        }

                                        // 摆渡车来接货
                                        if (ADS.mArf.MovingButtSite(d.area, d.taskType, site))
                                        {
                                            // 启动摆渡车接货
                                            if (ADS.mArf.IsTaking(d.area, d.taskType))
                                            {
                                                // 送货
                                                d.StartGiveRoll(d.taskType);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            // agv任务
                            int aid = ADS.mNDCControl.IsExistUnLoad(d.devName);

                            if (d._.ActionStatus == ActionEnum.停止)
                            {
                                switch (d._.GoodsStatus)
                                {
                                case GoodsEnum.辊台无货:
                                    if (aid != 0)
                                    {
                                        // 只启动辊台2扫码
                                        d.StartTakeRoll(d.taskType, 1, true);
                                        d.isAGV = true;
                                    }
                                    else
                                    {
                                        if (!string.IsNullOrEmpty(d.lockID1))
                                        {
                                            d.IsLockUnlockNew(false);
                                        }
                                    }
                                    break;

                                case GoodsEnum.辊台中间有货:
                                case GoodsEnum.辊台2有货:
                                    if (string.IsNullOrEmpty(d.lockID1))
                                    {
                                        //MessageBox.Show(d.devName + "辊台没扫到码!");
                                        throw new Exception(d.devName + "辊台没扫到码!");
                                    }
                                    else
                                    {
                                        if (aid != 0)
                                        {
                                            // 接货到辊台2
                                            d.StartTakeRoll(d.taskType, 2);
                                            d.isAGV = true;
                                        }
                                        else
                                        {
                                            // 接货到辊台1
                                            d.StartTakeRoll(d.taskType, 1);
                                            d.isAGV = false;
                                        }
                                    }
                                    break;

                                case GoodsEnum.辊台1有货:
                                    if (aid != 0)
                                    {
                                        // 接货到辊台2
                                        d.StartTakeRoll(d.taskType, 2);
                                        d.isAGV = true;
                                    }
                                    else
                                    {
                                        if (!PublicParam.IsDoJobIn)
                                        {
                                            break;
                                        }

                                        // 每次只能做一个辊台
                                        if (IsLockInFRT(d.area))
                                        {
                                            break;
                                        }

                                        // 是否满足任务
                                        if (!string.IsNullOrEmpty(d.lockID1))
                                        {
                                            // 是否有超时任务
                                            if (CommonSQL.IsTimeOut(d.lockID1))
                                            {
                                                // 锁定
                                                d.IsLockUnlockNew(true, d.lockID1);
                                                goto InTask;
                                            }
                                        }
                                    }
                                    break;

                                case GoodsEnum.辊台满货:

                                    if (!PublicParam.IsDoJobIn)
                                    {
                                        break;
                                    }

                                    // 每次只能做一个辊台
                                    if (IsLockInFRT(d.area))
                                    {
                                        break;
                                    }

                                    // 是否满足任务
                                    if (!string.IsNullOrEmpty(d.lockID1) && !string.IsNullOrEmpty(d.lockID2))
                                    {
                                        // 锁定
                                        d.IsLockUnlockNew(true, d.lockID1, d.lockID2);
                                        goto InTask;
                                    }
                                    break;

                                default:
                                    break;
                                }
                            }
                            else
                            {
                                if (aid != 0)
                                {
                                    if (d.isAGV)
                                    {
                                        // NDC 请求 AGV 启动辊台卸货
                                        if (!ADS.mNDCControl.DoUnLoad(aid, out string result))
                                        {
                                            // LOG
                                            CommonSQL.LogErr("FRT.DoTaskNew()", "AGV辊台卸货[ID]", result, aid.ToString());
                                        }
                                    }
                                }
                            }
                        }
                        break;

                    case TaskTypeEnum.出库:
                        int p = CommonSQL.GetArfByFrt(d.devName);
                        if (p == 0)
                        {
                            throw new Exception("无对应固定辊台-摆渡车对接点!");
                        }
                        if (d.isLock)
                        {
                            if (d._.ActionStatus == ActionEnum.停止 && d._.GoodsStatus == GoodsEnum.辊台无货)
                            {
                                // 解锁
                                d.IsLockUnlock(false);
                            }

                            // 是否有锁定摆渡车
                            if (ADS.mArf.IsLockARF(d.area, d.taskType, out int goods))
                            {
                                // 摆渡车过来待命
                                if (ADS.mArf.MovingButtSite(d.area, d.taskType, p))
                                {
                                    // 都只有1货,接过去
                                    //if (goods == 1 && d._.GoodsStatus == GoodsEnum.辊台2有货)
                                    //{
                                    //    // 接货
                                    //    d.StartTakeRoll(d.taskType, 2);
                                    //    if (d._.ActionStatus == ActionEnum.运行中)
                                    //    {
                                    //        // 摆渡车送货
                                    //        ADS.mArf.IsGiving(d.area, d.taskType);
                                    //    }
                                    //}
                                }
                            }
                        }
                        else
                        {
                            // 空闲摆渡车
                            if (ADS.mArf.IsFreeARF(d.area, d.taskType))
                            {
                                if ((d._.GoodsStatus == GoodsEnum.辊台满货 && d._.RollerStatus == RollerStatusEnum.辊台停止) ||
                                    (d._.GoodsStatus == GoodsEnum.辊台2有货 &&
                                     d._.RollerStatus != RollerStatusEnum.辊台2启动 && d._.RollerStatus != RollerStatusEnum.辊台全启动))
                                {
                                    d.StopRoller();
                                    // 锁定
                                    d.IsLockUnlock(true);
                                }
                                else
                                {
                                    if (d._.GoodsStatus != GoodsEnum.辊台无货)
                                    {
                                        // 接货
                                        d.StartTakeRoll(d.taskType, 1);
                                    }
                                }
                            }
                            else
                            {
                                // 是否有锁定摆渡车
                                if (ADS.mArf.IsLockARF(d.area, d.taskType, out int goods))
                                {
                                    // 摆渡车来送货
                                    if (ADS.mArf.MovingButtSite(d.area, d.taskType, p))
                                    {
                                        // 试探接货,防止光电干扰
                                        d.StartTakeRoll(d.taskType, 2);

                                        if (d._.GoodsStatus != GoodsEnum.辊台满货 || goods != 0)
                                        {
                                            // 接货
                                            d.StartTakeRoll(d.taskType, 2);
                                            if (d._.ActionStatus == ActionEnum.运行中)
                                            {
                                                // 摆渡车送货
                                                ADS.mArf.IsGiving(d.area, d.taskType);
                                            }
                                        }
                                        else
                                        {
                                            if ((d._.GoodsStatus == GoodsEnum.辊台满货 && d._.RollerStatus == RollerStatusEnum.辊台停止) ||
                                                (d._.GoodsStatus == GoodsEnum.辊台2有货 &&
                                                 d._.RollerStatus != RollerStatusEnum.辊台2启动 && d._.RollerStatus != RollerStatusEnum.辊台全启动))
                                            {
                                                d.StopRoller();
                                                // 锁定
                                                d.IsLockUnlock(true);
                                            }
                                            else
                                            {
                                                if (d._.GoodsStatus != GoodsEnum.辊台无货)
                                                {
                                                    // 接货
                                                    d.StartTakeRoll(d.taskType, 1);
                                                    if (d._.RollerStatus != RollerStatusEnum.辊台停止 && goods == 1)
                                                    {
                                                        // 摆渡车送货
                                                        ADS.mArf.IsGiving(d.area, d.taskType);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        break;

                    default:
                        break;
                    }
                }
                catch (Exception ex)
                {
                    // LOG
                    CommonSQL.LogErr("FRT.DoTaskNew()", "固定辊台作业[设备]", (ex.Message + ex.Source), d.devName);
                    continue;
                }
            }
        }
Пример #9
0
        /// <summary>
        /// 检测任务状态
        /// </summary>
        //public void DoTask()
        //{
        //    if (task == null || task.Count == 0) return;

        //    foreach (TaskAWC t in task)
        //    {
        //        //if (!t.activie) continue;
        //        if (t.taskstatus == TaskStatus.finish) continue;
        //        if (string.IsNullOrEmpty(t.device.devName))
        //        {
        //            DevInfoAWC device = FindFreeDevice(t.area, t.flag);
        //            if (device != null)
        //            {
        //                t.device = device;
        //                t.device.IsLockUnlock(true, t.jobid);
        //                t.UpdateDev();

        //                // 更新接送点
        //                t.takesiteX = t.takesiteX + t.device.gapX;
        //                t.takesiteY = t.takesiteY + t.device.gapY;
        //                t.takesiteZ = t.takesiteZ + t.device.gapZ;

        //                t.givesiteX = t.givesiteX + t.device.gapX;
        //                t.givesiteY = t.givesiteY + t.device.gapY;
        //                t.givesiteZ = t.givesiteZ + t.device.gapZ;
        //                t.UpdateSite();
        //            }
        //        }
        //        else
        //        {
        //            // 故障&异常
        //            if (t.device._.CommandStatus == CommandEnum.命令错误 || t.device._.DeviceStatus == DeviceEnum.设备故障)
        //            {
        //                continue;
        //            }

        //            switch (t.taskstatus)
        //            {
        //                case TaskStatus.init:
        //                    t.UpdateStatus(TaskStatus.totakesite);
        //                    break;

        //                case TaskStatus.totakesite:
        //                    // |接货点 - 当前坐标| <= 允许范围
        //                    if (Math.Abs(t.takesiteX - t.device._.CurrentSiteX) <= t.device.limitX &&
        //                        Math.Abs(t.takesiteY - t.device._.CurrentSiteY) <= t.device.limitY)
        //                    {
        //                        if (t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.UpdateStatus(TaskStatus.ontakesite);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        t.device.ToSite(t.takesiteX, t.takesiteY);
        //                    }
        //                    break;

        //                case TaskStatus.ontakesite:
        //                    if (t.takeready)
        //                    {
        //                        if (t.device._.ActionStatus == ActionEnum.停止 && t.device._.GoodsStatus == AwcGoodsEnum.无货)
        //                        {
        //                            t.device.StartTake(t.takesiteZ);
        //                        }

        //                        if (t.device._.ActionStatus == ActionEnum.运行中 && t.device._.CurrentTask == AwcTaskEnum.取货任务)
        //                        {
        //                            t.UpdateStatus(TaskStatus.taking);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        // 出库接货(取库存货位)直接执行; 入库接货(取运输车辊台)需判断执行
        //                        if (t.tasktype == TaskTypeEnum.出库)
        //                        {
        //                            t.takeready = true;
        //                        }
        //                        else
        //                        {
        //                            // ? JOB 更新请求
        //                            t.takeready = ADS.JobPartAWC_Take(t.taskid);
        //                        }
        //                    }
        //                    break;

        //                case TaskStatus.taking:
        //                    if (t.device._.GoodsStatus == AwcGoodsEnum.有货)
        //                    {
        //                        if (t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.UpdateStatus(TaskStatus.taked);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        t.device.StartTake(t.takesiteZ);
        //                    }
        //                    break;

        //                case TaskStatus.taked:
        //                    t.UpdateStatus(TaskStatus.togivesite);
        //                    break;

        //                case TaskStatus.togivesite:
        //                    // |送货点 - 当前坐标| <= 允许范围
        //                    if (Math.Abs(t.givesiteX - t.device._.CurrentSiteX) <= t.device.limitX &&
        //                        Math.Abs(t.givesiteY - t.device._.CurrentSiteY) <= t.device.limitY)
        //                    {
        //                        if (t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.UpdateStatus(TaskStatus.ongivesite);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        t.device.ToSite(t.givesiteX, t.givesiteY);
        //                    }
        //                    break;

        //                case TaskStatus.ongivesite:
        //                    if (t.giveready)
        //                    {
        //                        if (t.device._.GoodsStatus == AwcGoodsEnum.有货 && t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.device.StartGive(t.givesiteZ);
        //                        }

        //                        if (t.device._.ActionStatus == ActionEnum.运行中 && t.device._.CurrentTask == AwcTaskEnum.放货任务)
        //                        {
        //                            t.UpdateStatus(TaskStatus.giving);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        // 入库送货(放库存货位)直接执行; 出库送货(放运输车辊台)需判断执行
        //                        if (t.tasktype == TaskTypeEnum.入库)
        //                        {
        //                            t.giveready = true;
        //                        }
        //                        else
        //                        {
        //                            // ? JOB 更新请求
        //                            t.giveready = ADS.JobPartAWC_Give(t.taskid);
        //                        }
        //                    }
        //                    break;

        //                case TaskStatus.giving:
        //                    if (t.device._.GoodsStatus == AwcGoodsEnum.无货)
        //                    {
        //                        if (t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.UpdateStatus(TaskStatus.gived);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        t.device.StartGive(t.givesiteZ);
        //                    }
        //                    break;

        //                case TaskStatus.gived:
        //                    if (t.tasktype == TaskTypeEnum.入库)
        //                    {
        //                        // ? JOB 更新请求
        //                        ADS.JobPartAWC_FinishIn(t.taskid);
        //                    }
        //                    // 解锁设备、完成任务
        //                    t.device.IsLockUnlock(false);
        //                    t.device = new DevInfoAWC();
        //                    t.UpdateStatus(TaskStatus.finish);
        //                    break;
        //                default:
        //                    break;
        //            }
        //        }
        //    }
        //}

        public void DoTaskNew()
        {
            if (devices == null || devices.Count == 0)
            {
                return;
            }

            foreach (DevInfoAWC d in devices)
            {
                try
                {
                    if (!d.isUseful || !ADS.mSocket.IsConnected(d.devName) ||
                        d._.CommandStatus == CommandEnum.命令错误 ||
                        d._.DeviceStatus == DeviceEnum.设备故障)
                    {
                        continue;
                    }

                    if (!string.IsNullOrEmpty(d.lockID))
                    {
                        switch (d.taskType)
                        {
                        case TaskTypeEnum.入库:
InTask:
                            if (d.IsOkLoc(false))
                            {
                                if (d.isLock)
                                {
                                    if (d._.ActionStatus == ActionEnum.停止)
                                    {
                                        if (d._.GoodsStatus == AwcGoodsEnum.无货 &&
                                            (d._.FinishTask == AwcTaskEnum.放货任务 || d._.FinishTask == AwcTaskEnum.位任务))
                                        {
                                            // 通知WMS完成
                                            if (ADS.mHttp.DoStockInFinishTask(d.lockLocWMS, d.lockID).Contains("OK"))
                                            {
                                                // 解锁
                                                if (d.IsOkLoc(true))
                                                {
                                                    CommonSQL.UpdateWms(d.lockID, (int)WmsTaskStatus.完成);
                                                    d.IsLockUnlockNew(TaskTypeEnum.无, false);
                                                }
                                            }
                                        }
                                        else
                                        {
                                            // |送货点 - 当前坐标| <= 允许范围
                                            if (Math.Abs(d.GiveSiteX - d._.CurrentSiteX) <= d.limitX &&
                                                Math.Abs(d.GiveSiteY - d._.CurrentSiteY) <= d.limitY)
                                            {
                                                // 放货
                                                d.StartGive(d.GiveSiteZ);
                                            }
                                            else
                                            {
                                                if (IsSafeDis(d.area, d.flag, d._.CurrentSiteX - d.gapX, d.GiveSiteX - d.gapX))
                                                {
                                                    // 定位
                                                    d.ToSite(d.GiveSiteX, d.GiveSiteY);
                                                }
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    bool isOkRgv = false;
                                    // 是否对应运输车
                                    if (ADS.mRgv.IsLockRGV(d.lockID, out int num))
                                    {
                                        if (ADS.mRgv.MovingButtSite(d.lockID, num == 1 ? d.lockLocRGV1 : d.lockLocRGV2))
                                        {
                                            isOkRgv = true;
                                        }
                                    }
                                    else
                                    {
                                        if (d._.GoodsStatus == AwcGoodsEnum.无货 && d._.ActionStatus == ActionEnum.停止)
                                        {
                                            // 解任务
                                            d.IsLockUnlock(false);
                                            break;
                                        }
                                    }

                                    if (d._.ActionStatus == ActionEnum.停止)
                                    {
                                        if (d._.GoodsStatus == AwcGoodsEnum.货 &&
                                            (d._.FinishTask == AwcTaskEnum.取货任务 || d._.FinishTask == AwcTaskEnum.位任务))
                                        {
                                            if (ADS.mRgv.IsUnlock(d.lockID))
                                            {
                                                // 锁定
                                                d.IsLockUnlock(true, d.lockID);
                                                goto InTask;
                                            }
                                        }
                                        else
                                        {
                                            // |接货点 - 当前坐标| <= 允许范围
                                            if (Math.Abs(d.TakeSiteX - d._.CurrentSiteX) <= d.limitX &&
                                                Math.Abs(d.TakeSiteY - d._.CurrentSiteY) <= d.limitY)
                                            {
                                                if (isOkRgv)
                                                {
                                                    // 取货
                                                    d.StartTake(d.TakeSiteZ);
                                                }
                                            }
                                            else
                                            {
                                                if (IsSafeDis(d.area, d.flag, d._.CurrentSiteX - d.gapX, d.TakeSiteX - d.gapX))
                                                {
                                                    // 定位
                                                    d.ToSite(d.TakeSiteX, d.TakeSiteY);
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        if (d._.CurrentTask == AwcTaskEnum.取货任务 && d._.GoodsStatus == AwcGoodsEnum.货)
                                        {
                                            // 安全取货距离
                                            int s = ADS.mDis.GetAwcTakeRgvDis(d.area);
                                            if (s == 0)
                                            {
                                                throw new Exception("无对应行车安全取完货距离!");
                                            }
                                            // 解锁任务运输车
                                            if (d._.CurrentSiteZ >= s)
                                            {
                                                if (ADS.mRgv.IsUnlock(d.lockID))
                                                {
                                                    // 锁定
                                                    //d.IsLockUnlock(true, d.lockID);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            break;

                        case TaskTypeEnum.出库:
OutTask:
                            if (d.IsOkLoc(false))
                            {
                                if (d.isLock)
                                {
                                    bool isOkRgv = false;
                                    // 是否对应运输车
                                    if (ADS.mRgv.IsLockRGV(d.lockID, out int num))
                                    {
                                        if (ADS.mRgv.MovingButtSite(d.lockID, num == 1 ? d.lockLocRGV1 : d.lockLocRGV2))
                                        {
                                            isOkRgv = true;
                                        }
                                    }
                                    if (d._.ActionStatus == ActionEnum.停止)
                                    {
                                        if (d._.GoodsStatus == AwcGoodsEnum.无货 &&
                                            (d._.FinishTask == AwcTaskEnum.放货任务 || d._.FinishTask == AwcTaskEnum.位任务))
                                        {
                                            // 通知WMS完成
                                            if (ADS.mHttp.DoStockOutFinishTask(d.lockLocWMS, d.lockID).Contains("OK"))
                                            {
                                                if (ADS.mRgv.IsUnlock(d.lockID))
                                                {
                                                    // 解锁
                                                    if (d.IsOkLoc(true))
                                                    {
                                                        CommonSQL.UpdateWms(d.lockID, (int)WmsTaskStatus.完成);
                                                        d.IsLockUnlockNew(TaskTypeEnum.无, false);
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            // |放货点 - 当前坐标| <= 允许范围
                                            if (Math.Abs(d.GiveSiteX - d._.CurrentSiteX) <= d.limitX &&
                                                Math.Abs(d.GiveSiteY - d._.CurrentSiteY) <= d.limitY)
                                            {
                                                if (isOkRgv)
                                                {
                                                    // 送货
                                                    d.StartGive(d.GiveSiteZ);
                                                }
                                            }
                                            else
                                            {
                                                if (IsSafeDis(d.area, d.flag, d._.CurrentSiteX - d.gapX, d.GiveSiteX - d.gapX))
                                                {
                                                    // 定位
                                                    d.ToSite(d.GiveSiteX, d.GiveSiteY);
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        if (d._.CurrentTask == AwcTaskEnum.放货任务 && d._.GoodsStatus == AwcGoodsEnum.无货)
                                        {
                                            // 安全放货距离
                                            int s = ADS.mDis.GetAwcGiveRgvDis(d.area);
                                            if (s == 0)
                                            {
                                                throw new Exception("无对应行车安全放完货距离!");
                                            }
                                            // 解锁任务运输车
                                            if (d._.CurrentSiteZ >= s)
                                            {
                                                //ADS.mRgv.IsUnlock(d.lockID);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    if (d._.ActionStatus == ActionEnum.停止)
                                    {
                                        if (d._.GoodsStatus == AwcGoodsEnum.货 &&
                                            (d._.CurrentTask == AwcTaskEnum.取货任务 || d._.CurrentTask == AwcTaskEnum.位任务))
                                        {
                                            // 锁定
                                            d.IsLockUnlock(true, d.lockID);
                                            goto OutTask;
                                        }
                                        else
                                        {
                                            // 是否对应运输车
                                            if (ADS.mRgv.IsLockRGV(d.lockID, out int num))
                                            {
                                                ADS.mRgv.MovingButtSite(d.lockID, num == 1 ? d.lockLocRGV1 : d.lockLocRGV2);
                                            }
                                            else
                                            {
                                                if (d._.GoodsStatus == AwcGoodsEnum.无货)
                                                {
                                                    // 解任务
                                                    d.IsLockUnlock(false);
                                                    break;
                                                }
                                            }

                                            // |取货点 - 当前坐标| <= 允许范围
                                            if (Math.Abs(d.TakeSiteX - d._.CurrentSiteX) <= d.limitX &&
                                                Math.Abs(d.TakeSiteY - d._.CurrentSiteY) <= d.limitY)
                                            {
                                                // 取货
                                                d.StartTake(d.TakeSiteZ);
                                            }
                                            else
                                            {
                                                if (IsSafeDis(d.area, d.flag, d._.CurrentSiteX - d.gapX, d.TakeSiteX - d.gapX))
                                                {
                                                    // 定位
                                                    d.ToSite(d.TakeSiteX, d.TakeSiteY);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    // LOG
                    CommonSQL.LogErr("AWC.DoTaskNew()", "行车作业[设备]", (ex.Message + ex.Source), d.devName);
                    continue;
                }
            }
        }
Пример #10
0
        /// <summary>
        /// 检测任务状态
        /// </summary>
        //public void DoTask()
        //{
        //    if (task == null || task.Count == 0) return;

        //    foreach (TaskPKL t in task)
        //    {
        //        //if (!t.activie) continue;
        //        if (t.taskstatus == TaskStatus.finish) continue;
        //        if (string.IsNullOrEmpty(t.device.devName))
        //        {
        //            DevInfoPKL device = FindFreeDevice(t.area);
        //            if (device != null)
        //            {
        //                t.device = device;
        //                t.device.IsLockUnlock(true, t.jobid);
        //                t.UpdateDev();
        //            }
        //        }
        //        else
        //        {
        //            // 故障&异常
        //            if (t.device._.CommandStatus == CommandEnum.命令错误 || t.device._.DeviceStatus == DeviceEnum.设备故障)
        //            {
        //                continue;
        //            }

        //            switch (t.taskstatus)
        //            {
        //                case TaskStatus.init:
        //                    t.UpdateStatus(TaskStatus.ongivesite);
        //                    break;

        //                case TaskStatus.totakesite:
        //                    break;

        //                case TaskStatus.ontakesite:
        //                    break;

        //                case TaskStatus.taking:
        //                    break;

        //                case TaskStatus.taked:
        //                    break;

        //                case TaskStatus.togivesite:
        //                    break;

        //                case TaskStatus.ongivesite:
        //                    // 判断是否启动辊台送货
        //                    if (t.giveready)
        //                    {
        //                        if (t.device._.GoodsStatus != GoodsEnum.辊台无货 && t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.device.StartGiveRoll();
        //                        }

        //                        if (t.device._.CurrentTask == TaskEnum.辊台任务)
        //                        {
        //                            t.UpdateStatus(TaskStatus.giving);
        //                        }
        //                    }
        //                    else
        //                    {
        //                        // ? JOB 更新请求
        //                        t.giveready = ADS.JobPartPKL_Give(t.jobid);
        //                    }
        //                    break;

        //                case TaskStatus.giving:
        //                    if (t.device._.GoodsStatus == GoodsEnum.辊台无货)
        //                    {
        //                        if (t.device._.ActionStatus == ActionEnum.停止)
        //                        {
        //                            t.UpdateStatus(TaskStatus.gived);
        //                        }
        //                        else
        //                        {
        //                            t.device.StopTask();
        //                        }
        //                    }
        //                    else
        //                    {
        //                        t.device.StartGiveRoll();
        //                    }
        //                    break;

        //                case TaskStatus.gived:
        //                    // 解锁设备、完成任务
        //                    t.device.IsLockUnlock(false);
        //                    t.device = new DevInfoPKL();
        //                    t.UpdateStatus(TaskStatus.finish);
        //                    break;
        //                default:
        //                    break;
        //            }
        //        }
        //    }
        //}

        public void DoTaskNew()
        {
            if (devices == null || devices.Count == 0)
            {
                return;
            }

            foreach (DevInfoPKL d in devices)
            {
                try
                {
                    bool isCanWork = true;
                    if (!d.isUseful || !ADS.mSocket.IsConnected(d.devName) ||
                        d._.CommandStatus == CommandEnum.命令错误 ||
                        d._.DeviceStatus == DeviceEnum.设备故障 ||
                        string.IsNullOrEmpty(d.lockID2))
                    {
                        isCanWork = false;
                        //continue;
                    }
                    int aid = 0;
                    if (!d.isLock)
                    {
                        if (!PublicParam.IsDoJobAGV || !isCanWork)
                        {
                            continue;
                        }

                        if (d._.ActionStatus == ActionEnum.停止 && d._.GoodsStatus == GoodsEnum.辊台1有货)
                        {
                            if (string.IsNullOrEmpty(d.lockID1))
                            {
                                aid = ADS.mNDCControl.IsExistLoad(d.devName);
                                if (aid == 0)
                                {
                                    // 没锁定就派车锁定
                                    aid = CommonSQL.GetAGVid();
                                    // NDC 任务是否存在
                                    if (!ADS.mNDCControl.IsExist(aid))
                                    {
                                        // ? NDC 生成 AGV 搬运任务
                                        if (!ADS.mNDCControl.AddNDCTask(aid, d.devName, PublicParam.AgvUnLoadArea, out string result))
                                        {
                                            // LOG
                                            CommonSQL.LogErr("PKL.DoTaskNew()", "AGV生成任务[ID,包装线辊台]", result, aid.ToString(), d.devName);
                                            continue;
                                        }
                                    }
                                }

                                if (aid != 0)
                                {
                                    d.IsLockUnlockNew(true, aid.ToString(), d.lockID2);
                                }
                            }
                            else
                            {
                                d.IsLockUnlockNew(true, d.lockID1, d.lockID2);
                            }
                        }
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(d.lockID1))
                        {
                            if (!isCanWork)
                            {
                                continue;
                            }
                            // 解锁
                            d.IsLockUnlockNew(false);
                            continue;
                        }
                        else
                        {
                            aid = Convert.ToInt32(d.lockID1);

                            // NDC 任务是否存在
                            if (!ADS.mNDCControl.IsExist(aid))
                            {
                                if (!isCanWork)
                                {
                                    continue;
                                }
                                // 解锁
                                d.IsLockUnlockNew(false);
                                continue;
                            }

                            // NDC 任务状态
                            switch (ADS.mNDCControl.GetStatus(aid))
                            {
                            case NDCPlcStatus.LoadUnReady:
                            case NDCPlcStatus.LoadReady:
                                if (!isCanWork)
                                {
                                    break;
                                }

                                if (d._.ActionStatus == ActionEnum.停止 && d._.GoodsStatus == GoodsEnum.辊台1有货)
                                {
                                    // NDC 请求 AGV 启动辊台装货
                                    if (!ADS.mNDCControl.DoLoad(aid, out string result))
                                    {
                                        // LOG
                                        if (!string.IsNullOrEmpty(result))
                                        {
                                            CommonSQL.LogErr("PKL.DoTaskNew()", "AGV辊台装货[ID]", result, aid.ToString());
                                        }
                                    }
                                }
                                break;

                            case NDCPlcStatus.Loading:
                                if (!isCanWork)
                                {
                                    break;
                                }

                                if (d._.ActionStatus == ActionEnum.停止 && d._.GoodsStatus == GoodsEnum.辊台1有货)
                                {
                                    d.StartGiveRoll();
                                }
                                break;

                            case NDCPlcStatus.Loaded:
                            case NDCPlcStatus.UnloadUnReady:
                                // NDC 任务是否需要重定向
                                if (!ADS.mNDCControl.IsRedirected(aid) && !string.IsNullOrEmpty(d.lockID2))
                                {
                                    // 获取WMS任务目的区域
                                    string area = ADS.GetInAreaWMS(d.area, d.lockID2, out string tid);
                                    string frt  = ADS.mFrt.GetRightFRT(area, TaskTypeEnum.入库);

                                    if (string.IsNullOrEmpty(area) || string.IsNullOrEmpty(frt))
                                    {
                                        break;
                                    }

                                    // NDC 更新 AGV搬运卸货点
                                    if (!ADS.mNDCControl.DoReDerect(aid, frt, out string result))
                                    {
                                        // LOG
                                        CommonSQL.LogErr("PKL.DoTaskNew()", "AGV更新卸货点[ID]", result, aid.ToString());
                                        break;
                                    }

                                    // 更新
                                    CommonSQL.UpdateWms(tid, (int)WmsTaskStatus.待分配);
                                }
                                else
                                {
                                    // 解锁
                                    d.IsLockUnlockNew(false);
                                }
                                break;

                            default:
                                if (!isCanWork)
                                {
                                    break;
                                }
                                // 解锁
                                d.IsLockUnlockNew(false);
                                break;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    //if (ex.ToString().Contains("重复"))
                    //{
                    //    MessageBox.Show(d.devName + ex.ToString());
                    //}
                    // LOG
                    CommonSQL.LogErr("PKL.DoTaskNew()", "包装线作业[设备]", (ex.Message + ex.Source), d.devName);
                    continue;
                }
            }
        }