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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: GetTagRaw in VBS

  1. #1
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.

    Ich habe eine Rohdatenvariable mit 10.000Byte Inhalt, die ich laut der Siemens-Doku (http://support.automation.siemens.com/WW/view/de/37873547
    ) eingerichtet habe.
    In dem Beispiel wird auf C-Script eingegangen, ich arbeite aber mit VBS, da ich Funktionen hier nutze, die nur in VBS umsetzbar sind (bzw. mit wenig Aufwand).

    Nun stellt sich die Frage, wie ich den Befehl GetTagRaw in VBS schreiben kann?

    Reicht es, wenn ich
    Code:
    Dim CrudeData
    Code:
    Set CrudeData = HMIRuntime.Tags("_Senden_Puffer")
       CrudeData.Read
       CrudeDataPuffer = CrudeData.Value
    


    schreibe?

    Kann ich bei VBS einfach so eine Variable definieren und der 10.000Byte übergeben?

    Oder was kann ich hier machen?
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN
    Zitieren Zitieren GetTagRaw in VBS  

  2. #2
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von Krumnix Beitrag anzeigen
    Nun stellt sich die Frage, wie ich den Befehl GetTagRaw in VBS schreiben kann?
    VBS kennt leider keinen entsprechenden Befehl zu GetTagRaw.

    Man muss also von Hand die Rohdaten in die entsprechenden S7-Datentypen umrechnen und umgekehrt die S7-Datentypen in die Rohdaten.

    Als Programmbeispiel siehe dazu das beigefügte VB-Script für die Umrechnung einer IEEE 754 Single Precision Gleitkommazahl (32-Bit-Gleitkommazahl)
    in STEP 7 Rohdaten (4-Byte-Rohdaten).

    Gruß Kai
    Angehängte Dateien Angehängte Dateien

  3. Folgende 2 Benutzer sagen Danke zu Kai für den nützlichen Beitrag:

    Krumnix (06.03.2012),rostiger Nagel (02.03.2012)

  4. #3
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard

    Zitat Zitat von Krumnix Beitrag anzeigen

    Reicht es, wenn ich
    Code:
    Dim CrudeData
    Code:
    Set CrudeData = HMIRuntime.Tags("_Senden_Puffer")
       CrudeData.Read
       CrudeDataPuffer = CrudeData.Value
    


    schreibe?
    Ja, so geht das. Du kannst dann die einzelnen Bytes mit CrudeDataPuffer(Bytenummer) auslesen.

    Zitat Zitat von Krumnix Beitrag anzeigen


    Kann ich bei VBS einfach so eine Variable definieren und der 10.000Byte übergeben?

    Im TIA-Portal V11 war bei mir mit ca. 200 Bytes Schluss. Warum, konnte mir keiner erklären.

  5. #4
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    In der folgenden Zeile
    Code:
     CrudeDataPuffer = CrudeData.Value 

    meckert mir apdiag an, das der Typ unverträglich ist. Jemand eine Idee, warum und wie ich das beseitigen kann?

    ->
    Code:
     Dim CrudeDataPuffer(11000) 

    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  6. #5
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard

    Du hast ein Array-Feld aus dem Typ Variant deklariert. Das ist genau nicht was Du willst. Du brauchst einen Variant vom Untertyp Byte-Array.

    Nimm mal die Array-Deklaration raus. Einfach nur als Variant deklarieren. Der Variant wird bei der Zuweisung zum Untertyp Byte-Array.

  7. Folgender Benutzer sagt Danke zu asci25 für den nützlichen Beitrag:

    Krumnix (06.03.2012)

  8. #6
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Danke, das war wohl keine gute Idee von mir

    Noch eine Frage:

    Code:
     
    Dim Puffer, CrudeDataPuffer, CrudeData, j
    
    Set CrudeData = HMIRuntime.Tags("_Senden_Puffer")
       CrudeDataPuffer = CrudeData.Read
    
    For j = 1 To 10000
    Puffer = Puffer & Chr(CrudeDataPuffer(j))
    Next
    Da sagt mir apdiag nun "Typen unverträglich: 'CrudeDataPuffer'" und zwar in der zeile, wo ich die Zuweisung zu Puffer mache.
    Warum?
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  9. #7
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard

    Füg mal über der Zeile folgendes ein:

    Code:
    HMIRuntime.Trace "Byte " & FormatNumber(j,0) & " Wert: " & FormatNumber(CrudeDataPuffer(j),0) & vbcrlf

  10. #8
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Gleiche Meldung.
    Jetzt mal was noch nebenbei. Ich rufe das Script nur in einem Bild auf, nicht als Globales Script.
    Und das Script im Bild wird von einer Variable aus der SPS getriggert.

    Könnte es vielleicht hierdran liegen?
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  11. #9
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard

    Nein, das ist unerheblich.

    Ich denke an 2 Möglichkeiten:
    1. Deine Variable ist viel zu lang (z.B. TCP/IP-Verbindung max 208 Bytes)
    2. Ein "Byte" ist außerhalb des Bereichs (Datentyp Variant)

  12. #10
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das ist aber auch interessant: Soll die SPS das Script nur auslösen können, wenn ein bestimmtes Bild geöffnet ist?

Ähnliche Themen

  1. VBS Now() 0:00 Uhr
    Von hoT im Forum HMI
    Antworten: 7
    Letzter Beitrag: 08.03.2011, 11:59
  2. VBS-Skript
    Von johnij im Forum HMI
    Antworten: 7
    Letzter Beitrag: 06.06.2008, 14:16
  3. VBS in VBA,C,C++
    Von SeSi im Forum HMI
    Antworten: 1
    Letzter Beitrag: 21.09.2007, 11:08
  4. VBS Debugger
    Von uz71 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 01.11.2006, 15:20
  5. CSVview.vbs
    Von volker im Forum Werbung und Produktneuheiten
    Antworten: 5
    Letzter Beitrag: 29.01.2006, 22:12

Lesezeichen

Berechtigungen

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