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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Was macht SCL denn da mit dem AR2?

  1. #11
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Znarf
    Hallo Zottel
    zu 1 würde ich sagen, das der FB von pt eine Multiinstanz sein muß, da er ja den SFB3 (TON) aufruft, der ja auch instanziert werden muss.
    Ja dann zeigt AR2 wohl auf den Instanz-DB und der Compiler trickst da nicht rum. Jetzt ist die Frage, ob TON P#8192.0 vom AR2 abzieht. Das sollte man durch Beobachten herauskriegen.

  2. #12
    plc_tippser ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    Der Baustein ist Multiinstanzfähig.

    Im AR2 steht nach "+AR2 P#68.0" DB68.0
    nach dem "+AR2 P#8124.0" steht das AR2 wider auf DB0

    Die Lokaldaten der CPU kann der Compiler nicht kennen, da ich noch keine eingefügt hatte.

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  3. #13
    Registriert seit
    14.06.2005
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo plc-tippser

    Meines erachtens kann man mit +Ar1 / +Ar2 nur einen 16-Bit grossen Wert dem AR dazu addieren! Somit kann man maximal "+AR2 P#4095.7" dazuzählen.
    Ist das 2^15 Bit gesetzt, wird der Wert vom AR abgezogen, wobei bei dynamisch berechneten Pointer kann es vorkommen, dass das AR1 (oder 2) dadurch mit atronomische Werten versorgt wird.

    Somit ist es auch möglich, dass das AR plotzlich wieder auch P#0.0 steht .


    In den AWL-Online-Hilfe von Step 7 steht auch (Zitat):
    +AR2 (Addiere zu AR2) addiert einen Versatz, der entweder in der Anweisung oder in AKKU1-L angegeben wird, zum Inhalt von AR2. Die Ganzzahl (16 Bit) wird zunächst vorzeichenrichtig auf 24 Bit erweitert und danach zu den niederwertigsten 24 Bit von AR 2 (Teil der relativen Adresse in AR2) addiert. Der Teil der Bereichskennung in AR2 (Bits 24, 25 und 26) wird nicht verändert. Die Operation wird ausgeführt, ohne die Statusbits zu berücksichtigen oder zu beeinflussen.

    +AR2: Die Ganzzahl (16 Bit), die zum Inhalt von AR2 addiert werden soll, wird durch den Wert in AKKU1-L angegeben. Zulässig sind Werte von -32768 bis +32767.

    +AR2 <P#Byte.Bit>: Der Versatz, der addiert werden soll, wird durch den Operanden <P#Byte.Bit> angegeben.
    (Zitat Ende)

    Wenn man grosse Werte mit dem AR1 (oder 2) manipulieren will, ist die beste Methode, das AR in den Akku zu laden und mittels +D zu addieren um anschliesen wieder ins AR zu schreiben.... oder in AWL:
    TAR1
    L P#10000.0
    +D
    LAR1

    Gruss Hansruedi

  4. #14
    Registriert seit
    14.06.2005
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ich bins nochmals

    Da SCL sich ja nicht an die Syntax-Prüfung vom AWL-Editor halten muss und die Register auch nicht so "sauber" rettet...

    hat der folgende Ausdruck die Wirkung einer AR2 Rettung:

    +AR2 P#46.0 // +p#40.0
    UC "TON"
    +AR2 P#8146.0 // -p#40.0

    Kaum zu glauben was man mit Step7 so alles anstellen kann...

    Gruss Hansruedi

  5. #15
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hier noch eine Erläuterung zu meinem Gedankengang:
    Zitat Zitat von plc_tippser
    ...nach dem "+AR2 P#8124.0" steht das AR2 wider auf DB0
    Das ist, was ich vermutet hatte.
    Die Lokaldaten der CPU kann der Compiler nicht kennen, da ich noch keine eingefügt hatte.
    Hatte übersehen, daß TON ein FB (und keine FC) ist. Daher hatte ich angenommen, daß er seine Werte über den Lokaldatenstack bekäme. In diesem Fall hätte dein FB dann auch ein FC sein müssen, der die Werte für die beiden Aufrufe von TON selbst als Parameter erhält. Wenn der SCL-Compiler so etwas über AR2 abgewickelt hätte (es gibt bei Compilern außerhalb der S7-Welt solcherlei Optimierungen), wäre er vielleicht ziemlich "schlau"; allerdings würde der erzeugte Baustein nur im Kontext des Programms funktionieren.

Ähnliche Themen

  1. Sagt mal, bin ich denn der einzigste...
    Von IBN-Service im Forum Stammtisch
    Antworten: 7
    Letzter Beitrag: 20.12.2010, 07:53
  2. Was sind denn IEC-Timer?!
    Von MikeJ im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 03.05.2010, 23:02
  3. Wo ist denn UG
    Von jabba im Forum Stammtisch
    Antworten: 2
    Letzter Beitrag: 13.12.2009, 12:01
  4. Wer macht denn Sowas ??
    Von mega_ohm im Forum Stammtisch
    Antworten: 143
    Letzter Beitrag: 24.10.2007, 09:54
  5. ICQ? was ist denn das
    Von plc_tippser im Forum Stammtisch
    Antworten: 4
    Letzter Beitrag: 02.08.2004, 08:31

Lesezeichen

Berechtigungen

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