示例#1
0
        void DownloadData_OnProcessFinish(object sender, DownloadArgs e)
        {
            if (this.InvokeRequired)
            {
                if (e.OrderType == 1)
                {
                    this.Invoke(new Action(FJMainForm.Instance.cSortingTask.ReLoad));
                    this.Invoke(new Action(FJMainForm.Instance.CBox.LoadCigBox));
                    this.Invoke(new Action(FJMainForm.Instance.SetVision));
                    this.Invoke(new Action(FJMainForm.Instance.SetOutPort));
                    this.Invoke(new Action(FJMainForm.Instance.CSortingMain.ReLoad));
                }
                else if (e.OrderType == 2)
                {
                    this.Invoke(new Action(FJMainForm.Instance.cAbnSortingTask.ReLoad));
                    this.Invoke(new Action(FJMainForm.Instance.CAbnBox.LoadCigBox));
                    this.Invoke(new Action(FJMainForm.Instance.SetVision));
                }
            }

            IsDownload = false;

            MonitorLog monitorLog = MonitorLog.NewMonitorLog();

            monitorLog.LOGNAME     = "线程完成";
            monitorLog.LOGINFO     = e.LineName + "分拣任务下载完成";
            monitorLog.LOGLOCATION = "线程操作";
            monitorLog.LOGTYPE     = 1;
            monitorLog.Save();
        }
示例#2
0
 /// <summary>
 /// 同一批次是否存在重复的顺序号
 /// </summary>
 /// <returns></returns>
 public static bool IsIndexRepetition()
 {
     using (var cn = new MySqlConnection(AppUtil._LocalConnectionString))
     {
         cn.Open();
         using (var cm = cn.CreateCommand())
         {
             cm.CommandText =
                 "SELECT INDEXNO,COUNT(1)  FROM t_sorting_line_task  GROUP BY  INDEXNO HAVING count(1)> 1";
             using (var dr = new SafeDataReader(cm.ExecuteReader()))
             {
                 while (dr.Read())
                 {
                     MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                     monitorLog.LOGNAME     = "数据库读取";
                     monitorLog.LOGINFO     = "当前分拣任务存在重复的顺序号,无法开始分拣!";
                     monitorLog.LOGLOCATION = "数据库";
                     monitorLog.LOGTYPE     = 2;
                     monitorLog.Save();
                     return(true);
                 }
             }
             return(false);
         }
     }
 }
示例#3
0
        public static bool IsCurrentOrder()
        {
            using (var cn = new MySqlConnection(AppUtil._LocalConnectionString))
            {
                cn.Open();
                using (var cm = cn.CreateCommand())
                {
                    cm.CommandText =
                        "SELECT COUNT(1) FROM (SELECT  MAX(T_SORTING_LINE_TASK_ABNORMAL.ORDERDATE ) da FROM T_SORTING_LINE_TASK_ABNORMAL)  t WHERE t.da = @Date";
                    cm.Parameters.AddWithValue("@Date", DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));
                    if (int.Parse(cm.ExecuteScalar().ToString()) <= 0)
                    {
                        MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                        monitorLog.LOGNAME     = "数据库读取";
                        monitorLog.LOGINFO     = "当前异型烟订单日期与系统日期不符合!";
                        monitorLog.LOGLOCATION = "数据库";
                        monitorLog.LOGTYPE     = 2;
                        monitorLog.Save();
                        return(false);
                    }

                    return(true);
                }
            }
        }
示例#4
0
文件: CInTask.cs 项目: wg3281/JZFJ
        public void StopScanTask()
        {
            taskStatus = TaskStatus.Stop;
            if (thread != null)
            {
                while (thread.IsAlive)
                {
                    Thread.Sleep(300);
                }
                thread = null;


                if (OnTaskStatusChanged != null)
                {
                    OnTaskStatusChanged.Invoke(null, new EventArgs());
                }
                monitorLog             = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "线程操作";
                monitorLog.LOGINFO     = "补货线程停止!";
                monitorLog.LOGLOCATION = "线程";
                monitorLog.LOGTYPE     = 0;
                monitorLog.Save();

                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                config.AppSettings.Settings["IsStart"].Value = false.ToString();
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
            }
            OnOnTaskStopFinished();
        }
示例#5
0
 private void DownLoadProcessForm_FormClosing(object sender, FormClosingEventArgs e)
 {
     if (IsDownload)
     {
         if (MessageBox.Show("是否中断分拣任务下载?", "提示", MessageBoxButtons.YesNo) == DialogResult.No)
         {
             e.Cancel = true;
             return;
         }
         else
         {
             if (thread != null)
             {
                 if (thread.IsAlive)
                 {
                     thread.Abort();
                     thread = null;
                     MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                     monitorLog.LOGNAME     = "线程中止";
                     monitorLog.LOGINFO     = "分拣任务下载线程中止";
                     monitorLog.LOGLOCATION = "线程操作";
                     monitorLog.LOGTYPE     = 2;
                     monitorLog.Save();
                 }
             }
         }
     }
     DownloadData.OnProcessFinish  -= new EventHandler <DownloadArgs>(DownloadData_OnProcessFinish);
     DownloadData.OnPrecessUpdate  -= new EventHandler <DownloadPrecess>(DownloadData_OnPrecessUpdate);
     DownloadData.OnProcessStart   -= new EventHandler <StepNameEvenArgs>(DownloadData_OnProcessStart);
     DownloadData.OnProcessError   -= new EventHandler <DownloadErrorArgs>(DownloadData_OnProcessError);
     MonitorLog.OnLogCreate        -= new EventHandler <DataEvenArgs>(MonitorLog_OnLogCreate);
     DownloadData.OnDownLoadFinish -= new EventHandler <EventArgs>(DownloadData_OnDownLoadFinish);
     DownloadData.OnTransferFinish -= new EventHandler <DownloadArgs>(DownloadData_OnTransferFinish);
 }
示例#6
0
 /// <summary>
 /// 同一批次是否存在重复的顺序号
 /// </summary>
 /// <returns></returns>
 public static bool IsIndexRepetition()
 {
     using (var cn = new MySqlConnection(AppUtil._LocalConnectionString))
     {
         cn.Open();
         using (var cm = cn.CreateCommand())
         {
             cm.CommandText =
                 "SELECT SEQUENCENO,COUNT(1)  FROM T_INTASK_ABNORMAL  GROUP BY SEQUENCENO HAVING count(1)> 1";
             using (var dr = new SafeDataReader(cm.ExecuteReader()))
             {
                 while (dr.Read())
                 {
                     MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                     monitorLog.LOGNAME     = "数据库读取";
                     monitorLog.LOGINFO     = "当前异型烟补货任务存在重复的顺序号!";
                     monitorLog.LOGLOCATION = "数据库";
                     monitorLog.LOGTYPE     = 2;
                     monitorLog.Save();
                     return(true);
                 }
             }
             return(false);
         }
     }
 }
