private void C_SortingMain_Load(object sender, EventArgs e) { SortingLineTaskQueue.OnUpdateCSortingMainCubeEvent += new EventHandler <EventArgs>(cSortingTask_OnUpdateCSortingMainCubeEvent); CSortingTask.OnUpdateCSortingMainNumEvent += new EventHandler <UpdateCSortingMainNumEventArgs>(cSortingTask_OnUpdateCSortingMainNumEvent); CSortingTask.OnTaskMoved += new EventHandler <EventArgs>(CSortingTask_OnTaskMoved); if (IsVerifyPass()) { MonitorLog monitorLog; monitorLog = MonitorLog.NewMonitorLog(); monitorLog.LOGNAME = "数据库读取"; monitorLog.LOGINFO = "订单数据读取成功!"; monitorLog.LOGLOCATION = "数据库"; monitorLog.LOGTYPE = 1; monitorLog.Save(); } //获取任务列表 SortingLineTaskQueue.GetInstance().LoadSortingLineTasks(); LoadLinBox(); LoadCube(); chkshowqty.Checked = true; //电子标签初始化 ATOPTagSdk.InitTags(); }
/// <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); } } }
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); }
private void MainForm_Load(object sender, System.EventArgs e) { monitorLog = MonitorLog.NewMonitorLog(); monitorLog.LOGNAME = "系统信息"; monitorLog.LOGINFO = "分拣监控系统启动!"; monitorLog.LOGLOCATION = "系统"; monitorLog.LOGTYPE = 0; monitorLog.Save(); //LoadDefaultLayout(); SetDockWinTitle(); // Load Quick Access Toolbar layout if one is saved from last session... LoadQuickAccessToolbar(); SetSeverStatus(); //SetOutPort(); if (Convert.ToBoolean(ConfigurationManager.AppSettings["IsStart"])) { Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.Settings["IsStart"].Value = true.ToString(); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); labtaskstatus.Text = "任务已启动"; StartSorting(); } //Thread thread = new Thread(SetVision); //thread.Start(); }
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(); }
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(); }
private void MainForm_Load(object sender, System.EventArgs e) { labvision.Text = InTask.GetInTaskDate(); //SetVision(); monitorLog = MonitorLog.NewMonitorLog(); monitorLog.LOGNAME = "系统信息"; monitorLog.LOGINFO = "补货监控系统启动!"; monitorLog.LOGLOCATION = "系统"; monitorLog.LOGTYPE = 0; monitorLog.Save(); //LoadDefaultLayout(); SetDockWinTitle(); SetLog(global::MonitorMain.Properties.Resources.StartUpTime + DateTime.Now); // Load Quick Access Toolbar layout if one is saved from last session... LoadQuickAccessToolbar(); SetSeverStatus(); if (Convert.ToBoolean(ConfigurationManager.AppSettings["IsStart"])) { buttonItem23.Checked = true; StartInTask(); labtaskstatus.Text = "任务已启动"; } }
/// <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); } } }
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); } } }
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"); }
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(); //} }
/// <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); }
public void ReLoad() { if (IsVerifyPass()) { LoadOrder(); monitorLog = MonitorLog.NewMonitorLog(); monitorLog.LOGNAME = "数据库读取"; monitorLog.LOGINFO = "订单数据读取成功!"; monitorLog.LOGLOCATION = "数据库"; monitorLog.LOGTYPE = 1; monitorLog.Save(); } }
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(); }
/// <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); } }
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(); } }
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(); } }
//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(); }
//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; } }
/// <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(); } } }
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; } } } } }
/// <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; } } }
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(); } }
/// <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); }
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; } } } } }
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; } } } } }
/// <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); } }
/// <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); } }
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); }