Sonstiges SCL: Zeiger auf eine Position eines Datenbereichs

bumble.bee

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag!

Wie kann ich in SCL einer Variable den Zeiger auf eine Position eines Datenbereichs zuordnen?

#data := DB185.DBX0.0 Byte 167;

Funktioniert leider nicht.

Wenn mir jemand einfach die Zeile erklären könnte wäre ich froh, denn gegooglet habe ich bereits, also glaube ich nicht dass mir irgendwelche Verweise weiterhelfen.

Liebe Grüße
 
Wenn Data ein Anypointer ist dann brauchst du Data nur die Variable zuweisen von der du den Pointer haben willst.
In deinem Beispiel würde aber (wenn es der Pseudo-Code tun würde) nicht auf eine Position innerhalb eines Datenbereichs gezeigt sondern auf den Datenbereich selbst ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo welche CPU und Step 7 Version verwendest du ?

Im nicht optimierten Bereich müsste das mit SFC20 Blkmov funktionieren. Bei neuen CPUs kann man Poke verwenden, gibt aber sicher bessere Ansätze, was hast du eig vor? Kannst di den Pointer nicht symbolisch z.B als UDT übergeben?
 
Hallo Larry! Noch gibt es keine Variable. D.h. ich muss mir zuerst den Pointer erstellen? Wie mache ich das denn?
Liebe Grüße
 
Hallo TC-Inc!

Es handelt sich um die S7-1200 (CPU 1215C DC/DC/DC); Firmwareversion V 4.1.3; Step7 Version V13; TIA V13.

Ich möchte gerne T_SEND_C ausführen aber mit SCL und nicht mit FUP. Im Endeffekt möchte ich gerne sämtliche Zustände auch in einem App (C#) visualisieren und von dort aus ändern können.

Dein Hinweis POKE hat mich auf PEEK gestoßen. Denkst du nicht dass das eventuell das Richtige wäre?

Code:
#data := PEEK(area:= 16#84,
     dbNumber := 185,
     byteOffset := 167);

Liebe Grüße.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
warum sparst du dir nicht den ganzen Zirkus, packst deine Sendedaten in eine UDT und übergibst das Ganze ganz einfach symbolisch an den T_Send_C Baustein? Mit ein bisschen Struktur in seinem Programm braucht man auf den neuen Steuerungen zu 99,9 % keinen einzigen absolut adressierten Pointer ;)
 
Moin Howard,

Mit ein bisschen Struktur in seinem Programm braucht man auf den neuen Steuerungen zu 99,9 % keinen einzigen absolut adressierten Pointer :wink:

Kann man nicht sogar von 100% ausgehen? An welcher Stelle sind die 0,1% zu finden?

VG

Mario
 
Vielen Dank für eure Antworten bisher. Ich habe alle eure Vorschläge versucht. Ich konnte mein Problem aber immer noch nicht beheben.

Ich habe nun folgendes bisher. Zumindest erhalte ich die ein oder andere Rückmeldung. Der Baustein wird zyklisch aufgerufen. Ein erfolgreiches Senden war aber noch nicht dabei:

Code:
    "TSEND_C_DB"(REQ := "TSEND_C_DB".REQ,
                 CONT := "TSEND_C_DB".CONT,
                 COM_RST := "TSEND_C_DB".COM_RST,
                 LEN := 167,
                 DONE => "TSEND_C_DB".DONE,
                 BUSY => "TSEND_C_DB".BUSY,
                 ERROR => "TSEND_C_DB".ERROR,
                 STATUS => "TSEND_C_DB".STATUS,
                 CONNECT := #connection,
                 DATA := P#DB185.DBX0.0 BYTE 167,
                 ADDR := #variantinout);

Könnt ihr mir vielleicht hierbei weiterhelfen?

Liebe Grüße
 
Zuletzt bearbeitet:
Zurück
Oben