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

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

Thema: Novram / cx9020

  1. #1
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.240
    Danke
    193
    Erhielt 201 Danke für 185 Beiträge

    Daumen hoch


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hab da ein Problem mit meinem Programm(?) oder dem Verständnis der Systemfunktion FB_NovRamReadWriteEx.
    Code:
    VAR
        novram:FB_NovRamReadWriteEx;
        fbfileopen:FB_FileOpen;
        fbfileclose:FB_FileClose;
        fbfileputs:FB_FilePuts;
    
    
        zeitstempel:STRING;
        bwritenovram: BOOL;
        sverify: STRING;
        ncbread: UDINT;
        ncbwrite: UDINT;
        bbusy: BOOL;
        berror: BOOL;
        nerrid: UDINT;
        btest: BOOL;
        breadnovram: BOOL;
        cblen: UDINT:=28;
    END_VAR
    
    (****************************************************************************************)
    novram(
        nDevId:= 3,
        bRead:=bwritenovram ,
        bWrite:=bwritenovram ,
        cbSrcLen:=cblen ,
        cbDestLen:=cblen ,
        pSrcAddr:=ADR(zeitstempel) ,
        pDestAddr:=ADR(sverify) ,
        nReadOffs:=noffset ,
        nWriteOffs:=noffset ,
        tTimeOut:=t#5s ,
        bBusy=>bbusy ,
        bError=>berror,
        nErrId=> nerrid,
        cbRead=>ncbread ,
        cbWrite=>ncbwrite );
    
    IF bwritenovram AND NOT bbusy AND NOT berror AND NOT btest THEN
        IF zeitstempel = sverify THEN
            noffset:=noffset+32;
        END_IF;
        bwritenovram:=FALSE;
    END_IF;
    Erwarten würde ich jetzt, das beim setzen von bwritenovram der String, im Augenblick 28 Byte, geschrieben wird und gemäß Doku sofort zurückgelesen wird. Jedoch passiert folgendes:
    Der Schreibzähler cbwrite zeigt korrekt 28 geschriebene Byte an und der Lesezähler zeigt 28 gelesene Bytes an. Jedoch unterscheiden sich die String's zeitstempel und sverify. Es passiert schlich nix weiter. Im Systemmanager, in dem ich mir die Belegung des NOVRAM anzeigen lasse, zeigt tatsächlich auch nur ein Muster an hex 21 00 00 00 21 00 00 00 uswusf.
    Beim Rücklesen auf den entsprechenden Offsets wie 0, 4 uswusf steht dann in verify '!' also das ascii für 21h.
    Kann mir mal einer bitte in die rechte Richtung schubsen, warum da nix geschrieben wird?

    Hintergrund: Ich möchte ein paar Variablen als Betriebsdaten in definierbaren Zeitabständen erfassen und vorformatiert für späteren Dateiexport im NOVRAM speichern (ca. 4kB) um dann später blockweise auf die Speicherkarte zu schreiben. Im Augenblick scheitert es aber beim NVRAM-Zugriff und eh ich noch einen Tag rumbastele frag ich Euch...
    Geändert von weißnix_ (19.07.2016 um 06:22 Uhr)
    Zitieren Zitieren Gelöst: [gelöst] Novram / cx9020  

  2. "So kann man sich auch die freien Stunden des Sonntag verderben:

    Für mich ging nicht ganz klar aus der Doku die Einbindung des NOVRAM für wahlfreie Zugriffe hervor. Und deshalb hat es nicht funktioniert. Um die Peinlichkeit komplett zu machen:
    Anhang 33400

    In diesem Fenster steht zwar schon was drin, für die Adresszuordnung, aber es ist ein Klick auf "Suchen" für die Basisadresse nötig, damit der NOVRAM an der richtigen Stelle gemappt wird.
    Ab dem Moment klappt es auch mit dem Nachbarn.
    Ich hätte aber bei dem Bytemuster stutzig werden müssen: So sah das damals auf den 8-Bit Rechnern auch immer aus, wenn ich auf einen Adressbereich zugriffen habe, auf dem gar kein RAM physikalisch vorhanden war

    Ich habe entweder bisher unbewußt alles richtig gemacht bei der Initialisierung des NOVRAM oder ich habe unheimlich Glück gehabt. Allerdings bin ich mit Variablenremanenz ohnehin sehr sparsam.
    Edit: Ich muß meine bisher verbauten CX mal prüfen, ob die Auto-Verlinkten Variablen das tun, was sie sollen, oder ob ich da auch dem Fehler aufgesessen bin."


  3. #2
    Registriert seit
    24.02.2009
    Beiträge
    1.229
    Danke
    22
    Erhielt 274 Danke für 234 Beiträge

    Standard

    Wenn ich den NOV-RAM nutze dann fasse ich die Daten die da rein sollen in einer Struktur zusammen und erzeuge ein Array (als Prozessausgang) von dieser Struktur. Dieses Array kann man dann im Systemmanager direkt mit dem NOV-RAM verknüpfen.
    Im PLC Programm kann ich das Array dann ganz normal nutzen (lesen und beschreiben) und ich muss nicht mit den FBs herumhantieren.
    Sänd from mei Kombjudder mitse Dastadurr.

  4. #3
    Avatar von weißnix_
    weißnix_ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.240
    Danke
    193
    Erhielt 201 Danke für 185 Beiträge

    Standard

    Genau das möchte ich vermeiden. Über die Link-Funktion sichere ich eigentlich nur einzelne betriebswichtige Parameter. Ich möchte mir ein flexibles Logbuch zusammenbasteln, welches mir nicht die SD-Card "zerschreibt" aber auf der anderen Seite auch auf schwachbrüstigen Systemen läuft.
    Das Logbuch soll quasi nur durch den Speicherplatz auf der SDcard begrenzt sein (fortlaufend). Im NOVRAM möchte ich nur die Blöcke sammeln, bis ich entsprechend die Menge für einen Blockzugriff habe.

    Erstes Zielsystem ist ein CX9010, der im Sysman so um 80% Auslastung anzeigt.

  5. #4
    Avatar von weißnix_
    weißnix_ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.240
    Danke
    193
    Erhielt 201 Danke für 185 Beiträge

    Standard

    Der Frustpegel bei mir ist momentan etwas gesteigert:
    Die Funktion macht (fast) alles wie in der Doku beschrieben. Aber die Daten werden nicht in's NOVRAM geschrieben. Errcodes kommen auch nicht zurück.

  6. #5
    Avatar von weißnix_
    weißnix_ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.240
    Danke
    193
    Erhielt 201 Danke für 185 Beiträge

    Standard

    So kann man sich auch die freien Stunden des Sonntag verderben:

    Für mich ging nicht ganz klar aus der Doku die Einbindung des NOVRAM für wahlfreie Zugriffe hervor. Und deshalb hat es nicht funktioniert. Um die Peinlichkeit komplett zu machen:
    Unbenannt.png

    In diesem Fenster steht zwar schon was drin, für die Adresszuordnung, aber es ist ein Klick auf "Suchen" für die Basisadresse nötig, damit der NOVRAM an der richtigen Stelle gemappt wird.
    Ab dem Moment klappt es auch mit dem Nachbarn.
    Ich hätte aber bei dem Bytemuster stutzig werden müssen: So sah das damals auf den 8-Bit Rechnern auch immer aus, wenn ich auf einen Adressbereich zugriffen habe, auf dem gar kein RAM physikalisch vorhanden war

    Ich habe entweder bisher unbewußt alles richtig gemacht bei der Initialisierung des NOVRAM oder ich habe unheimlich Glück gehabt. Allerdings bin ich mit Variablenremanenz ohnehin sehr sparsam.
    Edit: Ich muß meine bisher verbauten CX mal prüfen, ob die Auto-Verlinkten Variablen das tun, was sie sollen, oder ob ich da auch dem Fehler aufgesessen bin.
    Geändert von weißnix_ (19.07.2016 um 19:45 Uhr)

  7. #6
    Registriert seit
    19.05.2008
    Beiträge
    622
    Danke
    114
    Erhielt 129 Danke für 99 Beiträge

    Standard

    Hallo weißnix_,

    bei 4kB Daten würde ich unbedingt eine Steuerung mit 1s-USV verwenden.

    Wenn ich eine Steuerung auswähle, dann eigentlich immer eine mit 1s-USV…

    …sonst hätte ich vom Haare raufen ein Glatze und der Bart wäre längst grau…

    Gruß
    Chräshe

  8. #7
    Avatar von weißnix_
    weißnix_ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.240
    Danke
    193
    Erhielt 201 Danke für 185 Beiträge

    Standard

    Die Anforderungen wachsen und DataLog war zum Anschaffungszeitpunkt kein Thema. Ich habe aber damals schon im Hinblick auf solche Möglichkeiten mit dem NOVRAM geliebäugelt.
    Da jetzt alles funzt wie's soll seh ich weiter keinen Grund, der USV nachzutrauern.

  9. #8
    Registriert seit
    27.11.2009
    Beiträge
    187
    Danke
    1
    Erhielt 28 Danke für 27 Beiträge

    Standard

    TwinCAT2 oder 3? Wenn 3 gibt es seit der Version 4020 einen persistent Data handler. In der SPS deklariert man einen Variablenbereich mit VAR PERSISTANT daraufhin erhält man ein neues Prozessabbild was man mit dem Data handler verknüpft. Durch diesen werden nur die Daten geschrieben die sich geändert haben. Das ganze ist ziemlich Performant und sicher. Der Handler sorgt automatisch dafür das die Daten zurückgeschrieben werden bei Neustart und man braucht nicht eine Zeile Code für das ganze handling


    Gesendet von iPhone mit Tapatalk

  10. #9
    Avatar von weißnix_
    weißnix_ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.240
    Danke
    193
    Erhielt 201 Danke für 185 Beiträge

    Standard

    Ich habe TC2 drauf.

    Dessen ungeachtet ist mein Ziel in erster Linie das Abspeichern fortlaufender Betriebsdaten als Datenprotokoll unter Reduzierung der Schreibhäufigkeit auf den Flash.
    Mittlerweile hab ich das Handling mit dem NOVRAM im Griff und es trainiert ja auch, wenn man sich nicht immer alles einfach macht.

    Ich möchte schreibend auf ein Flashmedium nur in größeren Blöcken zugreifen. Auch wenn ich Industrial Grade SD-Karten drinhab - Die Anlage soll über Jahre laufen und ich hab schon zuviele kaputte Kamera- und Handy-SD-Karten gehabt, um da blauäugig dranzugehen.

    Wenn ich also ~4kB Daten sammle und in einem Rutsch schreibe kann das nicht verkehrt sein. Außerdem vermute ich, das es einen Performancevorteil hat (Wichtig, falls ich mal kürzere Intervalle mit mehr Daten habe).

  11. #10
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    666
    Danke
    21
    Erhielt 143 Danke für 123 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @KGU:
    Könntest Du den Umgang mit diesem Persistent Data Handler mal etwas näher beschreiben? Mir ist der bis jetzt noch gar nicht aufgefallen.

Ähnliche Themen

  1. Novram vs. Persistent Data
    Von tomatensaft im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 22.03.2016, 07:16
  2. NOVRAM - Datenspeicher bei Stromausfall
    Von forellengarten im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 11.12.2010, 15:12
  3. MI XV102 - Novram
    Von stricky im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 08.09.2010, 23:00
  4. Schrittkettenzustand in NOVRAM sichern?
    Von grosser_marco im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 08.09.2009, 22:47
  5. NOVRAM gelöscht
    Von grosser_marco im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 20.01.2009, 19:23

Lesezeichen

Berechtigungen

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