TwinCat: Fehler beim Schreiben von persistenten Variablen

stadl.mani

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Vorerst, ich bin relativ neu im Gebiet der SPS-Programmierung und habe wenig Erfahrung mit TwinCat.
Da mir Kollegen, Google und der Beckhoff-Support nicht wirklich weiterhelfen können probiere ich es mal mit diesem Forum.

Das Programm und das TSM habe ich auf meinem lokalen Notebook (Win7 x64) erstellt. Die Steuerung läuft auf einem C6930 (Win7 x86).
Bei beiden PCs bin ich als Administrator angemeldet. Verwendet wird TwinCat 2.11 Build 2228.

Wenn ich jetzt entweder die Steuerung neu starte (Rechtsklick auf Symbol -> System -> Resart) oder die Funktion WritePersistentData aufrufe bekomme ich immer folgende Fehlermeldung:
17-10-2014 09-32-06.png
auf dem Steuerungscomputer.
Im Systemmanager auf meinem Rechner scheint die Fehlermeldung auch auf.

Ich habe bereits den Ordner Boot im TwinCat Ordner gelöscht, Load/Store Retain Data deaktiviert, und und und...

Zum Test habe ich noch ein kleines Programm geschrieben um Persistente Daten zu speichern.
Code:
PROGRAM MAINVAR
    fb:    WritePersistentData;
END_VAR


VAR PERSISTENT
    bla: ARRAY[1..10000] OF INT    := 255;
    bla1: ARRAY[1..10000] OF STRING    := '255';
END_VAR

Code:
fb( START := TRUE, PORT := 801, NETID := '', TMOUT := t#2s );

Wenn ich dieses Programm auf die Steuerung lade oder die Steuerung neu starte wird im Ordner Boot das File TCPLC_T_1.wbp sauber geschrieben.

Ich habe einige (wieviel genau kann ich nicht sagen) Persistente Variablen in meinem Projekt, dennoch denke ich nicht das es zu viele sine.

EDIT 1:
Ich habe jetzt mal mit SIZEOF die Größe meiner persistenten Variablen überprüft.
Eine Variable ist besonders groß. Ein Struct mit 321873 Bytes. Wenn ich diese normal (also nicht als persistent) deklariere, kommt der Fehler nicht mehr.
Ich schließ daraus, dass es am Speicherplatz liegt. Wie kann ich diesen erhöhen?

EDIT 2:
Um den Fehler zu beheben muss man entweder die persistenten Variablen reduzieren oder wie in meinem Fall den Router Speicher erhöhen.
Hierzu öffnet man den SystemManager -> SYSTEM - Konfiguration -> Echtzeit-Einstellungen. In meinem Fall habe ich auf 8192kByte gestellt.
Anschließend noch die Konfiguration übernehmen und den IPC NEUSTARTEN!
Ob es funktioniert hat kann man unten beim ICON -> Router -> Info nachsehen.

Hat schon einer Erfahrung mit diesem Problem?
Über Hilfe wäre ich sehr dankbar.

Grüsse
Manuel




 
Zuletzt bearbeitet:
Hast du mal versucht weniger Daten zu schreiben? Deine Arrays sind nicht gerade Leichtgewichte, vorallem das Array of String.
Wenn es mit weniger Daten auch nicht funktioniert, dann hast du zumindest schonmal eine mögliche Fehlerquelle ausgeschlossen.

EDIT: Fehler 1802: OUT OF MEMORY.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast du mal versucht weniger Daten zu schreiben? Deine Arrays sind nicht gerade Leichtgewichte, vorallem das Array of String.
Wenn es mit weniger Daten auch nicht funktioniert, dann hast du zumindest schonmal eine mögliche Fehlerquelle ausgeschlossen.

Das obige Programm ist nur ein Test um sicherzustellen, dass die Steuerung Daten schreiben kann, welches auch funktioniert.

Der Fehler kommt bei meinem Programm für eine Maschine mit 2 Modulen und Förderband.
Es ist gut möglich, dass ich zu viele persistente Variablen schreibe. Gibt es hier eine Möglichkeit diesen Speicherplatz zu vergrößern?
 
Freut mich, dass du dein Problem gelöst bekommen hast. Und sehr vorbildlich, dass du die Lösung hier auch noch postest!
 
Zurück
Oben