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

Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 50

Thema: Programmierwettbewerb

  1. #21
    Registriert seit
    23.10.2009
    Beiträge
    391
    Danke
    58
    Erhielt 113 Danke für 87 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Stimmt!
    Also zusätzlich noch die Schleife vom großen zum kleinen Index laufen lassen.
    Code:
    FOR i := 2 TO 0 BY -1 DO
    2 stat 3 wegen Vorzeichen Nibble, das muss gesondert behandelt werden.
    Gruß
    Erich

  2. #22
    Registriert seit
    17.06.2011
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi, Dalbi.
    Ich versuchte dein FC austesten, aber traf folgende Problem an.(Sehe Anhang)

    Was könnte fehlen?



    Mein vorschlag zu Case-ersatz wehre:

    BCD2INT:=BCD2INT+tINT*(10**i);

    ps: nicht getestet
    Angehängte Grafiken Angehängte Grafiken

  3. #23
    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

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    dacht ich auch erst, aber er multipliziert ja tInt und nicht Bcd2int, d.h. Man muss die schleife auch noch anderstrum durchlaufen...
    Wieso? Geht doch so wie es ist. (siehe SHR)

    Gruss Daniel
    Geändert von dalbi (18.06.2011 um 17:59 Uhr)
    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)

  4. #24
    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

    Zitat Zitat von Kwas Beitrag anzeigen
    Hi, Dalbi.
    Ich versuchte dein FC austesten, aber traf folgende Problem an.(Sehe Anhang)

    Was könnte fehlen?



    Mein vorschlag zu Case-ersatz wehre:

    BCD2INT:=BCD2INT+tINT*(10**i);

    ps: nicht getestet
    Du musst noch "BCD2INT" in die Symboltabelle eintragen.
    z.B. BCD2INT (FC1)

    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. #25
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von dalbi Beitrag anzeigen
    Wieso? Geht doch so wie es ist. (siehe SHR)

    Gruss Daniel
    Es ging drum wenn die Änderung eingebaut wird! (ohne case)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  6. #26
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von dalbi Beitrag anzeigen
    Hi,

    hier meine Version in SCL

    Code:
    FUNCTION BCD2INT : INT
    TITLE = 'BCD nach INT'
    //
    // wandelt BCD Zahl (WORD) in Integer
    //
    VERSION : '1.0'
    AUTHOR  : dalbi
    
    VAR_INPUT
      InBCD : WORD;
    END_VAR
    
    VAR_TEMP
      i : INT;
      tINT : INT;
    END_VAR
      
    BEGIN
    
      FOR i := 0 TO 3 DO 
        // Nibble (4 Bit) aus WORD extrahieren
        tINT := WORD_TO_INT(SHR(IN := InBCD, N := i*4) AND W#16#000F);
    
        // Prüfen auf gültige BCD-Zahl 0..9
        IF tINT > 9 THEN 
          BCD2INT := 0;
          RETURN;
        END_IF;
        
        // BCD-Zahl in Integer wandeln
        CASE i OF
          0 : BCD2INT := tINT;
          1 : BCD2INT := BCD2INT + tINT * 10;
          2 : BCD2INT := BCD2INT + tINT * 100;
          3 : BCD2INT := BCD2INT + tINT * 1000;
        END_CASE;
      END_FOR;
    
    END_FUNCTION
    Gruss Daniel
    In der Aufgabenstellung hies es auch das BTI verwendet werden soll, also ist das eigendlich keine Lösung der Aufgabe (aber des Problems)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  7. Folgender Benutzer sagt Danke zu Jochen Kühner für den nützlichen Beitrag:

    dalbi (18.06.2011)

  8. #27
    Registriert seit
    23.10.2009
    Beiträge
    391
    Danke
    58
    Erhielt 113 Danke für 87 Beiträge

    Standard

    Hier mal die Parallelbitprüfung in SCL
    Code:
    FUNCTION BCD2INT2 : INT
    VAR_INPUT
      inBCD : WORD;
    END_VAR
    BEGIN
      IF ((SHR(in:=inBCD AND 16#888,N:=1) OR SHR(in:=inBCD AND 16#888,N:=2)) AND inBCD) = 0 THEN
        BCD2INT2 := BCD_TO_INT(IN:=inBCD);
      ELSE
        BCD2INT2 := 0;
      END_IF;
    END_FUNCTION
    Gruß
    Erich

  9. #28
    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,

    so jetzt will ich auch mal in AWL .

    Code:
    FUNCTION FC 2 : INT
    TITLE =BCD TO INT
    VERSION : 1.0
    AUTHOR : dalbi
    
    VAR_INPUT
      InBCD : WORD ;    
    END_VAR
    VAR_TEMP
      RetVal : INT ;            //Rückgabewert SFC36/37
      PRGFLT_MASKED : DWORD ;    //Maskierte Programmierfehler
      ACCFLT_MASKED : DWORD ;    //Maskierte Zugriffsfehler
    END_VAR
    BEGIN
    NETWORK
    TITLE =Synchronfehlerereignisse maskieren SFC 36 "MSK_FLT"
    
          CALL SFC   36 (
               PRGFLT_SET_MASK          := DW#16#2,// BCD-Wandlungsfehler
               ACCFLT_SET_MASK          := DW#16#0,
               RET_VAL                  := #RetVal,
               PRGFLT_MASKED            := #PRGFLT_MASKED,
               ACCFLT_MASKED            := #ACCFLT_MASKED);
    
    NETWORK
    TITLE =Wandlung durchführen
    
          L     #InBCD; 
          BTI   ; 
          T     #RET_VAL; 
    
    NETWORK
    TITLE =Synchronfehlerereignisse demaskieren SFC 37 "DMSK_FLT"
    
          CALL SFC   37 (
               PRGFLT_RESET_MASK        := DW#16#2,// BCD-Wandlungsfehler
               ACCFLT_RESET_MASK        := DW#16#0,
               RET_VAL                  := #RetVal,
               PRGFLT_MASKED            := #PRGFLT_MASKED,
               ACCFLT_MASKED            := #ACCFLT_MASKED);
    
    END_FUNCTION
    ohne CPU Stop mit Hilfe des SFC36 und SFC37.

    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)

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

    vierlagig (18.06.2011)

  11. #29
    M-Ott ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Ich denke, jetzt kommt nichts mehr neues.
    Vier Tage sollten auch reichen.

    Die Abstimmung kann beginnen

    Zur Abstimmung:
    Am einfachsten wäre, wenn jeder einfach die Nummer des Posts von seiner favorisierten Lösung postet.
    Ich denke, morgen mittag als "Wahlschluss" ist ausreichend.
    Wer bis dann die meisten Stimmen hat, hat gewonnen.

    Mein Favorit ist #7.
    Gruß
    Michael

  12. #30
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bin auch für 7! Aber in die Bausteinsammlung sollte der Baustein von PN/DP (http://sps-forum.de/showpost.php?p=338440&postcount=46)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

Ähnliche Themen

  1. Programmierwettbewerb, 2. Aufgabe
    Von LargoD im Forum Stammtisch
    Antworten: 14
    Letzter Beitrag: 02.08.2011, 22:27
  2. Programmierwettbewerb: Diskussion
    Von Kai im Forum Stammtisch
    Antworten: 51
    Letzter Beitrag: 20.06.2011, 10:05
  3. Programmierwettbewerb: Interesse? Regeln!
    Von M-Ott im Forum Stammtisch
    Antworten: 67
    Letzter Beitrag: 18.06.2011, 08:28

Lesezeichen

Berechtigungen

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