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

Ergebnis 1 bis 3 von 3

Thema: Aout in scl porgrammieren

  1. #1
    Registriert seit
    09.04.2008
    Beiträge
    21
    Danke
    5
    Erhielt 3 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,
    habe hier folgenden code in scl :

    BEGIN
    IF(VALUE=W#16#7FFF) OR (VALUE=W#16#8000) THEN
    QCHF:= TRUE;
    ELSE
    IF(VALUE AND W#16#F000)=W#16#F000 THEN
    Rohwert:=0;
    ELSE
    ROHWERT:=DINT_TO_REAL(DWORD_TO_DINT(VALUE));
    QCHF:= FALSE;
    END_IF;
    END_IF;
    V:=ROHWERT/DIV_VAL*(VHRANGE-VLRANGE)+VLRANGE;
    END_FUNCTION_BLOCK

    Das ist ein Ain. Verstehe soweit auch alles.
    Nur diese eine Zeile nicht ganz:
    IF(VALUE AND W#16#F000)=W#16#F000 THEN
    Rohwert:=0;

    Ist das ein Überlauf oder sowas in der Art? Und wie wird hier genau verglichen? Komplettes Byte?

    Will das kleine Programm in ein Aout umwandeln hab auch schon die entsprechende formel für Bip (0-20mA). Verstehe halt nur leider diese eine Bedingung bzw Zuweisung oben nicht.

    LG
    Bosga
    Zitieren Zitieren Aout in scl porgrammieren  

  2. #2
    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

    Hallo Bosga,

    Das ist ein Ain. Verstehe soweit auch alles.
    Nur diese eine Zeile nicht ganz:
    IF(VALUE AND W#16#F000)=W#16#F000 THEN
    Rohwert:=0;
    Ist der Eingangswert VALUE dez. -4096 wird in denn Rohwert 0 geschrieben.

    Das Ergebniss wird nur ausgeführt wenn die UND (WORD) Verknüpfung denn Wert -4096 hex F000 liefert.

    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)

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

    Bosga (15.10.2008)

  4. #3
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das ist ne Bitmaskierung.
    Bit-weise AND angewendet bedeutet z.B:

    Code:
        1101000100000000
    AND 1111000000000000
    -----------------
    =   1101000000000000
    Nur wenn in VALUE die höchwertigsten Bits alle = 1 sind, wird der Rohwert = 0 gesetzt.

    16#F000 = 1111000000000000 (binär);

    Man könnte VALUE auch zunächst wandeln und dann direkt mit dem Wert -4096 vergleichen:
    Code:
    IF WORD_TO_INT(VALUE) = -4096 THEN
    ...

  5. Folgender Benutzer sagt Danke zu trinitaucher für den nützlichen Beitrag:

    Bosga (15.10.2008)

Ähnliche Themen

  1. Problem mit Oscat-S7 "AOUT"
    Von Jörg_24 im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 17.03.2010, 08:22

Lesezeichen

Berechtigungen

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