Byte adresse aus Any-Inparameter ziehen!

Zuviel Werbung?
-> Hier kostenlos registrieren
wie schon oben beschrieben fb
aufrufstruktur:
ob1
..fb80
......fb81
.............fb88 // der oben gezeigte fb

die fb´s ein gemeinsamer idb

wie gesagt der pointer den ich mir baue zeugt auf die richtige stelle im idb
nur wenn ich da was lade is da nix... sollte im 6.0er die 1000, stehen und im 4.0er wort der db81
 
Zuletzt bearbeitet:
Code:
LAR1     P##Offs_Quelle
      TAR2  
      +AR1  

      L     D [AR1,P#6.0]
      UD    DW#16#FFFFFF                // vorderen Bereich ausmaskieren
      SRD   3                           // Bit-Adresse in Byte-Adresse umrechnen
      T     #offset_1
so geht es auf jeden Fall - ist getestet ...!

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
mhm funktioniert schon wenn man keine 10000 byte vorher hat
kanns vielleicht daran liegen dass im AR1 nach der +d das DI fehlt?
bzw wie kann ich dafür sorgen dass es nicht verschwindet`?
die obenangegebene version funktioniert leider nur wenn der idb eben nicht so lang ist....
sobald der idb länger wird (die genaue grenze weis ich leider nicht) hauts nimma hin

DB.JPG
 
Zuletzt bearbeitet:
:confused: bei mir gehts ... (wie in meinem Beispiel realisiert)
Welchen Typs ist denn bei dir der "#offset_1" - bei mir ist das ein Doppelwort (oder DINT) ...

Gruß
Larry
 
soweit komm ich ja gar nicht bei l d [ar1 usw wusw] steht ja schon nix drinnen!?!
der pointer (11830) würde stimmen
beim beispiel wird ja mit +AR1 gearbeitet...
kanns sein dass hier das problem liegt? dass dieser begrenzt ist?
der hat ja normalerweise mit 32000 herum aber mit diesem DI oder DB?
 
... klar ist der begrenzt ... das ist ein Doppelwort. Ich fürchte nur, dass du eher einen Adressierfehler bekommst (weil du den Adressraum der SPS sprengst) bevor du hier einen Überlauf bekommst.
Wie schon von Verpolt netterweise genannt - ich beziehe mich auf den zitierten Codeschnipsel - du auch ?
 
hallo noch mal
wie schon oben beschrieben funktionierts leider doch nicht!
im roten kreis sollte ja dann 10784 stehen oder?`tuts aber nicht
der offs_ziel liegt im idb ab byte 10.0 wie hier im AR1 zu sehen
Der idb offset liegt bei 10774 im AR2
im übrigen ist die cpu fehlerfrei...
ich schätze ja wie oben schon gesagt dass das "DI" wie hier im AR 2 zu sehen ist im Doppelwort mitreincodiert ist!
gibts da ne beschreibung wie´s im AR1 auszusehen hat?

ich hoffe ich habe mich klar genug ausgrdrückt!

mfg christian

DB.JPG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich denke, dass die Kennung des Operandenbereiches ausgeblendet werden muss (bereichsinterner Zeiger/ bereichsübergreifender Zeiger).

so:
Code:
LAR1 P##Offs_Ziel
TAR2
UD DW#16#FFFFFF
+AR1
L D[AR1, P#6.0]
 
fehler gefunden ^^
also erstens mit +ar1 gehts nicht
da dieser nur 24 bit kann weil er ja die bereichskennung unbedingt mitnehmen will
ich habs jetzt einfach dazugeodert
L P##Offs_Quelle
TAR2
+D
UD DW#16#FFFFFF
OD DW#16#85000000 // 85 für DI
LAR1
L D [AR1,P#6.0]

eure meinung dazu?
mfg christian
 
Zuviel Werbung?
-> Hier kostenlos registrieren
probiers mal so:

Code:
[FONT=courier new][SIZE=2]L     P##Offs_Ziel         // Startadresse laden
UD    DW#16#FFFFFF         // Bereichscodierung ausmaskieren
TAR2                       // Start der Multiinstanz im DI laden
+D    
[/SIZE][/FONT][FONT=courier new][SIZE=2]L     P#6.0[/SIZE][/FONT][FONT=courier new][SIZE=2]    
+D    
T     #P_Offs_Ziel         [/SIZE][/FONT][FONT=courier new][SIZE=2]// resultierende Adresse im DI (Multiinstanz)
                           // Achtung neue Variable: #P_Offs_Ziel
L DID[[/SIZE][/FONT][FONT=courier new][SIZE=2]#P_Offs_Ziel][/SIZE][/FONT][FONT=courier new][SIZE=2]        // Doppelwort mit Offset aus DI laden
      [/SIZE][/FONT]
 
das funzt nicht da +AR1 nur 16bit addiert
=> d.h. ab Adressen von 8192.0 gehts nicht mehr !!!

das ist einfach so, warum weiß nur Siemens !

fehler gefunden ^^
also erstens mit +ar1 gehts nicht
da dieser nur 24 bit kann weil er ja die bereichskennung unbedingt mitnehmen will
ich habs jetzt einfach dazugeodert
L P##Offs_Quelle
TAR2
+D
UD DW#16#FFFFFF
OD DW#16#85000000 // 85 für DI
LAR1
L D [AR1,P#6.0]

eure meinung dazu?
mfg christian
 
Zurück
Oben