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

Ergebnis 1 bis 3 von 3

Thema: SCL Array of STRUC Anfangswerte

  1. #1
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    bin grade dabei einen Baustein zu erstellen der Texte an ein Arduino zu Sendet, für ein LCD Display

    Ich möchte die (rot) markierten Texte als Anfangswerte in das (blau) Array of STRUCT als Anfangswerte schreiben.



    Code:
    FUNCTION_BLOCK TEXT_SPRECHANLAGE_LCD
    
    VAR_INPUT
        
        CODE_OK:             BOOL;
        CODE_FALSCH:         BOOL;
        CODE_EINGABE:        BOOL;
        SONDERFUNKTION_EIN:  BOOL;
        ZAHL_TASTATUR:       INT;
        ECHO_CHAR           :ARRAY[0..31] OF CHAR;
    END_VAR
    
    VAR_OUTPUT
        
        SENDE_TEXT  :ARRAY[0..31] OF CHAR;
            SENDEN      :BOOL;
        
    END_VAR
    
    VAR_TEMP
         i          :INT;
         i2         :INT;
         i3         :INT;
         textNr     :INT;
         Anfang     :INT;
         RETVAL     :INT;
                    
    END_VAR
    VAR
        
        TEXTE:ARRAY[0..20] OF STRUCT           // MAX mögliche Texte von 20.
            ZEILE1  :STRING[16];    
            ZEILE2  :STRING[16];
        END_STRUCT ; 
         
        TEXT_HMI_EIN     :BOOL;
        TEXT_LCD         :STRING[32];
           
        atTEXT_LCD_BY AT TEXT_LCD:ARRAY[0..33] OF BYTE;
        atTEXT_LCD_CH AT TEXT_LCD:ARRAY[0..33] OF CHAR;
      
    
         
        
        END_VAR
    
    
    
    
    
    /// TEXTE Hinterlegen
    TEXTE[0].ZEILE1:='                ';
    TEXTE[1].ZEILE1:='    CODE OK     ';
    TEXTE[2].ZEILE1:='   CODE FALSCH  ';
    TEXTE[3].ZEILE1:='SONDERFUNKTION  ';
    TEXTE[4].ZEILE1:='1=TOR klein AUF ';
    TEXTE[4].ZEILE2:='3=TOR gross AUF ';
    TEXTE[5].ZEILE1:='5=Hoflicht EIN  ';
    TEXTE[5].ZEILE2:='0=Alarmanlag EIN';
    TEXTE[6].ZEILE1:='Straße';
    TEXTE[6].ZEILE2:='HausNr.       ';
    TEXTE[7].ZEILE1:='  CODE EINGABE  ';
    TEXTE[7].ZEILE2:='   *';
     
     BEGIN
     
     (*****************************************************************************************************************************************************)
     
     IF    CODE_OK THEN
            textNr:=1;
     ELSIF CODE_FALSCH THEN
            textNr:=2;
     ELSIF SONDERFUNKTION_EIN THEN
            textNr:=4;   
     ELSIF TEXT_HMI_EIN THEN
            textNr:=20;   
            
     ELSE 
          textNr:=6;       
              
     END_IF;     
     
     
     
     
      
     /// TEXT  zusammensetzen  
            TEXT_LCD:= CONCAT( in1 := TEXTE[textNr].ZEILE1,
                               in2 := TEXTE[textNr].ZEILE2);
            
                           
          
     // String mit Leehrzeichen auffüllen wenn nicht komplett gefüllt       
        Anfang:=BYTE_TO_INT (atTEXT_LCD_BY[1]);
        FOR i := Anfang TO 31  DO
            atTEXT_LCD_CH[i+2]:=' ';
        END_FOR;
              
    
    // STRING in CHAR 
     
        FOR i2 := 0 TO 31 DO
            SENDE_TEXT[i2]:=atTEXT_LCD_CH[i2+2];
        END_FOR;
        
      
     // SENDEN TRUE wenn ECHO ungleich SENDEN_TEXT
         
        FOR i3 := 0 TO 31  DO
             SENDEN:=SENDE_TEXT[i3]<>ECHO_CHAR[i3] ;            
             IF SENDEN=TRUE THEN
             EXIT;
             END_IF;                  
        END_FOR;
     
    
    
       
        ;
    END_FUNCTION_BLOCK
    Zitieren Zitieren SCL Array of STRUC Anfangswerte  

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

    Standard

    ... dann mußt du dir einen Init-Teil im Code erstellen und die darin dann zuweisen ...

    Gruß
    Larry

  3. #3
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Intitialwerte lassen sich bei Strukturen nicht vorgeben.
    Du kannst aber beim Erzeugen des Instanz-DBs zumindest die Aktualwerte vorgeben.

    Code:
    DATA_BLOCK DI_TEXT_SPRECHANLAGE_LCD TEXT_SPRECHANLAGE_LCD
    
    BEGIN
        TEXTE[0].ZEILE1:='                ';
        TEXTE[1].ZEILE1:='    CODE OK     ';
        TEXTE[2].ZEILE1:='   CODE FALSCH  ';
        TEXTE[3].ZEILE1:='SONDERFUNKTION  ';
        TEXTE[4].ZEILE1:='1=TOR klein AUF ';
        TEXTE[4].ZEILE2:='3=TOR gross AUF ';
        TEXTE[5].ZEILE1:='5=Hoflicht EIN  ';
        TEXTE[5].ZEILE2:='0=Alarmanlag EIN';
        TEXTE[6].ZEILE1:='Straße';
        TEXTE[6].ZEILE2:='HausNr.       ';
        TEXTE[7].ZEILE1:='  CODE EINGABE  ';
        TEXTE[7].ZEILE2:='   *';
    END_DATA_BLOCK

Ähnliche Themen

  1. Scl Wert in Array
    Von Django2012 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 09.06.2012, 17:55
  2. Struc-Übergabe in FB
    Von Immer_1 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.10.2008, 15:41
  3. T300 Technologiebaugruppe STRUC L
    Von sophia0000 im Forum Antriebstechnik
    Antworten: 1
    Letzter Beitrag: 06.09.2008, 23:16
  4. SCL ARRAY Konstante
    Von wwwandy im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 21.01.2008, 12:36
  5. ARRAY in SCL
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 05.04.2005, 17:32

Lesezeichen

Berechtigungen

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