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

Ergebnis 1 bis 8 von 8

Thema: Twincat - Array[1..1000] of Struktur automatisch in NOVRAM

  1. #1
    Registriert seit
    16.12.2009
    Ort
    Süddeutschland
    Beiträge
    173
    Danke
    37
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielleicht fehlt mir nur der Aha-Effekt zu folgendem Problem:

    Folgende Variablendeklaration:
    NovramSchaltprotokoll AT%Q*:ARRAY[1..1000] OF ST_Schaltprotokoll;

    Diese Array-Struktur möchte ich in den Novram-Speicher kriegen. Das klappt zwar soweit dass ich im Systemmanager bei Novram das Array unter den Ausgängen anfügen kann und dieses dargestellt wird. Allerdings muß ich nun von Hand auf jeden Arrayeintrag clicken und dort jedes einzelne Strukturelement verknüpfen. Das geht doch bestimmt auch automatisch, aber ich steige einfach nicht dahinter wie das geht?

    P.s. TwinCat 2

    Danke euch sehr für einen guten Tipp!
    Beckhoff CX9010-1101
    TwinCat 2.11
    Zitieren Zitieren Twincat - Array[1..1000] of Struktur automatisch in NOVRAM  

  2. #2
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    Zitat Zitat von forellengarten Beitrag anzeigen
    NovramSchaltprotokoll AT%Q*:ARRAY[1..1000] OF ST_Schaltprotokoll;

    Diese Array-Struktur möchte ich in den Novram-Speicher kriegen.
    Was steckt denn in deinem "ST_Schaltprotokoll"?

    Würde mir eher Gedanken über die Performance dieser Verknüpfungs-Lösung machen. Teste das zur Sicherheit erstmal mit einem Array [1..5].

  3. #3
    Avatar von forellengarten
    forellengarten ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.12.2009
    Ort
    Süddeutschland
    Beiträge
    173
    Danke
    37
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Lass es pro Tag 100 Protokolleinträge sein. Mach mir da über Performance keine Gedanken. Obwohl... wird ja auch ohne neuen Eintrag zyklisch beschrieben... könnte da tatsächlich mal drüber nachdenken ob nicht weniger reichen. Nichts desto trotz, die Fragestellung bleibt die gleiche
    Gespeichert werden jeweils: 1xUSINT, 1xBOOL, 1xDT. Also keine große Geschichte.
    Geändert von forellengarten (16.08.2012 um 23:01 Uhr)
    Beckhoff CX9010-1101
    TwinCat 2.11

  4. #4
    Registriert seit
    23.07.2003
    Beiträge
    209
    Danke
    22
    Erhielt 14 Danke für 12 Beiträge

    Standard

    Moin Moin,

    Im System Manager (wenn der CX oder was auch immer gescannt wurde) in den IO-Bereich NoVRAM gehen, dort eine neue Variable anlegen, in der Typenliste die Struktur suchen (evtl. Das PLC Projekt neu einlesen!), diese Struktur auswählen und mit der Variable der Struktur verlinken.

    Ganz wichtig ist dann noch die Checkbox "Auto Reload Data", damit das System die Daten beim Neustart auch zurück laed.

    Sollten die Datenbereiche zu groß sein,in einen langsamen Task auslagern.

    Eventuell wenn es sich um einen CX handelt USV einsetzen und ohne NoVRAM arbeiten ist bestimmt auch ne Idee ...

    Gruß,
    Michael

  5. Folgender Benutzer sagt Danke zu nekron für den nützlichen Beitrag:

    forellengarten (17.08.2012)

  6. #5
    Avatar von forellengarten
    forellengarten ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.12.2009
    Ort
    Süddeutschland
    Beiträge
    173
    Danke
    37
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von nekron Beitrag anzeigen
    Moin Moin,

    Im System Manager (wenn der CX oder was auch immer gescannt wurde) in den IO-Bereich NoVRAM gehen, dort eine neue Variable anlegen, in der Typenliste die Struktur suchen (evtl. Das PLC Projekt neu einlesen!), diese Struktur auswählen und mit der Variable der Struktur verlinken.


    Sollten die Datenbereiche zu groß sein,in einen langsamen Task auslagern.

    Gruß,
    Michael
    Danke für den Tipp. Klappt aber irgendwie nicht so richtig. TwinCat übernimmt zwar so die Struktur, klicke ich jedoch auf das Kreuzchen, um mir die einzelnen Verknüpfungen anzusehen, so sind diese leer und zeigen auch unter dem Button "online" keinen Wert an. Interessant jedoch: irgendetwas scheint schon mit der Struktur zu passieren, denn die Performance geht wahnsinnig in den Keller (original 17% Auslastung, mit der Struktur 70% (!) Auslastung). Spricht ganz klar für deinen Vorschlag bzgl. Auslagern in langsame Task (und Array verkleinern).

    Hab dann auch einen Reset versucht. Alle meine anderen Novram-Werte bleiben erhalten - meine neu angelegte Struktur ist jedoch tatsächlich weg.
    Beckhoff CX9010-1101
    TwinCat 2.11

  7. #6
    Registriert seit
    23.07.2003
    Beiträge
    209
    Danke
    22
    Erhielt 14 Danke für 12 Beiträge

    Standard

    Hi ...

    Da wir das rein für Produktdaten auch so machen (liegen in einer Struktur) funktioniert das schon ...
    Ich mache morgen mal einen Screenshot wie das ganze aussieht ...

    Aber die Datenmenge so gering wie möglich halten oder eben auf Systeme mit usv oder zumindest 1 sec usv ausweichen.

    Gruß,
    Michael

  8. #7
    Avatar von forellengarten
    forellengarten ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.12.2009
    Ort
    Süddeutschland
    Beiträge
    173
    Danke
    37
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von nekron Beitrag anzeigen
    Moin Moin,

    ...Sollten die Datenbereiche zu groß sein,in einen langsamen Task auslagern...
    Gruß,
    Michael
    Blöde Frage: wie mache ich dieses Auslagern. Meine Globalen Novram-Variablen sind ja nicht direkt an ein Hauptprogramm geknüpft, oder doch? Wie oft wird dann der Novram eigentlich aktuallisiert? Oder anders gefragt: ich erzeuge ein Programm mit mein einer sehr langsamen Zykluszeit. Aber wie teile ich dem System mit, daß die Novram-Aktuallisierungsrate an diesem langsamen Programmzyklus hängen soll? Glaube ich steh ziemlich daneben
    Beckhoff CX9010-1101
    TwinCat 2.11

  9. #8
    Registriert seit
    07.06.2012
    Beiträge
    20
    Danke
    0
    Erhielt 14 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin forellengarten,

    das NovRam ist eigentlich nicht dafür gedacht um große Datenmengen zyklisch zu sichern, das sollte nur mit wenigen Daten passieren. Deine Struktur (1000x7Byte) würde ich in 1k Blöcke teilen und Asynchron bei Bedarf in den NovRam schreiben, damit bleibt deine Auslastung niedrig.
    Hier ein Beispiel mit im Merkerbreich lokierten Daten:

    IF bFirstRestore THEN
    CASE nStepWrite OF
    0: IDXOFFS := 1000 * Umlauf ;
    IF fbAdsWriteNovRam.Busy = FALSE THEN
    fbAdsWriteNovRam(WRITE := FALSE);
    IF fbAdsWriteNovRam.ERR = TRUE THEN
    nStepRead := 1000;
    ELSE
    Umlauf := Umlauf +1;
    CASE Umlauf OF
    1: SRCADDR := ADR (%MB1000);
    2: SRCADDR := ADR (%MB2000);
    3: SRCADDR := ADR (%MB3000);
    4: SRCADDR := ADR (%MB4000);
    5: SRCADDR := ADR (%MB5000);
    6: SRCADDR := ADR (%MB6000);
    7: SRCADDR := ADR (%MB7000);
    8: SRCADDR := ADR (%MB8000);
    Umlauf := 0;
    nStepWrite := 10;
    END_CASE;
    bAdsWriteError := FALSE;
    END_IF

    END_IF
    (*Daten NovRAM des CX1000 schreiben*)
    fbAdsWriteNovRam(
    NETID := '', (*Lokaler CX *)
    PORT := 300,
    IDXGRP := 16#8005,
    IDXOFFS := IDXOFFS,
    LEN := 1000,
    SRCADDR := SRCADDR,
    WRITE := TRUE,
    TMOUT := T#5s);
    10:
    nStepWrite := 0; (* und von vorn *)
    Umlauf := 0;

    1000:
    bAdsWriteError := TRUE;
    nLastAdsWriteErrID := fbAdsWriteNovRam.ERRID;
    nErrCounterWrite := nErrCounterWrite +1;
    nStepWrite := 10;

    END_CASE
    END_IF


    Zurücklesen nach dem booten dann natürlich auch in Blöcken.


    Gruß
    Thomas

  10. Folgender Benutzer sagt Danke zu Thomas64 für den nützlichen Beitrag:

    forellengarten (25.09.2012)

Ähnliche Themen

  1. TwinCat Struktur Zuweisung/ Zuordnung
    Von pedikon im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 01.10.2011, 18:21
  2. TwinCat Struktur wird nicht vollständig angezeigt
    Von Gerri im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 11.02.2011, 13:54
  3. Struktur in Array
    Von ipacsre im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 19.05.2010, 20:08
  4. TwinCAT Achsen automatisch
    Von Anaconda55 im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 28.10.2008, 09:24
  5. WinCC flex Variable, Struktur, Array
    Von xhasx im Forum HMI
    Antworten: 3
    Letzter Beitrag: 11.06.2007, 16:30

Lesezeichen

Berechtigungen

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