easy-forum
Deutsch - Software => easySoft => Thema gestartet von: Davidf am Januar 24, 2012, 23:29:12 Nachmittag
-
Ich habe ein Programm mit 3 Zähler der Sollwert der Zähler sollte ich einfach verstellen können, immer alle 3 miteinander.
Es sind immer wieder die gleichen Werte
z.B. Wert 1
C01 3 Stk.
C02 220 Stk.
C03 1200Stk.
Wert 2
C01 12 Stk.
C02 240 Stk.
Co3 1500 Stk.
u.s.w. ca. 10 Werte
-
Hallo,
und wo liegt jetzt dein Problem???
Welche Steuerung verwendest du???
Gruß
-
Hallo
Ich verwende die Steuerung 721DC-TC. Es könnte aber auch auf eine 800er gewechselt werden.
Mein Problem ist nun, dass ich das Programm nicht im Zähler wechseln möchte sondern über einen Datenbaustein und einen externen Schalter.
Kannst Du mir weiterhelfen?
Gruss David
-
Hallo David,
mit der 700er hast du damit Probleme. Mit der 800er, 6 Multiplexer kannst du bis zu 16x3 Zähler bedienen.
Gruss
Jürgen
-
Hallo Jürgen
Und wie kann ich das lösen? Bin eben nicht so der "Hirsch". Geht das mit der 821DC-TC?
Danke für Deine Hilfe.
Gruss David
-
Hallo David,
ja. Kann dir heute abend ein Beispiel machen. Du brauchst einen weiteren Zähler der dir bis auf, in deinem Beispiel auf 10 hoch zählt (die Null zählt jeweils mit), damit machst du die Vorgabe für die Auswahl der Miltiplexerkanäle und das Rücksetzen wieder auf Null. Einen Vergleicher der dir bei 8 auf den zweiten Multiplexerblock umschaltet. Oder eine andere Eingangsvariante, z.B. übers Display, der dir eine Auswahl der Multiplexerkanäle macht. Die Den Eingang der Kanäle der Multiplexer besetzt du mit jeweils deinem Zählerwert, die Ausgänge der Multplexer gibst du auf den Eingang deiner Zähler. Wie geschrieben heute Abend, vielleicht hat aber jemand mehr Zeit und ist schneller als ich.
Gruss
Jürgen
-
Hallo David,
ganz so einfach wars dann doch nicht. Habe aber eine Möglickeit gefunden. Vielleicht (bestimmt) kann man es auch besser machen. Hoffe du kannst es nachvollziehen. Sonst einfach nochmal melden.
Gruss
Jürgen
-
Hallo Jürgen
Ich möchte mich zuerst für Deinen Einsatz bedanken.
Ich habe Dir das Problem nicht ganz richtig geschildert.
Darum sende ich Dir mal mein Programm.
Der Zähler C03 / C05 und C13 müssen einen vorgegebenen Wert haben und alle 3 Zähler müssen mit einem Schalter auf einen anderen Wert springen der wieder vorgegeben ist mit einem zweiten Schalter müssen wieder alle drei Werte geändert werden. Und so muss ich mit 10 Schalter 10x den Wert verstellen.
Achtung mein Programm ist nicht so Professionell gemacht aber es läuft.
Danke für Deine Hilfe.
Gruss David
-
Sorry die Easy kann auch auf eine 800 getauscht werden
-
Hallo David,
sollte die Sache eigentlich einfacher machen. Nochmals zu Verständnis, du hast 10 Eingänge die dir die Zähler entsprechend vorwählen? Als Beispiel I1=Zählerstände A, I2=Zählerstande B usw. und es ist auch sichergestellt das nur einer der Eingänge ansteht? Also wenn I1 dann I2-I10 mech. verriegelt?
Gruss
Jürgen
-
So noch wach ?
Ja genau so.
Mach aber wenn es geht zuerst nicht zuviel aufwand.
Vielen Dank im Voraus
-
Jep!
Im Anhang das einfachere aber Umfangreichere Beispiel. Hoffe du kommst zurecht. Das Überschreiben von MB, MW, und MD funktioniert nur in zusammenhang mit den DB, was ich hier angewendet habe.
Gruss
Jürgen
-
Hallo David, hallo Jürgen.
Für die Version mit einzelnen Schaltern (Jürgen's Version2) hätte ich einen anderen Vorschlag.
Ich würde die Eingänge als Taster ausführen und mittels Datenbausteinen die Werte direkt
überschreiben. In beigefügtem Beispiel werden pro Taster 2 DB's benutzt, wobei der jeweils
erste Datenbaustein 2 Worte schreibt.
Das Beispiel funktioniert in dieser Form natürlich nur, wenn die Zählersollwerte kleiner als
65535 bleiben. Bei größeren Werten müsste man noch 10 DB's opfern.
Gruß
Maikky
-
Hallo Jürgen und Maikky
Vielen Dank für Eure tolle Arbeit. Ich habe mich erstmals für den Vorschlag von Maikky entschieden.
Habe aber noch nicht alles verstanden z.B. wo muss ich meine vorgegebenen Zahlen vom C03 / C05 / C13 eintragen.Im Anhang ist noch mein geändertes Programm. Noch eine Frage was bewirkt das, wenn der Zähler links im ( I ) steht und nach rechts mit dem (A ) verbunden ist ( bin noch nicht so gut ).
PS:Bei einem anderen Programm hab ich noch ein Problem wie kann ich einen Zähler Remanenz behalten wenn ich die Steuerung (821) ausschalte oder sogar das Programm überschreibe.
Danke nochmals für alles
Lieber Gruss
David
-
Hallo David.
Deine Frage zur Zählerspule in I zielt wahrscheinlich ab auf Pfad 132 bis 134 in Deinem Programm.
Diese Zeilen musst Du löschen, weil Du die Spule der Zähler bereits verwendest. In dem Beispiel-
programm war es eingefügt, damit die Zähler vorhanden sind - allerdings ohne Kontakte
in A bis H und somit ohne Bedingung zum Zählen.
Hier ein kleines Beispiel zur Berechnung der Werte, die Du eingeben musst. Der jeweils erste
Datenbaustein schreibt zwei Zähler.
Beispiel : mit R8 soll gesetzt werden :
C03 auf 2343
C05 auf 4598
C13 auf 16534
zugehörige Datenbausteine
DB15 für C03 und C05
DB16 für C13
einzugebende Werte beim jeweils ersten DB errechnen sich aus der Formel
(Wert C05 x 65536) + Wert C03
bei DB15 : 4598 x 65536 + 2343 = 301336871
einzugebende Werte beim zweiten DB ist der Wert C13
bei DB16 : 16534
Gruß
Maikky
-
Hallo David.
Bei Spannungsausfall kannst Du die Istwerte der Zähler beibehalten, indem Du in der
Projektansicht den betreffenden Zählerbreich als remanent deklarierst (siehe Anhang).
Beim Überschreiben des Programms hilft dieser Beitrag.
http://easy-forum.net/index.php?topic=4013.msg22297#msg22297
Gruß
Maikky
-
Sorry wenn ich schon wieder komme
ich verstehe nicht wieso das man den C03 und C05 so berechnet. Wie weiss der DB weche Zahl zum C03 und welche zum C05 gehört. Warum nimmt man nicht einfach für jeden Zähler einen DB (es wird sicher einen Grund haben).
Danke nochmals für Eure Hilfe
Lieber Gruss
David
-
Hallo David.
Es ist durchaus möglich 10 weitere Datenbausteine zu verwenden. In einem vorherigen Beitrag
hatte ich schon mal geschrieben, dass es sogar notwendig ist, falls die Zähler-Sollwerte grösser
als 65535 werden.
Allerdings gibt es nur 32 DB's und davon wären 30 belegt für die Vorgabe der Werte. Für
eventuelle Programmerweiterungen stünden dann nur noch 2 zur Verfügung. Desweiteren
wären 400 Byte Speicher belegt, der am Ende vielleicht fehlt. Der eigentliche Hintergrund ist
also Platz und DB's zu sparen, wenn sie denn nicht benötigt werden. Und es wird halt nicht
benötigt, solange die Zähler nicht weiter als 65535 zählen müssen.
Das Beispiel basiert auf einem Merkmal, was normalerweise vermieden werden soll aber hier
bewusst ausgenutzt wird, den überlappenden Merkerbereichen.
Die Sollwerte der Zähler sind abgelegt in den Wörtern MW93, MW94 und MW95. Die grösste in
einem Wort darstellbare Zahl ist 65535, daher die Begrenzung. Die Wörter MW93 (für C03) und
MW94 (für C05) können zusammen als Doppelwort MD47 angesprochen werden. Die Merker-
bereiche überlappen sich, d.h. wenn ein Wert als Doppelwort MD47 geschrieben wird, ändern sich
gleichzeitig die Wörter MW93 und MW94 und Du benötigst nur einen Datenbaustein anstatt zwei.
Zusammengefasst :
- sind die Zählervorgaben größer als 65535 : 10 weitere DB's verwenden
- sind keine grossartigen Programmerweiterungen geplant : 10 weitere DB's verwenden
- ansonsten einmalig die Mühe machen und Werte berechnen
Gruß
Maikky
-
Hallo Maikky
Muss mir jetzt zuerst die ganze Steuerung umverdrahten und das Programm anpassen. Melde mich dann wieder sobald die Maschiene eifacher läuft. Besten dank im voraus für Deine Bemühungen.
Gruss David