示例#7
0
        public void StartScanTask()
        {
            taskStatus = TaskStatus.Run;

            if (Issuedthread == null)
            {
                Issuedthread = new Thread(ScanTask);
                Issuedthread.IsBackground = true;
                Issuedthread.Name         = "IssuedthreadTask";
                Issuedthread.Start();

                monitorLog             = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "线程操作";
                monitorLog.LOGINFO     = "分拣任务下达线程开始!";
                monitorLog.LOGLOCATION = "线程";
                monitorLog.LOGTYPE     = 0;
                monitorLog.Save();
            }

            if (Arrivedthread == null)
            {
                Arrivedthread = new Thread(FinishTask);
                Arrivedthread.IsBackground = true;
                Arrivedthread.Name         = "ArrivedthreadTask";
                Arrivedthread.Start();


                monitorLog             = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "线程操作";
                monitorLog.LOGINFO     = "分拣任务到达线程开始!";
                monitorLog.LOGLOCATION = "线程";
                monitorLog.LOGTYPE     = 0;
                monitorLog.Save();
            }
            else
            {
                monitorLog             = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "线程操作";
                monitorLog.LOGINFO     = "分拣任务到达线程正在运行!";
                monitorLog.LOGLOCATION = "线程";
                monitorLog.LOGTYPE     = 0;
                monitorLog.Save();
            }

            if (OnTaskStatusChanged != null)
            {
                OnTaskStatusChanged.Invoke(null, new EventArgs());
            }

            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            config.AppSettings.Settings["IsStart"].Value = true.ToString();
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings");
        }
示例#8
0
文件: CInTask.cs 项目: wg3281/JZFJ
        public void StartScanTask()
        {
            //设置任务开始状态
            taskStatus = TaskStatus.Run;

            if (thread == null)
            {
                thread = new Thread(ScanTask);
                thread.IsBackground = true;
                thread.Name         = "PLCBHTask";
                thread.Start();

                if (OnTaskStatusChanged != null)
                {
                    OnTaskStatusChanged.Invoke(null, new EventArgs());
                }
                monitorLog             = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "线程操作";
                monitorLog.LOGINFO     = "补货线程开始!";
                monitorLog.LOGLOCATION = "线程";
                monitorLog.LOGTYPE     = 0;
                monitorLog.Save();
            }
            //else if (taskStatus == TaskStatus.Stop)
            //{
            //    thread.Start();
            //    taskStatus = TaskStatus.Run;
            //    if (OnTaskStatusChanged != null)
            //    {
            //        OnTaskStatusChanged.Invoke(null, new EventArgs());
            //    }
            //    monitorLog = MonitorLog.NewMonitorLog();
            //    monitorLog.LOGNAME = "线程操作";
            //    monitorLog.LOGINFO = "补货线程开始!";
            //    monitorLog.LOGLOCATION = "线程";
            //    monitorLog.LOGTYPE = 0;
            //    monitorLog.Save();
            //}
            //else if (taskStatus == TaskStatus.Suspend)
            //{
            //    thread.Resume();
            //    taskStatus = TaskStatus.Run;
            //    if (OnTaskStatusChanged != null)
            //    {
            //        OnTaskStatusChanged.Invoke(null, new EventArgs());
            //    }
            //    monitorLog = MonitorLog.NewMonitorLog();
            //    monitorLog.LOGNAME = "线程操作";
            //    monitorLog.LOGINFO = "补货线程恢复!";
            //    monitorLog.LOGLOCATION = "线程";
            //    monitorLog.LOGTYPE = 0;
            //    monitorLog.Save();
            //}
        }
示例#9
0
        /// <summary>
        /// 获取控制器状态
        /// </summary>
        private int GetGWStatus()
        {
            bool bGoOn;
            int  ret, timeStart;

            for (int i = 0; i < GWCount; i++)
            {
                Dapapi.AB_GW_Open(GWID[i]);
                ret = Dapapi.AB_GW_Status(GWID[i]);

                if (ret != 7)
                {
                    bGoOn     = true;
                    timeStart = System.Environment.TickCount;
                    while (bGoOn)
                    {
                        ret = Dapapi.AB_GW_Status(GWID[i]);
                        if (ret == 7)
                        {
                            bGoOn = false;
                        }
                        else if (System.Environment.TickCount - timeStart > 3000)
                        {
                            bGoOn = false;
                        }
                    }
                }

                if (ret == 7)
                {
                    //写日志
                    MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                    monitorLog.LOGNAME     = "设备初始化";
                    monitorLog.LOGINFO     = "电子标签串口路由ID:" + GWID[i] + " 连接成功, 状态 :" + ret;
                    monitorLog.LOGLOCATION = "设备";
                    monitorLog.LOGTYPE     = 0;
                    monitorLog.Save();
                    return(1);
                }
                else
                {
                    MessageBox.Show("电子标签串口路由ID:" + GWID[i] + " 连接失败, 状态 :" + ret);
                    //写日志
                    MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                    monitorLog.LOGNAME     = "设备初始化";
                    monitorLog.LOGINFO     = "电子标签串口路由ID:" + GWID[i] + " 连接失败, 状态 :" + ret;
                    monitorLog.LOGLOCATION = "设备";
                    monitorLog.LOGTYPE     = 0;
                    monitorLog.Save();
                }
            }
            return(0);
        }
示例#10
0
 public void ReLoad()
 {
     if (IsVerifyPass())
     {
         LoadOrder();
         monitorLog             = MonitorLog.NewMonitorLog();
         monitorLog.LOGNAME     = "数据库读取";
         monitorLog.LOGINFO     = "订单数据读取成功!";
         monitorLog.LOGLOCATION = "数据库";
         monitorLog.LOGTYPE     = 1;
         monitorLog.Save();
     }
 }
