Hallo zusammen,
ich möchte für unsere Maschinen im Werk gerne eine Art Zustandsanzeige erstelle, ähnlich wie auf dem Bild im Anhang (Zustandsanzeige).
Von den Maschinen werden zur Zeit diverse Parameter erfasst und in einer MSSQL-Datenbank gespeichert und auf einer firmeninternen Website dargestellt.
Anhand des Parameters "Geschwindigkeit" ermittle ich mir bereits, ob eine Maschine stillsteht oder produziert. Die so ermittelten Zeitspannen stelle ich in einem Diagramm dar (Zustandsanzeige-IST).
Ich würde nun gerne noch die Beschriftung der X-Achse dahingehend anpassen, dass z.B. Datum und Uhrzeit für den angezeigten Bereich dargestellt werden, so dass man eine Zuordnung des Zeitraumes von Produktion und Stillstand treffen kann.
Mir fällt nur kein gängiger Weg ein, wie ich das bewerkstelligen könnte.
Könnt Ihr mir eventuell einen Denkanstoß liefern, wo ich nachlesen könnte um das gewünschte Verhalten zu realisieren?
Habt recht vielen Dank im Voraus!
ich möchte für unsere Maschinen im Werk gerne eine Art Zustandsanzeige erstelle, ähnlich wie auf dem Bild im Anhang (Zustandsanzeige).
Von den Maschinen werden zur Zeit diverse Parameter erfasst und in einer MSSQL-Datenbank gespeichert und auf einer firmeninternen Website dargestellt.
Anhand des Parameters "Geschwindigkeit" ermittle ich mir bereits, ob eine Maschine stillsteht oder produziert. Die so ermittelten Zeitspannen stelle ich in einem Diagramm dar (Zustandsanzeige-IST).
C#-Quellcode
-
- protected void Button1_Click(object sender, EventArgs e)
- {
- List<DateTime> lstStillstand = new List<DateTime>();
- List<DateTime> lstProduktion = new List<DateTime>();
- int i = 0;
- DateTime dtStart;
- TimeSpan dauerStillstand = TimeSpan.Zero;
- TimeSpan dauerProduktion = TimeSpan.Zero;
- ChartTest.Series.Clear();
- foreach (DataRow dr in ds2.Tables[0].Rows)
- {
- string str = dr.ItemArray[1].ToString(); // Zeitstempel
- dtStart = DateTime.Parse(str);
- double Geschwindigkeit = Convert.ToDouble(dr.ItemArray[5]); // Geschwindigkeit
- if (Geschwindigkeit <= 0)
- {
- lstStillstand.Add(dtStart);
- for (int j = 0; j < lstStillstand.Count; j++)
- {
- if (j == 0)
- {
- dauerStillstand = TimeSpan.Zero;
- }
- else
- {
- dauerStillstand = lstStillstand[j] - lstStillstand[j - 1];
- }
- i++;
- }
- ChartTest.Series.Add("Stopp" + i.ToString());
- ChartTest.Series["Stopp" + i.ToString()].ChartType = SeriesChartType.StackedBar;
- ChartTest.Series["Stopp" + i.ToString()].XValueType = ChartValueType.DateTime;
- ChartTest.Series["Stopp" + i.ToString()].Points.AddXY("Konti 2", dauerStillstand.TotalMinutes.ToString());
- ChartTest.Series["Stopp" + i.ToString()].Color = Color.Red;
- }
- else
- {
- lstProduktion.Add(dtStart);
- for (int j = 0; j < lstProduktion.Count; j++)
- {
- if (j == 0)
- {
- dauerProduktion = TimeSpan.Zero;
- }
- else
- {
- dauerProduktion = lstProduktion[j] - lstProduktion[j - 1];
- }
- i++;
- }
- ChartTest.Series.Add("Läuft" + i.ToString());
- ChartTest.Series["Läuft" + i.ToString()].ChartType = SeriesChartType.StackedBar;
- ChartTest.Series["Läuft" + i.ToString()].XValueType = ChartValueType.DateTime;
- ChartTest.Series["Läuft" + i.ToString()].Points.AddXY("Konti 2", dauerProduktion.TotalMinutes.ToString());
- ChartTest.Series["Läuft" + i.ToString()].Color = Color.Lime;
- }
- }
- ChartTest.ChartAreas[0].AxisY.Interval = 10;
- ChartTest.ChartAreas[0].AxisY.IntervalType = DateTimeIntervalType.Minutes;
- ChartTest.ChartAreas[0].AxisY.LabelStyle.Format = "HH:mm:ss";
- ChartTest.ChartAreas[0].AxisY.IntervalAutoMode = IntervalAutoMode.FixedCount;
- }
Ich würde nun gerne noch die Beschriftung der X-Achse dahingehend anpassen, dass z.B. Datum und Uhrzeit für den angezeigten Bereich dargestellt werden, so dass man eine Zuordnung des Zeitraumes von Produktion und Stillstand treffen kann.
Mir fällt nur kein gängiger Weg ein, wie ich das bewerkstelligen könnte.
Könnt Ihr mir eventuell einen Denkanstoß liefern, wo ich nachlesen könnte um das gewünschte Verhalten zu realisieren?
Habt recht vielen Dank im Voraus!