Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: KOP/FUP/AWL Editor ändert DID Aufruf

  1. #1
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    will in meinem Programm in einen indirekt adresseirten Bereich einen Wert transferieren.
    Trage ein T DID[AR1,p#14.0]
    nach dem Speiechern steht plötzlich Bereich1 da.

    Bereich1 steht im Instanz DB an Adresse 14.

    Ich will duch meinen Transferierbefehl aber in einen ganz anderen Bereich schreiben.
    Immerhin errechne ich vorher eine Adresse und Lade diese ins Adressregister, bei mir wäre der erste errechnete Adresspointer bei Adresse 72 im Instanz DB.
    Finde das sehr komisch.

    Habe es auch mal gegengecheckt, es wird auch korrekt in meinen per Pointer adressierten Adressbereich geschrieben und nicht in die Absolutadresse 14 im Instanz DB.

    Also passt das was mir der KOP/FUP/AWL Editor da anzeigt nicht zu dem was er macht.

    Woran kann das liegen, vielen Dank im voraus.
    Zitieren Zitieren KOP/FUP/AWL Editor ändert DID Aufruf  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    ... das habe ich nun gar nicht verstanden ...

    Der Befehl bewirkt auf jeden Fall, dass in das DID geschrieben wird, das durch AR1 adressiert wird und das um den Byte-Offset 14 noch zusätzlich erhöht wird.
    Wenn also das AR1 selbst auf Adresse 58 zeigt und das Offset p#14.0 ist dann wird dann tatsächlich auf Adresse 72 geschrieben ...

    Gruß
    Larry

  3. #3
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ... ja sieht ziemlich verwirrend aus...da hast du vollkommen recht.

    Mein AR1 zeigt auf Adresse 72 Offset P#14.0 zeigt also auf Adresse 86.
    Wenn ich den Funktionsablauf gegenchecke und schaue welche Daten kommen wo an, muss ich feststellen, es funktioniert alles ordnungsgemäß.

    Es ist nun so, ich trug im Programm den Befehl T DID[AR1,p#14.0] ein und speicherte, plötzlich stand da wo vorher mein Befehl "T DID[AR1,p#14.0]" stand "T Bereich1".
    Wenn ich mir meinen Instanz DB anschaue, dann sehe ich dass an Absolutadresse 14 die Variable Bereich1 steht.

    Hoffe das ist etwas verständlicher.

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Es war mir bisher nicht bekannt, dass Step7 so etwas (außer bei einem ANY-Pointer) kann - also das rückwärts-Zuordnen.

    Wenn die Frage sein sollte : warum hat mein AR1 den Wert 72 - dann beachte bitte, dass z.B. bei einem FB auch alle IN- und OUT-Deklarationen mit zur Instanz zählen und somit das Adress-Offset beeinflussen ...

    Gruß
    Larry

  5. #5
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das heisst für mich ?????.....konnte immerhin meinen Editor noch nicht dazu bewegen mir meinen Transferierbefehl so anzuzeigen wie ich ihn eingegeben habe und nicht so wie er da steht.
    Denn das was da steht stimmt ja nun nicht mit dem über ein, was das Programm in Wirklichkeit tut.
    Geändert von matziane (08.08.2012 um 14:32 Uhr)

  6. #6
    Registriert seit
    02.02.2012
    Beiträge
    65
    Danke
    6
    Erhielt 8 Danke für 8 Beiträge

    Standard

    Hi,

    habe ein ähnliches "Phänomen". Step7 verfolgt die Variable bis zum IN des Bausteins zurück oO.
    Im AR2 steht Adresse 40.0, da wo mein Struct anfängt. Meine Input Variable liegt auf Adresse 8.
    Genau die Variable an Adresse 8.0 wird nachher auf 48.0 geschrieben.

    Vor dem Speichern
    Code:
    L DID [AR2, P#8.0]  // AR2 = 40.0 -> Addresse 48 Wird angesprochen
    T PAW [AR1, P# 8.0]
    Nach dem Speichern
    Code:
    L #TempLimit  // Adresse 8.0 wird angesprochen
    T PAW [AR1, P# 8.0]
    Geändert von marcel_ (08.08.2012 um 16:25 Uhr)

  7. #7
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.532
    Danke
    1.152
    Erhielt 1.253 Danke für 982 Beiträge

    Standard

    Zitat Zitat von marcel_ Beitrag anzeigen
    habe ein ähnliches "Phänomen". Step7 verfolgt die Variable bis zum IN des Bausteins zurück oO.
    Im AR2 steht Adresse 40.0, da wo mein Struct anfängt. Meine Input Variable liegt auf Adresse 8.
    Genau die Variable an Adresse 8.0 wird nachher auf 48.0 geschrieben.
    Also das mit AR2, P#8.0 ist noch irgendwo nachvollziehbar.
    Im AR2 steht ja üblicherweise die Startadresse der deklarierten Variablen.
    Wenn du natürlich AR2 "verbiegst", dann sollte der Editor seine Finger davon lassen.

    Gruß
    Dieter

  8. #8
    Registriert seit
    02.02.2012
    Beiträge
    65
    Danke
    6
    Erhielt 8 Danke für 8 Beiträge

    Standard

    Ich habe ein wenig weiter Probiert.
    Der Editor geht davon aus, dass wenn man DI [AR2, P#0.0] schreibt, dass man im Instanzdatenbaustein die Adresse 0.0 Ansprechen will. Daher übernimmt der dann die Symbolische Adressierung, sofern der Datentyp (Word, Dword, etc..) übereinstimmt.
    Kann man das irgendwie abschalten?
    Geändert von marcel_ (08.08.2012 um 16:54 Uhr)

  9. #9
    Registriert seit
    11.03.2011
    Beiträge
    384
    Danke
    32
    Erhielt 80 Danke für 69 Beiträge

    Standard

    Schau mal in den Eigenschaften des Baustein-Ordners: Adress Priorität (Standardmäßig ist oben links markiert)

  10. #10
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @matziane:

    Vielleicht hilft dies weiter:

    Das DI-Register und das Adressregister AR2 werden systemseitig für den FB- und Multiinstanz-CALL verwendet. Wenn du das Adressregister AR2 in multiinstanzfähigen Funktionsbausteinen verwenden willst , musst du das Adressregister vorher "retten":

    http://support.automation.siemens.co...ry0=Verwendung AR2&subtype=130000
    kind regards
    SoftMachine

Ähnliche Themen

  1. KOP/AWL/FUP Editor, Onlie Ansicht
    Von Pharm im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 16.11.2006, 09:13
  2. Querverweise im KOP/AWL/FUP Editor
    Von godi im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 06.07.2006, 22:23
  3. Simatic KOP/FUP/AWL Editor
    Von SICHEL im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 18.02.2005, 16:52

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •