Ejemplo n.º 1
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            try
            {
                string lineCode     = stateItem.ItemName.Split("_"[0])[0];
                string channelGroup = stateItem.ItemName.Split("_"[0])[1];
                object obj          = ObjectUtil.GetObject(stateItem.State);
                int    sortNo       = obj != null?Convert.ToInt32(obj) : 0;

                using (PersistentManager pm = new PersistentManager())
                {
                    SupplyDao supplyDao = new SupplyDao();
                    int       sortNo1   = supplyDao.FindSortNoForSupply(lineCode, sortNo.ToString(), channelGroup, Convert.ToInt32(Context.Attributes["SupplyAheadCount-" + lineCode + "-" + channelGroup]));
                    sortNo = sortNo > sortNo1 ? sortNo : sortNo1;
                }

                Dictionary <string, string> parameter = new Dictionary <string, string>();
                parameter.Add("OrderDate", "");
                parameter.Add("BatchNo", "");
                parameter.Add("LineCode", lineCode);
                parameter.Add("ChannelGroup", channelGroup);
                parameter.Add("SortNo", sortNo.ToString());

                WriteToProcess("SupplyRequestProcess", "SupplyRequest", parameter);
            }
            catch (Exception e)
            {
                Logger.Error(e.Message);
            }
        }
Ejemplo n.º 2
0
        private bool Check_Crane_Status_IsOk(int craneNo)
        {
            try
            {
                string serviceName = "CranePLC" + craneNo;

                string plcTaskNo = ObjectUtil.GetObject(context.ProcessDispatcher.WriteToService(serviceName, "CraneTaskNo")).ToString();

                string   craneMode      = ObjectUtil.GetObject(context.ProcessDispatcher.WriteToService(serviceName, "CraneMode")).ToString();
                object[] obj            = ObjectUtil.GetObjects(context.ProcessDispatcher.WriteToService(serviceName, "CraneAlarmCode"));
                int      CraneState     = int.Parse(obj[1].ToString());
                int      CraneAlarmCode = int.Parse(obj[0].ToString());

                if (plcTaskNo == "0" && craneMode == "1" && CraneAlarmCode == 0 && CraneState == 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                return(false);
            }
        }
Ejemplo n.º 3
0
 private void tmWorker(object sender, System.Timers.ElapsedEventArgs e)
 {
     try
     {
         tmWorkTimer.Stop();
         object obj = ObjectUtil.GetObject(context.ProcessDispatcher.WriteToService("TranLine", "StockRequest"));
         if (obj == null)
         {
             return;
         }
         string TaskFinish = obj.ToString();
         Logger.Info(TaskFinish);
         if (TaskFinish.Equals("True") || TaskFinish.Equals("1"))
         {
             this.DialogResult = DialogResult.OK;
         }
     }
     catch (Exception ex)
     {
         Logger.Error(ex.Message);
     }
     finally
     {
         tmWorkTimer.Start();
     }
 }
Ejemplo n.º 4
0
        private void Send2PLC(DataRow dr)
        {
            string serviceName = "CranePLC01";

            string TaskNo      = dr["TaskNo"].ToString();
            string fromStation = dr["FromStation"].ToString();
            string toStation   = dr["ToStation"].ToString();

            int[] cellAddr = new int[6];
            cellAddr[0] = int.Parse(fromStation.Substring(4, 3));
            cellAddr[1] = int.Parse(fromStation.Substring(7, 3));
            cellAddr[2] = int.Parse(fromStation.Substring(0, 3));
            cellAddr[3] = int.Parse(toStation.Substring(4, 3));
            cellAddr[4] = int.Parse(toStation.Substring(7, 3));
            cellAddr[5] = int.Parse(toStation.Substring(0, 3));
            string TaskTypeValue = "1";

            if (ObjectUtil.GetObject(context.ProcessDispatcher.WriteToService(serviceName, "CraneLoad")).ToString() == "1")
            {
                TaskTypeValue = "2";
            }

            sbyte[] sTaskNo = new sbyte[20];
            Util.ConvertStringChar.stringToBytes(TaskNo, 20).CopyTo(sTaskNo, 0);
            context.ProcessDispatcher.WriteToService(serviceName, "TaskNo", sTaskNo);

            context.ProcessDispatcher.WriteToService(serviceName, "TaskAddress", cellAddr);

            context.ProcessDispatcher.WriteToService(serviceName, "TaskType", TaskTypeValue);
            context.ProcessDispatcher.WriteToService(serviceName, "WriteFinished", 1);

            Logger.Info("重新下发堆垛机任务,任务号:" + TaskNo);
        }
Ejemplo n.º 5
0
        private string GetLedMessage(string LedNo, string ItemNo, StateItem item)
        {
            string strMsg = "";

            try
            {
                string Stock = "外盘:";
                if (int.Parse(ItemNo) % 2 == 0)
                {
                    Stock = "内盘:";
                }
                string PalletCode   = "";
                string CellCode     = " 位:";
                string CraneErrorNo = "0";
                if (int.Parse(LedNo) % 2 == 0 && int.Parse(ItemNo) % 2 == 0)
                {
                    int CarNo = int.Parse(LedNo) / 2;
                    CraneErrorNo = ObjectUtil.GetObject(WriteToService("CranePLC" + CarNo, "nAlarmCode")).ToString();
                }
                if (CraneErrorNo != "0")
                {
                    string    ErrMsg = "堆垛机未知错误";
                    DataRow[] drs    = dtCraneError.Select(string.Format("warncode='{0}'", CraneErrorNo));
                    if (drs.Length > 0)
                    {
                        ErrMsg = drs[0]["WARNDESC"].ToString();
                    }

                    strMsg = ErrMsg;
                }
                else
                {
                    string errorNo = ObjectUtil.GetObject(WriteToService(StockPLC, ItemNo + "_ErrCode")).ToString();
                    if (errorNo != "0")
                    {
                        strMsg = Stock + (PalletCode.Length > 0 ? "托盘:" + PalletCode : "") + dicStockWarning[errorNo];
                        if (item.ItemName.IndexOf("_ErrCode") >= 0 && ItemNo == item.ItemName.Split('_')[0])
                        {
                            Logger.Error("输送线:" + ItemNo + (PalletCode.Length > 0 ? "托盘编号:" + PalletCode : "") + dicStockWarning[errorNo]);
                        }
                    }
                    else
                    {
                        string Tasks = Util.ConvertStringChar.BytesToString((byte[])WriteToService(StockPLC, ItemNo + "_TaskNo"));
                        Tasks = Tasks.PadRight(26, ' ');
                        if (Tasks.Length > 0)
                        {
                            PalletCode = Tasks.Substring(10, 8).Trim();
                            CellCode   = " 位:" + Tasks.Substring(18, 8).Trim();
                        }
                        strMsg = Stock + PalletCode + CellCode;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("LEDProcess中GetLedMessage异常:" + ex.Message);
            }
            return(strMsg);
        }
Ejemplo n.º 6
0
        public override void Execute()
        {
            try
            {
                object state = AutomationContext.Read(memoryServiceName, memoryItemName);
                if (state == null || state.ToString() != "ScanCodeFaultReset")
                {
                    return;
                }

                state = AutomationContext.Read(scanServiceName2, scanItemName2);
                if (state == null || state.ToString() == string.Empty)
                {
                    return;
                }
                string barcode = state.ToString();

                state = AutomationContext.Read(plcServiceName, O_Stockin_Scan_Alarm);
                state = ObjectUtil.GetObject(state);
                if (state == null || state.ToString() != "1")
                {
                    return;
                }

                AutomationContext.Write(scanServiceName1, scanItemName1, barcode);
            }
            catch (Exception ex)
            {
                Logger.Error("ScanCodeFaultResetProcess 出错,原因:" + ex.Message + "/n" + ex.StackTrace);
            }
        }
Ejemplo n.º 7
0
        public void SendDeviceStatus2(Context context, string ServiceName, string carNo, string AlarmDesc)
        {
            string id = Guid.NewGuid().ToString();

            string aisleNo  = ServiceName.Substring(5, 2);
            string deviceNo = aisleNo + carNo;

            object[] Status    = ObjectUtil.GetObjects(context.ProcessDispatcher.WriteToService(ServiceName, "CarStatus" + carNo));
            string   mode      = Status[0].ToString();
            string   status    = Status[12].ToString();
            string   taskNo    = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(context.ProcessDispatcher.WriteToService(ServiceName, "CarTask" + carNo)));
            string   fork      = Status[11].ToString();
            string   load      = Status[10].ToString();
            string   column    = Status[2].ToString();
            string   layer     = Status[3].ToString();
            string   alarmCode = ObjectUtil.GetObject(context.ProcessDispatcher.WriteToService(ServiceName, "CarAlarm" + carNo)).ToString();
            string   field2    = AlarmDesc;
            string   sender1   = "ROBO_WCS";

            string Json = "[{\"id\":\"" + id + "\",\"deviceNo\":\"" + Program.WarehouseCode + deviceNo + "\",\"mode\":\"" + mode + "\",\"status\":\"" + status + "\",\"taskNo\":\"" + taskNo + "\",\"fork\":\"" + fork + "\",\"load\":\"" + load + "\",\"aisleNo\":\"" + aisleNo + "\",\"column\":\"" + column + "\",\"layer\":\"" + layer + "\",\"alarmCode\":\"" + alarmCode + "\",\"sendDate\":\"" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\",\"sender\":\"" + sender1 + "\",\"field1\":\"\",\"field2\":\"" + field2 + "\",\"field3\":\"\"" + "}]";

            Logger.Debug("开始上报设备编号[" + deviceNo + "]的状态");
            string     message    = Program.send("transWCSDevice", Json);
            RtnMessage rtnMessage = JsonHelper.JSONToObject <RtnMessage>(message);

            Logger.Debug("上报设备编号[" + deviceNo + "]状态,收到反馈:" + rtnMessage.returnCode + ":" + rtnMessage.message);
        }
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            try
            {
                bool needNotify = false;

                string lineCode     = stateItem.ItemName.Split("_"[0])[0];
                string channelGroup = stateItem.ItemName.Split("_"[0])[1];
                string channelType  = stateItem.ItemName.Split("_"[0])[2];

                object obj    = ObjectUtil.GetObject(stateItem.State);
                int    sortNo = obj != null?Convert.ToInt32(obj) : 0;

                if (sortNo == 0)
                {
                    return;
                }

                sortNo = sortNo + Convert.ToInt32(Context.Attributes["SupplyAheadCount-" + lineCode + "-" + channelGroup + "-" + channelType]);

                needNotify = AddNextSupply(lineCode, channelGroup, channelType, sortNo);

                if (needNotify)
                {
                    WriteToProcess("LedStateProcess", "Refresh", null);
                    WriteToProcess("ScannerStateProcess", "Refresh", null);
                    dispatcher.WriteToProcess("DataRequestProcess", "SupplyRequest", 1);
                }
            }
            catch (Exception e)
            {
                Logger.Error("补货批次生成处理失败,原因:" + e.Message);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 检查堆垛机入库状态
        /// </summary>
        /// <param name="piCrnNo"></param>
        /// <returns></returns>
        private bool Check_Device_Status_IsOk(string ServiceName)
        {
            try
            {
                string plcTaskNo = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService(ServiceName, "ReadTaskNo")));

                string   workMode  = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService(ServiceName, "WorkMode")).ToString();
                object[] obj       = ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(ServiceName, "OtherStatus"));
                int      State     = int.Parse(obj[1].ToString());
                int      AlarmCode = int.Parse(obj[0].ToString());

                if (workMode == "1" && AlarmCode == 0 && State == 1)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                //Logger.Error(ex.Message);
                return(false);
            }
        }
Ejemplo n.º 10
0
        private void btnHandScan_Click(object sender, EventArgs e)
        {
            try
            {
                object state = AutomationContext.Read(memoryServiceName1, memoryItemName1);
                if (state == null || state.ToString() != "WholePalletScan")
                {
                    XtraMessageBox.Show("当手持扫码模式不是 [手持扫码整托盘入库]!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                state = AutomationContext.Read(plcServiceName, I_Whole_Pallet_StockIn_Scan_Request);
                state = ObjectUtil.GetObject(state);
                if (state == null || !Convert.ToBoolean(state))
                {
                    XtraMessageBox.Show("当前PLC未请求扫码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                ScanDialog scanDialog = new ScanDialog();
                scanDialog.Text = "整盘入库手工扫码!";
                if (scanDialog.ShowDialog() == DialogResult.OK)
                {
                    int[] data = new int[] { scanDialog.ProductNo, scanDialog.Quantity };
                    AutomationContext.Write(memoryServiceName2, memoryItemName2, data);
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(string.Format("手工扫码失败,详情原因 : {0}", ex.Message), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Ejemplo n.º 11
0
        private void SendDeviceStatus(string ServiceName, string AlarmDesc)
        {
            string id       = Guid.NewGuid().ToString();
            string deviceNo = ServiceName.Substring(3, 4);

            string mode = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService(ServiceName, "WorkMode")).ToString();

            object[] Status      = ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(ServiceName, "Status"));
            object[] OtherStatus = ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(ServiceName, "OtherStatus"));
            string   status      = OtherStatus[1].ToString();
            string   aisleNo     = OtherStatus[2].ToString();
            string   taskNo      = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService(ServiceName, "ReadTaskNo")));
            string   fork        = Status[3].ToString();
            string   load        = Status[0].ToString();
            string   column      = Status[1].ToString();
            string   layer       = Status[2].ToString();
            string   alarmCode   = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService(ServiceName, "AlarmCode")).ToString();
            string   field1      = AlarmDesc;
            string   sender1     = "admin";

            string Json = "[{\"id\":\"" + id + "\",\"deviceNo\":\"" + deviceNo + "\",\"mode\":\"" + mode + "\",\"status\":\"" + status + "\",\"taskNo\":\"" + taskNo + "\",\"fork\":\"" + fork + "\",\"load\":\"" + load + "\",\"aisleNo\":\"" + aisleNo + "\",\"column\":\"" + column + "\",\"layer\":\"" + layer + "\",\"alarmCode\":\"" + alarmCode + "\",\"sendDate\":\"" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\",\"sender\":\"" + sender1 + "\",\"field1\":\"" + field1 + "\",\"field2\":\"\",\"field3\":\"\"" + "}]";

            Logger.Info("上报设备状态");
            string     message    = Program.send("transWCSDevice", Json);
            RtnMessage rtnMessage = JsonHelper.JSONToObject <RtnMessage>(message);

            Logger.Info("上报设备状态,收到反馈:" + rtnMessage.returnCode + ":" + rtnMessage.message);
        }
Ejemplo n.º 12
0
        private void PalletCodeDoubleClick(int CraneNo, int ItemNo)
        {
            if (GetTextBox("txtCarErrorDesc", ItemNo).Text == "条码检测故障")
            {
                object o = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("CarPLC", ItemNo + "_HasProduct"));
                if (o.ToString() == "1" || o.ToString() == "True")
                {
                    Task.frmHandlePalletCode frm = new Task.frmHandlePalletCode(ItemNo, CraneNo);
                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        string TaskStatus = frm.TaskStatus;

                        Context.ProcessDispatcher.WriteToService("CarPLC", ItemNo + "_WriteFinished", 3);
                        string TaskNo = frm.TaskNo;

                        sbyte[]  staskNo = new sbyte[26];
                        string[] LedMsgs = frm.LedNo.Split(',');
                        Util.ConvertStringChar.stringToBytes(TaskNo, 10).CopyTo(staskNo, 0);
                        Util.ConvertStringChar.stringToBytes(LedMsgs[0], 8).CopyTo(staskNo, 10);
                        Util.ConvertStringChar.stringToBytes(LedMsgs[1], 8).CopyTo(staskNo, 18);
                        Context.ProcessDispatcher.WriteToService("CarPLC", ItemNo + "_WriteTaskNo", staskNo);
                        if (Context.ProcessDispatcher.WriteToService("CarPLC", ItemNo + "_WriteFinished", 4))
                        {
                            //插入WCS_Task
                            if (TaskStatus == "0")
                            {
                                bll.ExecNonQueryTran("WCS.SPReciveWmsTask", new DataParameter[] { new DataParameter("VTASKNO", frm.TaskNo) });
                            }
                            Logger.Info(ItemNo + "输送线托盘编号:" + frm.PalletCode + "开始入库");
                        }
                    }
                }
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 托盘入库方式
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPalletIn_Click(object sender, EventArgs e)
        {
            PalletSelect frm = new PalletSelect();



            if (frm.ShowDialog() == DialogResult.OK)
            {
                object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_122_1"));
                if (obj == null || obj.ToString() != "0")
                {
                    return;
                }
                if (frm.Flag == 1)  //单托盘入库
                {
                    string writeItem = "01_2_122_";
                    int[]  ServiceW  = new int[3];
                    ServiceW[0] = 9999; //任务号
                    ServiceW[1] = 131;  //目的地址
                    ServiceW[2] = 4;


                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", ServiceW); //PLC写入任务
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "2", 1);        //PLC写入任务
                }
                else if (frm.Flag == 2)
                {
                    PalletBillDal Billdal     = new PalletBillDal();
                    string        TaskID      = Billdal.CreatePalletInBillTask(true); //空托盘组入库单,生成Task.
                    string        FromStation = "122";
                    string        ToStation   = "122";
                    string        writeItem   = "01_2_122_";

                    string   strWhere  = string.Format("TASK_ID='{0}'", TaskID);
                    TaskDal  dal       = new TaskDal();
                    string[] CellValue = dal.AssignCell(strWhere, ToStation); //货位申请

                    string        TaskNo = dal.InsertTaskDetail(CellValue[0]);
                    SysStationDal sysDal = new SysStationDal();
                    DataTable     dt     = sysDal.GetSationInfo(CellValue[1], "11", "3");


                    dal.UpdateTaskState(CellValue[0], "1");                                                                               //更新任务开始执行
                    ProductStateDal StateDal = new ProductStateDal();
                    StateDal.UpdateProductCellCode(CellValue[0], CellValue[1]);                                                           //更新Product_State 货位

                    dal.UpdateTaskDetailStation(FromStation, ToStation, "2", string.Format("TASK_ID='{0}' AND ITEM_NO=1", CellValue[0])); //更新货位申请起始地址及目标地址。
                    int[] ServiceW = new int[3];
                    ServiceW[0] = int.Parse(TaskNo);                                                                                      //任务号
                    ServiceW[1] = int.Parse(dt.Rows[0]["STATION_NO"].ToString());                                                         //目的地址
                    ServiceW[2] = 2;

                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", ServiceW);                                                           //PLC写入任务
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "2", 1);                                                                  //PLC写入任务
                    dal.UpdateTaskDetailStation(ToStation, dt.Rows[0]["STATION_NO"].ToString(), "1", string.Format("TASK_ID='{0}' AND ITEM_NO=2", CellValue[0])); //更新货位到达入库站台,

                    //更新单据开始
                }
            }
        }
Ejemplo n.º 14
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            try
            {
                switch (stateItem.ItemName)
                {
                case "ACK":
                    object obj = ObjectUtil.GetObject(stateItem.State);
                    if (obj == null)
                    {
                        return;
                    }
                    string ack = obj.ToString();

                    Logger.Debug(stateItem.Name + " Receive ACK:" + ack);
                    if (ack.Equals("True") || ack.Equals("1"))
                    {
                        WriteToService(stateItem.Name, "STB", 0);
                        Logger.Debug(stateItem.Name + " Receive ACK 1");
                    }
                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                Logger.Error("CraneACKProcess StateChanged方法出错,原因:" + ex.Message);
            }
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 检查堆垛机入库状态
        /// </summary>
        /// <param name="piCrnNo"></param>
        /// <returns></returns>
        private bool Check_Device_Status_IsOk(string ServiceName)
        {
            try
            {
                string plcTaskNo      = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(ServiceName, "CraneTaskNo")));
                string craneMode      = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService(ServiceName, "CraneMode")).ToString();
                string CraneState     = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService(ServiceName, "CraneState")).ToString();
                string CraneAlarmCode = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService(ServiceName, "CraneAlarmCode")).ToString();
                string CraneLoad      = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService(ServiceName, "CraneLoad")).ToString();

                if (plcTaskNo == "" && craneMode == "1" && CraneAlarmCode == "0" && CraneState == "1" && CraneLoad == "0")
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("堆垛机错误:" + ex.Message);
                return(false);
            }
        }
Ejemplo n.º 16
0
        private object Read(string itemName)
        {
            //实现读出堆垛机状态值;
            object obj = Ops.Read(Name, itemName);

            obj = ObjectUtil.GetObject(obj);
            return(obj);
        }
