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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Absolut Betrag "ausrechnen"

  1. #11
    Registriert seit
    23.10.2009
    Beiträge
    443
    Danke
    71
    Erhielt 129 Danke für 103 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Den Algorithmus aus dem Beitrag #8 habe ich jetzt mal in AWL umgesetzt.
    Ist erstaunlich kurz geworden.
    Code:
    FUNCTION "MyAbs2" : DINT
    TITLE =Abs von DInt ohne Sprung
    
    VAR_INPUT
      v : DINT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          L     #v; 
          SSD   31; // Vorzeichen in alle Bits kopieren (mask)
          L     #v; 
          XOD   ; // XOR mit dem Eingangswert
          TAK   ; 
          -D    ; // mask subtrahieren
          T     #RET_VAL; // das war's
    
    END_FUNCTION
    In SCL wird es etwas länger weil man wegen der Typprüfung mehrmals von DINT nach DWORD und umgekehrt umwandeln muss.
    Gruß
    Erich

  2. #12
    Registriert seit
    25.06.2017
    Ort
    Oerlinghausen
    Beiträge
    1.033
    Danke
    84
    Erhielt 179 Danke für 150 Beiträge

    Standard

    Zitat Zitat von LargoD Beitrag anzeigen
    Ist erstaunlich kurz geworden.
    . . .
    In SCL wird es etwas länger weil man wegen der Typprüfung mehrmals von DINT nach DWORD und umgekehrt umwandeln muss.
    Wen erstaunt das?

    Ein "bedingter NEGD" also, aber eben ohne SprungBefehl.

    Das ist ja das "perverse", dass die vermeintlichen TypKonvertierungen in diesem Fall nichts anderes tun, als "nur" die TypPrüfung zu befriedigen.
    Wirkliche Konvertierungen finden nicht statt, weil sich das BitMuster nicht verändert.
    Der ganze Aufwand dient lediglich dazu, zu testen, ob der Programmierer schon am einnicken ist.

    PS:
    Zitat Zitat von Krumnix Beitrag anzeigen
    Ich möchte keine IF Bedingung erstellen, da ich die Auswertung auch an andere Stelle brauche, wo IF nicht funktioniert.
    Nur aus reiner Neugier: Was ist denn an anderen Stellen so anders, dass an denen IF nicht funktioniert?
    Geändert von Heinileini (07.12.2018 um 15:45 Uhr)

  3. #13
    Registriert seit
    23.10.2009
    Beiträge
    443
    Danke
    71
    Erhielt 129 Danke für 103 Beiträge

    Standard

    Zitat Zitat von Heinileini Beitrag anzeigen
    ... dass die vermeintlichen TypKonvertierungen in diesem Fall nichts anderes tun, als "nur" die TypPrüfung zu befriedigen.
    Wirkliche Konvertierungen finden nicht statt, weil sich das BitMuster nicht verändert.
    Der ganze Aufwand dient lediglich dazu, zu testen, ob der Programmierer schon am einnicken ist.
    Ich mag das, wahrscheinlich deshalb, weil ich schon immer lieber Pascal/Delphi als C programmiere. Ich sehe diese Typumwandlungen die nichts umwandeln so, dass damit der Programmierer dem Compiler sagt: Schweig, ich weiß was ich tue.
    Gruß
    Erich

  4. #14
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Europa
    Beiträge
    1.247
    Danke
    241
    Erhielt 150 Danke für 95 Beiträge

    Standard

    Mein Problem dabei ist, dass die Steuerung mit nur + - * / anbietet sowie die Standard-Funktionen A O AN ON XOR ...

    Im Moment mache ich das alles über eine IF-Abfrage. Sprich, wenn der Wert <0 dann * -1.
    Ein IF kann ich aber später in einem IF-Kopf nicht wieder verwenden und suche hier eine andere Lösung.

    Beispiel:
    Code:
    L   Var1
    ABS                 <--- Das ist ein "Marko"
    > 20
    IFT
       BlaBlaBla
    ENDI
    ABS-Makro:
    Code:
    PL
    <0
    IFT
      * -1
    ENDI
    PS
    Das IFT in einen IF-Kopf geht leider nicht. Suche noch Lösungen dazu
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  5. #15
    Registriert seit
    23.06.2009
    Ort
    Sassnitz
    Beiträge
    12.754
    Danke
    1.038
    Erhielt 3.753 Danke für 3.031 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Welche Datentypen kann die Steuerung? Kann sie TypeCasts oder Typ-Konvertierungen? Was passiert wenn bei einer Operation ein Datentyp-Überlauf auftritt (z.B. Int: 32000 + 10000, oder 60000 + 10000)?
    Mit welchem Datentyp oder welchen Datentypen soll Dein ABS-Makro funktionieren?
    Kann die Steuerung "MOD"?

    (Bist Du sicher, daß die Steuerung keine ABS-Funktion hat?)

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 08.10.2018, 13:36
  2. "Betrag von" Funktionsbaustein
    Von Salzburger im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 17.07.2017, 11:46
  3. Antworten: 5
    Letzter Beitrag: 29.09.2016, 18:35
  4. Antworten: 6
    Letzter Beitrag: 16.03.2012, 19:20
  5. "Index Pulse", "Home Switch" und "Position Limit Switch"
    Von senmeis im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 07.03.2011, 12:21

Lesezeichen

Berechtigungen

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