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

Ergebnis 1 bis 10 von 10

Thema: hilfe für vbs neuling

  1. #1
    Registriert seit
    17.08.2009
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo und guen tag @all,

    ich bin noch komplett neu in vbs, hab mich aber schon ein paar tage mit vba beschäftigt.

    ich habe folgende aufgabe zu lösen: über wincc flexible müssen werte aus einer s7 gelesen werden und in csv format gespeichert werden.diese csv daten werden in ein vorbereitetes excel protokoll eingelesen und dann gedruckt.

    das problem ist jetzt, das die werte aus der s7 schwanken können. d.h. mal werden 12 ausgelesen, mal 50 oder 49. das kann beliebig angegeben werden und ist auch zweckmäßig.

    ich müsste also nun einen code in vbs schreiben der (vermutlich mit einer schleife) die werte nimmt, in cvs format speichert, und das vorbereitete excel dokument öffnet, also einfach auf den speicherort zugreift. von da ab komm ich allein weiter.

    hat jemand von euch einen vorschlag wie der code in vbs aussehen müsste? und wäre es sinnvoll wenn meine werte ein array wären auf das vbs zugreift?

    hoffe auf eure hilfe, denn meine schleifen funktionieren nicht!!

    schöne grüße

    sascha
    Zitieren Zitieren hilfe für vbs neuling  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.799
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    ... ich persönlich halte den Weg, dass zu zeigen, was man hat und daran weiter zu arbeiten für den besseren Weg - vor Allem in diesem Fall ...
    Wenn also deine Routinen, die du geschrieben hast, nicht funktionieren dann stell sie uns doch mal vor und dann sehen wir weiter ...
    Gut ist es auch immer, wenn man konkrete Fragen stellt ...

    Gruß
    LL

  3. #3
    el_bob ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.08.2009
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Dim i,s, fso,f,ts,DataSet,FName

    For Each i In SmartTags("Variable_2")
    s=s&i+1
    FName="d:\"+CStr(Date)+".csv"
    DataSet = CStr(Now)+","+CStr(Variable_2) 'Variable_2 ist als array hinterlegt
    Set fso =CreateObject("Scripting.FilesystemObject)
    If Not fso.FileExists(FName) Then
    fso.CreateTextFile FName
    End If
    Set f = fso.GetFile(FName)
    Set ts = f.OpenAsTextStream(8,-2)
    ts.WriteLine DataSet
    ts.close
    Next
    Set ts = Nothing
    Set f = Nothing
    Set fso = Nothing


    das ist der code den ich zu letzt geschrieben hab. war aber mehr oder weniger ein versuch. konnte ihn auch noch nicht ausprobieren, da ich grad kommunikationsprobleme zwischen wincc flexible und dem simatik manager hab.

    konkrete frage......
    wie gebe ich eine von betätigung zu betätigung schwankende anzahl von messwerten in eine csv datei aus?

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.799
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    ... ich würde die Anzahl von Daten als Variable mit übergeben - braucht du sowieso, damit du die DataSet-Variable korrekt beschreiben kannst :
    Code:
    DataSet = CStr(Now) & ";"
    for i = 1 to Anzahl
       DataSet = DataSet & CStr(Variable_2(i)) & ";"
    next
    was willst du mit dieser Zeile :
    Code:
    For Each i In SmartTags("Variable_2")
    s = s & i+1
    vom Code her würde ich für den datei-Zugriff andere Befehle nehmen - keine Ahnung ob deine Befehle funktionieren würden ...
    Code:
    Dim i,fso,f,DataSet,FName
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
     
    FName="d:\"+CStr(Date)+".csv"
    
    Set fso = CreateObject ("Scripting.FileSystemObject")
    If Not fso.FileExists (FName) Then
       Set f = fs.OpenTextFile(FName, ForWriting, true)
    Else
       Set f = fso.OpenTextFile(FName, ForAppending)
    End If 
     
    DataSet = CStr(Now) & ";"
    for i = 1 to Anzahl
       DataSet = DataSet & CStr(Variable_2(i)) & ";"
    next
    
     
    f.WriteLine DataSet
    f.close
    ... allerdings ungetestet ...

    Gruß
    LL

  5. #5
    el_bob ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.08.2009
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo,

    also soweit geht das was du da gemacht hast larry....danke schonmal soweit.

    nur schreibt er mir keine daten in die csv sondern das datum und die uhrzeit also Cstr(Now) halt.

    mit
    For Each i In SmartTags("Variable_2")
    s = s & i+1

    wollt ich erreichen das er die messwerte durchläuft und sie mir in einer neuen variable aufzeichnet. Variable_2 ist der name der Variable die die messwerte im Baustein DB20 aufzeichnet (als array)......

    ich dachte ich kann in der schleife sagen das er die messwerte aufzeichnet um sie auzugeben!?

    wie denkst du darüber? du bist da erfahrener als ich!

    grüße bob

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.799
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    ... das Problem sollte ja die Codesequenz ...
    Code:
    DataSet = CStr(Now) & ";"
    for i = 1 to Anzahl
       DataSet = DataSet & CStr(Variable_2(i)) & ";"
    next
    ... erledigen
    Variable_2 muß natürlich mit der SPS verbunden sein und Werte beinhalten und aktualisiert werden. Mach mal einen Screenshot der Flex-Variablen-Deklaration dieser Variablen.
    Was wird in die Zeile geschrieben ? Nur das Datum und sonst nichts ?
    Ist die Variable Anzahl als Flex-Variable deklariert und setzt du die in der SPS entsprechend ?

    Gruß
    LL

  7. #7
    el_bob ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.08.2009
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    schönen guten morgen,

    ich muss dir leider sagen das ich keine ahnung davon hab wie so eine programmierung einer sps funktioniert. möchte es aber lernen sobald die ganze sache hier läuft und ich bissl luft hab. habe den zuständigen programmiere mal befragt. die variable_2 ist laut seiner aussage korrekt deklariert und wird auch in die sps eingelesen. bei uns im büro halt noch simulationsweise!

    hab mal en screenshot angehängt. is in nem word dokument weil von anderem rechner.

    zu deiner ersten frage...ja das skript schreibt mir nur das datum in die csv....komischerweise aber nicht wenn man eine andere variable in die zeile
    DataSet = CStr(Now) & ";" + CStr(Variable_5) & ";"
    einfüg. hier variable5. variable 5 besteht aber nur aus einem wert der aus dem Datenbaustein kommt. variable 2 (max100werte aus datenebaustein DB20)ließt er einfach nicht aus.....

    hoffe ich habs dir gut rüber gebracht.....
    Angehängte Dateien Angehängte Dateien

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.799
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    Hallo,

    also erstmal :
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Ist die Variable Anzahl als Flex-Variable deklariert und setzt du die in der SPS entsprechend ?
    dann :
    - Variablen nennt man nicht Variable_2 - man kann sie auch verwendungsbezogen benennen.
    - Wie wird die "Variable_2" aktualisiert ? Du mußt hier "zyklisch fortlaufend" und nicht "Zyklisch bei Verwendung" eintragen. Das gilt auch für die Variable Anzahl ...
    - wie triggerst du das Script - also was bewirkt, das es aufgerufen wird ?

    Gruß
    LL

  9. #9
    el_bob ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.08.2009
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo

    bei
    Zitat von Larry Laffer
    Ist die Variable Anzahl als Flex-Variable deklariert und setzt du die in der SPS entsprechend ?

    wo finde ich das raus?

    -aktualisiert wird die variable_2 durch FB12(kann dir nicht genau sagen was das ist) der die Messwerte in den DB20 ,der unter Variable_2 steht, schreibt.
    - ich hab jetzt noch folgendes gemacht...
    WinCC Flexible - Kommunikation - Variablen - Variable_2 - "rechtsklick" - Eigenschaften - Allgemein - Erfassungsart in "zyklisch fortlaufend" geändert
    - das skript wird durch einen button vom panel aus gestartet

    aber so langsam hab ich das gefühl das vb script mit dem volumen von Variable_2 bzw. dem Volumen der Daten im Baustein DB 20 nicht klarkommt. wenn ich die Schleife weg lass und Variablen mit nur einem Messwert ausgeben lass funktioniert alles prächtig.....
    Geändert von el_bob (28.08.2009 um 12:01 Uhr)

  10. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.799
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... die Variable "Anzahl" aus meinem Script ist eine Variable, die du erzeugen ´(als Flex-Variable und nicht als Script-Variable) und in der SPS sinnvoll mit Werten versorgen mußt. Ansonsten steht da Null drin und die Schleife wird nicht bearbeitet ...

    Das mit dem Array bekommt Flex schon hin - keine Sorge ...

    Gruß
    LL

Ähnliche Themen

  1. Neuling braucht Hilfe bei RS 232 zu Mpi
    Von BlenderNRW im Forum Stammtisch
    Antworten: 6
    Letzter Beitrag: 16.10.2011, 21:55
  2. Hilfe für ein Neuling
    Von DemoniacAries im Forum PC- und Netzwerktechnik
    Antworten: 0
    Letzter Beitrag: 02.06.2010, 00:17
  3. SPS-Neuling braucht Hilfe
    Von SPS-Neuling1 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.02.2010, 16:18
  4. Hilfe für ANY-Neuling
    Von Mecki im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 03.11.2008, 21:03
  5. Hilfe für SPS Neuling
    Von mustermann im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 07.05.2008, 22:04

Lesezeichen

Berechtigungen

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