using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Mesnac.Action.Base; using Mesnac.Controls.Base; using System.Windows.Forms; using Mesnac.Codd.Session; using Mesnac.Equips; using Mesnac.Equips.BaseInfo; using Mesnac.Action.Feeding.FeedingPlc; using Mesnac.Action.Feeding.BasicInfo; namespace Mesnac.Action.Feeding.FinishBatch { /// /// 连续执行计划关键业务实现类 /// public class OnFinishBatch : FeedingAction, IAction { private RuntimeParameter _runtime = null; private bool isRun = false; private void ReadData(object sender, Mesnac.Equips.ReadEventArgs e) { if (isRun) { return; } try { isRun = true; #region 0、执行胶料称输送控制 RunShuSongHandler.Execute(); #endregion #region 1、更新网络表中改设备的运行状态,移到计时器服务类中 //if (base.NetType == NetTypes.Net) //{ // new FeedingPlc.UpdateEquipState().Run(this._runtime); //} #endregion #region 2、记录停机记录 //1、获取最后一次存盘时间(保存至配置文件),最后存盘时间>=3分钟 && 密炼时间(PLC获取)== 0 时插入停机记录,并且每分钟更新一次停机结束时间 StartStopRecord.Run(); #endregion #region 3、设置报警状态 //SetAlermStatu new SetAlarmStatus().Run(this._runtime); #endregion #region 4、实时保存配方时间 int recipeTime = PlcData.Instance.CurrentMixingTime.LastValue.ToInt(); if (recipeTime > 0) { SaveDataPerLotHandler.RecipeTime = recipeTime; //记录配方密炼时间 StartStopRecord.LastMixRunTime = DateTime.Now; //记录密炼最后运行时间 StartStopRecord.IsInsert = false; //清除停机记录追加标识 } #endregion if (new FinishBatchFlag().Run()) //存盘信号判断 { new AutuExecuteNextPlan().Run(); //自动下传称量配方 } new SaveFinishBatch().Run(); //保存胶料生成数据 执行下一个计划 } finally { isRun = false; } } private static bool OnlyRun1Time = false; public void Run(RuntimeParameter runtime) { base.RunIni(runtime); //this._runtime = runtime; //if (OnlyRun1Time) //{ // return; //} //base.LogDebug("OnFinishBatch-数据存盘业务启动..."); //OnlyRun1Time = true; //foreach (BaseEquip equip in Mesnac.Equips.Factory.Instance.AllEquips.Values) //{ // equip.EquipReadData += ReadData; //} } } }