Step 7 Indirekte Adressierung

firefox711

Level-1
Beiträge
17
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi zusammen.
Irgendwie verstehe ich aus den Handbüchern von Siemens die Indirekte Adressierung nicht so richtig.

Also bei S5 war des so:

L KF+100
T MW 250

B MW250
L MW0

Ein Kollege sagte mir bei S7 muss ich es so machen:

L MW250
T #Temp1 (Temporäres Doppelwort)
L MW [#Temp1]

aber irgendwie will der nicht so wie ich will.

Gruß
Torsten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Firefox

Dein S5 Programm kannst du in S7 so proammieren

L 100 // Adresse laden "100"
LAR1 //ins adressregister schieben
L MW [AR1,P#0.0] // MW "100" laden


Sieh auch mal in die Hilfe "F1" da steht ne menge info drin.

Gruß PLC JOE
 
Hallo Firefox

Dein S5 Programm kannst du in S7 so proammieren

L 100 // Adresse laden "100"
LAR1 //ins adressregister schieben
L MW [AR1,P#0.0] // MW "100" laden


Sieh auch mal in die Hilfe "F1" da steht ne menge info drin.

Gruß PLC JOE

Damit greifst du nicht auf die richtigen Daten zu!

Hier mal aus der Step7-Hilfe
· Pointer im Wortformat - Ein Wort, das die Nummer einer Zeit (T), eines Zählers (Z), eines Datenbausteins (DB, DI) oder eines Codebausteins (FC, FB) angibt. Bei einem Pointer im Wortformat handelt es sich um eine Dezimalzahl.


· Pointer im Doppelwortformat - Ein Doppelwort, das in diesem Fall die genaue Adresse eines Bits, Bytes, Worts oder Doppelworts angibt. Ein Doppelwort hat folgendes Pointerformat: P#Byte.Bit.

Um auf MW 100 zuzugeifen mußt du

L 100
SLD 3 / mit 8 multiplizieren, um Pointerfprmat im Doppelword zu erhalten, das in den letzten 3 Bit die Bitadresse enthält, hier somit 3xFalse) hier steht dann also P#100.0
LAR1 //ins adressregister schieben
L MW [AR1,P#0.0] // MW "100" laden
 
Zuviel Werbung?
-> Hier kostenlos registrieren
"Speicherindirekte Adressierung" mit Pointer im Doppelwordformat

Ohne AR:
Code:
L MW250       //z.B. 100
SLD 3
T #Temp1      //Temporäres Doppelwort
L MW [#Temp1] //lädt Inhalt von MW100

Harald
 
Hallo !
Habe vor einige Wochen ein SPS Techniker Kurs beendet ( zufridenstellend , also kein grosser Denker :cry: !).
So viel ich kappiert habe ist die indirekte Adressierung nur für Programmverkleinerung gut und läuft (auch) uberm Adressregister ... also müsste man wissen wie der zu gebrauchen ist und den Lader auch ( weil es ohne nichts geht).
Zeitersparnis im Programablauf gibts keine weil REKURSIVITÄT erspart nur schreiben .

Ein BEISPIEL :
Code:
 FUNCTION "TEST_FIFO" : VOIDTITLE =
//DATENTYPEN im FORMALPARAMETER , DATENBANK und PROGRAMM beachten !
VERSION : 0.1




VAR_INPUT
  FIFO : BOOL ;    
  Eintrag : WORD ;    
  DBnummer : BLOCK_DB ;    
  BYTEpTYP : INT ;    
  Startindx : INT ;    
  Endindex : INT ;    
END_VAR
VAR_TEMP
  TempAR1 : DWORD ;    
  VARindex : INT ;    
  Flanke : BOOL ;    
END_VAR
BEGIN
NETWORK
TITLE =
//FIFO - SPEICHER ... als  Startindx,Endindex nicht die Ordnungszahl in 
//der Datenbank eingeben sondern die zugehörige Datentyp Ordnungszahl
//(BYTEpTYP=bedeutet=Bytemenge im Datentyp zB: 2 bei WORD , 4 bei REAL))
      U     #FIFO; 
      FP    #Flanke; 
      SPBNB ENDE; 


      TAR1  #TempAR1; //                 PUSH






      AUF   #DBnummer; 
      L     #BYTEpTYP; 
      L     #Endindex; 
      <=I   ; 
      SPB   oo1; 
      L     #Eintrag; 
      T     DBW    0; // ?Typ (=WORD,REAL,DINT,etc)
      SPA   oo2; 


oo1:  L     #Startindx; 
      TAK   ; 
      <I    ; 
      SPB   oo3; 
      SLD   3; 
      LAR1  ; 
      L     #Eintrag; 
      T     DBW [AR1,P#0.0]; // ?Typ
      SPA   oo2; 


oo3:  L     #BYTEpTYP; 
      -I    ; 
      T     #VARindex; 
      SLD   3; 
      LAR1  ; 
      L     DBW [AR1,P#0.0]; // ?Typ
      T     DBW [AR1,P#2.0]; // ?Typ +  [AR1,P#(B/T).0] 
      L     #Startindx; 
      L     #VARindex; 
      <I    ; 
      SPB   oo3; 
      L     #Eintrag; // ?FORMALPARAMETER-TYP
      T     DBW [AR1,P#0.0]; // ?Typ




oo2:  LAR1  #TempAR1; //                  POP


ENDE: BE    ; 






END_FUNCTION

Ist nur ein Functionbaustein , nichts besonderes !
Wie ist die Lage am Arbeitsmarkt in DE ( ich lebe in A) , bin kein Elektriker sondern CNC Techniker vom Beruf ; Dieser SPS Kurs war ein "geschenk" vom Arbeitsamt .... glaube nicht das mir viel nutzen wird ( kann nur mit Spanungen bis 40 V arbeiten ohne diese Anschlussbefügniss ... etc.
( Ich finde es fein das so ein Forum gibt , bitte euch mich zu entschuldigen deutsch ist nicht meine Muttersprache )
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi 00alex,

ob es dir was nutzen wird liegt ganz alleine an dir selbst. Mach was draus und es wird auch was.
Aber was soll uns dein kleines Programm sagen?
Hast du es ausprobiert? Funktioniert es?

Programmieren kann man übrigens auch mit Spannungen bis 40V ;-)
Das Netzteil vom Laptop darf ja auch eine Hausfrau anfassen :)

Gruß, Toki
 
Habe ein Programmchen angehängt :D Ist selbst erklärend , sonst ...helfe ich nach ! ( Es funktioniert )

Vielen Dank auch ... fasse ich auch an !

Eine Frage : Wenn man eine Schrittkette als Schaltwerk ( also auch mit Ausgänge als Inputs ) programmiert muss man sie noch mit Merker absichern ... ( Hab sowieso 3 Archetypen zum Thema Schrittketten) Falls keine Mehrdeutigkeit !!!

:cry:

Würde ich ( zum Beispiel ) Arbeit in dem SPS Bereich finden ...habe SENSORIK , Pneumatik , Hydraulik , SPS Programmieren gemacht in diesem (komischen) KURS ... etc .

:?
 
Zuletzt bearbeitet:
Zurück
Oben