示例#11
0
        public void StopScanTask()
        {
            //只暂停下达任务,不暂停到达任务
            //分拣线需要到达任务将皮带上的烟分拣完
            taskStatus = TaskStatus.Stop;
            if (Issuedthread != null)
            {
                while (Issuedthread.IsAlive)
                {
                    Thread.Sleep(300);
                }
                Issuedthread           = null;
                monitorLog             = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "线程操作";
                monitorLog.LOGINFO     = "分拣任务下达线程停止!";
                monitorLog.LOGLOCATION = "线程";
                monitorLog.LOGTYPE     = 0;
                monitorLog.Save();



                //while (Arrivedthread.IsAlive)
                //{
                //    Thread.Sleep(300);
                //}
                //Arrivedthread = null;

                //monitorLog = MonitorLog.NewMonitorLog();
                //monitorLog.LOGNAME = "线程操作";
                //monitorLog.LOGINFO = "分拣任务到达线程停止!";
                //monitorLog.LOGLOCATION = "线程";
                //monitorLog.LOGTYPE = 0;
                //monitorLog.Save();


                if (OnTaskStatusChanged != null)
                {
                    OnTaskStatusChanged.Invoke(null, new EventArgs());
                }


                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                config.AppSettings.Settings["IsStart"].Value = false.ToString();
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
            }
            OnOnTaskStopFinished();
        }
示例#12
0
        /// <summary>
        /// 将队列移动到最前的任务设置为已完成
        /// </summary>
        public void SaveTaskFinish()
        {
            if (SortingLineTasks[QueueMaxCount] != null && SortingLineTasks[QueueMaxCount].INDEXNO > 0)
            {
                MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "任务完成";
                monitorLog.LOGINFO     = " 完成任务号" + SortingLineTasks[QueueMaxCount].INDEXNO;
                monitorLog.LOGLOCATION = "数据库";
                monitorLog.LOGTYPE     = 0;
                monitorLog.Save();

                SortingLineTasks[QueueMaxCount].Status     = 2;
                SortingLineTasks[QueueMaxCount].PLCADDRESS = QueueMaxCount + 1;
                SortingLineTasks[QueueMaxCount].SaveSortingTaskProcess(SortingLineTasks[QueueMaxCount].ID);
            }
        }
示例#13
0
 private void timer1_Tick(object sender, EventArgs e)
 {
     try
     {
         LoadLineBoxProcess();
     }
     catch (Exception ex)
     {
         MonitorLog monitorLog = MonitorLog.NewMonitorLog();
         monitorLog.LOGNAME     = "读取进度查询错误";
         monitorLog.LOGINFO     = ex.Message;
         monitorLog.LOGLOCATION = "数据库";
         monitorLog.LOGTYPE     = 1;
         monitorLog.Save();
     }
 }
示例#14
0
文件: CInTask.cs 项目: wg3281/JZFJ
 public void SuspendScanTask()
 {
     if (thread != null)
     {
         thread.Suspend();
         taskStatus = TaskStatus.Suspend;
         if (OnTaskStatusChanged != null)
         {
             OnTaskStatusChanged.Invoke(null, new EventArgs());
         }
         monitorLog             = MonitorLog.NewMonitorLog();
         monitorLog.LOGNAME     = "线程操作";
         monitorLog.LOGINFO     = "补货线程暂停!";
         monitorLog.LOGLOCATION = "线程";
         monitorLog.LOGTYPE     = 0;
         monitorLog.Save();
     }
 }
示例#15
0
文件: CInTask.cs 项目: wg3281/JZFJ
        //private void TaskFinish()
        //{
        //    PlCResult plCResult = new PlCResult();


        //        while (taskStatus == TaskStatus.Run)
        //        {

        //                    plCResult = operateOpcAndSoft.IsIntaskScanFinish();
        //                    if (plCResult.Succeed)
        //                    {
        //                        //写日志
        //                        MonitorLog monitorLog = MonitorLog.NewMonitorLog();
        //                        monitorLog.LOGNAME = "PLC任务下达";
        //                        monitorLog.LOGINFO = "PLCTASKNO:" + inTask.INDEXNO.ToString().PadRight(10);
        //                        monitorLog.LOGINFO = "CIG:" + inTask.CIGCODE + "-" + inTask.CIGNAME + "-" +
        //                                             inTask.PICKLINENAME +
        //                                             "-" + inTask.INQTY;
        //                        monitorLog.LOGLOCATION = "PLC";
        //                        monitorLog.LOGTYPE = 0;
        //                        monitorLog.Save();
        //                        //加载数据
        //                        this.BeginInvoke(new MethodInvoker(LoadInTask));

        //                        //while (!operateOpcAndSoft.IsIntaskScanFinish(inTask))
        //                        //{
        //                        //    Thread.Sleep(300);
        //                        //}
        //                    }
        //                    else
        //                    {
        //                        //写日志
        //                        MonitorLog monitorLog = MonitorLog.NewMonitorLog();
        //                        monitorLog.LOGNAME = "PLC补货任务下达异常";
        //                        monitorLog.LOGINFO = plCResult.Exception;
        //                        monitorLog.LOGLOCATION = "PLC";
        //                        monitorLog.LOGTYPE = 0;
        //                        monitorLog.Save();
        //                    }
        //                }
        //            Thread.Sleep(1000);
        //        }



        private void CSortingTask_Load(object sender, EventArgs e)
        {
            DataGridViewTranslation.LoadMainColHeader(dgviewnone);
            DataGridViewTranslation.LoadMainColHeader(dgvconfirm);
            DataGridViewTranslation.LoadMainColHeader(dgviewfin);


            if (IsVerifyPass())
            {
                LoadInTask();
                monitorLog             = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "数据库读取";
                monitorLog.LOGINFO     = "补货数据读取成功!";
                monitorLog.LOGLOCATION = "数据库";
                monitorLog.LOGTYPE     = 1;
                monitorLog.Save();
                LoadPLCTask();
            }
            maxtaskno = InTask.GetMaxIndex();
        }
示例#16
0
        //void LoadGridData(DataGridViewX dataGrid)
        //{
        //    if (!dataGrid.InvokeRequired)
        //    {
        //        dataGrid.DataSource = null;
        //        dataGrid.DataSource = m_SortingTaskIssuedList;
        //    }
        //    else
        //    {
        //        d_LoadGridData de = LoadGridData;
        //        this.Invoke(de, dataGrid);
        //    }
        //}

        //public void LoadTask()
        //{
        //    //this.SuspendLayout();
        //    m_SortingTaskIssuedList = SortingTaskIssuedList.GetSortingTaskIssuedList();
        //    LoadGridData(dataGridViewX2);
        //    //this.ResumeLayout(false);
        //}



        private void CSortingTask_Load(object sender, EventArgs e)
        {
            DataGridViewTranslation.LoadMainColHeader(dgviewnone);

            DataGridViewTranslation.LoadMainColHeader(dgviewfin);

            DataGridViewTranslation.LoadDetailColHeader(dgviewnonedetail);

            DataGridViewTranslation.LoadDetailColHeader(dgviewfindetail);

            if (IsVerifyPass())
            {
                LoadOrder();
                monitorLog             = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "数据库读取";
                monitorLog.LOGINFO     = "异型烟订单数据读取成功!";
                monitorLog.LOGLOCATION = "数据库";
                monitorLog.LOGTYPE     = 1;
                monitorLog.Save();
                superTabControl1.SelectedTabIndex = 0;
            }
        }
