Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: Grafik mittels einer JavaScript-Datei in HMI implementieren

  1. #11
    Registriert seit
    24.10.2018
    Beiträge
    16
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi, hab die Button Sache grad noch mal probiert und wenn ich die Function beim Desktop onAttached Event ausführe darfst du kein Fehler bekommen.

    Du kannst auch mal folgendermaßen versuchen ein Symbol zu lesen...

    TcHmi.Symbol.readEx2('%s%PLC1.MAIN.fb_xts1::vardistance%/s%', function (data) {
    if (data.error === TcHmi.Errors.NONE) {
    console.log(data);
    } else {
    console.alert("Symbol kann nicht gelesen werden");
    }
    });

  2. #12
    Registriert seit
    24.10.2018
    Beiträge
    16
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hey, mir ist noch was eingefallen wegen dem Button Problem, hast du den zufällig in einem anderen Content liegen ?

    Falls ja geh mal in die Eigenschaften des Contents und aktiviere "Preload this Partial" sonst wird er auch nicht gefunden.


    Gruß Mathias

  3. #13
    brandlpb ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.10.2018
    Beiträge
    20
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi,

    Mathias, vielen herzlichen Dank erstmal für deine Antwort und Unterstützung

    Ne, bei dem neuen Projekt habe ich erstmal keinen Content aber es ist trotzdem gut zu wissen, dass man darauf achten muss.

    So jetzt weiß ich, wo der Fehler war. Ich glaube, das Problem lag an .onAttachedEvent.

    1. Aber erstmal zum readEx-Befehl. Bei readEx bekomme ich jetzt keinen Fehler mehr aber der Wert wird in der Konsole nicht ausgespuckt. Die Stelle, wo sich console.log befindet, ist glaube ich auch nicht falsch. Sieht jemand da einen Fehler?
    JS_4.jpg
    Muss da vielleicht irgendwas mit einem Event aus dem Desktop oder vielleicht HTML Host verknüpft werden? Bei mir besteht die Funktion nur aus dem JavaScript und dem PLC-Programm, von wo der Wert gelesen werden soll.

    2. Bei get- und getTransform-Befehle habe ich insgesamt drei Seiten:
    i. JavaScript

    var myControl = TcHmi.Controls.get("TcHmiButton");
    var myTransList = myControl.getTransform();
    console.log(myTransList);

    JS_5.jpgJS_6.jpg

    Kann es sein, dass die Funktion gar nicht gültig ist, da bei mir im JavaScript "Register Function" (TcHmi.Functions.registerFunction('FunctionJS2', FunctionJS2)) nicht existiert? oder muss man vielleicht erstmal in der JSON-Datei des dazugehörigen Javascriptes über Edit/Define Function Metadata einen Parameter definieren?

    ii. Im grafischen Editor (Desktop) habe ich nur einen Control (Rechtangle) mit dem Transform und .onAttached-Event:

    JS_7.jpgJS_8.jpg

    iii. Als dritte Komponente, um get() und getTransform()-Befehle erfolgreich abzurufen, habe ich den im PLC deklarierten Wert.

    Ich freue mich, wenn mir jemand weiterhelfen könnte.

    Vielen Dank vorab schonmal.

  4. #14
    Registriert seit
    24.10.2018
    Beiträge
    16
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hi,

    also dein erstes Symbol Beispiel hab ich so noch nie verwendet, ist aber glaub ich eher dazu gedacht interne Symbole zu erstellen was man am Schlüsselwort "new" sieht, ich bezweifle das man Server Symbole so erstellen kann...du willst auch eigentlich nur was lesen oder ?

    Das Beispiel hier ist aus dem Infosys und sollte funktionieren, ansonsten muss irgendwas anderes faul sein.

    TcHmi.Symbol.readEx2('%s%PLC1.MAIN.sTest%/s%', function (data) {
    if (data.error === TcHmi.Errors.NONE) {
    // Handle result value...
    var value = data.value;
    console.log(value);
    } else {
    // Handle error...
    }
    });

  5. #15
    Registriert seit
    24.10.2018
    Beiträge
    16
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    So nun zur anderen Sache, bei deiner FunctionJS1 muss irgendwas schief gelaufen sein, dieses ...js:formatted hab ich so noch nicht gesehen und du versuchst einen Parameter zu übergeben obwohl dieser in der Funktion nicht mehr definiert ist.

    Und diese Zeile solltest du auf jeden Fall beibehalten...
    TcHmi.Functions.registerFunction('FunctionJS1', FunctionJS1);

    Denn Funktionsaufruf solltest du auch wirklich beim Desktop onAttached Event machen, bei dir ist der wohl auf dem HTML Host, es kommt natürlich drauf an was du mit deinem Java Script machen willst, aber so kannst du dir sicher sein das alle Controls verfügbar sind.

  6. #16
    brandlpb ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.10.2018
    Beiträge
    20
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi,

    ich habe jetzt deine Variante probiert, wieder kein Fehler aber auch kein Ergebnis in Console.

    JS_10.jpg

    Obwohl es mir schon ganz peinlich ist, muss ich nochmal nachfragen, da meine Programmierkenntnisse gerade nicht so toll sind.

    Ich glaube, mir fehlt da irgendein Befehl oder eine Zuweisung. Du tippst das nur in JavaScript, sonst machst du auch nichts anderes oder?

    Gruß
    Angehängte Grafiken Angehängte Grafiken

  7. #17
    Registriert seit
    24.10.2018
    Beiträge
    16
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Die Zeile fehlt immer noch... TcHmi.Functions.registerFunction('FunctionJS1', FunctionJS1);

    Leg die Funktion noch mal neu an...

  8. #18
    brandlpb ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.10.2018
    Beiträge
    20
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    @MathiasV, vielen Dank erstmal für die hilfreichen Antworten.

    Deine zweite Nachricht hatte ich nicht gelesen, als ich den letzten Beitrag posten wollte.

    Mit dem JavaScript (Function) Item klappt es immer noch nicht, also ich bekomme zwar keinen Fehler aber auch keine Werte unter Console zurück. Ich habe übrigens Verbose Level in der Projekteinstellungen auf 3 gesetzt. Das hat leider auch nichts gebracht.
    Am Ende sah das JavaScript so aus:

    Anhang 43457

    Da das jetzt mit JavaScript nicht geklappt hat, habe ich mich entschieden, die Befehle unter einem CodeBehind-Item einzugeben. Mit CodeBedind-Item funktioniert es tatsächlich einwandfrei. Ich kann wirklich nicht nachvollziehen, was bei JavaScript der Fehler war. Sieht jemand im obigen Bild einen Fehler? Vielleicht irgendwas mit "TcHmi.Functions.registerFunction('FunctionJS1', FunctionJS1)"?

    Nun kann ich irgendeinen Wert aus dem PLC lesen oder die Werte für Transformationseditor eines Controls in der Console abrufen.
    JS_12.jpgJS_13.jpg

    Jetzt muss ich die abgelesene Transform-Liste durch eine neue ersetzen und zwar mit den Werten aus dem PLC. Die Schreibweise, was ich für setTransform() eingebe, ist jedoch fehlerhaft.
    JS_14.jpgJS_15.jpg


    Hätte jemand eine Idee, wie die richtige Schreibweise von setTransform-Befehl aussieht?

    Der Link aus der Beckhoff-Seite bzgl. setTransform():
    https://infosys.beckhoff.de/english....62780507833661

    Vielen Dank schonmal!

  9. #19
    Registriert seit
    24.10.2018
    Beiträge
    16
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    also erstmal eine CodeBehind Datei ist auch ganz normales JavaScript, aber diese Dateien werden halt irgendwann beim initialisieren der HMI ausgeführt, sprich wenn du darin auf Controls zugreifen willst kann es sein das diese nicht gefunden werden, darum benutze ich diese nicht.

    Den Anhang konnte ich nicht öffnen, kannst du das Projekt zur Verfügung stellen ?

    Zum Transform Problem, so sieht die richtige Schreibweise aus...

    myControl.setTransform([{"transformType": "Translate", "x": "100", "xUnit": "px", "y": "100", "yUnit": "px", "z": "1", "zUnit": "px"}]);

    Und du darfst das nicht nochmal einer Variable zuweisen, wobei es eh besser ist "var" durch "let" zu ersetzen, da "var" global ist und so zu unerwünschten Problemen führen kann, aber das nur am Rande, spielt jetzt in dem einfachen Beispiel keine Rolle.

    Gruß Mathias

Ähnliche Themen

  1. HMI Server HTML5 / JavaScript
    Von mkersch im Forum CODESYS und IEC61131
    Antworten: 97
    Letzter Beitrag: 07.11.2018, 18:08
  2. Web2plc mit einer Variable eine Grafik vergrößern/verkleinern
    Von timeee im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 22.11.2012, 20:23
  3. Antworten: 4
    Letzter Beitrag: 10.09.2010, 10:58
  4. Datei drucken mittels Simatic S7 und WinCC
    Von 4everbmw im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 14.11.2006, 14:21
  5. VIPA 114 einbinden in S7 mittels GSD-Datei
    Von SPS_Woller im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 27.07.2005, 14:19

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •