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

Page 5 of 5 FirstFirst ... 345
Results 41 to 48 of 48

Thread: S7 -1200 HTML Array of Struct lesen mit JavaScript

  1. #41
    Malaus is offline Neuer Benutzer
    Themenstarter
    Join Date
    12.02.2021
    Posts
    21
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So sieht es in der SPS aus:
    Code:
     
    "Plc2Web".testString := CONCAT(IN1 := INT_TO_STRING("Plc2Web".age),                                   IN2 := '/',
                                       IN3 := 'TestText',
                                       IN4 := '/',
                                       IN5 := DINT_TO_STRING("Plc2Web".position));
    aktuell der Code auf page-js.js:
    Code:
    $(document).ready(function(){
      $.ajaxSetup({ cache: false });
      setInterval(function() {          
        $.get('./read.htm', function(result){
          var Word = result.split("/");
          $('#age').html(Word[1]);
          
          //$('#age').text(Word[0].replace(/('|+)/g, ''));
          console.log('#age ' + Word[0]);
          console.log('#age2 ' + Word[1]);
          console.log('#age text ' + $("#age").html());
          
        });
      },1000);
    });
    
    read.htm:
    Code:
       :="Plc2Web".testString:
    
    
    index.html
    Code:
    :="Plc2Web".testString:
      <td id="age">k</td>
      <td id="ligthBarrier"></td>
    
    In der console:

    Code:
    #age  +0
    #age2 TestText
    #age text undefined
    Wie schon mal erwähnt, habe ich den testString nur nochmal eingefügt, um nachzuverfolgen, dass dieser auch gelesen werden kann.

  2. #42
    Malaus is offline Neuer Benutzer
    Themenstarter
    Join Date
    12.02.2021
    Posts
    21
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Default

    Wenn ich

    Code:
    console.log('#word ' + JSON.stringify(Word));
    kommt das hier:

    Code:
    #word ["\r\n\r\n\r\n   +0","TestText","+0\r\n"]

  3. #43
    Join Date
    03.02.2016
    Location
    Steiermark/Austria
    Posts
    135
    Danke
    22
    Erhielt 16 Danke für 12 Beiträge

    Default

    Quote Originally Posted by Malaus View Post

    In der console:

    Code:
    #age  +0
    #age2 TestText
    #age text undefined
    Das heißt, das Aufsplitten funktioniert. Ist "Plc2Web".age in der SPS auch 0?

    Du verwendest also eine Seite fürs Anzeigen, und eine eigene für den javascript Code?

  4. #44
    Malaus is offline Neuer Benutzer
    Themenstarter
    Join Date
    12.02.2021
    Posts
    21
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Default

    Quote Originally Posted by JoGi65 View Post
    Das heißt, das Aufsplitten funktioniert. Ist "Plc2Web".age in der SPS auch 0?

    Du verwendest also eine Seite fürs Anzeigen, und eine eigene für den javascript Code?
    Ja die ist momentan 0. Wenn ich sie verändere, wird es auch sofort in der Console angezeigt.

    Ja ich verwende eine eigene Seite für JavaScript. Ist einfach übersichtlicher.

    Hast du eine Idee, woran es hapert?


    EDIT

    Code:
    $('#age').html('hallohallo');
    Hier zeigt er mir auch nichts an. - undefinded
    Kann das sein, dass es nicht weiß wo age ist? Also es meint, age wäre auf der read.htm?
    Last edited by Malaus; 23.02.2021 at 14:02.

  5. #45
    Join Date
    03.02.2016
    Location
    Steiermark/Austria
    Posts
    135
    Danke
    22
    Erhielt 16 Danke für 12 Beiträge

    Default

    Als erstes würde ich jetzt einmal den String und das Zerlegen wirklich gleich machen, damit nicht irgendein Teil nicht richtig funktioniert.

    Also 3 Daten senden und drei Daten aufteilen.

    Code:
    $(document).ready(function(){
      $.ajaxSetup({ cache: false });
      setInterval(function() {          
        $.get('./read.htm', function(result){
          var Word = result.split("/");
          $('#age').html(Word[0]);
          $('#age1').html(Word[1]);
          $('#age_text').html(Word[2]);
        });
      },1000);
    });
    AnzeigeSeite

    Code:
      <td id="age">k</td>
      <td id="age1">xy</td>
      <td id="age_text">age_text</td>
    Hast Du es schon auf einer Seite versucht?

    Ich verwende zwar auch eigene javascript Seiten für mehrfach verwendete Gsetzaln, aber die Abfrage der Daten ist immer auf der Anzeigeseite.
    Mir ist momentan nicht klar, wie Du die Daten von der js Seite auf die Anzeigeseite übergibst.

  6. #46
    Malaus is offline Neuer Benutzer
    Themenstarter
    Join Date
    12.02.2021
    Posts
    21
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Default

    Mir ist momentan nicht klar, wie Du die Daten von der js Seite auf die Anzeigeseite übergibst.
    mit dem hier:
    Code:
    <scripttype="text/javascript"src="page-js.js"></script>

    Ich habe inzwischen den Fehler gefunden. Der hat irgendein Problem mit den

    Code:
    <td id="age">k</td>
      <td id="ligthBarrier"></td>
    Daher habe ich das mal entfernt und eine vorhandene Id benutzt:

    Code:
    ...
    <div class="container1">
        <table class="table table-dark table-hover table-sm">
          <thead>
            <tr>
              <th scope="col">Alarm</th>
              <th scope="col"></th>
              <th scope="col"></th>
            </tr>
          </thead>
          <tbody>
              <tr>
                <th scope="row">Alarm Status</th>
                <td id="alarmONOFF"></td>
                <td>
                  <form method="post" action="">
    ...
    
    Und siehe da, bei alarmONOFF, wird der Wert von Word[0] angezeigt.
    Keine Ahnung, wieso es die von oben nicht annimmt bzw was da falsch ist. Aber es funktioniert nun.

    DANKE!

  7. #47
    Join Date
    29.03.2004
    Posts
    7,592
    Danke
    171
    Erhielt 2,257 Danke für 1,623 Beiträge

    Default

    Vieles vereinfachen würde es wenn du in der SPS einen String mit einem kompletten Javascript Objekt schreibst, dann musst du überhaupt nichts mehr zerlegen und kannst direkt mit dem Namen auf den Wert zugreifen.

    Beispielsweise schreibst du in der SPS:
    Code:
    {
      "TempOben":"12.3",
      "TempUnten":"13.3",
      "Durchfluss":"76",
      "phWert":"7.2",
      "TestText":"Hallo"
    }
    dann kannst du wenn du das als Json Objekt abfragst und das Ergebnis in eine Variable "daten" schreibst, mit daten["TempUnten"] auf den Wert zugreifen.

    Das hat den Nachteil, dass in der SPS einen relativ langer String zusammengebaut werden muss.
    Hier könnte man aber Komfort und Geschwindigkeit kombinieren, in dem man in der SPS nur das Datenarray schreibt, aber als Javascript Array ["12.3", "45.6"] und das dann mit einem anderen Array mit den Namen was man z.B. fest hinterlegen kann kombiniert, und daraus dann ein Objekt macht.

    Beispiel:
    Code:
    var values = ["12.3", "13.4", "76", "7.2", "Hallo"];
    var names = ["TempOben", "TempUnten", "Durchfluss", "pHWert", "TestText"];
    
    var daten = {};
    
    for (let i = 0; i < values.length; i++) {
        daten[names[i]] = values[i];
    }
    
    console.log(daten["TempOben"]);
    Da kann man vieles vereinfachen was die ganze Sache wartbarer und nachvollziehbarer macht. Denkbar wären auch fertige GUI Elemente die automatisch über Events mit den Variablenwerten aktualisiert werden. dat.gui ist z.B. so eine einfache Bibliothek mit dem sich einfache Elemente wie Eingabefelder, Schieberegler usw. einfach mit Variablen verbinden lassen. Das Design ist dort aber sehr festgelegt, weil das nur für kurze Tests gedacht war.

  8. #48
    Malaus is offline Neuer Benutzer
    Themenstarter
    Join Date
    12.02.2021
    Posts
    21
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Beispielsweise schreibst du in der SPS:
    Code:
    {
    "TempOben":"12.3",
    "TempUnten":"13.3",
    "Durchfluss":"76",
    "phWert":"7.2",
    "TestText":"Hallo" }
    Das als Json Datei anlegen? Weil direkt als Baustein kann ich das doch nicht anlegen.

Similar Threads

  1. Replies: 2
    Last Post: 18.03.2020, 15:15
  2. Replies: 4
    Last Post: 23.04.2017, 02:08
  3. Step 7 Web2PLC javascript array
    By SPS_Progger in forum Simatic
    Replies: 0
    Last Post: 18.02.2014, 09:44
  4. Problem mit ARRAY - STRUCT
    By Jörg_24 in forum Simatic
    Replies: 14
    Last Post: 31.03.2011, 16:08
  5. Problem mit lesen von struct
    By cyberlight in forum Simatic
    Replies: 4
    Last Post: 01.07.2005, 07:35

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •