using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data; using ICSharpCode.Core; using Mesnac.Equips; using Mesnac.Codd.Session; using Mesnac.Controls.Base; using Mesnac.Action.ChemicalWeighing.FinishBatch.SaveHelper; namespace Mesnac.Action.ChemicalWeighing.FinishBatch { /// /// 生产管理-后台业务-生产数据存盘业务服务类 /// public class FinishBatchService { #region 字段定义 /// /// 运行状态,true:已运行,false:未运行 /// private bool runState = false; #endregion #region 单例实现 private static FinishBatchService _instance = null; private FinishBatchService() { } public static FinishBatchService Instance { get { lock (String.Empty) { if (_instance == null) { _instance = new FinishBatchService(); } return _instance; } } } #endregion #region 启动服务 public void Start() { try { if (this.runState) { return; } lock (String.Empty) { Mesnac.Equips.Factory.Instance.SetMinHZReadDataEvent(ReadData); this.runState = true; } } catch(Exception ex) { ICSharpCode.Core.LoggingService.Error("自动更新计划状态服务异常:" + ex.Message, ex); } } #endregion #region 停止服务 public void Stop() { try { if (!this.runState) { return; } lock (String.Empty) { ICSharpCode.Core.LoggingService.Debug("开始停止生产数据存盘服务..."); Mesnac.Equips.Factory.Instance.ClearMinHZReadDataEvent(ReadData); ICSharpCode.Core.LoggingService.Debug("停止生产数据存盘服务完毕!"); this.runState = false; } } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error("停止生产数据存盘业务服务异常:" + ex.Message, ex); } } #endregion #region 事件处理 private void ReadData(object sender, Mesnac.Equips.ReadEventArgs e) { try { lock(String.Empty) { #region 0、实时刷新自动保存报警 SaveHelper.AlarmSaveHelper.Instance.Save(); #endregion #region 1、自动下传计划 ChemicalWeighingPlc.PlcPlanHelper.GHDownloadPlanData(); //List msgList = new List(); //ChemicalWeighingPlc.PlcPlanHelper.AutoDownloadPlanData(msgList); #endregion #region 2、将等待计划数写入PLC //ChemicalWeighingPlc.PlcPlanHelper.WaitPlanNumToPLC(); #endregion #region 3、更新计划状态 //ChemicalWeighingPlc.PlcPlanHelper.UpdatePlanStateFromPlc(); #endregion #region 4、HMI配方列表请求处理 //ChemicalWeighingPlc.PlcRecipeHelper.DownloadRecipeNameListToPLC(); #endregion #region 5、HMI计划添加请求处理 //ChemicalWeighingPlc.PlcPlanHelper.AutoAddPlan(); #endregion #region 6、HMI计划修改请求处理 //ChemicalWeighingPlc.PlcPlanHelper.ChangePlan(); #endregion #region 7、自动存盘处理 //FinishBatchHelper.SaveGHData(); ReportDryMixerSaveHelper.Instance.Save(); #endregion #region 8、更新物料名称 //ChemicalWeighingPlc.PlcPlanHelper.UpdateMaterialNameToPlc(); #endregion #region 9、修改PC心跳信号 //ChemicalWeighingPlc.PlcPlanHelper.HeartBeatChange(); #endregion #region 10、自动换班 ChemicalWeighingPlc.PlcPlanHelper.shiftIDAutoChange(); #endregion } } catch(Exception ex) { ICSharpCode.Core.LoggingService.Error(ex.Message, ex); } finally { #region 6、设置PCok信号为空闲 //#region 保存存盘 //BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.ReportSave_MixWeight_PC_PCok, new object[] { 1 }, false); //BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.ReportSave_Mix_PC_PCok, new object[] { 1 }, false); //BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.ReportSave_MillWeight_PC_PCok, new object[] { 1 }, false); //BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.ReportSave_Mill_PC_PCok, new object[] { 1 }, false); //#endregion //#region 配方交互 //BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.Mix_RecipeDL_PC_PCok, new object[] { 1 }, false); //#endregion #endregion } } #endregion } }