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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Instanz-DB an SCL übergeben

  1. #11
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Larry,

    gerne

    Code:
    TYPE UDT1
    // 
    // Datenstruktur CONT_C
    //
      STRUCT
        COM_RST : BOOL ;  //complete restart
        MAN_ON : BOOL  := TRUE;  //manual value on
        PVPER_ON : BOOL ;  //process variable peripherie on
        P_SEL : BOOL  := TRUE;  //proportional action on
        I_SEL : BOOL  := TRUE;  //integral action on
        INT_HOLD : BOOL ;  //integral action hold
        I_ITL_ON : BOOL ;  //initialization of the integral action
        D_SEL : BOOL ;  //derivative action on
        CYCLE : TIME  := T#1S;  //sample time
        SP_INT : REAL ;  //internal setpoint
        PV_IN : REAL ;  //process variable in
        PV_PER : WORD ;  //process variable peripherie
        MAN : REAL ;  //manual value
        GAIN : REAL  := 2.000000e+000;  //proportional gain
        TI : TIME  := T#20S;  //reset time
        TD : TIME  := T#10S;  //derivative time
        TM_LAG : TIME  := T#2S;  //time lag of the derivative action
        DEADB_W : REAL ;  //dead band width
        LMN_HLM : REAL  := 1.000000e+002;  //manipulated value high limit
        LMN_LLM : REAL ;  //manipulated value low limit
        PV_FAC : REAL  := 1.000000e+000;  //process variable factor
        PV_OFF : REAL ;  //process variable offset
        LMN_FAC : REAL  := 1.000000e+000;  //manipulated value factor
        LMN_OFF : REAL ;  //manipulated value offset
        I_ITLVAL : REAL ;  //initialization value of the integral action
        DISV : REAL ;  //disturbance variable
        LMN : REAL ;  //manipulated value
        LMN_PER : WORD ;  //manipulated value peripherie
        QLMN_HLM : BOOL ;  //high limit of manipulated value reached
        QLMN_LLM : BOOL ;  //low limit of manipulated value reached
        LMN_P : REAL ;  //proportionality component
        LMN_I : REAL ;  //integral component
        LMN_D : REAL ;  //derivative component
        PV : REAL ;  //process variable
        ER : REAL ;  //error signal
        sInvAlt : REAL ;  
        sIanteilAlt : REAL ;  
        sRestInt : REAL ;  
        sRestDif : REAL ;  
        sRueck : REAL ;  
        sLmn : REAL ;  
        sbArwHLmOn : BOOL ;  
        sbArwLLmOn : BOOL ;  
        sbILimOn : BOOL  := TRUE;  
      END_STRUCT
    END_TYPE
    
    //-----------------------------------------------------------------------------
    //-----------------------------------------------------------------------------
    
    DATA_BLOCK DB10  FB41
    //
    // Dummy DB
    // Instanz-DB FB41
    //
    BEGIN
    
    END_DATA_BLOCK
    
    //-----------------------------------------------------------------------------
    //-----------------------------------------------------------------------------
    
    FUNCTION FC1 : VOID
    
    VAR_INPUT
      DB_Nr : INT;    //DB-Nr CONT_C
    END_VAR
    
    VAR_TEMP
      tAnyDB : ANY;
        _AnyDB AT tAnyDB : STRUCT
          ID : BYTE;
          DataTyp : BYTE;
          Count : WORD;
          DBNr : WORD;
          BytePointer : DWORD;
        END_STRUCT;
      tAnyDummy : ANY;
        _AnyDummy AT tAnyDummy : STRUCT
          ID : BYTE;
          DataTyp : BYTE;
          Count : WORD;
          DBNr : WORD;
          BytePointer : DWORD;
        END_STRUCT;
       tRetVal : INT; 
    END_VAR
    
    BEGIN
      
      //Any-Pointer auf DB zusammenstellen
      _AnyDB.ID := B#16#10;                 //Muss so sein
      _AnyDB.DataTyp := B#16#2;             //Datentyp Byte
      _AnyDB.Count := W#16#7E;              //Anzahl 126 Bytes
      _AnyDB.DBNr := INT_TO_WORD(DB_Nr);    //DB
      _AnyDB.BytePointer := DW#16#84000000; //Pointer auf DBX0.0
      
      //Any-Pointer auf Dummy-DB zusammenstellen
      _AnyDummy.ID := B#16#10;                 //Muss so sein
      _AnyDummy.DataTyp := B#16#2;             //Datentyp Byte
      _AnyDummy.Count := W#16#7E;              //Anzahl 126 Bytes
      _AnyDummy.DBNr := W#16#A;                //Dummy DB-Nr 10
      _AnyDummy.BytePointer := DW#16#84000000; //Pointer auf DBX0.0
      
      //DB-Struktur in Dummy-DB kopieren
      tRetVal := BLKMOV(SRCBLK := tAnyDB, DSTBLK := tAnyDummy);
       
      //Bausteinaufruf CONT_C mit Dummy Instanz-DB
      CONT_C.DB10();
    
      //Dummy-DB in DB-Struktur kopieren
      tRetVal := BLKMOV(SRCBLK := tAnyDummy, DSTBLK := tAnyDB);
      
    END_FUNCTION
    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  2. Folgender Benutzer sagt Danke zu dalbi für den nützlichen Beitrag:

    Paule (13.05.2010)

  3. #12
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Hallo Daniel,
    leider bin ich mir im Augenblick nicht so sicher, wie ich den Beitrag kommentieren soll ... aber stimmt - das wäre eine mögliche Lösung - ich muß aber gestehen, dass sie mir NICHT gefällt ...

    Gruß
    LL

  4. #13
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi LL,

    was gefällt Dir den nicht?

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  5. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    naja ... das :
    Code:
     //DB-Struktur in Dummy-DB kopieren
      tRetVal := BLKMOV(SRCBLK := tAnyDB, DSTBLK := tAnyDummy);
       
      //Bausteinaufruf CONT_C mit Dummy Instanz-DB
      CONT_C.DB10();
    
      //Dummy-DB in DB-Struktur kopieren
      tRetVal := BLKMOV(SRCBLK := tAnyDummy, DSTBLK := tAnyDB);
    ... ist aber vielleicht auch Geschmacksache ...

Ähnliche Themen

  1. FB Instanz an FB übergeben
    Von Integer im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 08.04.2011, 11:23
  2. Instanz-DB
    Von SPS_NEU im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 18.03.2009, 14:08
  3. Antworten: 13
    Letzter Beitrag: 18.01.2008, 12:47
  4. Instanz-DB
    Von titinparma im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 15.10.2007, 17:56
  5. Instanz DB
    Von Flo im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 14.10.2006, 20:04

Stichworte

Lesezeichen

Berechtigungen

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