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

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

Thema: Variablenarchivierung

  1. #1
    Registriert seit
    01.10.2007
    Beiträge
    337
    Danke
    13
    Erhielt 6 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    habe hier ein MP277 8" Touch, mit dem ich Variablen archivieren möchte. Mein Problem dabei ist nur, dass die Variablen im CSV Archiv immer durcheinander abelegt werden, der Kunde mir aber eine strike Reihenfolge für die Formatierung vorgegeben hat. Hatt hierzu schon einmal einen Eintrag anfang des Jahres gemacht. Bei der ersten Anlage hab ich das ganze nun über Scripte gemacht, d.h. die ganzen CSV-Dateien immer selbt formatier und beschrieben. Da ich alle 5s ca. 80 Variablen archivieren muss, wirkt sich das ganze dann doch ziemlich auf die Performance des Panels aus.
    Hat jemand ne Idee, wie ich das ganze eleganter Lösen kann? Muss jetzt nämlich die zweite Anlage programmieren und bin mit der genannten Variante nicht so ganz glücklich.
    Zitieren Zitieren Variablenarchivierung  

  2. #2
    Registriert seit
    29.07.2008
    Ort
    Stuttgart
    Beiträge
    232
    Danke
    64
    Erhielt 25 Danke für 25 Beiträge

    Standard

    hi,
    wann bekommt der Kunde die Archive denn? sofort oder nach dem Archivieren?
    mir ist nix bekannt, dass von WinCC flexible aus ohne Skripte eine Reihenfolge oder Formatierung vorgegeben werden kann...
    wenn der Kunde nach dem Archivieren die Ergebnisse will, musst du die Daten der csv-Datei eben im nachhinein über Skripte oder so sortieren...

  3. #3
    franzlurch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.10.2007
    Beiträge
    337
    Danke
    13
    Erhielt 6 Danke für 5 Beiträge

    Standard

    Hi Günni,

    der Kunde holt sich die CSV-Datei nach jemdem Produktionsvorgang vom MP277 herunter. Der Produktionsvorgang duaert ca. 6-7 Stunden.
    Zitieren Zitieren Variablenarchivierung  

  4. #4
    Registriert seit
    29.07.2008
    Ort
    Stuttgart
    Beiträge
    232
    Danke
    64
    Erhielt 25 Danke für 25 Beiträge

    Standard

    mit flexible können ja meine ich externe Programme gestartet werden.
    vielleicht kannst du was programmieren, das deine csv-Datei kopiert, ordnet und so, wenn der Vorgang zu ende ist. und der Kunden kann dann die "formatierte Datei" sich holen

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Hallo,
    vielleicht stellst du dein Script mal hier ein - möglicherweise hat es ja Optimierungs-Potential.
    Allerdings ist es so, dass das MP277 nicht unbedingt ein Power-Rechner ist ...

    Gruß
    Larry

  6. #6
    franzlurch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.10.2007
    Beiträge
    337
    Danke
    13
    Erhielt 6 Danke für 5 Beiträge

    Standard

    Hi Larry,

    was für ein Panel würdest du hierfür empfehlen?? MP377 oder sogar Panel PC ???

    Anbei mein Script zum archivieren:

    Code:
    Dim f,fs,datei
    Dim fs2,pfad,mmc
    Dim fs3,dateipfad
    Dim traceability_io,freigabe_daten_loggen
    Dim datum
    Dim blattnummer,teilenummer
    Dim batch_nr_basis, batch_nr_haerter
    Dim operator 
    Dim maschinennummer
    'ACTUAL VALUES
    Dim druck_p_eingang_a,druck_p_eingang_b,druck_p_ausgang_a,druck_p_ausgang_b
    Dim solltemp_aggregat,isttemp_aggregat
    Dim isttemp_behaelter, niveau_behaelter
    Dim solltemp_behaelter, solltemp_beh_a, solltemp_beh_b, isttemp_beh_a, isttemp_beh_b
    Dim ausflussrate_ab,ar_a,ar_b
    Dim mv,mv_abw_max, mv_abw_ist
    Dim dichte_a,dichte_b
    Dim bsz_ges_std,bsz_ges_min,bsz
    Dim zertifikatsnummer_a,zertifikatsnummer_b
    Dim verbrauch_a,verbrauch_b,total_verbrauch_a,total_verbrauch_b
    Dim niveau_a,niveau_b
     
    
    traceability_io=SmartTags("Interne_Variablen\INTERNE_VAR_Traceability_Data_OK")
    freigabe_daten_loggen=SmartTags("Externe_Variablen_IC\ic_freigabe_daten_loggen")
    If traceability_io=True And freigabe_daten_loggen=True Then
    'If traceability_io=True Then
     'Betriebsstundenzähler erstellen
     bsz_ges_std=SmartTags("Externe_Variablen\IW_BETRIEBSSTUNDEN_GES_STD")
     bsz_ges_min=SmartTags("Externe_Variablen\IW_BETRIEBSSTUNDEN_GES_MIN")
     bsz=bsz_ges_std&"h"&"  "&bsz_ges_min&"min" 
     
     'MMC CHECK
     Set fs2 = CreateObject("filectl.filesystem")
     pfad="\Storage Card MMC"
     
     mmc=fs2.Dir(pfad)
     
     If mmc="Storage Card MMC" Then
      'Dateisystem erstellen
      Set f = CreateObject("filectl.file")
      Set fs = CreateObject("filectl.filesystem")
      
      'Aktuelles Datum lesen
      datum=Date
      
      ' Maschinen Seriennummer
      maschinennummer="xyz"
      
      'Speicherort zuweisen 
      dateipfad="\Storage Card MMC\Logs"
      
      'Dateiname von Interner Variable zuweisen 
      datei=SmartTags("Interne_Variablen\INTERNE_VAR_Dateiname_Archiv_Export")
      
      'INTERNE Variablen, lokalen zuweisen
      blattnummer=SmartTags("Interne_Variablen\INTERNE_VAR_Blade_Number")
      teilenummer=SmartTags("Interne_Variablen\INTERNE_VAR_TEILENUMMER")
      batch_nr_basis=SmartTags("Interne_Variablen\INTERNE_VAR_Batch_Number_Base1")
      batch_nr_haerter=SmartTags("Interne_Variablen\INTERNE_VAR_Batch_Number_Hardener")
      zertifikatsnummer_a=SmartTags("Interne_Variablen\INTERNE_VAR_Kalibrierungszertifikatsnummer_A")
      zertifikatsnummer_b=SmartTags("Interne_Variablen\INTERNE_VAR_Kalibrierungszertifikatsnummer_B")
     
      
       
      'EXTERNE ACTUAL VALUES lokalen Variablen zuweisen
      dichte_a=SmartTags("Externe_Variablen\IW_DICHTE_A")
      dichte_b=SmartTags("Externe_Variablen\IW_DICHTE_B")
      druck_p_eingang_a=FormatNumber(SmartTags("Externe_Variablen\IW_DRUCK_P_EING_A"),1)
      druck_p_eingang_b=FormatNumber(SmartTags("Externe_Variablen\IW_DRUCK_P_EING_B"),1)
      druck_p_ausgang_a=FormatNumber(SmartTags("Externe_Variablen\IW_DRUCK_P_AUSG_A"),1)
      druck_p_ausgang_b=FormatNumber(SmartTags("Externe_Variablen\IW_DRUCK_P_AUSG_B"),1)
      solltemp_aggregat=FormatNumber(SmartTags("Externe_Variablen\IW_SOLLTEMPERATUR"),1)
      isttemp_aggregat=FormatNumber(SmartTags("Externe_Variablen\IW_IST_TEMP"),1)
      ausflussrate_ab=FormatNumber(SmartTags("Externe_Variablen\IW_AR"),1)
      ar_a=FormatNumber(SmartTags("Externe_Variablen\IW_AR_A"),1)
      ar_b=FormatNumber(SmartTags("Externe_Variablen\IW_AR_B"),1)
      mv=FormatNumber(SmartTags("Externe_Variablen\IW_MV_IST"),1)
      mv_abw_max=FormatNumber(SmartTags("Externe_Variablen\IW_MV_ABW_MAX"),1)
      mv_abw_ist=FormatNumber(SmartTags("Externe_Variablen\IW_MV_ABW_IST"),1)
      verbrauch_a=FormatNumber(SmartTags("Externe_Variablen\IW_Verbrauch_pro_Blatt_A"),1)
      verbrauch_b=FormatNumber(SmartTags("Externe_Variablen\IW_Verbrauch_pro_Blatt_B"),1)
      total_verbrauch_a=FormatNumber(SmartTags("Externe_Variablen\IW_Verbrauch_Gesamt_A"),1)
      total_verbrauch_b=FormatNumber(SmartTags("Externe_Variablen\IW_Verbrauch_Gesamt_B"),1)
      isttemp_behaelter=FormatNumber(SmartTags("Externe_Variablen\IW_temperatur_container_ist"),1)
      niveau_behaelter=FormatNumber(SmartTags("Externe_Variablen\IW_niveau_container"),1)
      niveau_a=FormatNumber(SmartTags("Externe_Variablen\IW_NIVEAU_A"),1)
      niveau_b=FormatNumber(SmartTags("Externe_Variablen\IW_NIVEAU_B"),1)
      solltemp_behaelter=FormatNumber(SmartTags("Externe_Variablen\P_solltemp_beh"),1)
      solltemp_beh_a=FormatNumber(SmartTags("Externe_Variablen\P_solltemp_beh_a"),1)
      solltemp_beh_b=FormatNumber(SmartTags("Externe_Variablen\P_solltemp_beh_b"),1)
      isttemp_beh_a=FormatNumber(SmartTags("Externe_Variablen\IW_isttemp_beh_a"),1)
      isttemp_beh_b=FormatNumber(SmartTags("Externe_Variablen\IW_isttemp_beh_b"),1)
      
      
      
      
       
      'Wenn Ordner Logs nicht vorhanden ist erstellen
      Set fs3 = CreateObject("filectl.filesystem")
      If fs3.dir(dateipfad) = "" Then fs.mkdir(dateipfad)
      
      
      'Wenn die Datei mit diesem Namen noch nicht besteht,
      'dann anlegen und Kopfzeile schreiben
      If fs.dir(datei)="" Then 
       f.open datei,2
       f.Lineprint "Date" & ";" & "Time" & ";" & "Blade number" & ";" & "Model part" & ";" & "Ratio A:B" & ";" & "Amount A [l]" & ";" & "Amount B[l]" & ";" & "Batch number base A" & ";" & "Batch number hardener B"& ";" & "Certificate Calibr. nr. A" & ";" & "Certificate Calibr. nr. B" & ";" & "Press. Pump Inp. A [bar]" & ";" & "Press. Pump Inp. B [bar]" & ";" & "Press. Pump Outp. A [bar]" & ";" & "Press. Pump Outp. B [bar]" & ";" & "Temp.TH S [°C]" & ";" & "Temp. TH R [°C]" & ";" & "Temp. Cont. S [°C]" & ";" & "Temp.Cont. R [°C]" & ";" & "Temp. Cont. A S [°C]" & ";" & "Temp. Cont. A R [°C]" & ";" & "Temp. Cont. B S [°C]" & ";" & "Temp. Cont. B R [°C]" & ";" & "Level A [%]" & ";" & "Level B [%]" & ";" & "Level Cont. [%]" & ";" & "Flow rate A+B [l/min]" & ";" &  "Flow rate A [l/min]" & ";" & "Flow rate B [l/min]" & ";" & "Ratio Tol. [%]" & ";" & "Ratio Dev. [%]" & ";" & "Total Amount A [l]" & ";" & "Total Amount B [l]" & ";" & "Machine serial nr." & ";" & "Tot. mach. running hours [h]" & ";" & "Tot. mach. running hours [min]" & ";" & "Density base A [g/cm³]" & ";" & "Density hardener B [g/cm³]"  
       f.close 
      End If
      
      'Log Daten anhängen 
       f.open datei,8
       'f.Lineprint "Date" & ";" & "Time" & ";" & "Blade number" & ";" & "Model part" & ";" & "Ratio A:B" & ";" & "Amount A [l]" & ";" & "Amount B[l]" & ";" & "Batch number base A" & ";" & "Batch number hardener B"& ";" & "Certificate Calibr. nr. A" & ";" & "Certificate Calibr. nr. B" & ";" & "Press. Pump Inp. A [bar]" & ";" & "Press. Pump Inp. B [bar]" & ";" & "Press. Pump Outp. A [bar]" & ";" & "Press. Pump Outp. B [bar]" & ";" & "Temp.TH S [°C]" & ";" & "Temp. TH R [°C]" & ";" & "Temp.Cont. R [°C]" & ";" & "Level A [%]" & ";" & "Level B [%]" & ";" & "Level Cont. [%]" & ";" & "Flow rate A+B [l/min]" & ";" &  "Flow rate A [l/min]" & ";" & "Flow rate B [l/min]" & ";" & "Ratio Tol. [%]" & ";" & "Ratio Dev. [%]" & ";" & "Total Amount A [l]" & ";" & "Total Amount B [l]" & ";" & "Machine serial nr." & ";" & "Tot. mach. running hours [h:min]" & ";" & "Density base A [g/cm³]" & ";" & "Density hardener B [g/cm³]"  
       f.Lineprint datum & ";" & Time & ";" & blattnummer & ";" & teilenummer & ";" & mv & ";" & verbrauch_a & ";" & verbrauch_b & ";" & batch_nr_basis & ";" & batch_nr_haerter & ";" & zertifikatsnummer_a & ";" & zertifikatsnummer_b & ";" & druck_p_eingang_a & ";" & druck_p_eingang_b & ";" & druck_p_ausgang_a & ";" & druck_p_ausgang_b & ";" & solltemp_aggregat & ";" & isttemp_aggregat & ";" & solltemp_behaelter & ";" & isttemp_behaelter & ";" & solltemp_beh_a & ";" & isttemp_beh_a & ";" & solltemp_beh_b & ";" & isttemp_beh_b & ";" & niveau_a & ";" & niveau_b & ";" & niveau_behaelter & ";" & ausflussrate_ab & ";" & ar_a & ";" & ar_b & ";" & mv_abw_max & ";" & mv_abw_ist & ";" & total_verbrauch_a & ";" & total_verbrauch_b & ";" & maschinennummer & ";" & bsz_ges_std & ";" & bsz_ges_min & ";" & dichte_a & ";" & dichte_b
       f.close
      
      
     Else
     
     SetBitInTag SmartTags("Interne_Variablen\INTERNE_VAR_FEHLER"), 1
      
     End If 
    
    End If
    Zitieren Zitieren Variablen archivierung  

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Hallo Franz,
    ich mache solche Sachem mit einem Panel-PC und PC-Runtime. Dabei habe ich durchaus Anwendungen, wo ich solche Datenreihen im 2-Sekundentakt schreibe - ohne Performance-Verlust der Visu.

    Was mir an deinem Script auffällt :
    Fürs Speichern ist es immer günstiger nur einen großen String zu schreiben als diese zusammengesetzte Konstruktion.

    Also :
    Code:
       f.Lineprint "Date" & ";" & "Time" & ";" & "Blade number" & ";" & "Model part" & ";"   ....
     
    könnte auch so aussehen :
     
       f.Lineprint "Date;Time;Blade number;Model part;"   ....
    Da du das 2mal im Script hast könnte ich mir hier sogar gut eine Script-Variable vorstellen, die du einmal beschreibst und dann wieder verwendest.

    In der Zeile, wo du die Werte übergibst könntest du auch aus allen Einzelwerten und den Semikolons erst einen String bilden und dann den schreiben.

    Eventuell würde ich mir aus die Zwischen-Variablen ersparen und die Formatierung direkt in den Zielstring packen - das ist aber eventuell auch Haarspalterei ... das Hauptproblem wird wohl das Speichern und der Zeildatenträger sein.

    Gruß
    Larry

  8. #8
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    also ich schreibe mit einem op277 ähnlich viele daten

    ausführungszeit ermitteln
    Code:
    dim t1,t2,...
    t1=timer
     
    ...den ganzen kram aus dem script bearbeiten
     
    t2=timer
    f.lineprint t2-t1
    close
    end sub
    als ergebnis erhalte ich 0
    d.h. also unter 1 sekunde
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Hallo Volker,
    wo kommt denn die Variable "Timer" bei dir her ? Ich kenne da nur Time ...

    Für ein Script in der Länge und Konstellation von Franz Lurch eine Laufzeit von 0 anzunehmen ist unrealistisch. Ich habe da leider keine wirklich TP/OP-Erfahrung was das angeht, allerdings ist die PC-Runtime bisher immer performanter gewesen als die Siemens-Geräte - und bei einer PC-Runtime hatte ich bei solchen Konstrukten im Sekundentakt aufgerufen schon Schierigkeiten bekommen.

    Gruß
    Larry

  10. #10
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    der unterschied zu mir ist, das ich nicht alles in eine zeile schreiben sondern alles untereinander aber auch ca 80 mal

    so
    Code:
     f.LinePrint "p1ist;"&SmartTags("p1_istfreq")&"Hz"
     f.LinePrint "p2ist;"&SmartTags("p2_istfreq")&"Hz"
    ich denke sogar, das mein script länger braucht, da ich jedesmal das lineprint nutze

    timer ist eine funktion von vbs und gibt die zeit in sekunden nach 0:00 Uhr zurück.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

Ähnliche Themen

  1. Antworten: 19
    Letzter Beitrag: 15.05.2013, 09:26

Lesezeichen

Berechtigungen

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