Ejemplo n.º 17
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            object obj = ObjectUtil.GetObject(stateItem.State);

            if (obj == null)
            {
                return;
            }

            BLL.BLLBase bll     = new BLL.BLLBase();
            string      Request = obj.ToString();

            if (Request.Equals("True") || Request.Equals("1"))
            {
                try
                {
                    string taskNo = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService(stateItem.Name, "Barcode")));
                    if (taskNo.Trim().Length > 0)
                    {
                        string Barcode = taskNo.PadRight(20, ' ').Substring(10, 10).Trim();

                        DataTable dt = bll.FillDataTable("WCS.SelectReadTaskByPallet", new DataParameter[] { new DataParameter("@PalletCode", Barcode) });
                        if (dt.Rows.Count > 0)
                        {
                            string TaskType = dt.Rows[0]["TaskType"].ToString();
                            string TaskNo   = dt.Rows[0]["TaskNo"].ToString();
                            if (TaskType == "12" || TaskType == "15" || TaskType == "14") //出库,托盘出库,盘点
                            {
                                DataParameter[] param = new DataParameter[] { new DataParameter("@TaskNo", TaskNo) };
                                bll.ExecNonQueryTran("WCS.Sp_TaskProcess", param);
                                Logger.Info("出库任务完成,任务号:" + TaskNo + " 条码号:" + Barcode);


                                string   strValue = "";
                                string[] str      = new string[3];
                                if (TaskType == "12" || TaskType == "14")//显示拣货信息.
                                {
                                    str[0] = "1";
                                    if (TaskType == "14")
                                    {
                                        str[0] = "2";
                                    }

                                    while ((strValue = FormDialog.ShowDialog(str, dt)) != "")
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error("到达出库口,错误讯息:" + ex.Message);
                }
            }
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 盘点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCheckScan_Click(object sender, EventArgs e)
        {
            object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_195"));

            if (obj == null || obj.ToString() == "0")
            {
                return;
            }
            string strTaskNo = obj.ToString().PadLeft(4, '0');

            if (int.Parse(obj.ToString()) >= 9800 && int.Parse(obj.ToString()) < 9999)  //盘点
            {
                string[] str = new string[3];

                str[0] = "6";


                str[1] = "";
                str[2] = "";
                TaskDal   dal           = new TaskDal(); //更具任务号,获取TaskID及BILL_NO
                string[]  strInfo       = dal.GetTaskInfo(strTaskNo);
                DataTable dt            = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));
                DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]);
                //线程停止
                string strValue = "";
                while ((strValue = FormDialog.ShowDialog(str, dtProductInfo)) != "")
                {
                    dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2");
                    string writeItem = "01_2_195_";

                    DataTable dtTask = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));

                    DataRow       dr        = dtTask.Rows[0];
                    SysStationDal sysdal    = new SysStationDal();
                    DataTable     dtstation = sysdal.GetSationInfo(dr["CELL_CODE"].ToString(), "11", "3");

                    if (strValue != "1")
                    {
                        CellDal celldal = new CellDal();
                        celldal.UpdateCellErrFlag(dr["CELL_CODE"].ToString(), "条码扫描不一致");
                    }


                    int[] ServiceW = new int[3];
                    ServiceW[0] = int.Parse(strInfo[1]);                                 //任务号
                    ServiceW[1] = int.Parse(dtstation.Rows[0]["STATION_NO"].ToString()); //目的地址
                    ServiceW[2] = 1;

                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", ServiceW);                                                                                                                         //PLC写入任务
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "3", 1);                                                                                                                                //PLC写入任务

                    dal.UpdateTaskDetailStation("195", dtstation.Rows[0]["STATION_NO"].ToString(), "1", string.Format("TASK_ID='{0}' AND ITEM_NO=3", strInfo[0]));                                                              //更新货位到达入库站台,
                    dal.UpdateTaskDetailCrane(dtstation.Rows[0]["STATION_NO"].ToString(), dr["CELL_CODE"].ToString(), "0", dtstation.Rows[0]["CRANE_NO"].ToString(), string.Format("TASK_ID='{0}' AND ITEM_NO=4", strInfo[0])); //更新调度堆垛机的其实位置及目标地址。
                    break;
                }
            }
        }
Ejemplo n.º 19
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            try
            {
                object obj = ObjectUtil.GetObject(stateItem.State);
                if (obj == null)
                {
                    return;
                }

                string PalletOut = obj.ToString();
                if (PalletOut.Equals("True") || PalletOut.Equals("1"))
                {
                    //如果工作模式是储存且不是托盘组入库,需产生一个托盘组出库任务
                    object workmode = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("ConveyorPLC2", "GetWorkMode"));

                    Logger.Info("触发出托盘");
                    //if (Program.mainForm.WorkMode == 1)
                    if (workmode.ToString() == "1")
                    {
                        string CellCode = "";
                        Logger.Info("开始产生空托盘出库");
                        DataParameter[] param = new DataParameter[]
                        {
                            new DataParameter("@CraneNo", "01"),
                            new DataParameter("@ProductCode", "0001"),
                            new DataParameter("@CellCode", CellCode),
                            new DataParameter("@Valid", 2),
                            new DataParameter("@WorkMode", Program.mainForm.WorkMode),
                            new DataParameter("@WorkModeId", Program.mainForm.WorkModeId)
                        };

                        bll.FillDataTable("WCS.Sp_CreateOutTask", param);
                        Logger.Info("空托盘出库已产生");
                    }
                }
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                //如果是存储过程名称是PROC_NAME,而且State是数据库中设置的一个值 如:66
                //则该异常就是我们需要特殊处理的一个异常
                if (e.Procedure.Equals("Sp_CreateInTask") && e.State == 1)
                {
                    Logger.Error("Dispatching.Process.StockOutPalletProcess:" + e.Message);
                }
                else if (e.Procedure.Equals("Sp_CreateOutTask") && e.State == 1)
                {
                    Logger.Error("Dispatching.Process.StockOutPalletProcess:" + e.Message);
                }
            }
            catch (Exception e)
            {
                Logger.Error("Dispatching.Process.StockOutPalletProcess:" + e.Message);
            }
        }
