Werte in Speicherbereiche verschieben Scl

MPH

Well-known member
Beiträge
75
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Hi Leute,

ne ganz blöde Frage, aber ich bin noch nicht so der Crack in Sachen Scl!

Weiss jemand wie ich in Scl einen Wert in einen bestimmten Speicherbereich schreiben, verschieben und dort wieder rausholen kann?????

Wäre toll wenn ihr mir helfen könntet.

Vielen Dank schonmal an alle

Grüße
 
OP
M

MPH

Well-known member
Beiträge
75
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Geht es nicht ein wenig genauer zu beschreiben?

Hallo,

auch in der Gefahr, dass ich mich jetzt total plamiere.......

Man hat mir gesagt, dass ich einfach mal einen Wert in den Speicher schreiben soll und ihn dann wieder rauskopieren.
Desweiteren soll ich einfach mal ein paar Speicherbereiche umkopieren.

Ich habe keinen Schimmer wie das geht??????
Die SPS legt doch Werte und Anwenderprogramm in verschiedene Speicher ab oder?

Oder ist damit gemeint einen Wert vom Merkerbereich in den DB Bereich zu kopieren oder so??
Wie geht sowas??????


Ich stehe grad voll auf dem Schlauch

Vielen Dank an alle
 

Pikador

Well-known member
Beiträge
223
Punkte Reaktionen
10
Meinst Du sowas:

VAR
var_1 : INT;
var_2 : INT;
var_real : REAL;
var_dint : DINT;
END_VAR


var_1 := var_2;
mw20 := mw22;
db10.dbw0 := db10.dbw2;
m1.0 := m1.1 AND m1.2;
m2.0 := m2.1;
m2.1 := DB3.DBX2.5 OR m5.5;

var_dint := REAL_TO_DINT(var_real);

mw8 := mw[var_1];

WORD_TO_BLOCK_DB(INT_TO_WORD(var_1 - var_2)).DW[var_1 + var_2] := 7;

m2.0 := WORD_TO_BLOCK_DB(4).DX[((2+2*1)/2),var_1];

Oder was anderes.
 
OP
M

MPH

Well-known member
Beiträge
75
Punkte Reaktionen
1
Meinst Du sowas:

VAR
var_1 : INT;
var_2 : INT;
var_real : REAL;
var_dint : DINT;
END_VAR


var_1 := var_2;
mw20 := mw22;
db10.dbw0 := db10.dbw2;
m1.0 := m1.1 AND m1.2;
m2.0 := m2.1;
m2.1 := DB3.DBX2.5 OR m5.5;

var_dint := REAL_TO_DINT(var_real);

mw8 := mw[var_1];

WORD_TO_BLOCK_DB(INT_TO_WORD(var_1 - var_2)).DW[var_1 + var_2] := 7;

m2.0 := WORD_TO_BLOCK_DB(4).DX[((2+2*1)/2),var_1];

Oder was anderes.


Hi Pikador,

danke für deine Antwort. Ich muss sagen ich weiss nicht genau....
Verschiebe ich durch diese Anweisungen die Werte in verschiedene Speicherbereiche???

Im Handbuch habe ich gelesen das es folgende Speicherbereiche gibt:

E
M
L
DB
T
Z

Da geht es schon los bei mir. M ist Merkerbereich und DB ist klar, dass es ein Datenbaustein ist. Bei T könnte ich mir vorstellen, dass es Zeitbereich ist oder???
Aber die anderen muss ich sagen, weiss ich jetzt nicht was es ist. Verschiebst du jetzt in deinem Code Variablen in andere Speicherbereiche????

Wenn du "var_1 := var_2; mw20 := mw22;" schreibst bleibt man doch im selben Speicherbereich oder nicht???

Wo legt denn die SPS den Anwendercode ab? Eine SPS hat doch mehrere Speicher wie RAM, EEProm und oder ne Speicherkarte.

Kann ich dann einfach auch einen Wert ins Ram schreiben und ihn da wieder rausholen???

Sorry für die dummen und nervigen Fragen. Fühl mich grad wie der übelste Anfänger.

Danke schonmal

Grüße
 

Aventinus

Well-known member
Beiträge
1.347
Punkte Reaktionen
319
E: Prozessabbild der Eingänge
A: Prozessabbild der Ausgänge
M: Merker
DB: Datenbausteine (DB-Register)
DI: Instanz-DB (DI-Register)
L: Lokaldaten
T: Timer (Zeiten)
Z: Zähler

Aber wo, also Ram, EEPROM oder was auch immer, sollte dir eigentlich erstmal egal sein.
Und wenn du von MW 22 nach MW20 kopierst, kopierst du zwar im selben Speicherbereich, aber adressmäßig überschneidet sich das nicht - also sind das in der CPU unterschiedliche Transistoren....
 
Oben