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

Ergebnis 1 bis 6 von 6

Thema: Fehler: Array Größe

  1. #1
    Registriert seit
    08.09.2011
    Beiträge
    38
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen:
    Ich habe ein Array (Data_Ch1) in meinem Programm als Speicherpuffer für aus Klemmer übernommene Daten deklariert und mit Hilfe von CSV-Funktionsblöcke und File-Funktionsblöcke (Open=>Write=>Close) wird diese Array in einer CSV-Datei gespeichert.
    \Code:
    VAR_INPUT
    Data_Ch1 : ARRAY [1..3999] OF ST_LogTimestampedValue;
    End_VAR

    TYPE ST_LogTimestampedValue :
    STRUCT
    nIdx:UDINT;
    nDataCnt:UDINT;
    nnTimestamp:T_DCTIME;
    wValue:WORD; (*raw data*)
    rValue:REAL;
    END_STRUCT
    END_TYPE

    Wenn diese Array 3999 lange ist, kann das Programm ohne Problem laufen und die bestimmte CSV-Datei kann als auch richtig geschrieben werden. Aber wenn ich die Länge der Array (Data_Ch1) mehr als 3999 verändere, kann das Programm weiter ohne Problem laufen. trotzdem die bestimmte CSV-Datei nicht geschrieben werden kann. Wenn ich die CSV-datei eröffnen, entdecke ich, dass die Datei leer ist, nichts dazu geschrieben wird. Weiß jemand was ist die vieleichte Ursache?

    Noch zu bemerken ist, ich habe die Parameter unter Projekt=>Optionen=>TwinCAT
    Input: 2000KBytes
    Output:2000KBytes
    Memory:4000KBytes
    Retain:4000KBytes
    Data:20000KBytes verändert. Trotzdem weiß ich noch nicht, was stellen diese Parameter dar. Aber wenn ich diese Parameter in default wert (16;16;32;32;1024) sein lasse, entsteht die Fehler bei Übersetzung des Programms: Fehler 3801: Variable XXXXXX zu groß ist
    Zitieren Zitieren Fehler: Array Größe  

  2. #2
    Registriert seit
    15.08.2011
    Beiträge
    383
    Danke
    2
    Erhielt 73 Danke für 71 Beiträge

    Standard

    Hallo,

    wie groß ist denn die Variable?
    Mach doch mal ein SIZEOF(Data_Ch1).

    Mehrere Möglichkeiten:
    a) "Data" ist nicht groß genug
    b) "Timeout" des Schreibbausteins zu gering gewählt (Große Datenmenge = mehr Zeit)
    c) Der Baustein läßt intern nicht mehr als "MAXSIZE" zu
    d) Die Steuerung hat zu wenig Arbeitsspeicher

    Gruß,
    Mac203

  3. #3
    ysh032 ist offline Benutzer
    Themenstarter
    Registriert seit
    08.09.2011
    Beiträge
    38
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    nach SIZEOF (Data_Ch1[1..3999]) ist das Ergebnisse 1023744 Byte. Bei Schreiben mehr als diese Datemenge führt der Baustein ein bError mit ID: 1802 (Out of Menmory). Ich denke, es gibt MAXSIZE für zu schreibende Datenmenge in Baustein FB_Filewrite. Aber weiß man nicht wie groß ist es.

  4. #4
    Registriert seit
    15.08.2011
    Beiträge
    383
    Danke
    2
    Erhielt 73 Danke für 71 Beiträge

    Standard

    Es gibt eine globale Konstante für das File_Seek_End.
    Aber diese liegt bei 4GB!!
    Code:
    FILE_SEEKEND                                :     DWORD    := 16#FFFFFFFE;
    Ich denke, da solltest Du eine offzielle Support-Anfrage stellen. Auf diesem Weg wird das schwer....

    Erweiterung:
    Ich hab gerade noch mal in die LIB geschaut:
    Ich denke nicht, dass es an einer internen Grenze ligt, da dort ein "normale" FW_AdsRdWrt verwendet wird.
    Dieser ist allerdings auf den Router-Speicher angewiesen. Vielleicht reicht dieser nicht aus bzw. wird zu stark von anderen Systemteilen benutzt und muss erweitert werden?
    Geändert von mac203 (27.09.2011 um 15:22 Uhr) Grund: Erweiterung

  5. #5
    ysh032 ist offline Benutzer
    Themenstarter
    Registriert seit
    08.09.2011
    Beiträge
    38
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von mac203 Beitrag anzeigen
    Es gibt eine globale Konstante für das File_Seek_End.
    Aber diese liegt bei 4GB!!
    Code:
    FILE_SEEKEND                                :     DWORD    := 16#FFFFFFFE;
    Ich denke, da solltest Du eine offzielle Support-Anfrage stellen. Auf diesem Weg wird das schwer....

    Erweiterung:
    Ich hab gerade noch mal in die LIB geschaut:
    Ich denke nicht, dass es an einer internen Grenze ligt, da dort ein "normale" FW_AdsRdWrt verwendet wird.
    Dieser ist allerdings auf den Router-Speicher angewiesen. Vielleicht reicht dieser nicht aus bzw. wird zu stark von anderen Systemteilen benutzt und muss erweitert werden?
    Von was hängt die Größe des Router-Speichers ab? ob jeder PC ein unterschiedlichen großen Router-Speicher hat.

  6. #6
    Registriert seit
    15.08.2011
    Beiträge
    383
    Danke
    2
    Erhielt 73 Danke für 71 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Der Router-Speicher ist bei den CX und IPC Steuerung per Default auf 2048 KB eingestellt und kann im Rahmen des Arbeitsspeichers dynamisch erweitert werden.
    Hierzu im SysMan in
    Sysstem-Konfiguration-->Echtzeiteinstellungen

    den gewünschten Wert eintragen.

Ähnliche Themen

  1. Antworten: 18
    Letzter Beitrag: 21.12.2016, 17:03
  2. Antworten: 9
    Letzter Beitrag: 17.06.2011, 08:02
  3. Array in FB mit Größe als Parameter
    Von Heimchen im Forum CODESYS und IEC61131
    Antworten: 15
    Letzter Beitrag: 26.11.2010, 10:33
  4. Größe UDT in SCL
    Von Larry Laffer im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 17.12.2007, 20:25
  5. Bool-Array in Byte-Array
    Von Techniker im Forum Sonstige Steuerungen
    Antworten: 10
    Letzter Beitrag: 13.01.2006, 19:12

Lesezeichen

Berechtigungen

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