Byte adresse aus Any-Inparameter ziehen!

droop38

Level-1
Beiträge
33
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!
wie kann ich aus einem any in-parameter die Start-byteadresse ziehen?
irgendwie komm ich damit nicht zusammen
in ar1 kann ich den any-pointer zwar laden aber der hat ja nur 32 bit oder?
und da die byteadresse da ab byte 7 im any array liegt schaff ichs nicht!
kann mir da jemand helfen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
tja hab ich schon 10 mal durchgekaut die seite aber wie bekomme ich zb den any IN parameter in die lokaldaten? und zwar komplett?
bzw wie kann ich mir am einfachsten die byteadresse aus einem anypointer(der symbolisch adressiert ist)
oder verstehe ich da was falsch?
 
also ich möchte aus nem any pointer der zb TEST heist P#db81.dbx1000.0 byte 10 möchte ich das 1000 rausziehen
wie ich das aus nem absolut adressierten any mache ist mir ja klar aber...
 
Hallo droop38,

was für einen Bausteintyp (FB/FC) hast Du?

Bei einem FC geht es nicht!

Bei 'nem FB:
Code:
LAR1 P##test

L W [ar1,p#2.0] // Hier stehen die 1000

Grüße
Gebs
 
Zuviel Werbung?
-> Hier kostenlos registrieren
mehrmals versucht haut ned hin!
hab nen fb mit idb vielleicht das das problem?
habs jetzt mit der kriche ums kreuz gemacht und lad den anypointer vom idb via sfc20 in in den localstack
nicht schön aber funzt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja
sogar mehrmals verschachtelt
Hast schon mal veruscht das AR2 als offset zu verschalten?

also
Code:
TAR1  #RETTAR1                    //Adressregister retten
      TAR2  #RETTAR2                    //Adressregister retten

      LAR1  P##TEMP                     //Pointer auf erste relevante Daten setzen
      L     #RETTAR2                    //Adressregister 2 addieren für Multiinstanzfähigkeit
      +AR1
 
Bei 'nem FB:
Code:
LAR1 P##test

L W [ar1,p#2.0] // Hier stehen die 1000

Hallo,
damit bin ich nicht so ganz einverstanden ...
Ich würde es so machen :
Code:
LAR1 P##test
TAR2  // wegen der Multi-Instanz
+AR1 //  "

L D [ar1,p#6.0] // Hier stehen die 1000 , allerdings als Bit-Pointer
L dw#16#00FFFFFF  // vorderen Bereich ausmaskieren
UD
SRD 3 // Bit-Adresse in Byte-Adresse umrechnen
T #meine_Adresse

An p#2.0 steht m.E. der Wiederholungsfaktor - also die 10 ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo droop38,

was für einen Bausteintyp (FB/FC) hast Du?

Bei einem FC geht es nicht!

...

Grüße
Gebs

Hmm, also selbstverständlich geht das auch in nem FC. Natürlich die selbe Adresse (Byte 6) für den Speicherbereich im Pointerformat. Die Step7 Hilfe bietet da übrigens erstaunlich gute Übersicht über den Aufbau des ANY-Pointers. Bei Index "ANY" suchen und dann auf "Format des Parametertyps ANY" klicken.
 
Zuletzt bearbeitet:
Ja ich weiß, wollte ja nur drauf hinweisen, dass die step7 Hilfe da auch mal offline auf der Baustelle weiterhelfen kann.
Außerdem wollte ich klar stellen, dass an Parameter definitiv auch am fc funktioniert.
Der gepostete Beitrag über die Datentypen ist natürlich sehr gut, aber eben nur online verfügbar,, wenn man nicht grad ne Kopie. Zur hand hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nur der Befehl
LAR1 P##Variable
funktioniert in einem FC nicht! => "Symbol Variable nicht gefunden oder nicht erlaubt in Anweisung mit Adress-Operator P##"

vllt. funktioniert ja
L P##Variable
LAR1

Hab' ich aber noch nicht ausprobieren können. (Hab' z.Z. keine SPS zum testen)

Grüße
Gebs
 
Nur der Befehl
LAR1 P##Variable
funktioniert in einem FC nicht! => "Symbol Variable nicht gefunden oder nicht erlaubt in Anweisung mit Adress-Operator P##"

vllt. funktioniert ja
L P##Variable
LAR1

Hab' ich aber noch nicht ausprobieren können. (Hab' z.Z. keine SPS zum testen)

Grüße
Gebs


Interessant. Der Befehl funktioniert so tatsächlich nicht.
L p##
Lar1

Dagegen funktioniert. Hab ich nicht gewusst. Gibt's dafür nennen Grund?
 
mich lässt das keine ruhe

L P##Offs_Quelle
TAR2
+D
LAR1
L D [AR1,P#6.0]
UD DW#16#FFFFFF // vorderen Bereich ausmaskieren
SRD 3 // Bit-Adresse in Byte-Adresse umrechnen
T #offset_1

warum haut das nicht hin?
die 10774 ist die adresse im idb
der idb steht im DB register 1 (80)
Db auf80 hat auch nichts gebracht



AWL.JPG

ich sollte doch bei L D [AR1,P#6.0] dann was aus dem any auslesen können oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
mich lässt das keine ruhe

L P##Offs_Quelle
TAR2
+D
LAR1
L D [AR1,P#6.0]
UD DW#16#FFFFFF // vorderen Bereich ausmaskieren
SRD 3 // Bit-Adresse in Byte-Adresse umrechnen
T #offset_1

warum haut das nicht hin?
die 10774 ist die adresse im idb
der idb steht im DB register 1 (80)
Db auf80 hat auch nichts gebracht



Anhang anzeigen 15843

ich sollte doch bei L D [AR1,P#6.0] dann was aus dem any auslesen können oder?

Was denn nun, 4.0 oder 6.0?
In deinem Bild hast du 4.0 adressiert.
 
Hallo,
du arbeitest mit einem FC ?
In dem Fall (ins Blaue geschossen) ist es möglicherweise so, dass du gar nicht den ANY selbst einliest sondern nur den Pointer, der auf die Adresse zeigt an der der ANY-Inhalt steht.

Gruß
Larry
 
Zurück
Oben