Step 7 Zähler kurze frage!

EMZ

Level-2
Beiträge
232
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi ich hab kurz ne Frage zum Zähler.

Setzt man in der Regel den Merkerwort auf Dezimal oder Dual, weil bei dual hört der ja bei 9 auf zu zählen, aber der zählt ja am Vergleicher trotzdem weiter. Wenn ich ungewöhnliche Zahlen wie z.B. 13 hab muss ich den Wert erst von BCD in 16Bit umwandeln. Das wäre doch eig. sinnlos noch nen wandler hinzubauen, wenn man mit dem DUAL-Code auch zählen kann. Aber ab der Zahl neun fängt der ja mit Buchstaben etc.
Kann man es trotzdem verwenden oder ist es üblich das man den MW auf DEZ anlegt?

Gruß EMZ

Danke im vorraus
 
Hi!
Am Dual Ausgang erhälst du nicht Hex sondern Int.....
Du musst in der Simulation nur die Ansicht umschalten....
Zum Vergleichen also an Dual...



PS: hatte mich mit meiner ersten ANtwort vertan... deswegen EDIT
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Kurze Antwort:
Ob und wo Du Dein MW drauflegst hängt alleine davon ab, was Du damit machen willst.

Die Frage ist wie:
Gehe ich in der Regel zum Spar oder Baumax einkaufen.
a) brauchst Du überhaupt etwas
b) wenn Essen dann Spar
c) wenn Werkzeug dann Baumax
 
Hier kommt es darauf an in welcher Zahlendarstellung du den aktuellen Zählerwert weiter verarbeiten willst. Danach wählst du den Ausgang. Man sieht den Unterschied der Werte ganz gut wenn man sich in einer Variablen-Tabelle die Werte binär anschaut.
 
Hey Leute, wollte jetzt keinen neuen Thread öffen, da es grade auch bisschen zum Thema passt.

Folgendes: ich möchte Impulse zählen ca. 4000 Impulse. Also ich programmiere in FUP, da ich kein Programmier-Profi bin und es nicht im alltag verwende. (noch nicht :D)

Ich habe das ganze über einen addierer gelöst, aber habe keine Ahnung mehr, wie ich die Impulse dann zurücksetzen kann. Zum testen habe ich jetzt die Zahl 100 genommen.

Gibt es da in FUP noch eine andere Variante mehr als 999 Takte zählen zu können?

Zähler.jpg
Ich wäre über jegliche Hilfe sehr dankbar.

MfG

EMZ
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Ottmar,

habs gemahct danke klappt. Aber jetzt habe ich ein anderes Problem :(
Wenn ich an den Addierereingang einen kurzen Impuls z.B. 2sekunden über einen Eingang (z.B. Schalter, Sensor) gebe, dann zählt der nicht in einem Schritt, sondern macht gleich geschätzte 20 -30 Impulse aufeinmal.
Ich würde es aber gerne so programmieren können, dass ich z.B. für jeden Impuls den Zählwert um +1 erhöhe, auch wenn der Impuls 1-2 sek. anliegt.
Gibt es dazu eine Lösung??


@vollmi

daher passt es zum Thread :D
mit einem normalen Zähler (wozu der Thread erstellt wurde) kann man ja nur bis 999 zählen,
ich brauch da aber ca. 3001 Impulse mehr :D

Gruß
EMZ
 
Zuletzt bearbeitet:
Code:
                     +--------+
                     |  MOVE  |
                     |        |
#zaehler_ruecksetzen-|EN   OUT|-MW155
                     |        |
                   0-|IN   ENO|-
                     +--------+
PS: Nimm ein gerades Merkerwort wie MW154 oder MW156, aber nicht MW155.

Es gibt auch fertige Zähler, die bis 32767 zählen können:
IEC-Zähler (SFB0..SFB2) aus der Bibliothek Standard Library > System Function Blocks

Harald
 
Bei Vergleichern schreibt man üblicherweise die Variable an IN1 und den Vergleichswert (meist Konstante) an IN2:
Code:
      +--------+
      | CMP>=I |
MW154-|IN1     |   +--------+
      |        |   |  MOVE  |
 4000-|IN2     |---|EN   OUT|-MW154
      +--------+   |        |
                 0-|IN   ENO|-
                   +--------+

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi!

Die Flankenabfrage an "EN" der Funktion "ADD_I" sollte schon beibehalten werden. ;)

