TIA S7-1500 Übergabe AR an FC

knubbl

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

ich versuche gerade ein S7-400 Programm auf eine S7-1500 umzusetzen.
Im Programm werden Adressregister berechnet und dann im aufgerufenen FC weiterverarbeitet.
Jetzt habe ich gelesen, dass in der S7-1500 weder AR noch AKKUs in den aufgerufenen Baustein übernommen werden.

Frage1: Gibt es eine Möglichkeit, dass ich den Inhalt eines AR mit in einem FC übergebe, oder muss ich im aufgerufenen FC die Berechnung des AR neu durchführen.
Frage2: Bei der Rückkehr aus dem FC in den Baustein aus dem aufgerufen wurde, ist dann AR1/2 und AKKU1/2 wieder mit den Werten wie vor dem Aufruf belegt?

Im Voraus besten Dank
 
Klar kann man den Wert von ARx oder AKKUs an FC übergeben, z.B. über zusätzliche IN-Parameter als DWORD
Doch besser Du versuchst nicht, diesen vorsintflutlichen Scheixx am Leben zu erhalten - Du wirst sonst an hunderten weiteren Stellen Probleme bekommen. Schreibe schöne neue symbolische Funktionen mit sauberer Parameterübergabe.
Indirekte Adressierung über Adressen oder Pointer geht außerdem nicht in Bausteinen mit "optimiertem" Speicher.

zu Frage2: ich kenne die S7-1500 nicht, doch ich meine gelesen zu haben, daß die AKKUs und ARx nur aus Kompatibilitätsgründen emuliert werden und das für jedes Netzwerk extra. Ich würde davon ausgehen, daß nach Aufruf eines anderen Bausteins die AKKUs und ARx verloren sind.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Doch besser Du versuchst nicht, diesen vorsintflutlichen Scheixx am Leben zu erhalten - Du wirst sonst an hunderten weiteren Stellen Probleme bekommen.
Würde das auch unterschreiben. Bei der 1500 gehen ein paar Details nicht mehr die auf der 300/400 noch hingehauen haben.

Ein Beispiel wäre z.B. das Rücklesen von FC-Ausgängen im FC wenn außen ein Merker angelegt wurde. Sowas schwirrt tatsächlich rum und funktioniert auf 300/400 sogar.
Auf der 1500 definitiv nicht mehr.

zu Frage2: ich kenne die S7-1500 nicht, doch ich meine gelesen zu haben, daß die AKKUs und ARx nur aus Kompatibilitätsgründen emuliert werden und das für jedes Netzwerk extra.
Ich würde davon ausgehen, daß nach Aufruf eines anderen Bausteins die AKKUs und ARx verloren sind.
Das ist ja interessant, wäre auf jeden Fall zu probieren. Bei S5-Migrationen gibt's ja genügend netzwerkübergreifende AR- und AUF-Operationen.
@Knubbl: Könntest du das testen, würd mich echt interessieren.

PS: Bei Migrationen nicht vergessen die PEW-Zugriffe zu prüfen.
 
Das ist ja interessant, wäre auf jeden Fall zu probieren. Bei S5-Migrationen gibt's ja genügend netzwerkübergreifende AR- und AUF-Operationen.
@Knubbl: Könntest du das testen, würd mich echt interessieren.

Also ich habe folgendes kurzes Testprojekt geschrieben:
OB1:
Code:
      L     3      
     SLD   3
      T     #PointerAddr   //beliebige Addr (16#18)


      L     4
      SLD   3                 //(16#20)
      LAR1                    // eine andere Addr um zu überpürfen ob nach dem Aufruf einer Funktion wieder der "alte" Wert im AR1 steht


      CALL  "Function1"
         Addr :=#PointerAddr


      TAR1                  //zum Test was in AR1 steht (= 16#18)
Function1:
Code:
      L     #Addr
      LAR1                //übergebene Adresse (16#18) in AR1


Ergebnis:

Nach dem Funktionsaufruf steht im AR1 wieder der Wert der vor dem Aufruf drin stand.
 
Zurück
Oben