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

Ergebnis 1 bis 9 von 9

Thema: Adressfehler in AR1 Multiinstanz

  1. #1
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.746
    Danke
    77
    Erhielt 766 Danke für 517 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Ich habe hier ein Problem mit einer indirekte Adresse in einer Multiinstanz
    im aufrufendem multiinstanz-fb wird immer der gleiche fb aufgerufen

    Bild 1 zeigt den letzten funktionierende zugriff
    bild 2 den zugriff wo der fehler auftaucht anstatt 2093362 sollte ja eigentlich 4402 im ar1 stehen
    bild 3 den letzten zugriff (3 aufrufe nach dem ersten fehler)

    der di ist lang genug

    überschreite ich irgendwie einen erlaubten adressbereich?
    Angehängte Grafiken Angehängte Grafiken
    Geändert von volker (13.09.2016 um 11:44 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation
    Zitieren Zitieren Adressfehler in AR1 Multiinstanz  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.372
    Danke
    134
    Erhielt 1.586 Danke für 1.158 Beiträge

    Standard

    Die +AR Befehle arbeiten nur auf 16 Bit mit Vorzeichen. D.h. ab einer Byteadresse größer 4096 funktioniert es damit nicht mehr.
    Du musst dann mit den Standard 32-Bit Anweisungen arbeiten, vorher jedoch die Bereichskennung (DI, DB, etc.) ausmaskieren, und nachher wieder einsetzen. Dazu sollte es im Forum auch was aufzufinden geben.
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

  3. #3
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.072
    Danke
    1.072
    Erhielt 1.151 Danke für 908 Beiträge

    Standard

    In die Falle mit den 4096 bin ich auch schon gestolpert

    Code:
    TAR2
    UD DW#16#00FF_FFFF
    L P##FUSE
    +D
    LAR1
    Gruß
    Dieter

  4. Folgender Benutzer sagt Danke zu Blockmove für den nützlichen Beitrag:

    volker (13.09.2016)

  5. #4
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.746
    Danke
    77
    Erhielt 766 Danke für 517 Beiträge

    Standard

    hab ich mittlerweile auch rausgefunden

    habs testweise so gemacht
    Code:
          L     P##Fuse                     // Pointer auf Stat Fuse setzen (Struct 226.0)
          SRD   3                           //dint draus machen
          T     MD  1000                    //#pfuse_dint
          TAR2  
          SRD   3                           //dint draus machen
          T     MD  1004                    //#di_anfang
          L     MD  1000                    //#pfuse_dint
          +D                                //beiden dint addieren
          SLD   3                           //wieder einen pointer draus machen
          LAR1                              //ins ar1 transferieren
          L     #Channel_State
          L     5
          T     DIB [AR1,P#0.0]             // State in Fuse tranferieren (Struktur enthält Bitinformation
    aber die lösung von blockmove ist schöner
    Geändert von volker (13.09.2016 um 13:36 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. #5
    Registriert seit
    27.07.2007
    Beiträge
    223
    Danke
    17
    Erhielt 42 Danke für 40 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Du musst dann mit den Standard 32-Bit Anweisungen arbeiten, vorher jedoch die Bereichskennung (DI, DB, etc.) ausmaskieren, und nachher wieder einsetzen. Dazu sollte es im Forum auch was aufzufinden geben.
    Was passiert wenn man das mit den Bereichskennungen vergisst?

  7. #6
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.746
    Danke
    77
    Erhielt 766 Danke für 517 Beiträge

    Standard

    dann weiss er nicht wo er hinschreiben soll. du bekommst dann in der Diagnose eine Meldung. ungültiger Bereich oder so ähnlich.

    in diesen fall passt das aber
    nach dem tar2 wird die bereichskennung (hier 84) entfernt
    nach dem laden von p##fuse (hat 85 als bereichskennung)
    und dem +d steht der Bereich auf 85 also instanz-db.

    ohne Bereich kann man aber, wie ich es zuerst hatte mit
    T DBB (aktueller datenbaustein, db-register 1) oder mit
    T DIB (aktueller instanzdatenbaustein, db-register 2) machen
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  8. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    10.081
    Danke
    838
    Erhielt 2.968 Danke für 2.392 Beiträge

    Standard

    Zitat Zitat von Hohlkörper Beitrag anzeigen
    Was passiert wenn man das mit den Bereichskennungen vergisst?
    Dann addiert +D die Bereichskennungen und die Ergebnisadresse enthält eine ungültige Bereichskennung (z.B. 16#84 + 16#85 = 16#09). Die Adresse ist dann nur noch für bereichsinterne Adressierungen nutzbar, wo die Bereichskennung ignoriert wird.

    Bei +AR1 und +AR2 braucht man die Bereichskennung nicht ausmaskieren, das machen die Anweisungen selber (weil sie nur die unteren 16 Bit des Versatzes benutzen). Allerdings funktionieren +AR1 und +AR2 nur mit einem Versatz bis max P#4095.7

    Hier mal ein Glanzstück von professionellem Beispielprogramm, wie man den Multiinstanzoffset aus AR2 laut Siemens addieren soll:
    Zitat Zitat von Siemens FAQ 20443243
    Code:
    1 TAR2                Die in AR2 (Multiinstanz!) stehende Adresse wird in Akku1 geschrieben
    2 UD DW#16#00FF_FFFF  Ausmaskieren unwichtiger Informationen
    3 LAR1 P##test        AR1 mit der Adresse von "test" beschreiben
    4 +AR1                Die in Akku1 stehende Adresse (von Multiinstanz) wird zur Adresse von "test" addiert
                          und endgültig ins AR1 geschrieben
    Als Ergebnis steht die Adresse der Variablen #test im Adressregister AR1. Beachten Sie aber, dass mit "+AR1" nur ein begrenzter Wertebereich zur Erhöhung des Adressregisters 1 zur Verfügung steht (-32768 ... +32767). Das oben beschriebene Beispiel müssen Sie noch an Ihre Applikation anpassen.
    Das "Ausmaskieren unwichtiger Informationen" ist in dem Beispiel völlig unnötig - das braucht man nur, wenn man mit +D statt mit +AR1 addiert.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #8
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.072
    Danke
    1.072
    Erhielt 1.151 Danke für 908 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Code:
    LAR1 P##test
    In der Form hab ich den Befahl noch nie verwendet.

    Bleibt Akku1 da unverändert?
    Muss ja wohl, sonst würde ja das zitierte Siemens-Beispiel gar nicht funktionieren ...

    Gruß
    Dieter

  10. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    10.081
    Danke
    838
    Erhielt 2.968 Danke für 2.392 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja, die Variablenadressen P##MyVar können direkt in AR1 geladen werden ohne AKKUs zu verändern. Geht allerdings nicht bei Übergabeparametern von FC (P##InVar), da muß die Adresse des Parameters zuerst in den AKKU1 geladen werden.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. TIA Variable: Adressfehler Steuerung
    Von tababa im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 11.09.2016, 23:47
  2. Antworten: 2
    Letzter Beitrag: 08.10.2009, 07:44
  3. Antworten: 8
    Letzter Beitrag: 08.08.2007, 12:35
  4. Adressfehler beim Auslesen einer S7-200
    Von uller im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 24.07.2007, 21:45
  5. SPS Adressfehler - Protool
    Von seblle im Forum HMI
    Antworten: 3
    Letzter Beitrag: 03.01.2007, 12:12

Lesezeichen

Berechtigungen

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