示例#17
0
        /// <summary>
        /// 分拣任务下达流程
        /// </summary>
        private void ScanTask()
        {
            SortingLineTask sortingLineTask = null;

            while (taskStatus == TaskStatus.Run)
            {
                try
                {
                    //是否有未完成的订单
                    if (!SortingLineTaskList.IsSortingFinish())
                    {
                        //判断标识是否可以下达任务,表示上一次任务是否已经完成
                        SortingTaskIssued sortingTaskIssued = SortingTaskIssued.GetSortingTaskIssued("0");
                        if (sortingTaskIssued.PLCFLAG == 0)
                        {
                            //PLC信息小车是否走到位,或者已扫描到分户盒
                            //分拣工可能先放分户盒,但程序必须判断上次任务是否完成
                            //if (operateOpcAndSoft.GetCubeReady())
                            //{
                            // if(operateOpcAndSoft.GetCubeIndexno > FJMainForm.Instance.CSortingMain.c_Cubes.Last().labindexno)
                            //    int a = operateOpcAndSoft.GetCubeReady() -
                            //            FJMainForm.Instance.CSortingMain.c_Cubes.Last().labindexno;
                            //}
                            if (operateOpcAndSoft.GetCubeReady())
                            {
                                SortingLineTaskQueue.GetInstance().Move();

                                //重新加载一次任务队列
                                SortingLineTaskQueue.GetInstance().LoadSortingLineTasks();

                                //获取最小排序号的订单
                                sortingLineTask = SortingLineTask.GetMinSortingLineTask();

                                //将最小订单放入队列中进行分拣
                                SortingLineTaskQueue.GetInstance().Enqueue(sortingLineTask);
                                SortingLineTaskQueue.GetInstance().CreateCubesModel();


                                //发送卷烟数量到数码管
                                ATOPTagSdk.instance.SetOrderNixielight(SortingLineTaskQueue.GetInstance().SortingLineTasks);

                                //通知前台界面显示数码管数量
                                if (OnUpdateCSortingMainNumEvent != null)
                                {
                                    OnUpdateCSortingMainNumEvent.Invoke(null,
                                                                        new UpdateCSortingMainNumEventArgs(ATOPTagSdk.Tags));
                                }


                                //如果不是用用来补足的空任务
                                if (sortingLineTask.INDEXNO > 0)
                                {
                                    //保存任务状态为已下达
                                    sortingLineTask.Status = 1;
                                    sortingLineTask.SaveSortingTaskProcess(sortingLineTask.ID);
                                }

                                //将下达任务标志位设置成已下达
                                sortingTaskIssued.PLCFLAG     = 1;
                                sortingTaskIssued.PLCTASKNO   = sortingLineTask.INDEXNO.ToString();
                                sortingTaskIssued.ORDERNUMBER = sortingLineTask.SumOrderNumber();
                                sortingTaskIssued.Save();

                                //写日志
                                monitorLog             = MonitorLog.NewMonitorLog();
                                monitorLog.LOGNAME     = "任务下达";
                                monitorLog.LOGINFO     = "  任务号:" + sortingLineTask.INDEXNO.ToString().PadRight(10);
                                monitorLog.LOGLOCATION = "数据库";
                                monitorLog.LOGTYPE     = 0;
                                monitorLog.Save();
                                this.BeginInvoke(new MethodInvoker(LoadOrder));
                                //FJMainForm.Instance.CSortingMain.UpdateLineboxCapacity();
                            }
                        }
                    }
                    else
                    {
                        //写日志
                        MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                        monitorLog.LOGNAME     = "任务下达";
                        monitorLog.LOGINFO     = "分拣任务全部完成";
                        monitorLog.LOGLOCATION = "数据库";
                        monitorLog.LOGTYPE     = 0;
                        monitorLog.Save();

                        //发送分拣完成到上位机
                        //FJMainForm.Instance.SortingFinish();
                        SortingLineTaskQueue.GetInstance().CubesModel.Clear();
                        Array.Clear(SortingLineTaskQueue.GetInstance().SortingLineTasks, 0, SortingLineTaskQueue.GetInstance().QueueMaxCount);
                        SortingLineTaskQueue.GetInstance().InvokeOnUpdateCubeEvent();

                        SoundPlayer player = new SoundPlayer();
                        player.SoundLocation = Application.StartupPath + "\\Sound\\分拣结束.wav";
                        player.Load();
                        player.Play();

                        break;//跳出下达循环
                    }
                    Thread.Sleep(500);
                }
                catch (Exception e)
                {
                    //写日志
                    monitorLog = MonitorLog.NewMonitorLog();
                    if (sortingLineTask != null)
                    {
                        monitorLog.LOGNAME = "任务号" + sortingLineTask.INDEXNO + " 分拣任务下达异常";
                    }
                    else
                    {
                        monitorLog.LOGNAME = "任务号未知" + " 分拣任务下达异常";
                    }
                    monitorLog.LOGINFO     = e.Message;
                    monitorLog.LOGLOCATION = "数据库";
                    monitorLog.LOGTYPE     = 0;
                    monitorLog.Save();
                }
            }
        }
