Step 7 Anfangsadresse Array im Instanz-Datenbaustein lesen ?

dumos4

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich muss meinen FB so allgemeingültig wie nur irgendwie möglich erstellen.
Ich habe im Instanz-DB diesen FB´s ein Array deklariert ["Datenkanal" Array (0..63)of char].
Ich möchte nun ab der 5. Stelle in diesem Array eine Zeichenkette schreiben (z.b. "12345abcde).
Das wollte ich mit einem Offset machen, dafür benötige ich die Anfangsadresse dieses Array.

Anfangsadresse_Datenkanal + 5 = Start_Zeichenkette

z.B.
DB1
0.0 Eingang_1
1.0 Eingang_2
2.0 Eingang_3
3.0 Eingang_4
4.0 Datenkanal[0]
5.0 Datenkanal[1]
...

Wie bekomme ich die Anfangsadresse dieses Arrays heraus?
 
Bei einer S7-300/400 geht es in AWL unter Step7 V5.x so:
Code:
L P##Datenkanal   //relative Adresse #Datenkanal in dieser Instanz (DI) 
TAR2              //Lade Adressregister2 mit Offset dieser Multiinstanz (DB) in Akku1 
UD DW#16#FFFFFF   //Bereichskennung (DB) ausblenden 
+D                //Addiere 
LAR1              //Lade AR1 mit Inhalt von Akku1: absolute Adresse #Datenkanal im IDB (DI)

Welche CPU programmierst Du in welcher Programmiersprache mit welchem Programmiersystem?
Bei anderen CPU oder anderen Programmiersprachen geht das anders oder sogar gar nicht.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
danke erstmal für deine super schnelle antwort ;)

CPU315-2 PN/DP
AWL
SIMATIC Manager

ich bin derzeit noch student (Mechatronik) und schreib gerade mein bachelor. hab lange nichts mehr mit programmieren zu tun gehabt
db1.JPGschnittstelle.JPG
so siehts aus.
im ersten bereich 26.0 -30.0 steht eine Anfangskennung und danach erst soll die Zeichenkette kommen

L P##OUT.DATENKANAL (Syntaxfehler)

grüße erik
 
Zuletzt bearbeitet:
Das Array DATENKANAL darf nicht in einem Struct liegen. Die Adressen von Struct-Membern können nicht symbolisch referenziert werden, d.h. es kann nur die Anfangsadresse des äußersten Struct oder des äußersten Array symbolisch referenziert werden.

Du könntest den Inhalt Deines CHAR-Arrays in TEMP (oder in STAT außerhalb einer Struktur) zusammenbauen und dann mit BLKMOV in die Struktur kopieren.

Du könntest den FB in SCL schreiben, da kann man symbolisch auf die Array-CHARs in einem Struct im IDB zugreifen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
diese einzelne Ansprechweise nutze ich für die anfangskennung.
ich werd mal probieren das ding im tmp bereich zusammen zu basteln und dann zu verschieben.
danke für deine schnellen und hilfreichen ratschläge ;)
 
Zurück
Oben