Ejemplo n.º 20
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            bool   blnChange    = false;
            string strState     = "";
            string strCarNo     = "";
            string strReadItem  = "";
            string strWriteItem = "";

            switch (stateItem.ItemName)
            {
            case "CarOutRequest":
            case "CarInRequest":
                OrderIndex++;
                blnChange = false;
                InsertdtCar((DataTable)stateItem.State);
                break;

            case "02_1_C01_3":
                strState     = ObjectUtil.GetObject(stateItem.State).ToString();
                blnChange    = true;
                strCarNo     = "01";
                strReadItem  = "02_1_C01";
                strWriteItem = "02_2_C01";
                break;

            case "02_1_C02_3":
                strState     = ObjectUtil.GetObject(stateItem.State).ToString();
                blnChange    = true;
                strCarNo     = "02";
                strReadItem  = "02_1_C02";
                strWriteItem = "02_2_C02";
                break;

            case "02_1_C03_3":
                strState     = ObjectUtil.GetObject(stateItem.State).ToString();
                blnChange    = true;
                strCarNo     = "03";
                strReadItem  = "02_1_C03";
                strWriteItem = "02_2_C03";
                break;

            case "02_1_C04_3":
                strState     = ObjectUtil.GetObject(stateItem.State).ToString();
                blnChange    = true;
                strCarNo     = "04";
                strWriteItem = "02_2_C04";
                strReadItem  = "02_1_C04";
                break;
            }
            if (!blnChange)
            {
                return;
            }
            CarStateChange(strState, strCarNo, strReadItem, strWriteItem);
        }
Ejemplo n.º 21
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tmWorker(object sender, ElapsedEventArgs e)
        {
            lock (this)
            {
                try
                {
                    if (!blRun)
                    {
                        tmWorkTimer.Stop();
                        return;
                    }
                    tmWorkTimer.Stop();
                    DataTable dtCar = bll.FillDataTable("CMD.SelectDevice", new DataParameter[] { new DataParameter("{0}", "Flag=2") });
                    for (int i = 0; i < dtCar.Rows.Count; i++)
                    {
                        string DeviceNo = dtCar.Rows[i]["DeviceNo2"].ToString();

                        if (dtCar.Rows[i]["State"].ToString() != "1")
                        {
                            continue;
                        }
                        string serviceName = dtCar.Rows[i]["ServiceName"].ToString();
                        object objFlag     = ObjectUtil.GetObject(WriteToService(serviceName, "WriteFinished"));
                        if (int.Parse(objFlag.ToString()) == 1)
                        {
                            continue;
                        }
                        object[] CarStatus = ObjectUtil.GetObjects(WriteToService(serviceName, "CarStatus" + DeviceNo));
                        bool     IsSent    = false;
                        if (Check_Car_Status_IsOk(DeviceNo, serviceName))
                        {
                            IsSent = FindInTask(dtCar, DeviceNo, CarStatus);
                            if (IsSent)
                            {
                                continue;
                            }

                            IsSent = FindOutTask(dtCar, DeviceNo, CarStatus);
                            if (IsSent)
                            {
                                continue;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error("ElevatorProcess中tmWorker出现异常:" + ex.Message);
                }
                finally
                {
                    tmWorkTimer.Start();
                }
            }
        }
Ejemplo n.º 22
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*  处理事项:
             * 一楼入库烟包处理
             */

            try
            {
                object obj = ObjectUtil.GetObject(stateItem.State);
                if (obj == null || obj.ToString() == "0")
                {
                    return;
                }


                string strBadFlag = "";
                //其他情况电控报警处理
                switch (obj.ToString())
                {
                case "1":
                    strBadFlag = "左边条码无法读取";
                    break;

                case "2":
                    strBadFlag = "右边条码无法读取";
                    break;

                case "3":
                    strBadFlag = "两边条码无法读取";
                    break;

                case "4":
                    strBadFlag = "两边条码不一致";
                    break;
                }
                string   strBarCode;
                string[] strMessage = new string[3];
                strMessage[0] = "3";
                strMessage[1] = strBadFlag;

                while ((strBarCode = FormDialog.ShowDialog(strMessage, null)) != "")
                {
                    byte[] b = Common.ConvertStringChar.stringToByte(strBarCode, 80);
                    WriteToService("StockPLC_01", "01_2_124_1", b); //写入条码
                    WriteToService("StockPLC_01", "01_2_124_2", 1); //写入标识。

                    break;
                }
            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_01.NotReadBarcodeProcess:" + e.Message);
            }
        }
Ejemplo n.º 23
0
Archivo: Main.cs Proyecto: qq5013/ZKSA
        private void toolStripButton_Scan_Click(object sender, EventArgs e)
        {
            object o = ObjectUtil.GetObject(context.ProcessDispatcher.WriteToService("CarPLC1", "AlarmCode"));

            if (o.ToString() == "6")
            {
                App.View.Task.frmInStockTask f = new App.View.Task.frmInStockTask();

                ((View.BaseForm)f).Context = context;
                f.ShowDialog();
            }
        }
Ejemplo n.º 24
0
        private void ToolStripMenuItemReassign_Click(object sender, EventArgs e)
        {
            if (this.dgvMain.CurrentCell != null)
            {
                string serviceName = "CranePLC1";

                int[] cellAddr = new int[9];
                cellAddr[0] = 0;
                cellAddr[1] = 1;

                Context.ProcessDispatcher.WriteToService(serviceName, "TaskAddress", cellAddr);
                Context.ProcessDispatcher.WriteToService(serviceName, "WriteFinished", 0);

                DataRow dr          = ((DataRowView)dgvMain.Rows[this.dgvMain.CurrentCell.RowIndex].DataBoundItem).Row;
                string  TaskNo      = dr["TaskNo"].ToString();
                string  fromStation = dr["FromStation"].ToString();
                string  toStation   = dr["ToStation"].ToString();
                string  CraneLoad   = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService(serviceName, "CraneLoad")).ToString();

                cellAddr[0] = 0;
                cellAddr[1] = 0;
                cellAddr[2] = 0;
                int Flag = 1;
                if (CraneLoad.Equals("0") || CraneLoad.Equals("False"))
                {
                    cellAddr[3] = byte.Parse(fromStation.Substring(3, 3));
                    cellAddr[4] = byte.Parse(fromStation.Substring(6, 3));
                    cellAddr[5] = byte.Parse(fromStation.Substring(0, 3));
                }
                else
                {
                    cellAddr[3] = 1;
                    cellAddr[4] = 1;
                    cellAddr[5] = 1;
                    Flag        = 3;
                }
                cellAddr[6] = byte.Parse(toStation.Substring(3, 3));
                cellAddr[7] = byte.Parse(toStation.Substring(6, 3));
                cellAddr[8] = byte.Parse(toStation.Substring(0, 3));

                //sbyte[] taskNo = new sbyte[10];
                //Util.ConvertStringChar.stringToBytes(TaskNo, 10).CopyTo(taskNo, 0);

                Context.ProcessDispatcher.WriteToService(serviceName, "TaskAddress", cellAddr);
                Context.ProcessDispatcher.WriteToService(serviceName, "TaskNo", TaskNo);
                if (Context.ProcessDispatcher.WriteToService(serviceName, "WriteFinished", Flag))
                {
                    Logger.Info(TaskNo + "重下堆垛机任务!");
                }
            }
        }
Ejemplo n.º 25
0
        /// <summary>
        /// 条码故障
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnBarcodeScan_Click(object sender, EventArgs e)
        {
            try
            {
                object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_124"));
                if (obj == null || obj.ToString() == "0")
                {
                    return;
                }

                string strBadFlag = "";

                switch (obj.ToString())
                {
                case "1":
                    strBadFlag = "左边条码无法读取";
                    break;

                case "2":
                    strBadFlag = "右边条码无法读取";
                    break;

                case "3":
                    strBadFlag = "两边条码无法读取";
                    break;

                case "4":
                    strBadFlag = "两边条码不一致";
                    break;
                }
                string   strBarCode;
                string[] strMessage = new string[3];
                strMessage[0] = "3";
                strMessage[1] = strBadFlag;
                while ((strBarCode = FormDialog.ShowDialog(strMessage, null)) != "")
                {
                    byte[] b = THOK.XC.Process.Common.ConvertStringChar.stringToByte(strBarCode, 40);
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_2_124_1", b); //写入条码
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_2_124_2", 1); //写入标识。
                    Context.Processes["NotReadBarcodeProcess"].Resume();
                    break;
                }
            }
            catch (Exception ex)
            {
                Logger.Error("THOK.XC.Process.Process_01.NotReadBarcodeProcess:" + ex.Message);
            }
        }
Ejemplo n.º 26
0
        /*  处理事项:
         *  倒库烟包 122
         */
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            try
            {
                object sta = ObjectUtil.GetObject(stateItem.State);
                if (sta == null || sta.ToString() == "0")
                {
                    return;
                }
                string[] str = new string[3];
                str[0] = "4";
                str[1] = "";
                str[2] = "";

                TaskDal   dal           = new TaskDal(); //更具任务号,获取TaskID及BILL_NO
                string[]  strInfo       = dal.GetTaskInfo(sta.ToString().PadLeft(4, '0'));
                DataTable dt            = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));
                DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]);
                //线程停止
                while (FormDialog.ShowDialog(str, dtProductInfo) != "")
                {
                    dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2");
                    dal.UpdateTaskState(strInfo[0], "2");

                    BillDal billdal = new BillDal();
                    billdal.UpdateInBillMasterFinished(strInfo[1], "1");

                    string writeItem = "01_2_122_";

                    int[] ServiceW = new int[3];
                    ServiceW[0] = int.Parse(strInfo[1]); //任务号
                    ServiceW[1] = 131;                   //目的地址
                    ServiceW[2] = 4;

                    WriteToService("StockPLC_01", writeItem + "1", ServiceW); //PLC写入任务

                    WriteToService("StockPLC_01", writeItem + "2", 1);        //PLC写入任务
                    break;
                }
                ;//线程继续。
            }
            catch (Exception ex)
            {
                Logger.Error("THOK.XC.Process.Process_01.MoveOutToStationProcess:" + ex.Message);
            }
        }
