using DataBlockHelper; using DataBlockHelper.DBHelpers; using HslCommunication; using log4net; using log4net.Config; using Mesnac.Action.Base; using Mesnac.Action.ChemicalWeighing.FreeDb; using Mesnac.Action.ChemicalWeighing.LjMaterial; using Mesnac.Basic; using Mesnac.Controls.Base; using Mesnac.Core.Service; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; namespace Mesnac.Action.ChemicalWeighing.ManualControl { public class InitAction : ChemicalWeighingAction, IAction { DB2107Helper DB2107; DB2103Helper DB2103; List McControllist; List _McControllist; OperateResult Read; byte[] content; DbMCControl materialGridControl; Timer timer; int flag = 0; IBaseControl WaterActualValue1; IBaseControl WaterActualValue2; IBaseControl WaterActualValue3; IBaseControl WaterActualValue4; IBaseControl WaterMetValue1; IBaseControl WaterMetValue2; IBaseControl WaterMetValue3; IBaseControl WaterMetValue4; IBaseControl SpiralActValue1; IBaseControl SpiralActValue2; IBaseControl SpiralActValue3; IBaseControl SpiralActValue4; IBaseControl MetageState1; IBaseControl MetageState2; IBaseControl MetageState3; IBaseControl MetageState4; IBaseControl WaterOutState1; IBaseControl WaterOutState2; IBaseControl WaterOutState3; IBaseControl WaterOutState4; IBaseControl SpiralState1; IBaseControl SpiralState2; IBaseControl SpiralState3; IBaseControl SpiralState4; IBaseControl SetWaterValue1; IBaseControl SetWaterValue2; IBaseControl SetWaterValue3; IBaseControl SetWaterValue4; IBaseControl SetSpiralValue1; IBaseControl SetSpiralValue2; IBaseControl SetSpiralValue3; IBaseControl SetSpiralValue4; bool State1; bool State2; byte Byt; public void Run(RuntimeParameter runtime) { DB2107 = new DB2107Helper(); DB2103 = new DB2103Helper(); base.RunIni(runtime); //必须要调用的 McControllist = GetAllDbMCControlsByOption(DbOptionTypes.InitData); _McControllist = GetAllDbMCControlsByOption(DbOptionTypes.Modify); WaterActualValue1 = GetBaseControl("WaterActualValue1"); WaterActualValue2 = GetBaseControl("WaterActualValue2"); WaterActualValue3 = GetBaseControl("WaterActualValue3"); WaterActualValue4 = GetBaseControl("WaterActualValue4"); WaterMetValue1 = GetBaseControl("WaterMetValue1"); WaterMetValue2 = GetBaseControl("WaterMetValue2"); WaterMetValue3 = GetBaseControl("WaterMetValue3"); WaterMetValue4 = GetBaseControl("WaterMetValue4"); SpiralActValue1 = GetBaseControl("SpiralActValue1"); SpiralActValue2 = GetBaseControl("SpiralActValue2"); SpiralActValue3 = GetBaseControl("SpiralActValue3"); SpiralActValue4 = GetBaseControl("SpiralActValue4"); MetageState1 = GetBaseControl("MetageState1"); MetageState2 = GetBaseControl("MetageState2"); MetageState3 = GetBaseControl("MetageState3"); MetageState4 = GetBaseControl("MetageState4"); WaterOutState1 = GetBaseControl("WaterOutState1"); WaterOutState2 = GetBaseControl("WaterOutState2"); WaterOutState3 = GetBaseControl("WaterOutState3"); WaterOutState4 = GetBaseControl("WaterOutState4"); SpiralState1 = GetBaseControl("SpiralState1"); SpiralState2 = GetBaseControl("SpiralState2"); SpiralState3 = GetBaseControl("SpiralState3"); SpiralState4 = GetBaseControl("SpiralState4"); SetWaterValue1 = _GetBaseControl("SetWaterValue1"); SetWaterValue2 = _GetBaseControl("SetWaterValue2"); SetWaterValue3 = _GetBaseControl("SetWaterValue3"); SetWaterValue4 = _GetBaseControl("SetWaterValue4"); SetSpiralValue1 = _GetBaseControl("SetSpiralValue1"); SetSpiralValue2 = _GetBaseControl("SetSpiralValue2"); SetSpiralValue3 = _GetBaseControl("SetSpiralValue3"); SetSpiralValue4 = _GetBaseControl("SetSpiralValue4"); materialGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "ManualLogGridView").FirstOrDefault(); LogInsertToDatabase(); SetWaterValue1.MCValue = Setting.Default.SetWaterValue1; SetWaterValue2.MCValue = Setting.Default.SetWaterValue2; SetWaterValue3.MCValue = Setting.Default.SetWaterValue3; SetWaterValue4.MCValue = Setting.Default.SetWaterValue4; SetSpiralValue1.MCValue = Setting.Default.SetSpiralValue1; SetSpiralValue2.MCValue = Setting.Default.SetSpiralValue2; SetSpiralValue3.MCValue = Setting.Default.SetSpiralValue3; SetSpiralValue4.MCValue = Setting.Default.SetSpiralValue4; MesnacServiceManager.Instance.LoggingService.Info("配置已加载"); ManualLogControl("配置已加载 "); timer = new Timer(); timer.Interval = 1000; timer.Enabled = true; timer.Tick += new EventHandler(ReadFromPlc);//添加事件 } private void ReadFromPlc(object sender, EventArgs e) { flag += 1; if (flag > 10) { flag = 0; LogInsertToDatabase(); } if (GetAllDbMCControlsByOption(DbOptionTypes.InitData).Count == 0) { timer.Stop(); timer.Dispose(); } WaterActualValue1.MCValue = DB2107.Weight.WScale_3.ActWeight; WaterActualValue2.MCValue = DB2107.Weight.WScale_1.ActWeight; WaterActualValue3.MCValue = DB2107.Weight.WScale_4.ActWeight; WaterActualValue4.MCValue = DB2107.Weight.WScale_2.ActWeight; Read = PlcConnect.Instance.Read("DB2119.24.0", 2); content = Read.Content; WaterMetValue1.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0); Read = PlcConnect.Instance.Read("DB2119.4.0", 2); content = Read.Content; WaterMetValue2.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0); Read = PlcConnect.Instance.Read("DB2119.34.0", 2); content = Read.Content; WaterMetValue3.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0); Read = PlcConnect.Instance.Read("DB2119.14.0", 2); content = Read.Content; WaterMetValue4.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0); SpiralActValue1.MCValue = DB2103.DM2ASF01.ACT_Speed; SpiralActValue2.MCValue = DB2103.DM2BSF01.ACT_Speed; SpiralActValue3.MCValue = DB2103.DM2CSF01.ACT_Speed; SpiralActValue4.MCValue = DB2103.DM2DSF01.ACT_Speed; Read = PlcConnect.Instance.Read("DB2119.28.0", 1); content = Read.Content; Byt = content[0]; State1 = Byt.GetBit(2); State2 = Byt.GetBit(6); if (State1) { MetageState1.MCValue = "正在称量"; } else { MetageState1.MCValue = "停止称量"; } if (State2) { WaterOutState1.MCValue = "正在排水"; } else { WaterOutState1.MCValue = "停止排水"; } Read = PlcConnect.Instance.Read("DB2119.8.0", 1); content = Read.Content; Byt = content[0]; State1 = Byt.GetBit(2); State2 = Byt.GetBit(6); if (State1) { MetageState2.MCValue = "正在称量"; } else { MetageState2.MCValue = "停止称量"; } if (State2) { WaterOutState2.MCValue = "正在排水"; } else { WaterOutState2.MCValue = "停止排水"; } Read = PlcConnect.Instance.Read("DB2119.38.0", 1); content = Read.Content; Byt = content[0]; State1 = Byt.GetBit(2); State2 = Byt.GetBit(6); if (State1) { MetageState3.MCValue = "正在称量"; } else { MetageState3.MCValue = "停止称量"; } if (State2) { WaterOutState3.MCValue = "正在排水"; } else { WaterOutState3.MCValue = "停止排水"; } Read = PlcConnect.Instance.Read("DB2119.18.0", 1); content = Read.Content; Byt = content[0]; State1 = Byt.GetBit(2); State2 = Byt.GetBit(6); if (State1) { MetageState4.MCValue = "正在称量"; } else { MetageState4.MCValue = "停止称量"; } if (State2) { WaterOutState4.MCValue = "正在排水"; } else { WaterOutState4.MCValue = "停止排水"; } Read = PlcConnect.Instance.Read("DB2119.60.0", 1); content = Read.Content; Byt = content[0]; State1 = Byt.GetBit(2); if (State1) { SpiralState1.MCValue = "正在螺旋"; } else { SpiralState1.MCValue = "停止螺旋"; } Read = PlcConnect.Instance.Read("DB2119.82.0", 1); content = Read.Content; Byt = content[0]; State1 = Byt.GetBit(2); if (State1) { SpiralState2.MCValue = "正在螺旋"; } else { SpiralState2.MCValue = "停止螺旋"; } Read = PlcConnect.Instance.Read("DB2119.104.0", 1); content = Read.Content; Byt = content[0]; State1 = Byt.GetBit(2); if (State1) { SpiralState3.MCValue = "正在螺旋"; } else { SpiralState3.MCValue = "停止螺旋"; } //Read = PlcConnect.Instance.Read("DB2119..0", 1); //content = Read.Content; //Byt = content[0]; //State1 = Byt.GetBit(2); //if (State1) //{ // MetageState4.MCValue = "正在螺旋"; //} //else //{ // MetageState4.MCValue = "停止螺旋"; //} } private IBaseControl GetBaseControl(string name) { return McControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey == name).FirstOrDefault().BaseControl; } private IBaseControl _GetBaseControl(string name) { return _McControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey == name).FirstOrDefault().BaseControl; } private void LogInsertToDatabase() { DataTable table = DBHelp.GetTable(@"select top 100 id, logtext, logtime from Manual_Log order by id desc"); if (this.materialGridControl != null && this.materialGridControl.BaseControl != null) { this.materialGridControl.BaseControl.BindDataSource = null; this.materialGridControl.BaseControl.BindDataSource = table; } else { ICSharpCode.Core.LoggingService.Warn("手动操作日志信息控件为Null..."); } } private void ManualLogControl(string logName) { var Log = new ManualLogEntity() { logtext = logName, logtime = DateTime.Now, userid = string.IsNullOrWhiteSpace(UserInfo.Instance.UserName) ? "Edit" : UserInfo.Instance.UserName }; FreeSqlUnit.Instance.Insert(Log).ExecuteIdentity(); } } }