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

Ergebnis 1 bis 7 von 7

Thema: Bei verwenden von indirekter Adressierung in PLS-Sim geht AG ins Stop

  1. #1
    Registriert seit
    28.05.2013
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Liebe SPS-Gemeinde,

    sobald ich auf eine temp-variable #Adr mittels indirekter Adressierung zugreife, geht das AG in Stop (Simulation). Ok, lade ich den OB121 dazu, verhindert er genau dies, aber über die indirekte Adressierung wird nichts geladen oder kopiert.

    Code:
          
    L     #SlaveAdr     
    L     2
    /I    
    
    L     #MasterAdr
    +I    
    T     #Adr
    
    L     PEB [#Adr]          // Ab dieser Stelle wird nicht geladen und AG geht in Stop
    T     LB     4
    Den Baustein habe Ich in FB41 geschrieben, #MasterAdr und #SlaveAdr sind Eingänge, #Adr ist eine Temp-Variable. Der Baustein wird in OB1 aufgerufen.
    Dann habe Ich nach Lösungsansätze im Internet gesucht und das hier gefunden.
    https://people.fh-landshut.de/~sbr/V...2010_Teil2.pdf

    Also einen anderen Code ausprobiert, und zwar diesen.
    Code:
    L 9               
    T MD 50 
                
    L EB [MD 50]       // Und wieder geht an dieser Stelle AG in Stop, und es wird nichts geladen.
    T MW [MD 50]
    Hat jemand solche Erfahrungen mit der Simulation gemacht? Liegt das an PLC-Sim, oder ist hier irgend wo ein Denkfehler.
    Danke für Eure Antworten.
    Gruß websiedler.
    Zitieren Zitieren Bei verwenden von indirekter Adressierung in PLS-Sim geht AG ins Stop  

  2. #2
    Registriert seit
    24.10.2007
    Ort
    Niederlande
    Beiträge
    673
    Danke
    22
    Erhielt 143 Danke für 135 Beiträge

    Standard

    Zitat Zitat von websiedler Beitrag anzeigen
    Also einen anderen Code ausprobiert, und zwar diesen.
    Code:
    L 9               
    T MD 50 
                
    L EB [MD 50]       // Und wieder geht an dieser Stelle AG in Stop, und es wird nichts geladen.
    T MW [MD 50]
    .
    Die 9 ist false, ein byte adres muste mit ein vielfach von 8 angesprochen worte. Wenn Sie EB 9 abfragen wollte must in MD50 9*8 = 72 stehn.

    Code:
    L 9
    SLW3      //= * 8 um dass bitadresse zu bekommen
    T MD50
    L  EB [MD50]    // EB9
    T  MW [MD50]  //MW 9   ( Inhalt von EB 9 steht in MB10)
    Mit abfrage von ein PEB is das genau so, und das adresse van der PEB must via die HW config in PLCSim eingetrage sind.


    Joop

  3. Folgender Benutzer sagt Danke zu JoopB für den nützlichen Beitrag:

    websiedler (08.11.2013)

  4. #3
    websiedler ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.05.2013
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die schnelle Antwort.
    Leider hilft das mit der indirekten Adressierung hier nicht weiter, denn an der besagten Stelle lädt er nicht.
    Code:
    L     9
    L     8
    *I    
    
    
    T     MD    50                    // Hier lädt er die "72" 
    L     EB [MD 50]                 // ab hier macht er nichts mehr
    T     MW [MD 50]               //
    Habe Ich das so richtig verstanden, Joop?

  5. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.311
    Danke
    932
    Erhielt 3.323 Danke für 2.685 Beiträge

    Standard

    Zitat Zitat von websiedler Beitrag anzeigen
    an der besagten Stelle lädt er nicht.
    Code:
    L     9
    L     8
    *I             // für Adressberechnungen besser *D benutzen
    
    
    T     MD    50                    // Hier lädt er die "72" hier schreibt er 72 (= P#9.0) in das MD50
    L     EB [MD 50]                  // ab hier macht er nichts mehr hier wird ein BYTE geladen
    T     MW [MD 50]                  // aber in ein WORD geschrieben
    Ist das tatsächlich exakt der Code, den Du testest oder hast Du Dich beim Abtippen vertippt?
    Der Code ist zwar nicht ganz schön, sollte aber funktionieren.

    Was steht denn im Diagnosepuffer von PLCSIM?
    Hast Du auch die HWKonfig (die Systemdaten) in PLCSIM geladen?
    Welche Versionen von PLCSIM und Step7 verwendest Du?

    PS:
    Was meinst Du mit "ab hier macht er nichts mehr" - an der Stelle geht PLCSIM in Stop oder läd es nur nicht das, was Du erwartest?

    Harald
    Geändert von PN/DP (08.11.2013 um 17:31 Uhr)
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #5
    websiedler ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.05.2013
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Es geht um den Code.
    Code:
    L     #SlaveAdr     // In Standard steht 2
    L     2                 // In Standard steht 2
    /I                       // In Standard steht 1
    
    L     #MasterAdr    // Standard = 352
    +I                       // Standard = 353
    T     #Adr            // Standard = 353
    
    L     PEB [#Adr]    // Standard = 0, Akku 2 = 353 
    LB     4               // Standard = 0, Akku 2 = 353
    
    #MasterAdr & #SlaveAdr sind Input(int), #Adr ist eine Temp-Variable(DWord), und im Output sind Adr1...bis..Adr8(bool) von 4.0 bis 4.7.
    Im OB1 aufruf sollte eigentlich, an den Ausgängen etwas ausgegeben werden? Tut es bei mir nicht.

    Jetzt geht AG nicht ins Stop, gibt aber am Ausgang auch nichts aus. Heute Mittag stand im Diagnosepuffer ab der stelle, wo der zweizeiler der indirekte Adressierung steht, dass der OB121 benötigt oder ein Function Request Block fehlt.

    Den anderen Code habe Ich aus dem Internet zum gegentesten (siehe link weiter oben) gefunden, und stutze um so mehr.
    @Harald: Ja, mit der Multiplikation in Double anstelle von Integer wirst du recht haben. Ich dachte, der Anfangswert sei "int", sorry. Der Rest des Codes, habe Ich 1 zu 1 entnommen, ausser dem schieben von 3 (SLW 3), das habe Ich weggelassen
    Step 7 v5.5
    PLC-Sim v5.4 +SP4
    Vielen Dank für die Antworten.

  7. #6
    Registriert seit
    24.10.2007
    Ort
    Niederlande
    Beiträge
    673
    Danke
    22
    Erhielt 143 Danke für 135 Beiträge

    Standard

    Wenn Sie PEB 353 laden wills muste Sie de wert auch x 8 nemen. ( mit 352 gibt est keine stop aber dass ist PEB 44)

  8. #7
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bei PLCSIM muss bei Direktzugriffen auf die Peripherie (PEx, PAx) vorher die Hardware-Konfiguration übertragen werden.
    Gruß
    Michael

Ähnliche Themen

  1. Step 5 CPU 948 geht bei AG-Abzug in Stop
    Von Gebs im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 21.06.2013, 10:04
  2. CPU geht bei Programmwechsel in Stop
    Von nonguru im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 21.05.2010, 09:23
  3. Antworten: 12
    Letzter Beitrag: 02.06.2009, 10:19
  4. Antworten: 7
    Letzter Beitrag: 13.10.2005, 22:49
  5. Antworten: 1
    Letzter Beitrag: 19.06.2003, 19:34

Stichworte

Lesezeichen

Berechtigungen

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