Sonstiges Beckhoff TwinCAT3 TE2000 Bar Chart Control als Stückzähler für die letzten 24 Stunden

Perold

Level-2
Beiträge
40
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Moin!

ich möchte in meiner Beckhoff Visu gerne ein Balkendiagramm einfügen, welches mir die Stückzahlen der letzten 24 Stunden einer Maschine anzeigt.

Dazu habe ich im SPS Code ein Array (arrLetzte24h : ARRAY [0..23] OF UDINT;) erstellt, in welches die Stückzahlen der derzeitigen Stunde auf Array Element 23 hochgezählt werden. Das Array rutscht dann bei Stundenwechsel jeweils um eine Stelle weiter und der älteste Wert fliegt raus (wird überschrieben) und Arrayelement 23 wird für die neu angebrochene Stunde wieder auf 0 gesetzt. Der Code für die Verschiebung des Arrays sieht so aus:

Code:
//Array letzte 24h
IF Zeitdaten.bStundenwechsel THEN
MemMove(
destAddr:=ADR(arrLetzte24h[0]), (* Zieladresse *)
srcAddr:=ADR(arrLetzte24h[1]), (* Quelladresse *)
n:=SIZEOF(arrLetzte24h)-4); (* Anzahl der zu verschiebenden Bytes *)
arrLetzte24h[23]:=0;


Wenn ich dieses Array nun mit meinem BarChart Control der HMI verknüpfe, bekomme ich folgendes Ergebnis:
Bildschirmfoto 2019-04-30 um 09.39.31.jpg


Nun gefällt mir die Beschriftung der X-Achse noch nicht. Diese ist nämlich starr und verändert sich je nach Tageszeit NICHT. Der ganz rechte Balken (23) ist der Stückzähler der aktuellen Stunde. Der Balken links danben ist der Stückzähler der Stunde davor usw.
Wie schaffe ich es nun, dass mir die X-Achsenbeschriftung die tatsächliche Stunde des Tages anzeigt und nicht starr auf 0-23 bleibt. Also wenn es nun 15:30Uhr ist soll der ganz rechte Balken die X-Achsbeschriftung 15 haben und der Balken links daneben die 14 usw.

Vielleicht hat ja jemand einen Hinweis in die richtige Richtung für mich.
 
Du musst einen XAxisFormat schreiben:
https://infosys.beckhoff.com/conten...18014403354571403.html?id=4440424244099153365

Also eine eigene HMI-Funktion (projekt knoten, add new item, function (javascript)) erstellen, welche einen Zahlenwert als ersten Parameter aufnimmt. Dann wird sie beim XAxisFormat im VS angeboten. Hier würde ich einfach mal prüfen, was diese Funktion so in deinem Fall erhält. Zurückgeben muss sie einen string. Da kannst du beliebiges ausgeben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Uhh.... JavaScript, lange ist es her.

Aber vielen Dank für den Fahrplan, das sollte ich hinbekommen. Rückmeldung folgt.
 
Zuletzt bearbeitet:
So, hier die Rückmeldung. Der JavaScript Code für die X-Achsbeschriftung funktioniert und sieht folgendermaßen aus:
Code:
(function (TcHmi) {





// name and parameters of the function defined in json
    var FunctionJS1 = function (par1) {
    




var now = new Date();
var hours = now.getHours();


// variable for the return value
      var value = par1;


// convert the parameter  
	  value = par1+hours+1;    
      if (value >= 24) {


// 24 abziehen
      value = value-24;
      }


// return the converted parameter
      return value;
};




TcHmi.Functions.registerFunction('FunctionJS1', FunctionJS1);
})(TcHmi);

Allerdings hat die Sache einen Haken.
Wenn ich den BarChart im Live View betrachte sieht er wie gewünscht aus:
Bildschirmfoto 2019-05-02 um 08.41.33.jpg

Und wenn ich via Browser auf die Visualisierung zugreife bekomme ich folgendes:
Bildschirmfoto 2019-05-02 um 08.42.02.jpg


Wo ist mein Fehler?
 
Lass dir die Variablen mit console.log(variable); in der Webentwickler-Konsole deines Browsers ausgeben. Dann siehst du welche Variable das Problem verursacht und kannst den Fehler eingrenzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für den Hinweis!
Folgenden Fehler finde ich in der Webentwickler Konsole des Browsers (Safari MacOS), leider weiß ich mit dieser Fehlermeldung nichts anzufangen :(. Was könnte ich probieren?

Bildschirmfoto 2019-05-02 um 09.31.20.jpg




edit: Jetzt funktioniert es, ich habe die JavaScript Funktion noch einmal komplett gelöscht und neu erstellt mit einem anderen Namen. Jetzt funktioniert die X-Achsenbeschriftung auch im Browser.

Vielen Dank an die beiden Helfer!
 
Zuletzt bearbeitet:
Jo der Fehler sagt ja, dass es mehrere Funktionen mit dem gleichen Namen gab.

Die Entwicklertools der Web-Browser sind zum debuggen unverzichtbar.
 
Zurück
Oben