Fragen zu Pointern

INST

Level-2
Beiträge
272
Reaktionspunkte
15
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

in einem Programm sind folgende Befehle programmiert:

DBX (AR1,P#101.6) und DBX (AR1,P#101.7)

DBW (AR1,P#100.0)

Wie kann man die oben angegebenen Befehle beschreiben bzw. Erklärung dafür?

Danke für euere Bemühungen!!!
 
Pointer

Hallo,

ohne unhöflich zu erscheinen... Aber die Onlinehilfe von S7 ist da sehr aussagekräftig. Ansonsten Suchfunktion im Forum.

MfG
André Räppel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vorher wurde mit Sicherheit das Adressregister 1 Beschrieben

DBX(AR1.P#101.6) spricht das Bit an das 101 Byte 6 Bit aufsteigend von dem Pointer in AR1 steht,
DBW(AR1,P#100.0) das Wort an das 100 Byte 0 Bit aufsteigend von dem Pointer in AR1 steht

Gruß

Ralf
 
Im AR1 steht eine dynamische Adresse. Zu dieser wird ein Offset in Form Byte.Bit addiert. Das ergibt eine neue Adresse mit der gearbeitet wird.

Kein schönes Thema bei S7.

Gruß pt
 
Antwort zu sps-concept

Hallo sps-concept,

Danke für deine Antwort, aber wenn ich in der Online Hilfe was gefunden hätte, dann würde ich hier nicht inserieren. Ich habe gehofft, das ich hier auf meine Frage ein Antwort bekomme, die mir weiterhilft bzw. eine Erklärung finde.
 
Onlinehilfe

Das hab ich nicht grundlos geschrieben.... Gefunden in der Siemens-Hilfe

Code:
Verwenden des Parametertyps POINTER 

Ein Pointer wird verwendet, um auf einen Operanden zu zeigen. Der Vorteil dieser Adressierung ist, daß Sie den Operanden der Anweisung während der Programmbearbeitung dynamisch modifizieren können. 

Pointer zur speicherindirekten Adressierung 

Programmanweisungen, die mit der speicherindirekten Adressierung arbeiten, setzen sich zusammen aus einer Operation, einem Operandenkennzeichen und einem Versatz (der Versatz muß in eckigen Klammern angegeben werden). 

Beispiel für einen Pointer im Doppelwortformat: 


L  P#8.7  Lade den Wert des Pointers in AKKU 1. 
 
T  MD2  Transferiere den Pointer nach MD2. 
 
U  E [MD2]  Frage den Signalzustand an Eingang E 8.7 ab, 
 =  A [MD2]  und weise den Signalzustand Ausgang A 8.7 zu. 
 
Pointer zur bereichsinternen und bereichsübergreifenden Adressierung 

Die Programmanweisungen, die mit diesen Adressierungen arbeiten, setzen sich zusammen aus einer Operation und den folgenden Teilen: Operandenkennzeichen, Adreßregister-Kennung, Versatz. 

Das Adreßregister (AR1/2) und der Versatz müssen zusammen in eckigen Klammern angegeben werden. 

Beispiel zur bereichsinternen Adressierung 

Der Pointer enthält keine Angabe zu einem Speicherbereich: 


L  P#8.7  Lade den Wert des Pointers in AKKU 1. 
 LAR1  Lade den Pointer von AKKU 1 in AR1. 
 
U  E [AR1, P#0.0]  Frage den Signalzustand an Eingang E 8.7 ab und 
 =  A [AR1, P#1.1]  weise den Signalzustand dem Ausgang zu A 10.0 zu 
 


Der Versatz 0.0 hat keinen Einfluß. Ausgang 10.0 errechnet sich aus 8.7 (AR1) plus den Versatz 1.1. Das Ergebnis ist 10.0 und nicht 9.8, siehe Pointer-Format. 

Beispiel zur bereichsübergreifenden Adressierung 

Bei der bereichsübergreifenden Adressierung ist im Pointer der Speicherbereich angegeben (im Beispiel E bzw. A). 


L  P# E8.7  Lade den Wert des Pointers und Bereichskennung in AKKU 1. 
LAR1  Lade Speicherbereich E und die Adresse 8.7 in AR1. 
 
L  P# A8.7  Lade den Wert des Pointers und Bereichskennung in AKKU 1. 
LAR2  Lade Speicherbereich A und die Adresse 8.7 in AR2. 
 
U  [AR1, P#0.0]  Frage den Signalzustand an Eingang E 8.7 ab und 
=  [AR2, P#1.1]  weise den Signalzustand Ausgang A 10.0 zu. 
 


Der Versatz 0.0 hat keinen Einfluß. Ausgang 10.0 errechnet sich aus 8.7 (AR2) plus 1.1 (Versatz). Das Ergebnis ist 10.0 und nicht 9.8, siehe Pointer-Format.

MfG
André Räppel
 
S7 Hilfe

Hallo nochmal,

die von dir aufgeführte Erklärung des Pointers habe ich auch gefunden, aber hat mir leider nicht weiter geholfen, da ich bei Pointerprogrammierung Anfänger bin. Deshalb habe ich speziell die Befehle hier reingeschreiben, die ich benötige, um ein vorhandenes Programm zu verstehen. Aber trotzdem Danke. Kennt ihr vielleicht eine gute Seite, wo Pointer vom Anfang an bis ...... gut erklärt sind??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe noch nichts besseres gefunden und habe mich auch mit Kopfschmerzen in die Geschichte eingearbeitet. Es gibt noch ein Software Referenzhandbuch von Siemens das ich als CD habe und wahrscheinlich jeder andere auch. Das hatte ich mir noch zur Hilfe genommen.

Aber denk einfach nicht zu kompliziert.

Bei Deienm Bsp. wird bei dem vorher aufgeschlagenen DB ein Bit angesprochen.

Im AR1 steht zum Beispiel 10.0
Hinzuaddiert wird der Zeiger mit dem Wert 101.6
Ergibt: 111.6

Also, DBX111.6 wird manipuliert.

Gruß pt
 
AWL_d.pdf


Schau Dir mal Kapiltel 4.4 an.

Son ähnlicher Link ist gerade in einem anderen Topic aufgetaucht.
 
Zurück
Oben