Zähler in DB Speichern

robiotor

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

erst mal will ich mal Hallo hier im Forum sagen.

Und nun zu meine aufgabe.

Ich Zähle Stücke und will diese in einem DB Speichern nach reihe.

Sprich der DB stein hat 3 zeilen und am Anfang sind alle werte dort auf 0

Die erste Zählung soll nun in der erste Zeile gespeichert werden.
Die zweite Zählung soll in der zweite Zeile gespeichert werden.
Die dritte Zählung soll in der dritte Zeile gespeichert werden.

Bei der vierte Zählung will ich alle drei zeilen auf null gesetzt haben und die Zählung soll wieder in der erste Zeile gespeichert werden.

Was ich bischer gemacht habe ist folgendes.


Netzwerk 1

U E 1.3
ZV Z 1
BLD 101
NOP 0
NOP 0
U E 1.4
R Z 1
NOP 0
NOP 0
NOP 0

Netzwerk 2

U(
L DB15.DBW 0
L 0
>=I
)
U E 1.5
SPBNB _001
L Z 1
T DB15.DBW 0
_001: NOP 0


so wie es jetzt ist schreibt er immer in DB15.DBW0

habe hier im Forum auch schon was gefunden. Nur an der Umsetzung mangelt es mir.

Wäre super wenn mir jemand ein bespiel geben könnte am besten mit eine erklärung damit das in meine birne reingeht.

Danke schon im Vorraus
 
Ich versteh noch nicht genau was Du da vorhast!

Aber ich versuch mal nen Lösungsansatz:
1. Du nimmst 3 Merker für die einzelnen Abschnitte, oder wie werden die einzelnen Zählabschnitt markiert?

2. Du nimmst 3 Zähler (alternativ baust Du Dir nen eigenen Zähler als FB und rufst den als Multiinstanz mehrfach auf) und benutzt den Abschnittmerker (aus 1.) mit als Zählfreigabe. Die einzelnen Zählergebnisse kannst Du in DBW0, DBW2, DBW4 abspeichern!

3. Mit Neustart des 1. Abschnittmerkers (über eine positive Flankenüberwachung) werden alle 3 Zähler zurückgesetzt oder auf Wert 0 gesetzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht so:

Code:
// Reset
U M 10.1 // 1. Abschnittmerker
FP M 10.1
R Z1 // Zähler werden auf 0 gesetzt
R Z2
R Z3

// Zählen Abschnitt 1

U M 10.1
U E 1.3
ZV Z1

U M  10.1
U E 1.4
ZR Z1

L Z1 // unabhängig vom VKE wird der Zählerstand in den DB kopiert!
T DB15.DBW0

// Zählen Abschnitt 2
// wie Abschnitt 1 nur mit anderem Zähler und Abschnittsmerker!
 
Ich Zähle Stücke und will diese in einem DB Speichern nach reihe.

Sprich der DB stein hat 3 zeilen und am Anfang sind alle werte dort auf 0

Die erste Zählung soll nun in der erste Zeile gespeichert werden.
Die zweite Zählung soll in der zweite Zeile gespeichert werden.
Die dritte Zählung soll in der dritte Zeile gespeichert werden.

Bei der vierte Zählung will ich alle drei zeilen auf null gesetzt haben und die Zählung soll wieder in der erste Zeile gespeichert werden.
Wäre hilfreich wenn du die Eingänge symbolisch wenigstens aber mit Kommentaren versehen würdest.
Eingang E1.3 zählt vorwärts > Klar
Eingang E1.4 setzt die Zähler zurück > fast klar, ist das die vierte Zählung?
Eingang E1.5 schreibt den Zählerwert in den DB > wann kommt denn der Eingang?
Welcher Eingang macht die zweite und die dritte Zählung?
Oder soll das Ergebnis im DB nach der dritten Zählung nur so ausschauen:?
Code:
DB_Stein.DBW0 = 1
DB_Stein.DBW2 = 2
DB_Stein.DBW4 = 3
 
was ich realisieren will

Z1 Zählt Stücke mit E1.3

E1.5 soll in DB15 Schreiben nach der reihe DBW0, DBW2, DBW4

wenn DBW0 = 0 dann reinschreiben, ansonsten probieren in DBW2
wenn DBW2 = 0 dann reinschreiben, ansonsten probieren in DBW4
wenn DBW4 = 0 dann reinschreiben, ansonsten DBW0, DBW2 und DBW4 überschreiben mit 0 und anschliesend den Z1 in DBW0 reinschreiben

das ganze ist nicht für eine Anlage, sondern nur für Schulungszwecken

und zwar habe ich im gedanken eine auswertung so

DB15 ist der DB für Stunden
dh. jede Stunde soll ein eintrag stattfinden. Das mache ich ja mit dem E 1.5

