Step 7 S7 zahl "aufteilen" (INT)

lul12

Level-1
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo kann mir jemand helfen ich bin noch relativ neu was das programieren angeht und zwar habe ich folgendes problem:

ich möchte eine zahl z.b 2934(INT) aufteilen nach 2-9-3-4 also in 4 einzel zahlen oder in 29-34 wäre für schnelle antwort sehr dankbar:)


danke
 
und was weiter damit ?
Es gibt da unzählige Möglichkeiten, die je nachdem, was weiter passieren soll, mehr oder weniger sinnvoll sind ...

Gruß
Larry
 
Ziffernzerlegung von Dezimalzahlen macht man z.B. mittels fortlaufender Division durch 10. Dabei steckt jeweils die "hinterste" Ziffer im Divisionsrest. Dazu gibt es hier im Forum schon Programmbeispiele.

Oft jedoch ist diese Ziffernzerlegung gar nicht das was eigentlich gesucht wird ... beschreibe also mal, was Du tun willst.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
also das programm wurde vom vorgänger so geschrieben das bei der 4 stelligen zahl die ersten beiden zahlen jeweis für die minuten und die letzten beiden für die sekunden stehen jetzt will ich diese auf einem touchpanel einzeln dastellen daher wollte ich die zahlen gerne in minuten und sekunden als einzelnes aufteilen.
Er hat sie auch als einzelne zahlen in bcd umgerechnet aber dazu müsste ich ja wieder 2 zahlen "zusammen fügen" um diese als 2 stellige minuten oder sekunden zahl darzustellen


schuldige wenn ich ETWAS unbeholfen wirke weiß nicht wie ich es besser erklären könnte :rolleyes:
 
OK, für die getrennte Anzeige teile Deinen INT-Wert durch 100. Das Ergebnis ist die vorderen 2 Ziffern samt Vorzeichen, der Divisionsrest ist die hinteren 2 Ziffern. Je nach CPU musst Du eventuell für den Divisionsrest extra die Operation MOD ausführen, in S7-AWL stehen nach der INT-Division Ergebnis und Divisionsrest schon zusammen im Akku.
-1234 / 100 ---> ergibt -12 und 34

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK, für die getrennte Anzeige teile Deinen INT-Wert durch 100. Das Ergebnis ist die vorderen 2 Ziffern samt Vorzeichen, der Divisionsrest ist die hinteren 2 Ziffern. Je nach CPU musst Du eventuell für den Divisionsrest extra die Operation MOD ausführen, in S7-AWL stehen nach der INT-Division Ergebnis und Divisionsrest schon zusammen im Akku.
-1234 / 100 ---> ergibt -12 und 34

Harald

Habe es jetzt so wie ichs verstanden habe probiert klappt aber leider nicht so.. die minuten hab ich im programm schon gefunden aber die sekunden gibt es leider nur als zahl von5999 bis 0 wie kriege ich diese jetzt am besten als 60-0 hin ? hoffe das was ivh ausdruecken will ist einigermaszen verstaendlich...
 
:ROFLMAO:
hoffe das was ivh ausdruecken will ist einigermaszen verstaendlich...
:ROFLMAO:

es gibt keine 60zigste sekunde. jede uhr springt nach 59sec auf 0sec um. 0-60 wären 61 sekunden, da die null auch angezeigt wird. also wert (5999) /100 RND- und du hast deine sekunden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich möchte eine zahl z.b 2934(INT) aufteilen nach 2-9-3-4 also in 4 einzel zahlen oder in 29-34 wäre für schnelle antwort sehr dankbar:)
also das programm wurde vom vorgänger so geschrieben das bei der 4 stelligen zahl die ersten beiden zahlen jeweis für die minuten und die letzten beiden für die sekunden stehen jetzt will ich diese auf einem touchpanel einzeln dastellen daher wollte ich die zahlen gerne in minuten und sekunden als einzelnes aufteilen.
OK, für die getrennte Anzeige teile Deinen INT-Wert durch 100. Das Ergebnis ist die vorderen 2 Ziffern samt Vorzeichen, der Divisionsrest ist die hinteren 2 Ziffern. [...] in S7-AWL stehen nach der INT-Division Ergebnis und Divisionsrest schon zusammen im Akku.
Habe es jetzt so wie ichs verstanden habe probiert klappt aber leider nicht so.. die minuten hab ich im programm schon gefunden aber die sekunden gibt es leider nur als zahl von5999 bis 0

:confused: Diese letzte Aussage verstehe ich überhaupt nicht, ehrlich gesagt schockiert es mich sogar etwas - was machst Du denn? Meine Erklärung beschreibt eine einfache Berechnung, die in Code übersetzt etwa so aussehen sollte:
Code:
      L     "zahl_int"          // z.B. 2934
      L     100
      /I
      T     "minuten_int"       // --> 29
      SRD   16
      T     "sekunden_int"      // --> 34

Falls dies nicht das ist was Du wolltest, dann mache Dir bitte die Mühe und beschreibe ausführlicher und verständlich was Du tun willst. Wenn wir hier nur herumraten, dann dauert die Lösung Deines Problems womöglich noch eine Woche. Eine grundlegende Aufgabe eines Programmierers ist es, ein Problem exakt beschreiben zu können ...
Also: Wo kommt die Zahl her? Wie wird sie eingegeben? Ist die Zahl wirklich eine Dezimalzahl in einem INT? Ist sie womöglich im BCD-Format? Hast Du vielleicht davon ein Bild? Wie wird die Zahl später verarbeitet? Wird sie an Timern verwendet? Kannst Du uns von der Verwendung etwas Programmcode zeigen?
Was meinst Du mit "die minuten hab ich im programm schon gefunden"? Wenn Du die Zerlegung in Minuten und Sekunden selber programmierst, dann solltest Du die Minuten nicht suchen müssen ...

Harald
 
Ok konnte ueber RLD 16 regeln...

jetzt spackt ploetzlich verbindung ueber mpi zum panel hat vor 20 min. noch geklappt:-\
 
Zurück
Oben