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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 26

Thema: AUF DB - und was geht jetzt alles damit ?

  1. #11
    Registriert seit
    19.08.2004
    Beiträge
    46
    Danke
    5
    Erhielt 8 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von rs-plc-aa Beitrag anzeigen
    .....
    Wie müsste dann SRCBLK und DSTBLK aussehen wenn die DB Nummer in ner Variable steht ?
    .......
    Wenn man was variables hast (DB-Nr, Anzahl, Anfangsadresse .....) muß man
    Quelle und Ziel als Anypointer definieren.
    Byte 4 und 5 des Anypointers wäre dann die DB-Nr.
    Dazu gab es im Forum schon zig Beiträge , such mal nach Anypointer.

  2. #12
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Zitat Zitat von rs-plc-aa Beitrag anzeigen
    Warum funktioniert das nicht ?
    Code:
          SET   
     
          AUF   DB [#DB_Nr_Merkerbits_Int]
          L     0                           // alle vorherigen Bits löschen
          T     DBD    4                    // HMI_Statuszeile_1
          T     DBD    8                    // HMI_Statuszeile_2
     
          S     #HMI_Gesperrt               // aktuelles Bit setzen
    Probier mal so,
    Code:
          SET   
     
          AUF   DB [#DB_Nr_Merkerbits_Int]
          L     L#0                           // alle vorherigen Bits löschen
          T     DBD    4                    // HMI_Statuszeile_1
          T     DBD    8                    // HMI_Statuszeile_2
     
          S     #HMI_Gesperrt               // aktuelles Bit setzen
    Du lädst nur 16 Bit mit einer 0 und nicht 32Bit

  3. #13
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Hallo,

    danke noch mal für die Antworten.

    Das mit den 16 statt 32 bit war ein "Kopierfehler" - natürlich L#0 oder DW#16#0 ...

    Wow - und das an einem Samstag
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  4. #14
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    Zitat Zitat von jabba Beitrag anzeigen
    Du lädst nur 16 Bit mit einer 0 und nicht 32Bit
    das ist zwar nicht 100% korrekt, funktioniert aber.
    die linken 16bit des akku werden mit 0 gefüllt
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  5. #15
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Ich dreh noch durch...

    Es klappt einfach nicht !

    Wenn ich die "Löschoperation" ausserhalb des FB mache - z.B. OB1 vor dem FB call ist alles toll -> nur im FB geht´s net *grr*

    Verdacht1: Die zu löschenden Bits die in den DWs drin sind sitzen ebenfalls einzeln in der IN_OUT Schnittstelle des FB. Wäre es möglich daß das irgendwie konkurriert ?

    Wäre es (jetzt mal rein theoretisch) nicht genau so wie bei Merkern daß deren Zustände pro (FB-)Durchlauf mehrmals geändert werden können und jede Änderung SOFORT wirksam wird ?

    Wenn ja dann geht hier irgendwas gewaltig schief !

    Liegt da vielleicht ein Abbild der Bits aus der IN_OUT Schnittstelle das am ende des Bausteins wieder drübergebügelt wird und quasi den alten zustand wiederherstellt ? -->> So kommt´s mir nämlich so langsam vor !!!

    Hat jemand noch nen Tip auf lager ?

    P.S.: @ Volker: Ich habe die DB Register im Status jetzt "sichtbar" - alles korrekt... sogar bei AUF DB[...] steht im Indirekt die richtige nummer.
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  6. #16
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    normal sollte das auch in dem fb funzen.

    poste doch mal den kompletten fb als awl-quelle (aber beim exportieren auf absolute adressierung schalten)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  7. #17
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    ... funzt ja auch -> aber lies bitte noch mal das Fettgedruckte aus meiner vorigen Antwort - je mehr ich in die Richtung überlege um so sicherer bin ich mir daß es genau das ist !

    Die Opraration selbst geht einwandfrei - auch im FB -> nur nach beendigung des FB´s ist alles wieder wie vorher weil (da bin ich mir jetzt zu 99,9% sicher) die Bits selbst nicht durch R-Befehle einzeln zurückgesetzt werden sondern immer noch so in der Instanz liegen wie vorher - und dann wird am Ende des FB die Schnittstelle wieder aktualisiert, sprich die (immer noch) gesetzten Bits in den DB zurückgeschrieben.

    Blöd ist jetzt natürlich nur daß ich die ganze Vorgehensweise jetzt knicken kann

    edit: mittlerweile könnte man eigentlich wieder in den dem Ur-Problem gewidmeten Thread zurückwechseln da das mit der "AUF DB" geschichte hiermit eigentlich abgehandelt ist und das Problem damit (noch) nicht behoben ist. Hier der Thread zum Kernproblem : http://www.sps-forum.de/showthread.php?t=12885 , hier würden auch alle weiteren Gedanken zur Bausteinschnittstelle besser dazupassen und für die spätere Suche nützlicher sein.
    (hoffe das ist ok so...)
    Geändert von rs-plc-aa (02.04.2007 um 21:33 Uhr) Grund: Ergänzung / Verweis in bestehenden Thread
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  8. #18
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Bei mir funktioniert folgendes Programm:

    Code:
    DATA_BLOCK DB 1
    TITLE =
    VERSION : 0.1
     
      STRUCT    
       DBW0 : WORD ;   
       DBW2 : WORD ;    
       DBW4 : WORD ;    
       DBW6 : WORD ;    
       DBW8 : WORD ;    
       DBW10 : WORD ;   
      END_STRUCT ;  
    BEGIN
       DBW0 := W#16#0; 
       DBW2 := W#16#0; 
       DBW4 := W#16#0; 
       DBW6 := W#16#0; 
       DBW8 := W#16#0; 
       DBW10 := W#16#0; 
    END_DATA_BLOCK
    Code:
    FUNCTION FC 1 : VOID
    TITLE =
    VERSION : 0.1
     
    VAR_INPUT
      DBNR : INT ;  
    END_VAR
    VAR_TEMP
      DBNRW : WORD ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          UN    E      0.0; 
          SPB   M01; 
          L     #DBNR; 
          T     #DBNRW; 
          AUF   DB [#DBNRW]; 
          L     DW#16#12235678; 
          T     DBD    0; 
          L     DW#16#87654321; 
          T     DBD    4; 
    M01:  NOP   0; 
    NETWORK
    TITLE =
          UN    E      0.1; 
          SPB   M02; 
          L     #DBNR; 
          T     #DBNRW; 
          AUF   DB [#DBNRW]; 
          L     DW#16#0; 
          T     DBD    0; 
          T     DBD    4; 
    M02:  NOP   0; 
    END_FUNCTION
    Code:
    ORGANIZATION_BLOCK "HAUPTPROGRAMM"
    TITLE = Hauptprogramm
    AUTHOR : KAI
    FAMILY : SPSFORUM
    NAME : SEGMENT
    VERSION : 1.0
     
    VAR_TEMP
      OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
      OB1_SCAN_1 : BYTE ;   //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
      OB1_PRIORITY : BYTE ; //Priority of OB Execution
      OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
      OB1_RESERVED_1 : BYTE ;   //Reserved for system
      OB1_RESERVED_2 : BYTE ;   //Reserved for system
      OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
      OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
      OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
      OB1_DATE_TIME : DATE_AND_TIME ;   //Date and time OB1 started
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          CALL FC     1 (
               DBNR                     := 1);
     
    END_ORGANIZATION_BLOCK
    Gruß Kai

  9. #19
    Registriert seit
    25.08.2003
    Beiträge
    332
    Danke
    46
    Erhielt 54 Danke für 46 Beiträge

    Lächeln

    Zitat Zitat von rs-plc-aa Beitrag anzeigen
    auch noch am rande:

    Wie "kopiere" ich dann Inhalte von DB zu DB wenn ich beide vorher AUF machen muss ?

    ? -> die Quelle öffnen, Inhalt z.B. DBD0 laden; das Ziel öffnen (ist dann meine Quelle noch im Akku ?) und transferieren ?

    Oder SFCs verwenden ?
    Tach,
    oder - falls du einen FC hast - den zweiten DB als DI öffnen,so:

    Code:
    AUF   DB10
    AUF   DI11
     
    L   DBW30
    T   DIW30
     
    L   DBW32
    T   DIW32
    Gruß
    Flinn

  10. #20
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    von Kai:
    Bei mir funktioniert folgendes Programm:
    bei mir auch...

    Nimm statt einer FC einen FB und deklariere im IN_OUT Bereich 16 BOOL Variablen. Dann deklarierst du in deinem DB ebenfalls 16 BOOL Variablen.

    Diese ordnest du an der Schnittstelle deines FB beim Aufruf zu.

    Jetzt setzt du ein paar davon wahhlos in deinem FB und versuchst anschließend das DBW0 mit NULL zu überschreiben (im FB).

    Das Ergebnis müsste dann so aussehen daß wenn du hinterher im OB1 das DBW0 deines DB lädst es nicht =NULL sondern diese Bits die gesetzt wurden immer noch gesetzt sind...

    Mehr zu meinem eigentlichen Problem und vielleicht schon mögliche Lösungen: http://www.sps-forum.de/showthread.php?t=12885
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

Ähnliche Themen

  1. M BUS -- Wer hat damit Erfahrung ?
    Von joergel im Forum Feldbusse
    Antworten: 4
    Letzter Beitrag: 19.08.2009, 09:07
  2. Antworten: 7
    Letzter Beitrag: 19.02.2008, 20:04
  3. Antworten: 31
    Letzter Beitrag: 04.11.2007, 02:05
  4. Jetzt geht´s los
    Von plc_tippser im Forum Stammtisch
    Antworten: 19
    Letzter Beitrag: 19.02.2007, 14:55

Lesezeichen

Berechtigungen

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