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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: SCL und ich Teil II Hilfe gesucht..

  1. #1
    Registriert seit
    03.07.2007
    Beiträge
    2
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    hab wieder ein Problem in SCL..

    VAR_INPUT
    Wert: INT;
    END_VAR

    VAR
    INDEX: INT;
    SPEICHER: ARRAY[0..5] OF INT;
    A: BOOL;
    END_VAR

    BEGIN
    FOR INDEX := 1 TO 5 BY 1 DO;
    A := WERT = SPEICHER[INDEX];
    END_FOR;


    Wieso krieg ich auf meinem A kein TRUE wenn WERT und SPEICHER gleich sind??
    Zitieren Zitieren SCL und ich Teil II Hilfe gesucht..  

  2. #2
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Weil das mit dieser Verkettung in ST (zumindest bei S7) nicht funktioniert (in C, Delphi oder so schon)

  3. #3
    Registriert seit
    21.03.2004
    Beiträge
    65
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    hallo KSscl
    VAR_INPUT
    Wert: INT;
    END_VAR

    VAR
    INDEX: INT;
    SPEICHER: ARRAY[0..5] OF INT;
    A: BOOL;
    END_VAR

    BEGIN
    FOR INDEX := 1 TO 5 BY 1 DO;
    IF WERT = SPEICHER[INDEX]
    THEN
    A:= TRUE;
    ELSE
    A:= FALSE;
    END_IF
    END_FOR;
    mfG
    hg

  4. Folgender Benutzer sagt Danke zu hg für den nützlichen Beitrag:

    KSscl (10.07.2007)

  5. #4
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.638
    Danke
    787
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Ich hab glaub ich SCL noch nicht richtig verstanden.
    Ich nehme an der Code ist für eine Funktion gedacht.


    müsste das A ja die Ausgabevariable sein.
    Dann wird sie ja aber schon im Header deklariert

    Code:
    FUNCTION A: Bool
    (*Umwandlungsoperation*)
    TITLE = 'Beispiel'
    VERSION : '1.0'
    KNOW_HOW_PROTECT
    AUTHOR  : vor
    NAME    : A
    FAMILY  : data
    
    VAR_INPUT
    Wert: INT;
    END_VAR
    
    VAR
    INDEX: INT;
    SPEICHER: ARRAY[0..5] OF INT;
    END_VAR
    
    BEGIN
    FOR INDEX := 1 TO 5 BY 1 DO;
    IF WERT = SPEICHER[INDEX]
    THEN
    A:= TRUE;
    ELSE
    A:= FALSE;
    END_IF;
    END_FOR;
    END_FUNCTION
    Aber wie greift man jetzt auf Speicher zu? Es ist ja hier keine Variable als VAR_INPUT deklariert.

    übersehe ich jetzt was? SCL ist eigendlich nicht mein gebiet Da ich bis jetzt alles mit AWL lösen konnte. Aber mich würds schon interessieren, vor allem scheint es bei Mathematischen Funktionen nützlich zu sein. Hab mir da mal ne Funktion für X zu Y gebastelt. Ist mein erstes, für verbesserungstips bin ich immer dankbar.

    Code:
    FUNCTION X_Y: REAL
    (*Umwandlungsoperation*)
    TITLE = 'REAL scalierung von X nach Y'
    VERSION : '1.0'
    KNOW_HOW_PROTECT
    AUTHOR  : vor
    NAME    : X_Y
    FAMILY  : data
    
    (*X umskalieren nach Y*)
    (*X1 nach Y1, X2 nach X2, X wird in Bereichen X1 und X2 begrenzt*)
    (*Negative sowie Positive Lineare und Werte sind erlaubt*)
    {S7_tasklist:='false';
     S7_blockview:='small'}
    
    VAR_INPUT
       X: REAL; 
      X1: REAL;
      X2: REAL;
      Y1: REAL;
      Y2: REAL;
    END_VAR
    
    VAR_TEMP
     LIM_X_UG: REAL;
     LIM_X_OG: REAL;
     LIMIT_R: REAL;
     END_VAR
    
    (*Eingang X wird Limitiert*)
     BEGIN
      IF X1 < X2 THEN
         LIM_X_UG:= X1;
         LIM_X_OG:= X2;
      ELSIF X2 < X1 THEN 
         LIM_X_UG:= X2;
         LIM_X_OG:= X1;
      END_IF;   
    
    (*Eingang X wird Limitiert*)
    LIMIT_R:=LIMIT(Mn:=LIM_X_UG, IN:=X, Mx:=LIM_X_OG); 
    
    (*Umrechnung des limitierten X Wertes*)
    X_Y:=((Y2-Y1)/(X2-X1)*LIMIT_R+(Y2-(Y2-Y1)/(X2-X1)*X2));
    END_FUNCTION
    Ich muss aber jetzt immer erst einen FC im Projektmanager erstellen und dem das Symbol X_Y geben damit das übersetzen mit Ctrl + B klappt.
    Das Handbuch ist etwas umständlich geschrieben oder ich bin zu doof :/

  6. #5
    Registriert seit
    30.06.2007
    Ort
    In der Pfalz
    Beiträge
    503
    Danke
    72
    Erhielt 77 Danke für 65 Beiträge

    Standard

    Hallo,

    wenn wir gerade beim Thema SCL sind hätte ich auch noch eine Frage:

    Wie kann ich 2 INT Werte Bitweise & verknüpfen?
    100011 & 010000 soll false ergeben.
    100011 & 000010 sol true ergeben.
    In C geht das mit &.

  7. #6
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.638
    Danke
    787
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Zitat Zitat von Steve81 Beitrag anzeigen
    Hallo,

    wenn wir gerade beim Thema SCL sind hätte ich auch noch eine Frage:

    Wie kann ich 2 INT Werte Bitweise & verknüpfen?
    100011 & 010000 soll false ergeben.
    100011 & 000010 sol true ergeben.
    In C geht das mit &.
    Und in SCL geht das mit AND

    mfG René

  8. Folgender Benutzer sagt Danke zu vollmi für den nützlichen Beitrag:

    Steve81 (10.07.2007)

  9. #7
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Zitat Zitat von Steve81 Beitrag anzeigen
    Hallo,

    wenn wir gerade beim Thema SCL sind hätte ich auch noch eine Frage:

    Wie kann ich 2 INT Werte Bitweise & verknüpfen?
    100011 & 010000 soll false ergeben.
    100011 & 000010 sol true ergeben.
    In C geht das mit &.
    Also Dein Beispiel macht für mich keinen Sinn da beides FALSE ergeben müsste.
    Geändert von zotos (10.07.2007 um 18:48 Uhr)
    If you open your Mind too much, your Brain will fall out.

  10. #8
    Registriert seit
    30.06.2007
    Ort
    In der Pfalz
    Beiträge
    503
    Danke
    72
    Erhielt 77 Danke für 65 Beiträge

    Standard

    Das zweite soll true sein, weil das zweitniedrigste Bit bei beiden true ist.

  11. #9
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.638
    Danke
    787
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Zitat Zitat von Steve81 Beitrag anzeigen
    Das zweite soll true sein, weil das zweitniedrigste Bit bei beiden true ist.
    Dann vergiss meins, dachte du meinst eine bitweise verknüpfung mit einem ergebnis für jedes bit.

    das geht nur mit and natürlich nicht.

  12. #10
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Steve81 Beitrag anzeigen
    Das zweite soll true sein, weil das zweitniedrigste Bit bei beiden true ist.
    Also für mich macht das immer noch keinen Sinn. Was willst Du genau machen? Ich dachte Du wolltest einen Vergleich machen oder so was weil Ergebnis auf TRUE oder FALSE eigentlich Bool ist.

    Man kann Bitvergleiche machen:

    z.B. (mal anhand von einem Byte)
    myByteErg := myByte1 AND myByte2;

    00000110
    AND
    00100010
    =
    00000010
    If you open your Mind too much, your Brain will fall out.

Ähnliche Themen

  1. hilfe gesucht für schaltuhr
    Von linuxluder im Forum Simatic
    Antworten: 38
    Letzter Beitrag: 13.09.2012, 21:12
  2. Seminar DIN EN 13849 Teil 1 und Teil 2
    Von Safety im Forum Werbung und Produktneuheiten
    Antworten: 1
    Letzter Beitrag: 28.12.2010, 09:59
  3. Beckhoff - Hilfe gesucht
    Von wolBe im Forum Suche - Biete
    Antworten: 4
    Letzter Beitrag: 25.09.2008, 06:09
  4. PCS 7 Spezialist für Hilfe gesucht !!
    Von SchoberGabriel im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 16.03.2007, 11:48
  5. hilfe gesucht
    Von bebaste im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 24.01.2004, 14:55

Lesezeichen

Berechtigungen

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