TIA Indexierter DB zugriff in SCL

vollmi

Well-known member
Beiträge
5.053
Punkte Reaktionen
1.183
Zuviel Werbung?
->Hier kostenlos registrieren
Hm was mir grad aufgefallen ist
Code:
WORD_TO_BLOCK_DB(t_Eingang.DBNr).[COLOR=#ff0000]DB[/COLOR][DB_OUT_Byte]     := WORD_TO_BYTE(SHR(IN := (COM1.Reg_2 XOR COM1.Reg_4), N := 8));

DB_OUT_Byte ist ein INT der eigentlich das entsprechende Byte angeben soll.
t_Eingang.DBNr ist ein Wort mit AT auf Pointer

In Step7 wird das klaglos übersetzt und funktioniert wie gewünscht.
In TIA wird dann aber das Rote als ungültiger Array angemotzt und lässt sich zumindest übersetzen wenn ich die eckigen Klammern gegen runde ersetze. Funktionieren tuts aber natürlich trotzdem nicht. Das Byte wird also nicht auf das entsprechend adressierte Byte im DB kopiert.

Jetzt frage ich mich, ist das nur Glück dass das bisher bei Step7 funktioniert hat und war schon immer falsch? Oder was ist hier los?

mfg René
 

Thomas_v2.1

Well-known member
Beiträge
8.811
Punkte Reaktionen
2.700
In Step7 gibt es in der Hilfe ein Kapitel mit der formalen Sprachbeschreibung. Wenn man sich einmal mit dem Aufbau dieser vertraut gemacht hat, ist das eine sehr aussagekräftige Beschreibung.
Dort ist der von dir beschriebene Zugriff auch genauso beschrieben.
Sprachbeschreibung -> Lexikalische Regeln -> Absolutadressierung

Leider ist das Kapitel in der TIA Hilfe weggefallen. Darum kann man nicht definitiv sagen wie es dort richtig ist, sondern muss es probieren.
 
OP
vollmi

vollmi

Well-known member
Beiträge
5.053
Punkte Reaktionen
1.183
Zuviel Werbung?
->Hier kostenlos registrieren
Das mit dem Ausprobiere macht mir etwas Kopfzerbrechen. Denn ich sehe jetzt so noch nicht, was ihm nicht passt.

Muss man die Datenbasis anderst deklarieren?
Ist ihm der Integerwert nicht recht? Wenn ja was hätte er gerne.
Braucht er statt der eckigen Klammer was anderes?

Zumindest beruhigt es mich das die Anweisung an sich für Step7 korrekt ist und keine Missinterpretation von mir.

Mal Siemens zuwerfen.

mfG René
 
Oben