SCL Lokaldatenbedarf zu hoch!

hoT

Level-1
Beiträge
109
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,

habe ein Problem an dem ich schon den ganzen Tag dran sitze aber keine Lösung finde.

Für das Programmieren nutze ich SCL. Mein Problem ist das mein Teilprogramm zwar funktioniert
jedoch zuviel Lokaldatenbedarf in der CPU verbraucht ca. 500 Bytes aus dem OB35.

Vielleicht könnt ihr mir da weiterhelfen!

// Eingangsparamter
test : INT := 0; // für die Case-Anweisung

//Ausgänge des SCL-Bausteines
// 4 mal diese Struktur
Ausgang_der_Struktur_1: STRUCT
A: STRING[32];
B: STRING[32];
C: STRING[32];
D: STRING[32];
E: STRING[32];
END_STRUCT ;

Ausgang_der_Struktur_2...


Ausgang_der_Struktur_3...


Ausgang_der_Struktur_3...


Diese Ausgänge der Strukturen sind in CFC mit den Strukturen eines des UDT515 innerhalb eines des
Datenbausteines verbunden: Ausgang_der_Struktur_x >>> DB100 >>> UDT auf dessen Inhalt
ich mit den Ausgängen dieses SCL-Bausteines reinschreibe möchte.
Es geht ja auch nur das ich einen zu hohen Lokaldatenspeicherbedarf im OB 35 habe.

DB100
struct
Line_1 UDT515
Line_2 UDT515
Line_3 UDT515
Line_4 UDT515
end_struct

UDT

struct
A STRING[32]
B STRING[32]
C STRING[32]
D STRING[32]
E STRING[32]
end_struct


// Die Werte dieser Ausgänge möchte ich ein die Linien meines DB schreiben
// Ausgänge des SCL-Bausteines
test1 : STRING[32];
test2 : STRING[32];
test3 : STRING[32];
test4 : STRING[32];
test5 : STRING[32];



//////////////////////////////////////////
CASE test OF


11 : Ausgang_der_Struktur_1.A:= test1;

Ausgang_der_Struktur_1.B:= test2;
Ausgang_der_Struktur_1.C:= test3;
Ausgang_der_Struktur_1.D:= test4;
Ausgang_der_Struktur_1.E:= test5;


12 : Ausgang_der_Struktur_2.A:= test1;

Ausgang_der_Struktur_2.B:= test2;
Ausgang_der_Struktur_2.C:= test3;
Ausgang_der_Struktur_2.D:= test4;
Ausgang_der_Struktur_2.E:= test5;


13 : Ausgang_der_Struktur_3.A:= test1;

Ausgang_der_Struktur_3.B:= test2;
Ausgang_der_Struktur_3.C:= test3;
Ausgang_der_Struktur_3.D:= test4;
Ausgang_der_Struktur_3.E:= test5;


14 : Ausgang_der_Struktur_4.A:= test1;

Ausgang_der_Struktur_4.B:= test2;
Ausgang_der_Struktur_4.C:= test3;
Ausgang_der_Struktur_4.D:= test4;
Ausgang_der_Struktur_4.E:= test5;


END_CASE;


Wie kann ich dieses Problem lösen. Dachte immer nur statische und temporäre
Variable verbrauchen den Lokaldatenspeicher des OB 35?

...habe es auch schon mit z.B.

IF 11 THEN
Ausgang_der_Struktur_1.A:= test1;
Ausgang_der_Struktur_1.B:= test2;
Ausgang_der_Struktur_1.C:= test3;
Ausgang_der_Struktur_1.D:= test4;
Ausgang_der_Struktur_1.E:= test5;
elsif 12 THEN...

...probiert aber auch keine Reduzierung des Lokaldatenspeichers erreicht!


Gruß hoT
 
Warum nicht einfach die Lokaldatengrenze für OB 35 in der Hardwarekonfig erhöhen? Anmerkung: Den Lokaldatenbedarf sieht man auch in der Programmstruktur.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zu Reduzierung kann ich dir im Moment nicht weiterhelfen, außer, weniger Strings zu verwenden und 2 Bausteine zu nutzen. Was für eine CPU hast du? Bei der VIPA Speed7 und der 400-er Reihe von Siemens kann man in der Hardwarekonfig der SPS unter "Speicher" für die Prijoritätsebenen mehr Lokaldatenspeicher zuordnen. Damit habe ich das Problem immerhin schin einmal gelöst. Bei kleineren SPS half aber nur, den FB, der mehrere Strrings gleichzeitig verarbeitete zu zerlegen und nur noch einen String zu bearbeiten.
 
Warum nicht einfach die Lokaldatengrenze für OB 35 in der Hardwarekonfig erhöhen? Anmerkung: Den Lokaldatenbedarf sieht man auch in der Programmstruktur.

Denn kann ich nicht mehr ist schon von zu viel gefühlt!

Zu Reduzierung kann ich dir im Moment nicht weiterhelfen, außer, weniger Strings zu verwenden und 2 Bausteine zu nutzen. Was für eine CPU hast du? Bei der VIPA Speed7 und der 400-er Reihe von Siemens kann man in der Hardwarekonfig der SPS unter "Speicher" für die Prijoritätsebenen mehr Lokaldatenspeicher zuordnen. Damit habe ich das Problem immerhin schin einmal gelöst. Bei kleineren SPS half aber nur, den FB, der mehrere Strrings gleichzeitig verarbeitete zu zerlegen und nur noch einen String zu bearbeiten.

Weniger Strings geht nicht aber 2 seperate Bausteine reduzieren den Lokalbedarf?
 
Denn kann ich nicht mehr ist schon von zu viel gefühlt!



Weniger Strings geht nicht aber 2 seperate Bausteine reduzieren den Lokalbedarf?

Wenn sie nacheinander aufgerufen werden ja, denn wenn ein Baustein beendet wird, gibt er ja seine Lokaldaten wieder frei.
 
Hallo,
so als neuer Ansatz :
Wie wäre es, wenn du für dein Vorhaben einen FB erstellst und deine Ausgangs-Daten im STAT-Bereich des FB's abbildest ? Somit kannst du dir das Umschachteln in den DB (100 ?) sparen (weil du hast dann ja die OUT's nicht mehr) und dein Lokaldatenbedarf würde sich so signifikant verringern.

Gruß
LL
 
Zurück
Oben