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

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

Thema: Prozessdaten einer CPU 317 auf Speicherkarte eines TP277 6'' speichern

  1. #11
    Starter ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.08.2010
    Beiträge
    20
    Danke
    17
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Vielleicht hilft Dir dieser Beitrag zum Verstehen Deines Variablen-Lesen-Problems:
    http://www.sps-forum.de/showpost.php...9&postcount=41

    Harald
    Ich habe es nun fast geschaft. Das Lesen und Speichern der 8*4000 DWord Werte= 128kByte funktioniert zuverlässig. Es fehlen nun auch keine Werte mehr am Anfang mancher Spalten der CSV Datei.

    Ich hatte lange übersehen, dass ich die Erfassungsart der Variablen auf die Option: "Auf Anforderung" stellen muss. Nun werden die 8*4000 Werte nur einmalig aktualisiert, wenn man das Bild öffnet auf dem sich der Button befindent der das Skript ausführt.

    Vorher wurden alle 8*4000 Werte jede Sekunde aktualisiert. Die Daten waren daher nicht konsistent, als das Skript angefangen hatte die Werte auf die Speicherkarte zu sichern.

    Das einzige Problem was ich jetzt noch habe ist, das beim eimaligen Aktualisieren der 8*4000 Werte für ca 30 Sekunden eine Kommunikationswarnung zwischen Steuerung und TP generiert wird.

    Das TP wird wohl mit dem Aktualisieren der großen Mengen an externen Variablen für kurze Zeit überfordert sein, was ja irgendwo auch verständlich ist.

    Die Frage die ich mir nun stelle ist, ob man das aktualisieren dieser 8* 4000 externen Variablen(die in mehreren Arrays abelegt sind) irgendwie besser koordinieren könnte.

    Dazu müsste ich aber erstmal wissen wie man das automatische einmalige Aktualisieren der Variablen beim Öffenen des Bildes(auf dem sich der Button befindent der das Skript auslöst) unterbindet.

    Weiter müsste ich das Aktualisieren der Variablen mittels eines Skripts oder ähnliches so steuern können, so dass das TP nicht überfordert wird.

    Hat da vielleicht jemand eine Idee?

    Anbei das jetzige Skript:

    /****************************************************************

    Dim fs, f, FName, Dataset, Header, Storage_Path, strName, strTemp, arr, strDir

    SmartTags("dubidu")=1

    ' Ablagepfad festlegen
    Storage_Path = "Storage Card MMC"

    ' Archivierungspfad (Eingangsparameter) und Dateiname zusammensetzen
    FName = Storage_Path & "\Test" & ".csv"


    ' FileObject erstellen
    Set f = CreateObject("FileCtl.File")

    ' Datei öffnen bzw. erstellen, wenn sie noch nicht existiert
    f.open FName, 8

    For strTemp = 0 To 999
    Dataset = SmartTags("Test_DB_Test_1.Teil_1
    f.linePrint(Dataset) 'Write the Dataset in File'
    SmartTags("Fortschrittsanzeige")=SmartTag ("_Fortschrittsanzeige")+1 Next

    f.Close 'Datei wieder schließen / Close File'

    SmartTags("dubidu")=0
    SmartTags("Fortschrittsanzeige")=0

    ' Verwendeten Speicher wieder freigeben
    Set f = Nothing

    /****************************************************************

  2. #12
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von Starter Beitrag anzeigen
    Das einzige Problem was ich jetzt noch habe ist, das beim eimaligen Aktualisieren der 8*4000 Werte für ca 30 Sekunden eine Kommunikationswarnung zwischen Steuerung und TP generiert wird.
    Ohh, Du hast noch ein - womöglich sogar größeres - Problem:
    In der ganzen langen Zeit, während Dein Lesen-und-Speichern-Script läuft (Schleife!), werden keine weiteren Scripte ausgeführt. WinCC flexible kann nur 1 Script "gleichzeitig".

    Zitat Zitat von Starter Beitrag anzeigen
    Die Frage die ich mir nun stelle ist, ob man das aktualisieren dieser 8* 4000 externen Variablen(die in mehreren Arrays abelegt sind) irgendwie besser koordinieren könnte.

    Dazu müsste ich aber erstmal wissen wie man das automatische einmalige Aktualisieren der Variablen beim Öffenen des Bildes(auf dem sich der Button befindent der das Skript auslöst) unterbindet.
    Das automatische Aktualisieren aller Variablen, deren Verwendung im Bild WinCC flexible bekannt ist, kann man meines Wissens nicht unterdrücken. Selbst Variablen, die nur geschrieben werden sollen, werden von WinCC flex beim Bildaufbau gelesen. Auch eine Einstellung "Lesen nur auf Anforderung" hilft nicht.

    Es ist klar, daß Deine tausenden Variablen nur zum Zweck des Exports einmalig konsistent gelesen werden sollen und deshalb jedes zyklische Lesen sinnlos ist. Genau dafür gibt es die "Rezepturen", die nur ein anderer Name für "Datensatz" sind. Rezepturen kann man sehr schön konsistent ins Panel einlesen und muß sich um die Aktualisierungsart und -rate überhaupt keine Gedanken machen (Systemfunktion GetDataRecordTagsFromPLC). Dein Problem mit dem Aktualisieren der 8 * 4000 Variablen gibt es dann gar nicht. Außerdem spart so eine Rezeptur in Deinem Projekt wohl auch ungemein Powertags.

    Deine vielen Variablen werden doch wohl irgendwie wiederkehrend strukturiert sein oder sich strukturieren lassen - am besten als ARRAY[..] OF STRUCT, notfalls als ARRAY[..] OF BYTE oder ARRAY[..] OF DWORD. Dann betrachte das ganze als "ARRAY OF Datensatz" und bilde die Struktur eines Datensatzes in einer Rezeptur ab. Da man die Adressen einer Rezeptur in WinCC flex nicht dynamisch ändern kann, müßte Deine CPU etwas mithelfen und den jeweils zu lesenden Datensatz in die als Rezeptur parametrierten Adressen kopieren, die dann als Lesepuffer dienen. Dies wäre am einfachsten eine einzelne Struktur mit dem selben Aufbau wie das ARRAY[..] OF STRUCT. Die Rezeptur wäre dann auf genau diese einzelne Struktur anzulegen.

    Ich hatte mal mit einem MP370 320 Datensätze je 220 Byte ~ 70kByte aus einer 315-2 PN/DP in eine csv-Datei zu exportieren.
    Das Panel war per Ethernet mit der SPS verbunden.
    Damit das Script zum Datensatz lesen und exportieren in die csv-Datei nicht die ganze Zeit die Scriptbearbeitung des Panels blockiert, habe ich das Script in 3 Scripte aufgeteilt und diese dann ereignisgesteuert aufgerufen.
    Damit das schneller ging, hatte ich zum Auslesen je 4 Datensätze zu insgesamt 80 Datensatzblöcken je 880 Byte zusammengefasst.
    Wenn ich mich richtig erinnere, hat das ganze knapp 3 Minuten gedauert. Die Aktualisierungsrate der 2 Event-Variablen war wohl auf 500ms eingestellt. Während der Lesezeit habe ich am Panel einen Fortschrittsbalken angezeigt, damit der Operator den ordnungsgemäßen Fortgang sieht.

    Vereinfacht dargestellt lief das so ab (DS = Datensatz):
    Code:
    . . Panel . . . . . . . . . . . . .        . . SPS . . . . . . . . . . . . . . . . . . . . .
    
    (1) Vorbereitungen, Header schreiben
        DS_Nummer_REQ := 1               --->  DS_Nummer_REQ <> DS_Nummer_ACK ?   <-------------+
        Exit                                    |                                               |
                                                v                                               |
                                               kopiert gewünschte(n) DS in Rezeptur-Buffer      |
    DS_Nummer_ACK Event "Änderung"       <---  DS_Nummer_ACK := DS_Nummer_REQ                   |
     |                                                                                          |
     v                                                                                          |
    (2) DS_Nummer_ACK = DS_Nummer_REQ ?                                                         |
          GetDataRecordTagsFromPLC          -  DS wird aus Rezeptur-Buffer gelesen              |
        Exit                               /                                                    |
                      +--- fertig ----   <-                                                     |
                      |                                                                         |
                      +--> rdStat := 4   --->  rdStat (kann als Quit Lesen ausgewertet werden)  |
                                                  |                                             |
    rdStat Event "Änderung"              <---  --/                                              |
     |                                                                                          |
     v                                                                                          |
    (3) rdStat = 4 ?                                                                            |
          Export DS in csv-Datei                                                                |
          DS_Nummer_REQ < letzte ?                                                              |
            INC DS_Nummer_REQ            --->  -------------------------------------------------+
        Exit
    DS_Nummer_REQ, DS_Nummer_ACK und rdStat sind INT- oder WORD-Variablen in der SPS.
    rdStat wird bei GetDataRecordTagsFromPLC als Statusvariable angegeben und signalisiert das Ende des Einlesens.
    (x): Script (1), Script (2) und Script (3)

    Script (1) wird vom Operator per Schaltfläche aufgerufen, prüft ob schon ein Export-Job läuft, erstellt die csv-Datei und fordert den ersten Datensatz an.
    Script (2) wird aufgerufen, wenn die SPS das Bereitstellen des gewünschten Datensatzes im Rezepturpuffer in DS_Nummer_ACK signalisiert und startet das Einlesen des Datensatzes (der Rezeptur) aus dem Rezepturpuffer in das Panel (GetDataRecordTagsFromPLC).
    Script (3) wird aufgerufen, wenn das Einlesen des Datensatzes in das Panel beendet ist (mit rdStat = 4 signalisiert), exportiert den Datensatz in die csv-Datei und fordert das Bereitstellen des nächsten Datensatzes im Rezepturpuffer der SPS an.

    Die 3 Scipte können für besseres späteres Verstehen auch zu 1 Script zusammengefasst werden, dann muß der Script-Aufrufer dem Script einen Parameter mitgeben, wer der Aufrufer ist und am Anfang des Scriptes ist ein Sprungverteiler oder das Script ist in 3 Abschnitte eingeteilt, welche abhängig von der Caller-Nummer im Aufrufparameter bearbeitet werden.

    Alle Variablen-Schreib- und -Lese-Vorgänge werden vom Panel ausgeführt (die SPS ist nur Server), deshalb ist die Dauer des Datenlesens fast nur von der Aktualisierungsrate der Event-Variablen abhängig, aber fast nicht von der Anzahl Variablen je Datensatz.
    (genau genommen darf außerdem nicht schneller gelesen werden, als auf die MemoryCard geschrieben werden kann - dürfte aber bei den heutigen schnellen SD-Cards nicht vorkommen)
    Beim Export jedes Datensatzes in (3) wird die Datei geöffnet und geschrieben und geschlossen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Starter (25.08.2011)

  4. #13
    Starter ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.08.2010
    Beiträge
    20
    Danke
    17
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke Harald,
    ich werd das mal versuchen nach deiner Anleitung umzusetzten.

    Gruß
    Starter

  5. #14
    Starter ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.08.2010
    Beiträge
    20
    Danke
    17
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Beim Export jedes Datensatzes in (3) wird die Datei geöffnet und geschrieben und geschlossen.

    Harald[/QUOTE]

    Hallo Harald,
    ich hätte da noch eine Frage zu deinem Ansatz mit den Rezepturen. Hast du alle deine Daten nachher in einer CSV Tabelle gehabt?

    Ich benutze zurzeit, zum Exportieren der Daten auf die Speicherkarte, die Funktion ExportDataRecords. Doch diese Funktion will ja bei jedem Datensatz eine neue CSV Datei anlegen. Ich würde aber gerne alle Daten in eine CSV Tabelle bekommen. Wie hattest du das gelöst?

    Habe ich da bei der Parametrierung der Funktion ExportDataRecords einen Fehler gemacht, gibt es da eventuell noch eine andere Funktion, oder kann ich vielleicht direkt auf die gelesenen Daten des Rezepts im RAM zugreifen um die mauell wegzuspeichern?

    Gruß
    Starter

  6. #15
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von Starter Beitrag anzeigen
    kann ich vielleicht direkt auf die gelesenen Daten des Rezepts im RAM zugreifen um die mauell wegzuspeichern?
    JA, genau! Nicht die Rezeptur als Rezeptur exportieren (ExportDataRecords) sondern die Werte der in der Rezeptur enthaltenen einzelnen Variablen lesen und formatiert in die csv-Datei schreiben.
    Die Rezeptur ist nur die "Krücke", mit der ich eine große Anzahl Variablen konsistent als Datensatz mit Ende-Event in das Panel einlesen lasse.

    Hier mal ein Programmauszug:
    aus dem "Script(3)"
    Code:
    ' Ausgabedatei für Append öffnen und Datensatzzeile schreiben
    On Error Resume Next 'Dateioperations-Fehler auffangen
    SimPC = SmartTags("_System\!_RT-Sim_!")
    If SimPC Then 'PC-Windows
    	Set fso = CreateObject("Scripting.FileSystemObject")
    	Set f = fso.OpenTextFile(outfile, ForAppending, True) 'True: Erstellen, falls noch nicht vorhanden
    	If Err.Number <> 0 Then
    		SmartTags("Protokoll\OP_Job_Stat") = 17 'Fehler anzeigen - Job beenden
    		ShowSystemAlarm "Fehler # " & Hex(Err.Number) & " beim Öffnen '" & outfile & "': " & Err.Description
    		Exit Sub
    	End If
    	f.WriteLine DS_DataLine 'formatierte Datenzeile in Datei schreiben
    	f.Close
    Else 'WinCE
    	Set f = CreateObject("FileCtl.File")
    	f.Open outfile, ForAppending
    	If Err.Number <> 0 Then
    		SmartTags("Protokoll\OP_Job_Stat") = 17 'Fehler anzeigen - Job beenden
    		ShowSystemAlarm "Fehler # " & Hex(Err.Number) & " beim Öffnen '" & outfile & "': " & Err.Description
    		Exit Sub
    	End If
    	f.LinePrint DS_DataLine 'formatierte Datenzeile in Datei schreiben
    	f.Close
    End If
    ' Fehler beim Datei-Schreiben oder -Schließen?
    If Err.Number <> 0 Then
    	SmartTags("Protokoll\OP_Job_Stat") = 16 'Fehler anzeigen - Job beenden
    	ShowSystemAlarm "Fehler # " & Hex(Err.Number) & " beim Schreiben '" & outfile & "': " & Err.Description
    '	Exit Sub
    End If
    Die Function DS_DataLine formatiert die Ausgabezeile:
    Code:
    ' Function DS_DataLine()
    ' erzeugt die Datenzeile des Schichtprotokolls als STRING:
    'Zeitstempel, Bediener,
    'T1 Kz, eing, ausg, zerstA, brenner%, Startzeit,Stopzeit,grund, ...
    '...
    Dim s, ts, sts
    ts = SmartTags("ProtokollEintrag\SP_Edit.DS.TimeStamp") ' -> "31.12.2008 01:59:59"
    sts = Chr(34)& Right("0" & DatePart("d", ts), 2) & "." & Right("0" & DatePart("m", ts), 2) & "." & DatePart("yyyy", ts) & " " _
    	& Right("0" & DatePart("h", ts), 2) & ":" & Right("0" & DatePart("n", ts), 2) & ":" & Right("0" & DatePart("s", ts), 2) &Chr(34)
    s = sts &";"& Chr(34)& SmartTags("ProtokollEintrag\SP_Edit.DS.NameSF") &Chr(34)
    
    'T1 Kz, eing, ausg, zerstA, brenner%, Startzeit,Stopzeit,grund, ...
    s = s &";"& Chr(34)& SmartTags("ProtokollEintrag\SP_Edit.DS.T1_Produkt") &Chr(34)
    s = s &";"& SmartTags("ProtokollEintrag\SP_Edit.DS.T1_Tmp_Eingang") &";"& SmartTags("ProtokollEintrag\SP_Edit.DS.T1_Tmp_Ausgang")
    s = s &";"& SmartTags("ProtokollEintrag\SP_Edit.DS.T1_I_Zerstaeuber") &";"& SmartTags("ProtokollEintrag\SP_Edit.DS.T1_Brennerleistung")
    
    '...
    
    DS_DataLine = s
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Starter (26.08.2011)

  8. #16
    Starter ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.08.2010
    Beiträge
    20
    Danke
    17
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    JA, genau! Nicht die Rezeptur als Rezeptur exportieren (ExportDataRecords) sondern die Werte der in der Rezeptur enthaltenen einzelnen Variablen lesen und formatiert in die csv-Datei schreiben.

    Harald
    Moin Harald, Viele Dank für deinen Programmauszug. Leider steig ich da nicht ganz durch und muss dich nochmal um deine Hilfe bitten.

    Wo liest du denn nun deine Rezepturvariablen aus? Ich verstehe einfach nicht wie man auf die einzelnen Rezepturdaten zugreifen kann. Machst du das auch mit den Smarttags?

    Mit den Funktionen Chr(), Right(), DatePart() organisierts du doch nur den String neu, oder?

  9. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Die SmartTags("ProtokollEintrag\SP_Edit.DS. ...") sind die Variablen aus der Rezeptur.

    In Step7 habe ich einen UDT_SP, der die Struktur eines Schichtprotokoll-Datensatzes beschreibt.
    Dann habe ich mehrere DB, die jeweils ein Array OF UDT_SP enthalten und zusammen einen Ringpuffer für die Schichtprotokoll-Datensätze bilden.
    Dann habe ich noch einen DB200, der einen einzelnen STRUCT UDT_SP ab DBB0 enthält. Das ist mein Kopierpuffer "SP_Edit".DS für alle Datensatz-Lese- und -schreiboperationen zwischen Panel und CPU. Die CPU kopiert dazu den jeweils angeforderten einzelnen Datensatz aus dem Ringpuffer-Array in diesen Kopier/Bearbeitungspuffer und ggf. auch wieder zurück.

    Im flex-Projekt habe ich unter Variablen einen Ordner "ProtokollEintrag".
    In dem Ordner sind alle Variablen meines Datensatz-STRUCT aus dem Datensatz-Kopierpuffer der CPU angelegt, alle Erfassungsart "Auf Anforderung".
    z.B. CPU: DB200.DBB0.. (DATE_AND_TIME) "SP_Edit".DS.TimeStamp
    -> in flex: SP_Edit.DS.TimeStamp (Date and time)

    Dann habe ich eine Rezeptur "Schichtprotokoll", bei der unter "Elemente" alle Variablen aus dem Variablenordner "ProtokollEintrag" aufgeführt sind. Somit habe ich alle Variablen aus dem Datensatz-Kopierpuffer der CPU nun in der Rezeptur "Schichtprotokoll".


    Zum Exportieren des gesamten Schichtprotokolls fordere ich nun von der CPU nacheinander alle Datensätze des Schichtprotokolls an,
    indem ich die gewünschte Datensatznummer in die Variable "DS_Nummer_REQ" schreibe. Die CPU kopiert den gewünschten Datensatz aus dem Ringpuffer in den Kopierpuffer "SP_Edit".DS und signalisiert das erfolgte Kopieren, indem sie die Datensatznummer aus "DS_Nummer_REQ" in "DS_Nummer_ACK" schreibt. Diese Variablen-Änderung von "DS_Nummer_ACK" ruft auf dem Panel das Script(2) auf, in dem das Lesen des Datensatzes aus "SP_Edit".DS eingeleitet wird:
    Code:
    If SmartTags("Protokoll\DS_Nummer_ACK") = SmartTags("Protokoll\DS_Nummer_REQ") Then
        GetDataRecordTagsFromPLC "Schichtprotokoll", SmartTags("Protokoll\rdStat")
    End If
    Die flexible-Runtime liest nun den Datensatz aus der CPU aus "SP_Edit".DS (die Rezeptur "Schichtprotokoll") in das Panel in die Rezepturvariablen SmartTags("ProtokollEintrag\SP_Edit.DS. ...") ein und signalisiert das erfolgreiche Ende des Lesens, indem es eine 4 in SmartTags("Protokoll\rdStat") schreibt. Durch diese Änderung von rdStat wird Script(3) aufgerufen, welches die Werte der eben gelesenen Variablen SmartTags("ProtokollEintrag\SP_Edit.DS. ...") liest und formatiert in die csv-Datei schreibt. (siehe #15)

    Zitat Zitat von Starter Beitrag anzeigen
    Mit den Funktionen Chr(), Right(), DatePart() organisierts du doch nur den String neu, oder?
    Ja, für die formatierte Ausgabe der Werte in die csv-Datei habe ich nun alle Freiheiten.
    z.B. formatiere ich SmartTags("ProtokollEintrag\SP_Edit.DS.TimeStamp") von S7-DATE_AND_TIME in einen String nach dem Muster "31.12.2008 01:59:59" unabhängig von den regionalen Einstellungen des Panels. Mit Chr(34) schreibe ich Hochkomma vor und hinter String-Variablen in die csv-Datei.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Starter (01.09.2011)

  11. #18
    Starter ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.08.2010
    Beiträge
    20
    Danke
    17
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Moin Harald,
    nochmals besten Dank für all deine Hilfe. Das Lesen und Speichern der 32000 DWord Variablen auf der Speicherkarte des Panels funktioniert nun zuverlässig, ohne Bus-Kommunikationsfehler und dauert ca. 5 bis 7 Minuten jenachdem wie groß man die Datensätze wählt. Damit bin ich sehr zufrieden.

    Es ist mir bis jetzt nur noch eine kleine Sache aufgefallen die ich mir nicht erklären kann. Und zwar, wenn man während des Lesens und Speicherns der gesamten Datenmenge(also während der 5-7min) das Bild verlässt und zwischen durch auf anderen Bildern unterwegs ist bleibt manchmal der Prozess des Lesen uns Schreiben der Datensätze hängen.

    Es kommt dabei jedoch nicht zu Fehlern, die Skripte und Systemfunktionen werden bis zum Ende ausgeführt und melden auch eine erfolgreiche Ausführung. Ich habe mir deswegen eine zusätzliche Schaltfläche auf meinem Bild angelegt mit dem ich nochmal alle Skripte anstoße. Danach wird der Prozess auch weiter ausgeführt jedoch fehlt am Ende in manchen Fällen ein Datensatz.

    Hast du da vielleicht eine Idee, was dass sein könnte? Meinst du das ist ein Programmierfehler von mir, oder liegt das am Panel. Hattest du eventuell ähnliche Erfahrungen mit deiner Lösung gemacht.

    Meine Lösung ist deiner sehr Ähnlich. Ich habe auch 3 Skripte angelegt. Eins zum Lesen der Datensätze aus der SPS, eins zum Speichern der Datensätze auf der SD-Karte und das letzte zum koordinieren des Prozesses. Die Skripte werden zum Teil über Variablen ausgelöst, aber auch über Schaltflächen in WinCC. Die Aktualisierung der Steuerariablen habe ich auf 500ms gestellt.

    Über eine kurze Antwort würde ich mich sehr freuen.

    Gruß vom
    Starter

  12. #19
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Daumen hoch

    Zitat Zitat von Starter Beitrag anzeigen
    Das Lesen und Speichern der 32000 DWord Variablen auf der Speicherkarte des Panels funktioniert nun zuverlässig, ohne Bus-Kommunikationsfehler und dauert ca. 5 bis 7 Minuten jenachdem wie groß man die Datensätze wählt. Damit bin ich sehr zufrieden.
    Hallo Starter,

    schön zu lesen, daß Du es hinbekommen hast. Meine Erklärung des Konzeptes ist ja nur sehr idealisiert und es gab noch viele Einzelprobleme durch Dich zu lösen. Danke für die Rückmeldung.

    Zitat Zitat von Starter Beitrag anzeigen
    wenn man während des Lesens und Speicherns der gesamten Datenmenge(also während der 5-7min) das Bild verlässt und zwischen durch auf anderen Bildern unterwegs ist bleibt manchmal der Prozess des Lesen uns Schreiben der Datensätze hängen.
    Die 2 Event-Variablen (DS_Nummer_ACK und rdStat) müssen auf Erfassungsart "Zyklisch fortlaufend" eingestellt werden, dann klappt's auch mit dem nebenbei anderweitig arbeiten. Es würde auch reichen, sie irgendwie im Permanentfenster zu verwenden, z.B. für eine Animation.

    Gruß
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  13. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Starter (01.09.2011)

  14. #20
    Starter ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.08.2010
    Beiträge
    20
    Danke
    17
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin Harald,
    jo das scheint es wohl gewesen zu sein. Hab es jetzt ein paar mal ausprobiert und der Fehler ist nicht mehr aufgetreten.

    Nochmals besten Dank, echt ne klasse Lösung!!!

  15. Folgender Benutzer sagt Danke zu Starter für den nützlichen Beitrag:

    PN/DP (02.09.2011)

Ähnliche Themen

  1. Prozessdaten speichern in S7 ?
    Von derAndere im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 20.10.2010, 18:08
  2. TP277 Datei speichern, erstellen
    Von cindy im Forum HMI
    Antworten: 11
    Letzter Beitrag: 29.06.2009, 18:52
  3. Zwei Identische TP277 auf einer Steuerung
    Von Trötschi im Forum HMI
    Antworten: 12
    Letzter Beitrag: 12.12.2008, 12:46
  4. Probleme mit einer 128er Speicherkarte
    Von Gerki im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 13.05.2008, 20:45
  5. Werte eines Array dauerhaft speichern!!
    Von SliderZ im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 23.02.2007, 12:49

Lesezeichen

Berechtigungen

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