//------------------------------------------------------------------------------// // Update Element Methods // //------------------------------------------------------------------------------// private void UpdateElementColor(Tag t) { MyObjectInfo moi = (MyObjectInfo)t.MyObject; switch (moi.TagName) { //===================== //Maintenance Switches //===================== case "G_ES_GENERAL": MaintenanceSwitches.SetColor1 = Convert.ToInt32(t.Value); break; case "=A-0011-SHE01": MaintenanceSwitches.SetColor2 = Convert.ToInt32(t.Value); break; case "=A-0013-SHE01": MaintenanceSwitches.SetColor3 = Convert.ToInt32(t.Value); break; case "=A-0014-SHE01": MaintenanceSwitches.SetColor4 = Convert.ToInt32(t.Value); break; //case "175S2": // MaintenanceSwitches.SetColor5 = Convert.ToInt32(t.Value); // break; //case "175S3": // MaintenanceSwitches.SetColor6 = Convert.ToInt32(t.Value); // break; //===================== //Plant Switches //===================== case "G_FUSE_SWITCHED": if (Convert.ToInt32(t.Value) == 32) { PlantSwitches.SetColor1 = Convert.ToInt32(t.Value); LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), moi.TagName, moi.TagDescription + " " + "(" + t.Value + ")", 20); alLoggerToSQL.Add(li); alLoggerToUI.Add(li); stat_sFault = "+C110 FUSE SWITCH INTERRUPTED!!!"; bFault = true; } else { PlantSwitches.SetColor1 = Convert.ToInt32(t.Value); } break; case "G_FUSE_NSWITCHED": if (Convert.ToInt32(t.Value) == 32) { PlantSwitches.SetColor2 = Convert.ToInt32(t.Value); LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), moi.TagName, moi.TagDescription + " " + "(" + t.Value + ")", 20); alLoggerToSQL.Add(li); alLoggerToUI.Add(li); stat_sFault = "+C110 FUSE SWITCH NOT INTERRUPTED!!!"; bFault = true; } else { PlantSwitches.SetColor2 = Convert.ToInt32(t.Value); } break; case "+C110:OMF": if (Convert.ToInt32(t.Value) == 32) { PlantSwitches.SetColor3 = Convert.ToInt32(t.Value); LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), moi.TagName, moi.TagDescription + " " + "(" + t.Value + ")", 20); alLoggerToSQL.Add(li); alLoggerToUI.Add(li); stat_sFault = "+C110 OVERVOLTAGE MONITOR FAILURE!!!"; bFault = true; } else { PlantSwitches.SetColor3 = Convert.ToInt32(t.Value); } break; case "+C120:OMF": if (Convert.ToInt32(t.Value) == 32) { PlantSwitches.SetColor4 = Convert.ToInt32(t.Value); LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), moi.TagName, moi.TagDescription + " " + "(" + t.Value + ")", 20); alLoggerToSQL.Add(li); alLoggerToUI.Add(li); stat_sFault = "+C120 OVERVOLTAGE MONITOR FAILURE!!!"; bFault = true; } else { PlantSwitches.SetColor4 = Convert.ToInt32(t.Value); } break; case "+C110": if (Convert.ToInt32(t.Value) == 32) { PlantSwitches.SetColor5 = Convert.ToInt32(t.Value); LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), moi.TagName, moi.TagDescription + " " + "(" + t.Value + ")", 20); alLoggerToSQL.Add(li); alLoggerToUI.Add(li); stat_sFault = "+C110 POWER COMSUMPTION MEASUREMENT!!!"; bFault = true; } else { PlantSwitches.SetColor5 = Convert.ToInt32(t.Value); } break; case "+C120": if (Convert.ToInt32(t.Value) == 32) { PlantSwitches.SetColor6 = Convert.ToInt32(t.Value); LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), moi.TagName, moi.TagDescription + " " + "(" + t.Value + ")", 20); alLoggerToSQL.Add(li); alLoggerToUI.Add(li); stat_sFault = "+C120 POWER COMSUMPTION MEASUREMENT!!!"; bFault = true; } else { PlantSwitches.SetColor6 = Convert.ToInt32(t.Value); } break; ////===================== ////Bag Packer Bin 411 ////===================== //case "=A-5074-KCL10SA": // BagPacker411.SetColor1 = Convert.ToInt32(t.Value); // break; //case "=A-5074-KCL10RBP": // BagPacker411.SetColor2 = Convert.ToInt32(t.Value); // break; //case "=A-5074-KCL10RBC": // BagPacker411.SetColor3 = Convert.ToInt32(t.Value); // break; //case "=A-5074-KCL10PO": // BagPacker411.SetColor4 = Convert.ToInt32(t.Value); // //If the signal is on, colour all other packing machines green, else gray // if (Convert.ToInt32(t.Value) == 3) // { // pageBPL2._5069.MotorColor = 3; // pageBPL2._5070_1.MotorColor = 3; // pageBPL2._5070_2.MotorColor = 3; // pageBPL2._5075.ScaleColor = 3; // pageBPL2._5071.BaggingStationColor = 3; // pageBPL2._5072.MotorColor = 3; // } // else // { // pageBPL2._5069.MotorColor = 1; // pageBPL2._5070_1.MotorColor = 1; // pageBPL2._5070_2.MotorColor = 1; // pageBPL2._5075.ScaleColor = 1; // pageBPL2._5071.BaggingStationColor = 1; // pageBPL2._5072.MotorColor = 1; // } // break; //case "=A-5074-KCL10SE": // BagPacker411.SetColor5 = Convert.ToInt32(t.Value); // break; //case "=A-5074-KCL10A": // pageBPL2._5074A.MonitorColor = Convert.ToInt32(t.Value); // string sStatus2 = pageBPL2._5074A.Status_Alarm; // pageBPL2._5074A.Description_Alarm = moi.TagName + " " + moi.TagDescription; // string sFaultString2 = moi.TagDescription + " (" + sStatus2 + ")"; // bool bIsInFault2 = pageBPL2._5074A.Fault_Alarm; // RegisterEvent(bIsInFault2, sFaultString2, moi.TagName, Convert.ToInt32(t.Value), !bFirstTagRead); // break; } }
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- /// <summary> /// Handles additional Element Tag Change events /// </summary> private void INGEARS7_AdditionalTag_Changed(object sender, EventArgs e) { if (bPLCCommsGood & PLC1_R.IsConnected) { Tag t = sender as Tag; MyObjectInfo moi = (MyObjectInfo)t.MyObject; // //Tag is a bad read // if (t.QualityCode == 0) { if (!alBadTags.Contains(moi.TagName)) { lblBadTags.Dispatcher.BeginInvoke( System.Windows.Threading.DispatcherPriority.Normal, new Action( delegate() { lblBadTags.Content += " *" + moi.TagName; } )); alBadTags.Add(moi.TagName); } } else { UpdateAdditionalElementColor(t); // //Update the values in the Reporting OnTick hashtable // if (moi.RecOnTick == 1) { htRecTickTagValues[moi.TagName] = t.Value.ToString(); } // //Only start logging after all smart tags have been loaded for the first time // if (!bFirstAdditionalTagRead) { if (moi.RecOnChange == 1) { LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), moi.TagName, t.Value); alReportingLog.Add(li); } } } } }
/// <summary> /// Writes all data in the Arraylist to SQL /// </summary> public void WriteReportingLogToSQL() { try { ArrayList alReportingLogLOCAL = new ArrayList(); alReportingLogLOCAL.AddRange(alReportingLog); alReportingLog.Clear(); Hashtable htLOCAL = new Hashtable(htRecTickTagValues); foreach (string sKey in htLOCAL.Keys) { LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), sKey, htLOCAL[sKey]); alReportingLogLOCAL.Add(li); } if (alReportingLogLOCAL.Count > 0 && bRunSQLCleanup == false) { StringBuilder sb = new StringBuilder(); sb.Append("INSERT INTO HistoricLog VALUES "); for (int i = 0; i < alReportingLogLOCAL.Count; i++) { LogItem li = (LogItem)alReportingLogLOCAL[i]; sb.Append("('" + li.ts_DateTime + "'," + li.OADate + ",'" + li.ObjectName + "','" + li.Value + "'),"); } sb.Remove(sb.Length - 1, 1); //remove Last , try { using (SqlConnection conn = new SqlConnection(SqlConnectionString)) { conn.Open(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = sb.ToString(); int rowsInserted = cmd.ExecuteNonQuery(); } } catch (Exception ex) { MessageBox.Show("Insert To HistoricLog --> " + ex.Message, "Error Adding Log Item", MessageBoxButton.OK, MessageBoxImage.Error); } } alReportingLogLOCAL.Clear(); } catch (Exception ex) { MessageBox.Show("Error Writing Log --> " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
//OVERLOAD public void UIInteraction_Change(object sender, string Message) { Control c = (Control)sender; string ControlName = c.Name; DateTime EventTime = DateTime.Now; if (ControlName == "btnControlAcknowledge") { LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(); myLinearGradientBrush.StartPoint = new Point(0, 0); myLinearGradientBrush.EndPoint = new Point(0, 10); myLinearGradientBrush.GradientStops.Add(new GradientStop(Colors.White, 0.0)); myLinearGradientBrush.GradientStops.Add(new GradientStop(Colors.Lime, 0.1)); txtAlarms.Background = myLinearGradientBrush; txtAlarms.Text = "No Active Alarms"; txtAlarms.FontSize = 10; timerAlarmFlash.Stop(); txtAlarms.Foreground = Brushes.Black; } LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), ControlName, Message, 30); alLoggerToSQL.Add(li); }
/// <summary> /// Log any change that is made by the user of the system /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void UIInteraction_Change(object sender, RoutedEventArgs e) { Control c = (Control)sender; string ControlName = c.Name; string ControlSource = e.Source.ToString(); string ControlEvent = e.RoutedEvent.ToString(); DateTime EventTime = DateTime.Now; if (ControlName == "btnControlAcknowledge") //Stop the alarm flash timer and set the active alarm tab to green { LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(); myLinearGradientBrush.StartPoint = new Point(0, 0); myLinearGradientBrush.EndPoint = new Point(0, 10); myLinearGradientBrush.GradientStops.Add(new GradientStop(Colors.White, 0.0)); myLinearGradientBrush.GradientStops.Add(new GradientStop(Colors.Lime, 0.1)); txtAlarms.Background = myLinearGradientBrush; txtAlarms.Text = "No Active Alarms"; txtAlarms.FontSize = 10; timerAlarmFlash.Stop(); txtAlarms.Foreground = Brushes.Black; } LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), ControlName, "Button Pressed [" + stat_iActiveLineNumber + "]", 30); alLoggerToSQL.Add(li); }
/// <summary> /// Registers the Tag that has just changed to the Logger (UI and SQL) /// </summary> public void RegisterEvent(bool bIsInFault, string sFaultString, string Tagname, int iStateCode, bool bLogThisChange) { if (bIsInFault) { txtAlarms.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate() { LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(); myLinearGradientBrush.StartPoint = new Point(0, 0); myLinearGradientBrush.EndPoint = new Point(0, 10); myLinearGradientBrush.GradientStops.Add(new GradientStop(Colors.White, 0.0)); myLinearGradientBrush.GradientStops.Add(new GradientStop(Colors.Red, 0.1)); txtAlarms.Background = myLinearGradientBrush; txtAlarms.Text = sFaultString; txtAlarms.FontSize = 12; })); timerAlarmFlash.Start(); } if (!bFirstTagRead && bLogThisChange) { int ErrorCode; //Check if error code is fault or event if (!bIsInFault) { ErrorCode = 10; //Event } else { ErrorCode = 20; //Fault } LogItem li = new LogItem(DateTime.Now, DateTime.Now.ToOADate(), Tagname, sFaultString + "(" + iStateCode + ")", ErrorCode); alLoggerToSQL.Add(li); alLoggerToUI.Add(li); } }