Bitte beachten: Den Flankenmerker NICHT in der Schnittstellendeklaration als "TEMP" deklarieren!!! (schwerer Fehler *g*)


Gruß,

Ottmar
 
Hi,

also ich habe noch das problem, dass wenn ich ganz kurz ein Signal auf mein EN Eingang vom Addierer setz, dass die Zahlen nicht im 1. Schritt wandern, sondern gleich auf z.B. 20 sind. Der Addierer ist einfach viel zu schnell, ich würde gern so programmieren, dass bei jedem Signal der Zählwert um 1 höher gesetzt wird.

Noch ne Frage zu dem SFB2 Zähler:

Wie muss ich den Zähler beschriften, dass oben am Baustein die "???" weggehen?
Habe gedacht wie übliche Zähler ... Z1, Z2 etc,
aber das erkennt der nicht bei mir :(

Gruß
EMZ
 
Hi!

Der SFB muss mit einem Datenbaustein (Instanzdatenbaustein) verknüpft werden.

Zu deinem Zählerproblem hab ich im vorherigen Beitrag schon erklärt, dass du die Addition mit einer Flankenabfrage beschalten musst. (siehe Beispiel am Anfang des threads!)

Gruß,

Ottmar
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein Zähler kannst dir aus einem 1-Addierer (DINT) ... zum schalten eine Flanke benutzen , zum löschen einem 0-MOVE Befehl eventuel mit einem Vergleicher ... so braucht du nur eine FC schreiben ( ohne DB)
mit UND und ODER kannst dir Zusatzfunktionen bauen ...etc.

Timer geht auch ganz leicht von Hand schreiben und überhaupt die vom Hand geschribenen Funktionen sind schneler als zum Teil veraltete Bibliothekfunktionen ...

:neutral::neutral:
 
MOVE ist eine meine Liebligsfunktionen ... damit kann man ... Datentypen "übersetzen" :cool:
 
Zuletzt bearbeitet:
PS: Nimm ein gerades Merkerwort wie MW154 oder MW156, aber nicht MW155.

Es gibt auch fertige Zähler, die bis 32767 zählen können:
IEC-Zähler (SFB0..SFB2) aus der Bibliothek Standard Library > System Function Blocks

Harald

Glaube nicht dass es falsch wäre ... ich habe MD0 immer für irgendwas benutzt .
Merken muss sich man nur dass ein Wort 2 Byte , ein Doppelwort 4 Byte ist ... also immer mit ein UNGERADE Zahl benennen !

Und wenn man mit MD0 oder MW0 anfängt dann immer mit GERADE Zahl benennen !

Dass ganze nur um keine Überschneidungen zu haben ( die Siemens SPS speichern intern Byteweise ...glaube ich)
 
Zuletzt bearbeitet:
Glaube nicht dass es falsch wäre ... ich habe MD0 immer für irgendwas benutzt .
Merken muss sich man nur dass ein Wort 2 Byte , ein Doppelwort 4 Byte ist ... also immer mit ein UNGERADE Zahl benennen !

Und wenn man mit MD0 oder MW0 anfängt dann immer mit GERADE Zahl benennen !

Dass ganze nur um keine Überschneidungen zu haben ( die Siemens SPS speichern intern Byteweise ...glaube ich)
Wenn Anfänger etwas fragen, dann sollte man sie nicht mit verworrenen Beiträgen wie diesem hier verwirren...
Außerdem nützt ihm nichts, was Du GLAUBST. Er fragt nach WISSEN. Wenn man kein zur Frage bezügliches Wissen hat, dann hält man sich besser zurück (siehe den viel zitierten Dieter Nuhr).

Der einzige nützliche Gehalt in Deinem Beitrag ist der Hinweis auf die möglichen Überschneidungen der Merkeradressen.

Harald
 
Zurück
Oben