also m.W. ist es in S7 bis jetzt nicht möglich, dynamischen Speicher zu allokieren. Du könntest allenfalls ein Array anlegen, dass immer groß genug ist und dann halt nur einen Teil davon nutzen, also die aktuelle Größe <= Maximalgröße.
ok das ist schonmal gut! danke! Aber beim Array schreibe ich ja ARRAY[1..8]OFUDT...mein Baustein in dem alle Variablen sind ist aber UDT1...oder verwechsle ich da was??
wie sehen eigentlich die Aufrufe für andere datentypen aus?
Ich kenne nur
L DB1.DBW2 //Wort laden
L DB1.DBD2 // DWORD laden
was gibt es da noch so? habe nirgendwo infos darüber gefunden.
Und wie kann ich die werte weiterschieben um danach auf der selben Adresse zu speichern?
L DB_Name.Analge[01].Wert_1
L DB1.DBW2
pt
Ja, mein Fehler, unten als ARRAY.
L "DB_Betriebsdaten".Daten_Aktuell.Datum // L DB100.DBW 10
L "DB_Betriebsdaten".Daten_Aktuell.Zeit // L DB100.DBD 12
L "DB_Betriebsdaten".Daten_Aktuell.BSTD1 // L DB100.DBD 16
mehr lade und transferbefehle gibt es nicht.
mehr als ein dword kannst du nicht direkt tranferieren/adressieren.
für 'datenblöcke' die mehr als 4byte haben nimmst du entweder die sfc20 oder nimmst einfach mehrere einzeltransfers.
z.b. date_and_time das sind 6byte.
entweder mit sfc20 und angabe der anfangsadresse
q: P#DB1.DBX 0.0 BYTE 6
z: P#DB2.DBX 10.0 BYTE 6
oder so
l db1.dbd0
t db2.dbd10
l db1.dbw4
t db2.dbw14
nochmal zu verständnis.
ein udt enthält nur die struktur wie dein db später aussehen wird.
edit: warum bin ich heute eigentlich so langsam mit dem schreiben ???
U DB100.DBX20.3 <-- Datenbaustein 100, Datenwort 20, Bit 3
= M 100.0
Pylades
OK das ist schonmal hilfreich...
bezieht sich aber leider nicht auf das Bsp. von Kalle wo die Werte im DB100 "Ringpuffer" Array sind, dieses Array ist verbunden mit UDT1 und aus diesem UDT möchte ich ein Bit/Byte/Word/Dword laden.
wie sieht dann die Adressierung aus??
mfg
Und hier:TYPE UDT 100
VERSION : 1.0
STRUCT
Datum : DATE ;
Zeit : TIME ;
BSTD1 : DINT ;
BSTD2 : DINT ;
BSTD3 : DINT ;
GesZ : DINT ;
END_STRUCT ;
END_TYPE
hat Ralle schon geschrieben wie auf Word und DWord zugegriffen wird.L "DB_Betriebsdaten".Daten_Aktuell.Datum // L DB100.DBW 10
L "DB_Betriebsdaten".Daten_Aktuell.Zeit // L DB100.DBD 12
L "DB_Betriebsdaten".Daten_Aktuell.BSTD1 // L DB100.DBD 16
Aus einem UDT kann man nichts laden, weil der UTD nur die Struktur vorgibt:
Und hier:
hat Ralle schon geschrieben wie auf Word und DWord zugegriffen wird.
Bit und Byte sind in der Struktur nicht enthalten.
Pylades
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?