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

Seite 9 von 10 ErsteErste ... 78910 LetzteLetzte
Ergebnis 81 bis 90 von 97

Thema: Radixsort

  1. #81
    00alex ist offline Gesperrt
    Themenstarter
    Registriert seit
    01.05.2013
    Beiträge
    345
    Danke
    174
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    FUNCTION_BLOCK FB 3
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      Wert_1 : INT ;	
      Wert_2 : INT ;	
    END_VAR
    VAR_OUTPUT
      Ergebnis : INT ;	
      err : BOOL ;	
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          CLR   ; 
          =     #err; 
    
    
          L     #Wert_1; 
          L     #Wert_2; 
          MOD   ; 
          SPU   err; 
          T     #Ergebnis; 
          BEA   ; 
    
    err:  SET   ; 
          =     #err; 
          L     0; 
          T     #Ergebnis; 
    
    
    END_FUNCTION_BLOCK
    Versuche es so !

  2. #82
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von 00alex Beitrag anzeigen
    ... hat aber trotzdem (!) Rest Null obwohl die Teilung verboten ist ...!
    Das Ergebnis ist aber nicht "Null = kein Rest bei der Division", sondern "Null = kein Rest, weil Division nicht erlaubt". Dieser kleine Unterschied wird über die Statusbits gemeldet.

    Auch bei anderen nicht (mehr) ausführbaren Berechnungen, erhält man trotzdem ein vermeintliches "Ergebnis" im Accu.
    Siemens und auch alle anderen müssen wegen solch vorhersehbarer Fehler nicht die CPU anhalten, sondern haben dafür die Statusbits.
    Wenn Du die nicht auswertest - Dein Problem.

  3. #83
    00alex ist offline Gesperrt
    Themenstarter
    Registriert seit
    01.05.2013
    Beiträge
    345
    Danke
    174
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Das Ergebnis ist aber nicht "Null = kein Rest bei der Division", sondern "Null = kein Rest, weil Division nicht erlaubt". Dieser kleine Unterschied wird über die Statusbits gemeldet.

    Auch bei anderen nicht (mehr) ausführbaren Berechnungen, erhält man trotzdem ein vermeintliches "Ergebnis" im Accu.
    Siemens und auch alle anderen müssen wegen solch vorhersehbarer Fehler nicht die CPU anhalten, sondern haben dafür die Statusbits.
    Wenn Du die nicht auswertest - Dein Problem.
    Es ist nicht so das ich nicht auswerte !
    In diesem besondern Fall soll man sie nicht auswerten !

    VORTEIL daraus ? :
    - Es ist hier un ... anderswo auch... kein Problem wenn der "Instandhalter" ... mal eine Null eingibt... funktioniert GARANTIERT trotzdem !



    Das (eigentliche) Problem ist die VKE nach dem Fehler , der Vergleich Boolwert ... nach einem FEHLER!!!.
    Geändert von 00alex (04.07.2013 um 00:41 Uhr)

  4. #84
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von 00alex Beitrag anzeigen
    Das (eigentliche) Problem ist die VKE nach dem Fehler , der Vergleich Boolwert ... nach einem FEHLER!!!.
    Was Thomas_v2.1 Dir schon gefühlte 10 Beiträge versucht klar zu machen: Die MOD-Berechnung und der daraus resultierende Fehler haben überhaupt nichts mit dem VKE zu tun. Du vergleichst Da einfach Akku1 (mit dem "Null = kein Rest, weil Division nicht erlaubt") und Akku2 und bekommst natürlich auch ein entsprechendes Ergebnis.

    Und stell' Dir vor, es ist gewollt, das die CPU wegen solcher nicht durchführbaren Berechnungen nicht anhält!
    Das ist keine revolutionäre Erkenntnis!

  5. #85
    00alex ist offline Gesperrt
    Themenstarter
    Registriert seit
    01.05.2013
    Beiträge
    345
    Danke
    174
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Was Thomas_v2.1 Dir schon gefühlte 10 Beiträge versucht klar zu machen: Die MOD-Berechnung und der daraus resultierende Fehler haben überhaupt nichts mit dem VKE zu tun. Du vergleichst Da einfach Akku1 (mit dem "Null = kein Rest, weil Division nicht erlaubt") und Akku2 und bekommst natürlich auch ein entsprechendes Ergebnis.

    Und stell' Dir vor, es ist gewollt, das die CPU wegen solcher nicht durchführbaren Berechnungen nicht anhält!
    Das ist keine revolutionäre Erkenntnis!
    Diese Vergleich an sich tut nicht zur Sache solange nicht nach solch einem gravierenden Fehler kommt wie die ... Division durch Null (=verboten)... ein CPU Stop hier wäre nötig weil diese Irrtum hier nicht korrigiert das Bool-logisch gleiche tut wie wenn es der CPU stopt ( n/0).
    ...ein Fehlerstack der ausgewertet werden kann ist der OV (OS) ... passiert aber nichts ... VKE kommt als wäre nichts

  6. #86
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Das ist kein gravierender Fehler!

    Das ist einfach eine nicht durchführbare Berechnung, die x-mal täglich vorkommt!

    Wenn Du das nicht über die Statusbits auswertest, wie es bei vielen (wenn nicht sogar allen) CPUen vorgesehen ist, ist das Dein Problem. Und die VKE-Abfrage eines nachfolgenden Vergleiches der Akkuinhalte ist keine Fehlerauswertung des vorangegangenen MODs!

    Das haben weder ich mir noch sonst einer der Vorposter sich so ausgedacht, sondern wurde von Siemens & Co. so festgelegt.

  7. #87
    00alex ist offline Gesperrt
    Themenstarter
    Registriert seit
    01.05.2013
    Beiträge
    345
    Danke
    174
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Das ist kein gravierender Fehler!

    Das ist einfach eine nicht durchführbare Berechnung, die x-mal täglich vorkommt!

    Wenn Du das nicht über die Statusbits auswertest, wie es bei vielen (wenn nicht sogar allen) CPUen vorgesehen ist, ist das Dein Problem. Und die VKE-Abfrage eines nachfolgenden Vergleiches der Akkuinhalte ist keine Fehlerauswertung des vorangegangenen MODs!

    Das haben weder ich mir noch sonst einer der Vorposter sich so ausgedacht, sondern wurde von Siemens & Co. so festgelegt.
    Nach eine DIVISION duch NULL ...kann man noch ... VKE-Abfragen machen ?

  8. #88
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Ja!

    Neue Anweisung (Vergleich), neues Ergebnis (VKE).
    MOD = kein Einfluss auf VKE.

    Da spricht doch nichts dagegen. Der Vergleich findet doch alles, was er braucht. Ein Wert im Akku1, einer im Akku2, alles klar. Ob der Wert im Akku 1 auch das Erwartete ist, hat der Programmierer anhand der Statusbits zu überprüfen.
    Das ist z.B. bei 'ner Addition, wo ein Überlauf zu befürchten ist, doch genauso.

  9. #89
    00alex ist offline Gesperrt
    Themenstarter
    Registriert seit
    01.05.2013
    Beiträge
    345
    Danke
    174
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Ja!

    Neue Anweisung (Vergleich), neues Ergebnis (VKE).
    MOD = kein Einfluss auf VKE.

    Da spricht doch nichts dagegen. Der Vergleich findet doch alles, was er braucht. Ein Wert im Akku1, einer im Akku2, alles klar. Ob der Wert im Akku 1 auch das Erwartete ist, hat der Programmierer anhand der Statusbits zu überprüfen.
    Das ist z.B. bei 'ner Addition, wo ein Überlauf zu befürchten ist, doch genauso.

    Code:
       
       U(    
          L     #ein
          L     0
          /I    
          L     0
          ==I   
          )     
          SPU   o
          =     A      1.0
          BE    
    o:    =     A      1.1
    Probier mal das ! Funktioniert der SPU/SPS ?

  10. #90
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.648
    Danke
    789
    Erhielt 654 Danke für 497 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von 00alex Beitrag anzeigen
    Probier mal das ! Funktioniert der SPU/SPS ?
    Sie wird genau so funktionieren wie angedacht. Ueberspringen von A1.0 und irgendwas machen mit A1.1.

    Mit einem SET vor A1.1 und einem SET NOT vor A1.1 vor dem Sprung hättest du sogar eine echte Fehlerauswertung programmiert.
    Geht natürlich einfacher indem du den Handbuchweg gehst und direkt das entsprechenden Statusbit auswähertest

    mfg René

Lesezeichen

Berechtigungen

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