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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: Dint Vorzeichen immer minus einstellen

  1. #11
    bludie ist offline Benutzer
    Themenstarter
    Registriert seit
    12.07.2007
    Beiträge
    38
    Danke
    7
    Erhielt 11 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    erst mal ein dickes Lob an das Forum. So schnelle Hilfe hatte ich gar nicht erwartet.
    @Harald
    Super einfacher Code. Funzt bestens.
    Zitieren Zitieren Danke für die schnelle und unkomplizierte Hilfe  

  2. #12
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Als alter Z80- und 80x86-Assembler-Programmierer ...
    insofern bin ich von dem 6502 sehr verwöhnt worden. Der hat die Flags bereits beim Ladebefehl gesetzt.
    http://www.htu.tugraz.at/~herwig/6502/lda.php
    Als ich dann mit der 80er-Welt in Berührung kam, war das natürlich erstmal lästig, dass diese Prozessoren in dieser Hinsicht recht faul waren. Gut - ich hab mich daran gewöhnt. Und hätte hinter dem NEGD-Befehl halt nicht vermutet, dass der die Flags beeinflusst. Aber klar - NEGD wirft die ALU an, so wie OD z.B. auch. Und das geht auf die Flags (Statuswort).

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    Hallo bludie,

    auch wenn es LL nicht gern sieht, daß gleich die Komplett-Lösung geantwortet wird
    hier mal zum Vergleich die verstehbare Programmlösung für Deine Aufgabe (so wie von LL und Bienenkönig empfohlen):
    Code:
    // V2: normal verständlicher Programmcode:
          L     MD   100
          L     0               // (exakt wäre "L L#0", ist aber länger)
          <=D                   // ist MD100 schon negativ oder 0 ?
          SPB   M002            // ja -> kann so bleiben
          POP                   // nein -> MD100 zurück in AKKU1 (TAK geht auch)
          NEGD                  // * -1
          T     MD   100        // MD100 mit -(MD100) überschreiben
    M002: NOP   0
    
    // V3: 1 Operation kürzer:
          L     0
          L     MD   100
          >=D                   // ist MD100 schon negativ oder 0 ?
          SPB   M003            // ja -> kann so bleiben
          NEGD                  // nein -> * -1
          T     MD   100        // MD100 mit -(MD100) überschreiben
    M003: NOP   0
    
    // will man den Programmablauf genau beobachten, 
    // dann das "NOP 0" durch "L MD100" (oder "T MD100") ersetzen
    Welche Variante gefällt Dir nun am Besten?
    (EDIT: ich sehe schon: die erste "Super einfache" kommt gut an)

    Zitat Zitat von Perfektionist Beitrag anzeigen
    insofern bin ich von dem 6502 sehr verwöhnt worden. Der hat die Flags bereits beim Ladebefehl gesetzt.
    Ja, das wäre perfekt, wenn der S7-Akku das auch täte.
    Immer diese "überflüssigen" Befehle, nur damit die Flags auswertbar werden ...

    Gruß
    Harald

  4. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    auch wenn es LL nicht gern sieht, daß gleich die Komplett-Lösung geantwortet wird
    Nan-na Harald,
    so schlimm bin ich doch auch nicht.
    In dem fall kann man m.E. schon die Komplett-Lösung liefern. Für mich erschien es nur einfacher, das zu beschreiben als den Code hier einzustellen ...
    Dein Code-Beispiel fand ich übrigens auch gut - es ist ja um Einiges einfacher

    Gruß
    LL

  5. #15
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    Wenn schon der Perfektionist hier reinschaut, dann will ich zugeben, daß mein Programmcode
    aus #6 doch tatsächlich noch verbessert werden kann:
    Code:
    // V4: schnellere Variante:
    
          L     MD   100
          NEGD                  // * -1
          SPPZ  M004            // wenn jetzt >= 0 -> dann nichts tun
          T     MD   100        // ist jetzt negativ -> übernehmen
    M004: NOP   0
    Dieser Code dürfte auf S7-300 ca. 0,1µs schneller sein und beschreibt MD100 nur wenn nötig.

    MD100 kann vor diesem Programmstück nur positiv sein, wenn er irgendwo geändert wird.
    In den allermeisten Zyklen muß die CPU bei meinem Programmcode in #6 1x NEGD und 1x T MD100
    überflüssigerweise ausführen (muß also alle 5 Operationen ausführen).
    Nun müssen meistens nur noch 3 Operationen ausgeführt werden (das NOP nicht mitgerechnet).

    Gruß
    Harald
    Zitieren Zitieren Optimierung  

  6. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    rostiger Nagel (17.06.2010)

  7. #16
    Registriert seit
    13.10.2007
    Beiträge
    12.065
    Danke
    2.794
    Erhielt 3.288 Danke für 2.168 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Wenn schon der Perfektionist hier reinschaut, dann will ich zugeben, daß mein Programmcode
    aus #6 doch tatsächlich noch verbessert werden kann:
    Code:
    // V4: schnellere Variante:
     
          L     MD   100
          NEGD                  // * -1
          SPPZ  M004            // wenn jetzt >= 0 -> dann nichts tun
          T     MD   100        // ist jetzt negativ -> übernehmen
    M004: NOP   0
    Dieser Code dürfte auf S7-300 ca. 0,1µs schneller sein und beschreibt MD100 nur wenn nötig.

    MD100 kann vor diesem Programmstück nur positiv sein, wenn er irgendwo geändert wird.
    In den allermeisten Zyklen muß die CPU bei meinem Programmcode in #6 1x NEGD und 1x T MD100
    überflüssigerweise ausführen (muß also alle 5 Operationen ausführen).
    Nun müssen meistens nur noch 3 Operationen ausgeführt werden (das NOP nicht mitgerechnet).

    Gruß
    Harald
    harald,
    das ist Perfekt, ich denke sogar für den Perfektionisten

    Heute wieder einiges gelernt
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

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

    PN/DP (18.06.2010)

  9. #17
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Code:
    // V4: schnellere Variante:
    
          L     MD   100
          NEGD                  // * -1
          SPPZ  M004            // wenn jetzt >= 0 -> dann nichts tun
          T     MD   100        // ist jetzt negativ -> übernehmen
    M004: NOP   0
    aber warum negieren, wenn schon negativ?

    Code:
          L     MD   100      
          SPMZ  M004
          NEGD                        
    M004: T     MD   100
    Geändert von vierlagig (17.06.2010 um 20:09 Uhr) Grund: das NOP 0 eliminiert
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    rostiger Nagel (17.06.2010)

  11. #18
    Registriert seit
    13.10.2007
    Beiträge
    12.065
    Danke
    2.794
    Erhielt 3.288 Danke für 2.168 Beiträge

    Standard

    Wenn das so weiter geht, können Siemens ihre CPU's wieder langsamer
    machen
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  12. #19
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    aber warum negieren, wenn schon negativ?

    Code:
          L     MD   100      
          SPMZ  M004
          NEGD                        
    M004: T     MD   100
    Hallo 4L,
    wenn ich jetzt (zu vorgerückter Stunde) S7 griffbereit hätte, würde ich jetzt zunächst die Hilfe zum Lade-Befehl bemühen. Ich bin mir aber dennoch zu 99% sicher, dass bei S7 der Ladebefehl nicht die Flags (Statuswort) beeinflusst. Ich befürchte, der SPMZ wird nicht Rücksicht auf den Wert in MD100 nehmen.

  13. Folgende 2 Benutzer sagen Danke zu Perfektionist für den nützlichen Beitrag:

    PN/DP (18.06.2010),vierlagig (17.06.2010)

  14. #20
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Perfektionist Beitrag anzeigen
    Hallo 4L,
    wenn ich jetzt (zu vorgerückter Stunde) S7 griffbereit hätte, würde ich jetzt zunächst die Hilfe zum Lade-Befehl bemühen. Ich bin mir aber dennoch zu 99% sicher, dass bei S7 der Ladebefehl nicht die Flags (Statuswort) beeinflusst. Ich befürchte, der SPMZ wird nicht Rücksicht auf den Wert in MD100 nehmen.
    hab es ebenso wenig griffbereit, aber die OP-liste und natürlich hast du recht, leider ... aber man wird doch mal träumen dürfen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. Kategorie 3 erreicht durch Plus/Minus Abschaltung?
    Von Accatenango im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 17
    Letzter Beitrag: 26.06.2010, 21:09
  2. Antworten: 12
    Letzter Beitrag: 01.06.2007, 18:03
  3. Neg. Vorzeichen in E/A Feld eingeben
    Von knollmeister im Forum HMI
    Antworten: 2
    Letzter Beitrag: 07.11.2005, 13:26
  4. Vorzeichen ignorieren
    Von Lipperlandstern im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.02.2005, 23:41
  5. Normierung analog Wert minus bereich
    Von PrinzD im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 11.02.2005, 12:05

Stichworte

Lesezeichen

Berechtigungen

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