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

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 38

Thema: Multiinstanz FB Zugriff auf Instanz DB von aufrufenden FB

  1. #11
    Freki ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.01.2013
    Beiträge
    29
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das Ziel ist ne CPU314C 2 PN/DP oder wie die sich schimpft. Habe aber gerade nur PLCSim zur Hand.
    Hab jedoch bemerkt dass nach dem ganzen rumprobieren das Testprojekt mittlerweile inkosistent war. jetzt blinkt der systemfehler nur noch. Trotzdem bekomme ich den Aufruf nicht zustande.

    Heißt dass denn dass der Aufruf so prinzipiell funktionieren müsste, oder sehe ich das falsch?

  2. #12
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Wenn der Systemfehler blinkt hast du ja noch irgendwo einen Schmerz. Wie sieht jetzt dein Baugruppenzustand bzw. der Diagnosepuffer aus?

    Ich könnte mir vorstellen dass dein DB zu kurz war - daher auch die Inkonsistenz.
    mfG Aventinus

  3. #13
    Freki ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.01.2013
    Beiträge
    29
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Naja, hab jetzt mal wieder alles neu gestartet. Und jetzt stegt se wieder mit einem Lesefehler aus. Aber....... Im Stack steht jetzt:
    OB1 --- -- DB1100
    FB1100 -- DB1100 DB1100
    FB1101 -- DB1100 DB1100
    Falls das einem weiterhilft. Ansonsten lesefehler. FB1100 ist aufrufender FB. FB1101 soll auf Instanzdb von Fb1100 zugreifen (DB1100).

  4. #14
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Im B-Stack müsste auch der Inhalt der Adress- bzw. DB-Register stehen. Wie siehts da aus?
    mfG Aventinus

  5. #15
    Freki ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.01.2013
    Beiträge
    29
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Code:
    B-Stack:
    --------
    
    Baustein    Symbol                   1. DB     2. DB     
    
     OB1        - - -                    - - -     DB1100    
     FB1100     - - -                    DB1100    DB1100    
     FB1101     Aufruf_Position          DB1100    DB1100    
    
    
    
    L-Stack: Lokaldaten von OB1
    ---------------------------
    
    Lokaldatenbytes (in Hexadezimalformat):
    
        0  -    9 :   11   03   01   01   C8   58   00   0A   00   0A
       10  -   19 :   00   1E   13   02   05   14   11   19   13   73
       20  -   25 :   00   00   00   00   01   00
    Code:
    L-Stack: Lokaldaten von FB1100
    ------------------------------
    
    Lokaldatenbytes (in Hexadezimalformat):
    
        0  -    7 :   84   00   00   00   04   4C   01   00
    Code:
    
    L-Stack: Lokaldaten von FB1101
    ------------------------------
    
    Lokaldatenbytes (in Hexadezimalformat):
    
        0  -    9 :   00   01   00   00   00   00   00   00   84   00
       10  -   11 :   02   70
    Code:
    U-Stack: Registerinhalte in Prioritätsklasse (OB1)
    --------------------------------------------------
    
    
    Unterbrechungsstelle
    
    Prioritätsklasse:               1, OB1
    
    Unterbrochener Baustein:        FB 1101
    Fortsetzung in Baustein:        FB 1101
    
    
    Aufgeschlagene DBs
                        1. DB    2. DB
    Nummer:             DB 1100       DB 1100
    Größe in Byte:      92            92
    
    
    Registerwerte an der Unterbrechungsstelle
    
    Register            Wert                     Anzeigeformat       
    Akku1:              0000  0000               Hex                 
    Akku2:              0000  0001               Hex                 
    Akku3:              0000  0000               Hex                 
    Akku4:              0000  0000               Hex                 
    
    Adr.-Reg.1:         6.0                      Adresse             
    Adr.-Reg.2:         DB 78.0                  Adresse             
    
    Statuswort:         
                        BIE  A1   A0   OV   OS   OR   STA  VKE  /ER  
                        1    0    0    0    0    0    1    1    0
    Geändert von Freki (05.02.2013 um 14:23 Uhr)

  6. #16
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ich hab vergessen zu erwähnen dass die von mir angefragte Info im U-Stack steht. sorry
    mfG Aventinus

  7. #17
    Freki ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.01.2013
    Beiträge
    29
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also wenn ich das richtig verstehe (Hab das mit den Stacks noch nie benutzt, da ich die indirekte Adressierung bisher nicht verwendet habe) versucht der auf den DB78.6 zuzugreifen. Und den gibt es logischerweise ja nicht...........

  8. #18
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Moment. Ganz langsam.

    Wenn ich dich richig verstehe steht im AR1 "DB 878.6"

    Das heißt dann, in verbindung mit dem Befehl L W[AR1,P#0.0] dass die CPU das Wort aus dem Datenbaustein, mit der Nummer in DB-Register 1 und der Adresse 878.6 laden soll. Und schon haben wir wieder ein Problem. Bei Lade-Befehlen sind nur Adressen mit der Bit-Adresse 0 zulässig.
    Als nächstes fällt mit auf dass du deine Sollwerte ja im Instanz-DB haben wolltest wenn ich mich recht erinnere. Dann sollte aber in deinem AR1 DI 878.6 stehen.

    Also passt irgendwas mit der Berechnung der Adresse nicht.
    mfG Aventinus

  9. #19
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Du schreibtst irgendwo in deinem Code:

    Code:
    
          L     #Speicherbereich      
          SLD   3 
         T     #SpeicherW 
         LAR1  P##SpeicherW 
         TAR2        +AR1 
           L     W [AR1,P#0.0] 
         L     DW#16#FF 
         UW 
             LAR1 
     

    Was steht in deiner Variable Speicherbereich?
    mfG Aventinus

  10. #20
    Freki ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.01.2013
    Beiträge
    29
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Kannst du mir erklären wie du auf 878.6 kommst?
    Eigentlich sollte die DB-Nummer 1100 sein (da InstanzDB vom aufrufenden Fb). und die Adresse wäre dann logischerweise 0, da ja n integer-Wert gelesen werden soll.
    Somit gebe ich dir vollkommen recht dass mit der Adress-berechnung was nicht passt. Leider komme ich nur nicht drauf was.

    Speicherbereich muss = 6 sein. Ist mir gersade mal aufgefallen als ich den Db angeschaut habe.
    Geändert von Freki (05.02.2013 um 14:42 Uhr)

Ähnliche Themen

  1. S7 IEC-Timer, Multiinstanz, Instanz-DB
    Von Mark4you im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 11.07.2011, 14:31
  2. Antworten: 12
    Letzter Beitrag: 18.05.2011, 23:57
  3. Instanz DB vor Zugriff schützen
    Von Pinky im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 05.07.2010, 21:42
  4. Multiinstanz+Zugriff auf Instanzen von SFC
    Von sixt im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 29.08.2009, 18:27
  5. Antworten: 13
    Letzter Beitrag: 18.01.2008, 12:47

Lesezeichen

Berechtigungen

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