示例#18
0
        protected override void DataPortal_Insert()
        {
            //PLC写入下达任务

            //throw new Exception("写入下达任务");


            using (BypassPropertyChecks)
            {
                using (var cn = new MySqlConnection(AppUtility.AppUtil._LocalConnectionString))
                {
                    cn.Open();
                    using (var tran = cn.BeginTransaction())
                    {
                        try
                        {
                            using (var cm = cn.CreateCommand())
                            {
                                StringBuilder SQL = new StringBuilder();
                                SQL.Append("INSERT ");
                                SQL.Append("   INTO T_SORTINGTASKISSUED ");
                                SQL.Append("        ( ");
                                SQL.Append("            ID,PLCFLAG,PLCTASKNO,SLOCATION,ORDERNUMBER ");
                                SQL.Append("        ) ");
                                SQL.Append("        VALUES ");
                                SQL.Append("        ( ");
                                SQL.Append("            @ID,@PLCFLAG,@PLCTASKNO,@SLOCATION,@ORDERNUMBER ");
                                SQL.Append("        )");
                                cm.CommandText = SQL.ToString();
                                cm.Parameters.AddWithValue("@ID", ID);
                                cm.Parameters.AddWithValue("@PLCFLAG", PLCFLAG);
                                cm.Parameters.AddWithValue("@PLCTASKNO", PLCTASKNO);
                                cm.Parameters.AddWithValue("@SLOCATION", SLOCATION);
                                cm.Parameters.AddWithValue("@ORDERNUMBER", ORDERNUMBER);
                                cm.ExecuteNonQuery();
                            }

                            // update child objects
                            FieldManager.UpdateChildren(this, tran);
                            tran.Commit();

                            MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                            monitorLog.LOGNAME = "PLC分拣任务下达";
                            monitorLog.LOGINFO = "PLCTASKNO:" + PLCTASKNO.PadRight(10);
                            foreach (SortingTaskIssuedDetail sortingTaskIssuedDetail in SortingTaskIssuedDetails)
                            {
                                monitorLog.LOGINFO += sortingTaskIssuedDetail.LINEBOXCODE + ":" +
                                                      sortingTaskIssuedDetail.ADDRESSCODE + ":" +
                                                      sortingTaskIssuedDetail.QTY + "  ";
                            }
                            monitorLog.LOGLOCATION = "PLC";
                            monitorLog.LOGTYPE     = 0;
                            monitorLog.Save();
                        }
                        catch (Exception)
                        {
                            tran.Rollback();
                            throw;
                        }
                    }
                }
            }
        }
示例#19
0
        /// <summary>
        /// 接收标签信息
        /// </summary>
        private void RcvMsg()
        {
            int   gwid, ret;
            short tagNode, subCmd, msgType, dataCnt;
            short gwPort, keyType, maxTag;

            byte[]      rcvData = new byte[200];
            Dapapi.Tccb ccb_data;
            string      tmpStr, rcvStr;


            gwid    = 0;    //all gateway
            tagNode = 0;    //all tagnode
            subCmd  = -1;   //all subcmd
            msgType = 0;
            dataCnt = 200;

            Dapapi.AB_GW_Status(0);
            ret = Dapapi.AB_Tag_RcvMsg(ref gwid, ref tagNode, ref subCmd, ref msgType, rcvData, ref dataCnt);
            if (ret > 0)
            {
                rcvStr = System.Text.Encoding.Default.GetString(rcvData);
                if (tagNode < 0)
                {
                    gwPort = 1;
                }
                else
                {
                    gwPort = 2;
                }

                tmpStr = "GW_ID:" + gwid + ",GW Port:" + gwPort + ",TagNode:" + System.Math.Abs(tagNode) + ",SubCmd:" + subCmd + ",Data:" + rcvStr;

                switch (subCmd)
                {
                case SUMCMD_CONFIRM_BUTTON:
                    //写日志
                    monitorLog             = MonitorLog.NewMonitorLog();
                    monitorLog.LOGNAME     = "接收到标签信号";
                    monitorLog.LOGINFO     = tmpStr;
                    monitorLog.LOGLOCATION = "设备";
                    monitorLog.LOGTYPE     = 0;
                    monitorLog.Save();
                    //ShowMsg(tmpStr);


                    if (Tags.ContainsKey(System.Math.Abs(Convert.ToInt32(tagNode))))
                    {
                        Tags[System.Math.Abs(Convert.ToInt32(tagNode))].Qty = 0;
                    }
                    break;


                default:
                    monitorLog             = MonitorLog.NewMonitorLog();
                    monitorLog.LOGNAME     = "设备初始化";
                    monitorLog.LOGINFO     = tmpStr;
                    monitorLog.LOGLOCATION = "设备";
                    monitorLog.LOGTYPE     = 0;
                    monitorLog.Save();
                    break;
                }
            }
        }
示例#20
0
文件: CInTask.cs 项目: wg3281/JZFJ
        private void ScanTask()
        {
            PlCResult plCResult = new PlCResult();

            try
            {
                plCResult = operateOpcAndSoft.InDataToTaskAddress();
            }
            catch
            {
            }
            if (plCResult.Succeed)
            {
                while (taskStatus == TaskStatus.Run)
                {
                    if (!InTaskList.IsInTaskFinish())
                    {
                        //获取需要下达的任务
                        InTask inTask = InTaskList.GetComfirmRequestInTask();
                        if (inTask != null)
                        {
                            if (!string.IsNullOrEmpty(inTask.ID))
                            {
                                //下达补货任务
                                plCResult = operateOpcAndSoft.ReplenishmentTask(inTask);
                                if (plCResult.Succeed)
                                {
                                    //写日志
                                    MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                                    monitorLog.LOGNAME  = "PLC任务下达";
                                    monitorLog.LOGINFO  = "PLCTASKNO:" + inTask.INDEXNO.ToString().PadRight(10);
                                    monitorLog.LOGINFO += "CIG:" + inTask.CIGCODE + "-" + inTask.CIGNAME + "-" +
                                                          inTask.PICKLINENAME +
                                                          "-" + inTask.INQTY;
                                    monitorLog.LOGLOCATION = "PLC";
                                    monitorLog.LOGTYPE     = 0;
                                    monitorLog.Save();
                                    //加载数据
                                    this.BeginInvoke(new MethodInvoker(LoadInTask));

                                    //while (!operateOpcAndSoft.IsIntaskScanFinish(inTask))
                                    //{
                                    //    Thread.Sleep(300);
                                    //}
                                }
                                else if (!string.IsNullOrEmpty(plCResult.Exception))
                                {
                                    //写日志
                                    MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                                    monitorLog.LOGNAME     = "PLC补货任务下达异常";
                                    monitorLog.LOGINFO     = plCResult.Exception;
                                    monitorLog.LOGLOCATION = "PLC";
                                    monitorLog.LOGTYPE     = 0;
                                    monitorLog.Save();
                                }
                            }
                        }
                    }
                    else
                    {
                        //写日志
                        Thread.Sleep(2000);
                        MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                        monitorLog.LOGNAME     = "PLC任务下达";
                        monitorLog.LOGINFO     = "补货任务下达全部完成";
                        monitorLog.LOGLOCATION = "PLC";
                        monitorLog.LOGTYPE     = 0;
                        monitorLog.Save();

                        //设置完成后的界面及参数
                        BHMainForm.Instance.InTaskFinish();
                        break;
                    }
                    Thread.Sleep(1000);
                }
            }
            else
            {
                //写日志
                MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "PLC补货绑定品牌下达异常";
                monitorLog.LOGINFO     = plCResult.Exception;
                monitorLog.LOGLOCATION = "PLC";
                monitorLog.LOGTYPE     = 0;
                monitorLog.Save();
            }
        }
示例#21
0
        /// <summary>
        /// 控制器打开
        /// </summary>
        /// <returns></returns>
        private int Dap_Open()
        {
            int posspace, postab, pos;

            //txAddrList.Clear();

            GWCount = 0;
            if (!System.IO.File.Exists("IPINDEX"))
            {
                MessageBox.Show("串口路由地址文件不存在!");
                return(-1);
            }
            try
            {
                using (System.IO.StreamReader sr = new System.IO.StreamReader("IPINDEX"))
                {
                    String line;
                    // Read and display lines from the file until the end of
                    // the file is reached.
                    while ((line = sr.ReadLine()) != null)
                    {
                        GWCount++;
                        posspace = line.IndexOf(" ");     //find space
                        postab   = line.IndexOf((char)9); //find tab

                        if (posspace <= 0)
                        {
                            posspace = postab;
                        }
                        if (postab <= 0)
                        {
                            postab = posspace;
                        }
                        pos = System.Math.Min(posspace, postab);
                        if (pos <= 0)
                        {
                            MessageBox.Show("串口路由地址文件格式错误!");
                            return(-1);
                        }

                        //txAddrList.AppendText(line + "\r\n");

                        GWID[GWCount - 1] = int.Parse(line.Substring(0, pos));
                        diagnosis[GWCount - 1].Init(2);
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("读取串口路由地址文件失败!" + e.Message);
                return(-1);
            }

            if (APIOpen() < 0)
            {
                MessageBox.Show("初始化串口API失败!");
                return(-1);
            }


            //写日志
            MonitorLog monitorLog = MonitorLog.NewMonitorLog();

            monitorLog.LOGNAME     = "设备初始化";
            monitorLog.LOGINFO     = "初始化串口API成功";
            monitorLog.LOGLOCATION = "设备";
            monitorLog.LOGTYPE     = 0;
            monitorLog.Save();

            //ShowMsg("API Open Success!");

            for (int i = 0; i < GWCount; i++)
            {
                if (Dapapi.AB_GW_Open(GWID[i]) < 0)
                {
                    MessageBox.Show("串口控制器'" + GWID[i] + "'打开失败!");
                }
            }

            return(1);
        }
示例#22
0
        protected override void DataPortal_Update()
        {
            //PLC写入下达任务

            //throw new Exception("写入下达任务");


            using (BypassPropertyChecks)
            {
                using (var cn = new MySqlConnection(AppUtility.AppUtil._LocalConnectionString))
                {
                    cn.Open();
                    using (var tran = cn.BeginTransaction())
                    {
                        try
                        {
                            using (var cm = cn.CreateCommand())
                            {
                                cm.Transaction = tran;
                                StringBuilder SQL = new StringBuilder();
                                SQL.Append("UPDATE T_InTaskIssued ");
                                SQL.Append("    SET ID = @ID,PLCFLAG = @PLCFLAG,PLCTASKNO = @PLCTASKNO,SLOCATION = @SLOCATION,CIGCODE = @CIGCODE,BARCODE = @BARCODE,INQTY = @INQTY ");
                                SQL.Append("  WHERE ID = @ID");
                                cm.CommandText = SQL.ToString();
                                cm.Parameters.AddWithValue("@ID", ID);
                                cm.Parameters.AddWithValue("@PLCFLAG", PLCFLAG);

                                cm.Parameters.AddWithValue("@PLCTASKNO", PLCTASKNO);
                                cm.Parameters.AddWithValue("@SLOCATION", SLOCATION);
                                cm.Parameters.AddWithValue("@CIGCODE", CIGCODE);
                                cm.Parameters.AddWithValue("@BARCODE", BARCODE);
                                cm.Parameters.AddWithValue("@INQTY", INQTY);
                                cm.ExecuteNonQuery();
                            }
                            tran.Commit();

                            if (PLCTASKNO != "0" && SLOCATION != "0" && INQTY != 0)
                            {
                                m_inTask = InTask.GetInTaskByIndex(PLCTASKNO);
                                if (m_inTask != null)
                                {
                                    m_inTask.Status = 2;
                                    m_inTask.SaveInTaskProcess(PLCTASKNO);
                                }
                                MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                                monitorLog.LOGNAME  = "PLC任务下达";
                                monitorLog.LOGINFO  = "PLCTASKNO:" + PLCTASKNO.PadRight(10);
                                monitorLog.LOGINFO += CIGCODE + ":" +
                                                      BARCODE + ":" +
                                                      INQTY + "  ";
                                monitorLog.LOGLOCATION = "PLC";
                                monitorLog.LOGTYPE     = 0;
                                monitorLog.Save();
                            }
                            //else
                            //{
                            //    m_sortingLineTask = SortingLineTask.GetSortingLineByIndex(PLCTASKNO);
                            //    if (m_sortingLineTask != null)
                            //    {
                            //        m_sortingLineTask.Status = 2;
                            //        m_sortingLineTask.SaveSortingTaskProcess(PLCTASKNO);
                            //    }
                            //}
                        }
                        catch (Exception)
                        {
                            tran.Rollback();
                            throw;
                        }
                    }
                }
            }
        }
示例#23
0
        protected override void DataPortal_Insert()
        {
            //PLC写入下达任务

            //throw new Exception("写入下达任务");


            using (BypassPropertyChecks)
            {
                using (var cn = new MySqlConnection(AppUtility.AppUtil._LocalConnectionString))
                {
                    cn.Open();
                    using (var tran = cn.BeginTransaction())
                    {
                        try
                        {
                            using (var cm = cn.CreateCommand())
                            {
                                StringBuilder SQL = new StringBuilder();
                                SQL.Append("INSERT ");
                                SQL.Append("   INTO T_InTaskIssued ");
                                SQL.Append("        ( ");
                                SQL.Append("            ID,PLCFLAG,PLCTASKNO,SLOCATION,CIGCODE,BARCODE,INQTY ");
                                SQL.Append("        ) ");
                                SQL.Append("        VALUES ");
                                SQL.Append("        ( ");
                                SQL.Append("            @ID,@PLCFLAG,@PLCTASKNO,@SLOCATION,@CIGCODE,@BARCODE,@INQTY ");
                                SQL.Append("        )");
                                cm.CommandText = SQL.ToString();
                                cm.Parameters.AddWithValue("@ID", ID);
                                cm.Parameters.AddWithValue("@PLCFLAG", PLCFLAG);
                                cm.Parameters.AddWithValue("@PLCTASKNO", PLCTASKNO);
                                cm.Parameters.AddWithValue("@SLOCATION", SLOCATION);
                                cm.Parameters.AddWithValue("@CIGCODE", CIGCODE);
                                cm.Parameters.AddWithValue("@BARCODE", BARCODE);
                                cm.Parameters.AddWithValue("@INQTY", INQTY);
                                cm.ExecuteNonQuery();
                            }



                            MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                            monitorLog.LOGNAME = "PLC补货任务下达";
                            monitorLog.LOGINFO = "PLCTASKNO:" + PLCTASKNO.PadRight(10);

                            monitorLog.LOGINFO += CIGCODE + ":" +
                                                  BARCODE + ":" +
                                                  INQTY + "  ";

                            monitorLog.LOGLOCATION = "PLC";
                            monitorLog.LOGTYPE     = 0;
                            monitorLog.Save();
                        }
                        catch (Exception)
                        {
                            tran.Rollback();
                            throw;
                        }
                    }
                }
            }
        }
示例#24
0
        /// <summary>
        /// 当天卧式仓道分拣量写入地址区,用于PLC将最后剩余的卷烟打出
        /// </summary>
        /// <returns>成功返回true,失败返回false</returns>
        public PlCResult OutDataToTaskAddress()
        {
            PlCResult plCResult = new PlCResult();

            try
            {
                bool isRun = true;
                LineBoxProcessList lineboxlist = LineBoxProcessList.GetList();


                if (lineboxlist == null)
                {
                    plCResult.Succeed   = false;
                    plCResult.Exception = "无法获取分拣通道机分拣总量!";
                    return(plCResult);
                }

                foreach (LineBoxProcessInfo lineboxprocessinfo in lineboxlist)
                {
                    if (isRun)
                    {
                        if (lineboxprocessinfo.LINEBOXCODE == "85")
                        {
                            PlcValue writeValue = new PlcValue();
                            writeValue.Value = lineboxprocessinfo.TOTQTY;
                            isRun            = plc.SetPlcValue(ItemListEnum.db51Int10, writeValue);
                        }
                        if (lineboxprocessinfo.LINEBOXCODE == "86")
                        {
                            PlcValue writeValue = new PlcValue();
                            writeValue.Value = lineboxprocessinfo.TOTQTY;
                            isRun            = plc.SetPlcValue(ItemListEnum.db51Int12, writeValue);
                        }
                        if (lineboxprocessinfo.LINEBOXCODE == "87")
                        {
                            PlcValue writeValue = new PlcValue();
                            writeValue.Value = lineboxprocessinfo.TOTQTY;
                            isRun            = plc.SetPlcValue(ItemListEnum.db51Int14, writeValue);
                        }
                        if (lineboxprocessinfo.LINEBOXCODE == "88")
                        {
                            PlcValue writeValue = new PlcValue();
                            writeValue.Value = lineboxprocessinfo.TOTQTY;
                            isRun            = plc.SetPlcValue(ItemListEnum.db51Int16, writeValue);
                        }
                        if (lineboxprocessinfo.LINEBOXCODE == "89")
                        {
                            PlcValue writeValue = new PlcValue();
                            writeValue.Value = lineboxprocessinfo.TOTQTY;
                            isRun            = plc.SetPlcValue(ItemListEnum.db51Int18, writeValue);
                        }
                    }
                }

                plCResult.Succeed = isRun;

                if (!isRun)
                {
                    plCResult.Exception = "PLC分拣通道机分拣总量写入失败!";
                    return(plCResult);
                }
                else
                {
                    //写日志
                    MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                    monitorLog.LOGNAME = "PLC分拣通道机分拣总量下达";
                    foreach (LineBoxProcessInfo lineboxprocessinfo in lineboxlist)
                    {
                        if (Convert.ToInt16(lineboxprocessinfo.LINEBOXCODE) >= 67)
                        {
                            monitorLog.LOGINFO += " 通道:" + lineboxprocessinfo.LINEBOXCODE + " - 数量" + lineboxprocessinfo.TOTQTY + "; ";
                        }
                    }
                    monitorLog.LOGLOCATION = "PLC";
                    monitorLog.LOGTYPE     = 0;
                    monitorLog.Save();
                    return(plCResult);
                }
            }
            catch (Exception ex)
            {
                plCResult.Succeed   = false;
                plCResult.Exception = ex.Message;
                return(plCResult);
            }
        }
示例#25
0
        /// <summary>
        /// 当天补货品牌写入卧式仓补货品规地址区
        /// </summary>
        /// <param name="task">当天补货品牌</param>
        /// <returns>成功返回true,失败返回false</returns>
        public PlCResult InDataToTaskAddress()
        {
            PlCResult plCResult = new PlCResult();

            try
            {
                bool isRun = false;
                Dictionary <int, string> bindcig = BusinessLogic.INTASKS.InTask.GetBindCigCode();
                if (bindcig == null)
                {
                    plCResult.Succeed   = false;
                    plCResult.Exception = "无法获取通道机绑定卷烟!";
                    return(plCResult);
                }

                foreach (KeyValuePair <int, string> keyValuePair in bindcig)
                {
                    if (keyValuePair.Key == 85)
                    {
                        PlcValue writeValue = new PlcValue();
                        writeValue.Value = keyValuePair.Value;
                        isRun            = plc.SetPlcValue(ItemListEnum.DB53DInt200, writeValue);
                    }
                    if (keyValuePair.Key == 86)
                    {
                        PlcValue writeValue = new PlcValue();
                        writeValue.Value = keyValuePair.Value;
                        isRun            = plc.SetPlcValue(ItemListEnum.DB53DInt204, writeValue);
                    }
                    if (keyValuePair.Key == 87)
                    {
                        PlcValue writeValue = new PlcValue();
                        writeValue.Value = keyValuePair.Value;
                        isRun            = plc.SetPlcValue(ItemListEnum.DB53DInt208, writeValue);
                    }
                    if (keyValuePair.Key == 88)
                    {
                        PlcValue writeValue = new PlcValue();
                        writeValue.Value = keyValuePair.Value;
                        isRun            = plc.SetPlcValue(ItemListEnum.DB53DInt212, writeValue);
                    }
                    if (keyValuePair.Key == 89)
                    {
                        PlcValue writeValue = new PlcValue();
                        writeValue.Value = keyValuePair.Value;
                        isRun            = plc.SetPlcValue(ItemListEnum.DB53DInt216, writeValue);
                    }
                }

                //写日志
                MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME = "PLC通道品牌下达";
                foreach (KeyValuePair <int, string> keyValuePair in bindcig)
                {
                    monitorLog.LOGINFO += keyValuePair.Key + "-CIG:" + keyValuePair.Value + ";";
                }
                monitorLog.LOGLOCATION = "PLC";
                monitorLog.LOGTYPE     = 0;
                monitorLog.Save();

                plCResult.Succeed = isRun;

                if (!isRun)
                {
                    plCResult.Exception = "PLC补货绑定品牌写入失败!";
                }
                return(plCResult);
            }
            catch (Exception ex)
            {
                plCResult.Succeed   = false;
                plCResult.Exception = ex.Message;
                return(plCResult);
            }
        }
示例#26
0
        public SortingLineTask TaskFinish()
        {
            bool                   isRun                  = false;
            SortingArrive          sortingArrive          = new SortingArrive();
            SorgingPackingFinished sorgingPackingFinished = new SorgingPackingFinished();
            SortingLineTask        sortingLineTask        = null;

            try
            {
                //扫描烟条到达信号地址区是否有已到达的任务(DB10:DBW50)
                MonitorLog monitorLog;
                for (int i = 1; i <= sortingArrive.Count; i++)
                {
                    int arrivevalue = 0;
                    //获取地址内的值
                    string a = sortingArrive[i];
                    arrivevalue = Convert.ToInt32(plc.GetPlcValue(sortingArrive[i]).Value);
                    //非0表示已有完成的客户订单
                    if (arrivevalue != 0)
                    {
                        //获取DB15中对应的分拣任务号
                        DB15Model mdl    = DB15List.dicArr.FirstOrDefault(o => o.Key == i).Value;
                        string    taskno = plc.GetPlcValue(mdl.taskNo).Value.ToString();

                        //通过任务号关联订单中的序号获取分拣订单保存
                        if (Convert.ToInt32(taskno) > 0)
                        {
                            sortingLineTask        = SortingLineTask.GetSortingLineByIndex(taskno);
                            sortingLineTask.Status = 2;
                            sortingLineTask.SaveSortingTaskProcess(sortingLineTask.ID);
                            sortingLineTask.SaveStatus();


                            //写日志
                            monitorLog             = MonitorLog.NewMonitorLog();
                            monitorLog.LOGNAME     = "INDEXNO:" + sortingLineTask.INDEXNO + " CUSTNO:" + sortingLineTask.CUSTCODE + " 分拣任务到达数据库保存";
                            monitorLog.LOGINFO     = "";
                            monitorLog.LOGLOCATION = "PLC";
                            monitorLog.LOGTYPE     = 0;
                            monitorLog.Save();
                        }
                        //成功后保存发送的烟包信息
                        //List<CigBoxInfo> cigBoxInfoList = CigBoxInfoList.GetBoxInfoByCustiomNo(sortingLineTask.CUSTCODE,
                        //    sortingLineTask.INDEXNO.ToString(), SortingLine.GetNonSortingLineCode());
                        //foreach (CigBoxInfo cigBoxInfo in cigBoxInfoList)
                        //{
                        //    CigBoxInfo.SaveProcess(cigBoxInfo.ID, 2);
                        //}

                        //写日志
                        //monitorLog = MonitorLog.NewMonitorLog();
                        //monitorLog.LOGNAME = "INDEXNO:" + cigBoxInfoList[0].IndexNO + "  分拣烟包到达保存";
                        //monitorLog.LOGINFO = "";
                        //monitorLog.LOGLOCATION = "PLC";
                        //monitorLog.LOGTYPE = 0;
                        //monitorLog.Save();


                        //查看装箱数据块中是否已修改
                        //==0表示未修改可以写数据
                        if (Convert.ToInt32(plc.GetPlcValue(sorgingPackingFinished[i]).Value) == 0)
                        {
                            //将装箱完成信号地址区中对应的出口置1(DB10:DBW0)
                            PlcValue writeVlaue = new PlcValue();
                            writeVlaue.Value = arrivevalue;
                            isRun            = plc.SetPlcValue(sorgingPackingFinished[i], writeVlaue);
                            //写值不成功返回空对象
                            if (!isRun)
                            {
                                sortingLineTask = null;
                            }
                            else
                            {
                                //写日志
                                monitorLog             = MonitorLog.NewMonitorLog();
                                monitorLog.LOGNAME     = "INDEXNO:" + sortingLineTask.INDEXNO + "  地址位" + sorgingPackingFinished[i] + ":装箱修改为1";
                                monitorLog.LOGINFO     = "";
                                monitorLog.LOGLOCATION = "PLC";
                                monitorLog.LOGTYPE     = 0;
                                monitorLog.Save();
                            }
                            break;
                        }
                        //==1表示已修改过继续下一个地址位
                        else
                        {
                            sortingLineTask = null;
                            //写日志
                            monitorLog             = MonitorLog.NewMonitorLog();
                            monitorLog.LOGNAME     = "装箱已经修改过为1";
                            monitorLog.LOGINFO     = "";
                            monitorLog.LOGLOCATION = "PLC";
                            monitorLog.LOGTYPE     = 0;
                            monitorLog.Save();
                        }
                    }
                    Thread.Sleep(50);
                }
                //break后执行
                //写日志
                //monitorLog = MonitorLog.NewMonitorLog();
                //monitorLog.LOGNAME = "分拣任务到达循环结束";
                //monitorLog.LOGINFO = "";
                //monitorLog.LOGLOCATION = "PLC";
                //monitorLog.LOGTYPE = 0;
                //monitorLog.Save();
            }
            catch (Exception ex)
            {
                //写日志
                MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                monitorLog.LOGNAME     = "PLC分拣任务到达异常";
                monitorLog.LOGINFO     = ex.Message;
                monitorLog.LOGLOCATION = "PLC";
                monitorLog.LOGTYPE     = 0;
                monitorLog.Save();
                return(null);
            }

            return(sortingLineTask);
        }