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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 26 von 26

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

  1. #21
    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
    Hier ein kurzes Beispiel (*.awl):
    Code:
    ORGANIZATION_BLOCK OB 1
    TITLE = "Main Program Sweep (Cycle)"
    VERSION : 0.1
     
    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 =
          L     DB10.DBW    0; 
     
          CALL FB     1 , DB     1 (
               DB_Nr                    := 10,
               Bit0                     := DB10.DBX    0.0,
               Bit1                     := DB10.DBX    0.1,
               Bit2                     := DB10.DBX    0.2,
               Bit3                     := DB10.DBX    0.3,
               Bit4                     := DB10.DBX    0.4,
               Bit5                     := DB10.DBX    0.5,
               Bit6                     := DB10.DBX    0.6,
               Bit7                     := DB10.DBX    0.7,
               Bit8                     := DB10.DBX    1.0,
               Bit9                     := DB10.DBX    1.1,
               Bit10                    := DB10.DBX    1.2,
               Bit11                    := DB10.DBX    1.3,
               Bit12                    := DB10.DBX    1.4,
               Bit13                    := DB10.DBX    1.5,
               Bit14                    := DB10.DBX    1.6,
               Bit15                    := DB10.DBX    1.7);
          L     DB10.DBW    0; 
     
    END_ORGANIZATION_BLOCK
    FUNCTION_BLOCK FB 1
    TITLE =
    VERSION : 0.1
     
    VAR_INPUT
      DB_Nr : INT ; 
    END_VAR
    VAR_IN_OUT
      Bit0 : BOOL ; 
      Bit1 : BOOL ; 
      Bit2 : BOOL ; 
      Bit3 : BOOL ; 
      Bit4 : BOOL ; 
      Bit5 : BOOL ; 
      Bit6 : BOOL ; 
      Bit7 : BOOL ; 
      Bit8 : BOOL ; 
      Bit9 : BOOL ; 
      Bit10 : BOOL ; 
      Bit11 : BOOL ; 
      Bit12 : BOOL ; 
      Bit13 : BOOL ; 
      Bit14 : BOOL ; 
      Bit15 : BOOL ; 
    END_VAR
    VAR_TEMP
      DB_Nr_Int : INT ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          SET   ; 
          S     #Bit1; 
          S     #Bit3; 
          S     #Bit5; 
          S     #Bit7; 
          S     #Bit11; 
     
    NETWORK
    TITLE =
          L     #DB_Nr; 
          T     #DB_Nr_Int; 
          AUF   DB [#DB_Nr_Int]; 
          L     0; 
          T     DBW    0; 
     
    NETWORK
    TITLE =
          L     DBW    0; 
          U     #Bit0; 
          U     #Bit1; 
          U     #Bit2; 
          U     #Bit3; 
          U     #Bit4; 
          U     #Bit5; 
          U     #Bit6; 
          U     #Bit7; 
          U     #Bit8; 
          U     #Bit9; 
          U     #Bit10; 
          U     #Bit11; 
          U     #Bit12; 
          U     #Bit13; 
          U     #Bit14; 
          U     #Bit15; 
     
    END_FUNCTION_BLOCK
    DATA_BLOCK DB 1
    TITLE =
    VERSION : 0.0
     FB 1
    BEGIN
       DB_Nr := 0; 
       Bit0 := FALSE; 
       Bit1 := FALSE; 
       Bit2 := FALSE; 
       Bit3 := FALSE; 
       Bit4 := FALSE; 
       Bit5 := FALSE; 
       Bit6 := FALSE; 
       Bit7 := FALSE; 
       Bit8 := FALSE; 
       Bit9 := FALSE; 
       Bit10 := FALSE; 
       Bit11 := FALSE; 
       Bit12 := FALSE; 
       Bit13 := FALSE; 
       Bit14 := FALSE; 
       Bit15 := FALSE; 
    END_DATA_BLOCK
    Wenn man den Status beobachtet sieht man daß zunächst im Baustein das Löschen geklappt hat und anschließed im OB sieht man dann daß das Bitmuster wieder im DB steckt...
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

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

    Standard

    Ich habe das selbe Problem:

    Code:
          U     #SET
          S     #BIT00
          S     #BIT04
          S     #BIT10
          S     #BIT14
     
          U     #RESET01
          R     #BIT00 - Funktioniert, Bits werden zurückgesetzt
          R     #BIT04
          R     #BIT10
          R     #BIT14
     
          UN    #RESET02
          SPB   M01
          L     #DBNR - Funktioniert nicht, Bits bleiben gesetzt
          T     #DBNRW
          AUF   DB [#DBNRW]
          L     W#16#0
          T     DBW    0
    M01:  NOP   0
    Gruß Kai

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

    Standard

    Hier noch mein Programm (*.awl):

    Code:
    DATA_BLOCK DB 2
    TITLE =
    VERSION : 0.1
    
      STRUCT    
       BIT00 : BOOL ;   
       BIT01 : BOOL ;   
       BIT02 : BOOL ;   
       BIT03 : BOOL ;   
       BIT04 : BOOL ;   
       BIT05 : BOOL ;   
       BIT06 : BOOL ;   
       BIT07 : BOOL ;   
       BIT10 : BOOL ;   
       BIT11 : BOOL ;   
       BIT12 : BOOL ;   
       BIT13 : BOOL ;   
       BIT14 : BOOL ;   
       BIT15 : BOOL ;   
       BIT16 : BOOL ;   
       BIT17 : BOOL ;   
      END_STRUCT ;  
    BEGIN
       BIT00 := FALSE; 
       BIT01 := FALSE; 
       BIT02 := FALSE; 
       BIT03 := FALSE; 
       BIT04 := FALSE; 
       BIT05 := FALSE; 
       BIT06 := FALSE; 
       BIT07 := FALSE; 
       BIT10 := FALSE; 
       BIT11 := FALSE; 
       BIT12 := FALSE; 
       BIT13 := FALSE; 
       BIT14 := FALSE; 
       BIT15 := FALSE; 
       BIT16 := FALSE; 
       BIT17 := FALSE; 
    END_DATA_BLOCK
    FUNCTION_BLOCK FB 1
    TITLE =
    VERSION : 0.1
    
    VAR_INPUT
      DBNR : INT ;  
      SET01 : BOOL ;    
      RESET01 : BOOL ;  
      RESET02 : BOOL ;  
    END_VAR
    VAR_IN_OUT
      BIT00 : BOOL ;    
      BIT01 : BOOL ;    
      BIT02 : BOOL ;    
      BIT03 : BOOL ;    
      BIT04 : BOOL ;    
      BIT05 : BOOL ; 
      BIT06 : BOOL ;    
      BIT07 : BOOL ;    
      BIT10 : BOOL ;    
      BIT11 : BOOL ;    
      BIT12 : BOOL ;    
      BIT13 : BOOL ;    
      BIT14 : BOOL ;    
      BIT15 : BOOL ;    
      BIT16 : BOOL ;    
      BIT17 : BOOL ;    
    END_VAR
    VAR_TEMP
      DBNRW : WORD ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          U     #SET01; 
          S     #BIT00; 
          S     #BIT04; 
          S     #BIT10; 
          S     #BIT14; 
     
          U     #RESET01; 
          R     #BIT00; 
          R     #BIT04; 
          R     #BIT10; 
          R     #BIT14; 
     
          UN    #RESET02; 
          SPB   M01; 
          L     #DBNR; 
          T     #DBNRW; 
          AUF   DB [#DBNRW]; 
          L     W#16#0; 
          T     DBW    0; 
    M01:  NOP   0; 
    
    END_FUNCTION_BLOCK
    DATA_BLOCK DB 1
    TITLE =
    VERSION : 0.0
     FB 1
    BEGIN
       DBNR := 0; 
       SET01 := FALSE; 
       RESET01 := FALSE; 
       RESET02 := FALSE; 
       BIT00 := FALSE; 
       BIT01 := FALSE; 
       BIT02 := FALSE; 
       BIT03 := FALSE; 
       BIT04 := FALSE; 
       BIT05 := FALSE; 
       BIT06 := FALSE; 
       BIT07 := FALSE; 
       BIT10 := FALSE; 
       BIT11 := FALSE; 
       BIT12 := FALSE; 
       BIT13 := FALSE; 
       BIT14 := FALSE; 
       BIT15 := FALSE; 
       BIT16 := FALSE; 
       BIT17 := FALSE; 
    END_DATA_BLOCK
    ORGANIZATION_BLOCK "HAUPTPROGRAMM"
    TITLE = Hauptprogramm
    AUTHOR : KAI
    FAMILY : SPSFORUM
    NAME : AUFDB
    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 =
          L     DB2.DBW    0; 
          T     MW    10; 
          CALL FB     1 , DB     1 (
               DBNR                     := 2,
               SET01                    := E      0.0,
               RESET01                  := E      0.1,
               RESET02                  := E      0.2,
               BIT00                    := DB2.DBX    0.0,
               BIT01                    := DB2.DBX    0.1,
               BIT02                    := DB2.DBX    0.2,
               BIT03                    := DB2.DBX    0.3,
               BIT04                    := DB2.DBX    0.4,
               BIT05                    := DB2.DBX    0.5,
               BIT06                    := DB2.DBX    0.6,
               BIT07                    := DB2.DBX    0.7,
               BIT10                    := DB2.DBX    1.0,
               BIT11                    := DB2.DBX    1.1,
               BIT12                    := DB2.DBX    1.2,
               BIT13                    := DB2.DBX    1.3,
               BIT14                    := DB2.DBX    1.4,
               BIT15                    := DB2.DBX    1.5,
               BIT16                    := DB2.DBX    1.6,
               BIT17                    := DB2.DBX    1.7);
          L     DB2.DBW    0; 
          T     MW    12; 
    END_ORGANIZATION_BLOCK
    Gruß Kai

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

    Standard

    Das Rücksetzen scheint zu funktionieren, wenn man im FB1 das ensprechende DW (DW4) im Instanz-DB (DB1) zurücksetzt.

    Code:
    Organisationsbaustein OB1
     
          CALL  FB     1 , DB1
           DBNR   :=1
           SET01  :=E0.0
           RESET01:=E0.1
           RESET02:=E0.2
           BIT00  :=DB2.DBX0.0
           BIT01  :=DB2.DBX0.1
           BIT02  :=DB2.DBX0.2
           BIT03  :=DB2.DBX0.3
           BIT04  :=DB2.DBX0.4
           BIT05  :=DB2.DBX0.5
           BIT06  :=DB2.DBX0.6
           BIT07  :=DB2.DBX0.7
           BIT10  :=DB2.DBX1.0
           BIT11  :=DB2.DBX1.1
           BIT12  :=DB2.DBX1.2
           BIT13  :=DB2.DBX1.3
           BIT14  :=DB2.DBX1.4
           BIT15  :=DB2.DBX1.5
           BIT16  :=DB2.DBX1.6
           BIT17  :=DB2.DBX1.7
    Code:
    Funktionsbaustein FB1
     
          UN    #RESET02
          SPB   M01
          L     #DBNR
          T     #DBNRW
          AUF   DB [#DBNRW]
          L     W#16#0
          T     DBW    4
    M01:  NOP   0
    Gruß Kai
    Angehängte Dateien Angehängte Dateien

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

    Standard

    Innerhalb eines FB ist der Instanz-DB über das DI-Register aufgeschlagen.

    Man kann also im FB1 mit DIW direkt das entsprechende DW (DW4) im Instanz-DB (DW1) zurücksetzen:

    Code:
    Funktionsbaustein FB1
     
          UN    #RESET02
          SPB   M01
          L     W#16#0
          T     DIW    4
    M01:  NOP   0
    Gruß Kai
    Angehängte Dateien Angehängte Dateien

  6. #26
    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
    Tja, die Idee es im Instanzdatenbaustein zu machen hatte ich auch, nur daß es 1.) keine wirklich saubere Lösung ist und 2.) ich z.B. auch noch Bits des DBs ansprechen muss die gar nicht im FB deklariert sind.

    Ich müsste also beides tun - den ganzen Bereich + die lokal verwendeten im DI ...

    Das ist halt wieder so ne sache wo sich gerne Fehler einschleichen die man u.U. ewig suchen muss.

    Ach ja, ich wollte mit der Thematik wieder die Kurve in diesen Thread http://www.sps-forum.de/showthread.p...8121#post78121 bekommen, sonst läuft das zu sehr auseinander...
    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
  •