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

Ergebnis 1 bis 7 von 7

Thema: DB's symbolisch adressieren

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo zusammen,
    als erstes mal mein ziel. ich möchte mir einen cfc.baustein erstellen, der signale (erstmal binär) aufnimmt und in einen db steckt. das ganze soll dann in wincc visualisiert werden (erstmal unwichtig). nun soll man am cfc-baustein den db eintragen können. nun habe ich versucht das ganze in awl zu schreiben. also den db zugriff statt z.b. "t db1.dbw10" bin ich hergegangen habe mir unter "IN" eine variable "dbnr" angelegt und als integer deklariert.schnell musste ich feststellen, dass "t #dbnr.dbw10"
    oder ähnliches nicht geht. dazu bräuchte ich erstmal einen tipp.
    aber damit nicht genug: jetzt muss ich mir die signale einlesen, in ein word packen und zum db schicken. eigentlich nicht schwer:
    u e...
    =m 0.0 usw.
    l mw 0
    t db0.dbw...
    da ich aber ausschlieslich symbolisch arbeiten (das heisst dieses hier dargestellte "mw0" als "temp"-variable) möchte weiss ich an dieser stelle nicht weiter. sicher kann ich mir in "temp" eine variable "merker" als typ word anlegen. aber wie bekomme ich dann die einzelbits in dieses word geschrieben. Eine Lösung wie z.b.
    u e0.0
    l 1
    t #merker
    ...
    l #merker
    t db1.dbw0
    wäre wohl etwas zu umständlich.

    vielen dank an alle, die mir jetzt weiterhelfen !!!
    Zitieren Zitieren DB's symbolisch adressieren  

  2. #2
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard

    hier ein Beispiel für die Umwandlung von 16 Bit in ein Word:

    Code:
    FUNCTION "FC_Bit->Word" : VOID
    TITLE =
    //Dieser Baustein transferiert 16 Bit in ein Word.
    AUTHOR : XXX
    FAMILY : System
    NAME : Bit_Word
    VERSION : 2.0
     
    VAR_INPUT
      IN_0_0 : BOOL ; 
      IN_0_1 : BOOL ; 
      IN_0_2 : BOOL ; 
      IN_0_3 : BOOL ; 
      IN_0_4 : BOOL ; 
      IN_0_5 : BOOL ; 
      IN_0_6 : BOOL ; 
      IN_0_7 : BOOL ; 
      IN_1_0 : BOOL ; 
      IN_1_1 : BOOL ; 
      IN_1_2 : BOOL ; 
      IN_1_3 : BOOL ; 
      IN_1_4 : BOOL ; 
      IN_1_5 : BOOL ; 
      IN_1_6 : BOOL ; 
      IN_1_7 : BOOL ; 
    END_VAR
    VAR_OUTPUT
      Out_Word : WORD ; 
    END_VAR
    VAR_TEMP
      Adressregister_1 : WORD ; 
      my_Word : WORD ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =AR1 retten
          TAR1  ; 
          T     #Adressregister_1; 
    NETWORK
    TITLE =
          L     P##my_Word; 
          LAR1  ; 
          U     #IN_0_0; 
          =     L [AR1,P#1.0]; 
          U     #IN_0_1; 
          =     L [AR1,P#1.1]; 
          U     #IN_0_2; 
          =     L [AR1,P#1.2]; 
          U     #IN_0_3; 
          =     L [AR1,P#1.3]; 
          U     #IN_0_4; 
          =     L [AR1,P#1.4]; 
          U     #IN_0_5; 
          =     L [AR1,P#1.5]; 
          U     #IN_0_6; 
          =     L [AR1,P#1.6]; 
          U     #IN_0_7; 
          =     L [AR1,P#1.7]; 
          U     #IN_1_0; 
          =     L [AR1,P#0.0]; 
          U     #IN_1_1; 
          =     L [AR1,P#0.1]; 
          U     #IN_1_2; 
          =     L [AR1,P#0.2]; 
          U     #IN_1_3; 
          =     L [AR1,P#0.3]; 
          U     #IN_1_4; 
          =     L [AR1,P#0.4]; 
          U     #IN_1_5; 
          =     L [AR1,P#0.5]; 
          U     #IN_1_6; 
          =     L [AR1,P#0.6]; 
          U     #IN_1_7; 
          =     L [AR1,P#0.7]; 
          L     #my_Word; 
          T     #Out_Word; 
    NETWORK
    TITLE =AR1 zurückschreiben
          L     #Adressregister_1; 
          LAR1  ; 
    END_FUNCTION

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo,
    das was du willst geht nur so :
    Code:
    L #myWORD
    
    AUF #DB_Nr
    T DBW 10
    
    #DB_Nr ist hier vom Typ WORD
    Gruß
    LL

  4. #4
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard

    Folgender Baustein sammelt 32 einzelene Bit und legt sie der Reihe nach in einem DWORD ab

    Code:
    FUNCTION "Bitfeld_N_Dword" : VOID
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      Eingang_1 : BOOL ;    
      Eingang_1_1 : BOOL ;    
      Eingang_1_2 : BOOL ;    
      Eingang_1_3 : BOOL ;    
      Eingang_1_4 : BOOL ;    
      Eingang_1_5 : BOOL ;    
      Eingang_1_6 : BOOL ;    
      Eingang_1_7 : BOOL ;    
      Eingang_1_8 : BOOL ;    
      Eingang_1_9 : BOOL ;    
      Eingang_1_10 : BOOL ;    
      Eingang_1_11 : BOOL ;    
      Eingang_1_12 : BOOL ;    
      Eingang_1_13 : BOOL ;    
      Eingang_1_14 : BOOL ;    
      Eingang_1_15 : BOOL ;    
      Eingang_1_16 : BOOL ;    
      Eingang_1_17 : BOOL ;    
      Eingang_1_18 : BOOL ;    
      Eingang_1_19 : BOOL ;    
      Eingang_1_20 : BOOL ;    
      Eingang_1_21 : BOOL ;    
      Eingang_1_22 : BOOL ;    
      Eingang_1_23 : BOOL ;    
      Eingang_1_24 : BOOL ;    
      Eingang_1_25 : BOOL ;    
      Eingang_1_26 : BOOL ;    
      Eingang_1_27 : BOOL ;    
      Eingang_1_28 : BOOL ;    
      Eingang_1_29 : BOOL ;    
      Eingang_1_30 : BOOL ;    
      Eingang_1_31 : BOOL ;    
    END_VAR
    VAR_OUTPUT
      Sammel_Dword : DWORD ;    
    END_VAR
    VAR_TEMP
      Ar1_Speicher : DWORD ;    
      Ar2_Speicher : DWORD ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          TAR1  #Ar1_Speicher; //Rettung der Adresseregister
          TAR2  #Ar2_Speicher; 
    //******************************************************************************************
          L     P##Eingang_1; //pointer auf Anfang der Eingänge
          LAR1  ; 
          L     P##Sammel_Dword; //Pointer auf das Ausgangs DWord
          LAR2  ; 
    
    //******************************************************************************************
    l d[ar1,p#0.0]//Informationübergabe
    t d[ar2,p#0.0]
    //******************************************************************************************
          LAR1  #Ar1_Speicher; //Rückspielung der Adresseregister
          LAR2  #Ar2_Speicher; 
    END_FUNCTION
    Viel Grüße Bernard
    Geändert von Bernard (11.11.2009 um 21:26 Uhr) Grund: Vereinfachnung
    Zitieren Zitieren Einzelbitwandler nach DWORD  

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.255
    Danke
    537
    Erhielt 2.705 Danke für 1.954 Beiträge

    Standard

    @erwin36
    Das gehört ja nicht in den Stammtisch, habs mal verschoben, bitte in Zukunft darauf achten!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. #6
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.723
    Danke
    729
    Erhielt 1.159 Danke für 970 Beiträge

    Standard

    @Bernard
    Du rettest 2x Adressregister 1
    es sollte so sein
    Code:
    *
    ...
    
          TAR1  #Ar1_Speicher; //Rettung der Adresseregister
          TAR2  #Ar2_Speicher; 
    ...
          LAR1  #Ar1_Speicher; //Rückspielung der Adresseregister
          LAR2  #Ar2_Speicher; 
    ...
    Geändert von marlob (12.11.2009 um 03:22 Uhr)

  7. #7
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke werde ich gleich Beheben (scheiß kopiererei)

    Viel Grüße Bernard
    Geändert von Bernard (11.11.2009 um 21:25 Uhr)
    Zitieren Zitieren Du rettest 2x Adressregister 1  

Ähnliche Themen

  1. ANY-Pointer Adresse Symbolisch
    Von Oele im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 13.07.2011, 07:26
  2. Symbolisch mit Flex Arbeiten
    Von Johannes F im Forum HMI
    Antworten: 4
    Letzter Beitrag: 22.01.2009, 13:50
  3. Antworten: 6
    Letzter Beitrag: 05.07.2008, 22:35
  4. Bausteinordner symbolisch/absolut
    Von kiestumpe im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 27.08.2007, 10:45
  5. Symbolisch suchen
    Von ALF im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.10.2004, 20:35

Lesezeichen

Berechtigungen

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