Ejemplo n.º 27
0
        /// <summary>
        /// 抽检,补料托盘入库;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSpotCheck_Click(object sender, EventArgs e)
        {
            object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_195"));

            if (obj == null || obj.ToString() == "0")
            {
                return;
            }
            string strTaskNo = obj.ToString().PadLeft(4, '0');

            string[] str = new string[3];
            if (int.Parse(strTaskNo) >= 9000 && int.Parse(strTaskNo) <= 9299) //补料
            {
                str[0] = "1";
            }
            else if (int.Parse(strTaskNo) >= 9300 && int.Parse(strTaskNo) <= 9499)//抽检
            {
                str[0] = "2";
            }

            str[1] = "";
            str[2] = "";
            TaskDal dal = new TaskDal(); //更具任务号,获取TaskID及BILL_NO

            string[]  strInfo       = dal.GetTaskInfo(strTaskNo);
            DataTable dt            = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));
            DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]);
            //线程停止
            string strValue = "";

            while ((strValue = FormDialog.ShowDialog(str, dtProductInfo)) != "")
            {
                dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2");
                string writeItem = "01_2_195_";
                if (str[0] == "1" || str[0] == "2")  //抽检,补料
                {
                    dal.UpdateTaskState(strInfo[0], "2");

                    BillDal billdal = new BillDal();
                    billdal.UpdateInBillMasterFinished(strInfo[1], "1");
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", 1); //PLC写入任务
                }
                break;
            }
        }
Ejemplo n.º 28
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*  处理事项:
             * 二楼出库条码校验
             *
             */
            try
            {
                object obj = ObjectUtil.GetObjects(stateItem.State);
                if (obj == null || obj.ToString() == "0")
                {
                    return;
                }

                string   TaskNo   = obj.ToString().PadLeft(4, '0');
                TaskDal  dal      = new TaskDal();
                string[] strValue = dal.GetTaskInfo(TaskNo);

                string WriteItem = "";
                string ReadItem  = "";
                switch (stateItem.ItemName)
                {
                case "02_1_340_1":
                    WriteItem = "02_2_340";
                    ReadItem  = "02_1_340_";
                    break;

                case "02_1_360_1":
                    WriteItem = "02_2_360";
                    ReadItem  = "02_1_360_";
                    break;
                }
                object objCheck = ObjectUtil.GetObject(WriteToService("StockPLC_02", ReadItem + "2"));
                if (objCheck.ToString() == "0")
                {
                    string BarCode = Common.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService("StockPLC_02", ReadItem + "3")));
                    dal.UpdateTaskCheckBarCode(strValue[0], BarCode);
                }
                WriteToService("StockPLC_02", WriteItem + "_3", 1);
            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_02.CheckProcess,原因:" + e.Message);
            }
        }
Ejemplo n.º 29
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*  处理事项:
             * 空托盘组出库申请,
             * 空托盘组到达指定出库位置。
             *
             */


            try
            {
                object obj = ObjectUtil.GetObject(stateItem.State);
                if (obj == null || obj.ToString() == "0")
                {
                    return;
                }

                string TARGET_CODE = "";
                switch (stateItem.ItemName)
                {
                case "01_1_158_1":
                    TARGET_CODE = "158";
                    break;

                case "01_1_200_1":
                    TARGET_CODE = "200";
                    break;

                default:
                    break;
                }
                PalletBillDal dal    = new PalletBillDal();
                string        Taskid = dal.CreatePalletOutBillTask(TARGET_CODE);
                TaskDal       task   = new TaskDal();
                DataTable     dt     = task.CraneTaskOut(string.Format("TASK_ID='{0}'", Taskid));
                if (dt.Rows.Count > 0)
                {
                    WriteToProcess("CraneProcess", "CraneInRequest", dt);
                }
            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_01.PalletOutRequestProcess:" + e.Message);
            }
        }
Ejemplo n.º 30
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            object obj = ObjectUtil.GetObject(stateItem.State);

            if (obj == null)
            {
                return;
            }
            if (obj.ToString().Trim().Length <= 0)
            {
                return;
            }
            string PalletBarcode = obj.ToString();

            string StationNo = "";
            int    state     = 1;

            switch (stateItem.ItemName)
            {
            case "ToInStation1":
                StationNo = "AX-" + stateItem.Name.Substring(5, 2) + "-00";
                break;

            case "ToInStation2":
                StationNo = "AX-" + stateItem.Name.Substring(5, 2) + "-01";
                state     = 2;
                break;
            }

            try
            {
                BLL.BLLBase bll = new BLL.BLLBase();

                DataParameter[] param = new DataParameter[] { new DataParameter("@PalletBarcode", PalletBarcode), new DataParameter("@AisleNo", stateItem.Name.Substring(5, 2)), new DataParameter("@State", state) };
                bll.ExecNonQueryTran("WCS.UpdateTaskStateByBarcode", param);

                Logger.Info("托盘/箱号:" + PalletBarcode + "到达入库站台:" + StationNo);
            }
            catch (Exception ex)
            {
                Logger.Error("InStockToStationProcess出错,原因:" + ex.Message);
            }
        }