Ein weiteren Zähler Sparre ich mir hier und sage mit dem E 1.4 zurücksetzen des Zählers

Also sind 24 Stunden vorbei habe ich 24 Einträge und dann kann ich doch die 24 einträge zusammenzählen und in zb. DB16 reinschreiben.

mir gehts jetzt aber erst mal nur prinzipiel um die Zählungen pro Stunde. So das diese in dem DB15 korrekt reingeschrieben werden.


Vieleicht ist mein gedanke auch total falsch. Aber es fuchst mich das ganze.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kann dem Ganzen nicht wirklich folgen!

wenn DBW0 = 0 dann reinschreiben, ansonsten probieren in DBW2
wenn DBW2 = 0 dann reinschreiben, ansonsten probieren in DBW4
u.s.w.

was soll das werden?

Sobald Dein Zähler das 1. Mal gezählt hat, ist DBW0 <> 0!
 
Hallo,

meinst du etwa so etwas ?

Mit positiver Flanke E1.5 wird in das erste freie Wort geschrieben und der Zähler gelöscht, ist keins frei wird in DBW0 geschrieben
und DBW2 und 4 gelöscht.
Der Zählerreset muss auf diese Art gemacht werden, macht man das innerhalb eines Sprunges bleibt das VKE1 am Reseteingang
und er wird danach nicht mehr gelöscht. Es gibt auch andere Lösungen, ist nur ein Beispiel.



Netzwerk 2:

U E 1.5
FP M10.0
= M10.1
SPBNB Ende
L DB15.DBW 0
L 0
><I
SPB Nr_2
L Z1
T DB15.DBW 0
SPA Ende
NR_2:L DB15.DBW 2
L 0
><I
SPB Nr_3
L Z1
T DB15.DBW 2
SPA Ende
NR_3:L DB15.DBW 4
L 0
><I
SPB Nr_4
L Z1
T DB15.DBW 4
SPA Ende
NR_4: L Z1
T DB15.DBW 0
L 0
T DB15.DBW 2
T DB15.DBW 4
Ende: U M10.1
R Z1
 
Zuletzt bearbeitet:
genau so

jetzt nur noch ne kleine frage

das ganze kann ich nur in AWL sehen, es wird nicht nach FUP übersetzt.

wie kann ich das ganze so schreiben das es nach FUP übersetzt wird. In Verschiedene Netzwerke aufteilen?

die grafik verstehe ich doch schneller als das AWL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für die Übersetzung von AWL nach KOP/FUP müssen Platzhalter vorhanden sein. Du kannst Dir das ansehen, indem Du etwas in KOP/FUP erstellst und das dann nach AWL übersetzt. Am einfachsten geht es, wenn nur eine Anweisung je Netzwerk erscheint.
 
Ja, hab mal ne FUP-Variante gemacht, ich bin da mehr für AWL, ist vieles kürzer, aber das sollte auch gehen !

NW1: Zählen

U E 1.3
ZV Z 1
U E 1.4
ZR Z 1
NOP 0
NOP 0
NOP 0
NOP 0
NOP 0
NOP 0


NW 2: Flankenbildung

U E 1.5
FP M 10.0
= M 10.1


NW3: Speicherplatz 1 schreiben

U(
O(
L DB15.DBW 0
L 0
==I
)
O(
L DB15.DBW 4
L 0
<>I
)
)
U M 10.1
= L 0.0
U L 0.0
SPBNB _001
L Z 1
T DB15.DBW 0
SET
SAVE
CLR
_001: U BIE
R Z 1
U L 0.0
SPBNB _002
L 0
T DB15.DBW 2
_002: NOP 0
U L 0.0
SPBNB _003
L 0
T DB15.DBW 4
_003: NOP 0


NW4: Speicherplatz 2 schreiben

U(
L DB15.DBW 2
L 0
==I
)
U M 10.1
U Z 1
SPBNB _004
L Z 1
T DB15.DBW 2
SET
SAVE
CLR
_004: U BIE
R Z 1


NW5: Speicherplatz 3 schreiben

U(
L DB15.DBW 4
L 0
==I
)
U M 10.1
U Z 1
SPBNB _005
L Z 1
T DB15.DBW 4
SET
SAVE
CLR
_005: U BIE
R Z 1
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

habe mir NW3 in einen FC zurück kopiert, wird 1a übersetzt. :confused:

Also ich arbeite mit V5.5, kann's damit zusammenhängen ?

Funktioniert es denn ?
Habe es nur geschrieben, nicht getestet, sollte aber funktionieren !

Hab dir mal den FUP-Ausdruck angehängt !

PS: habe vergessen die NW-Überschriften wieder rein zu kopieren !
 

Anhänge

  • FUP.pdf
    116 KB · Aufrufe: 18
Zurück
Oben