Umwandeln!

sr-83

Level-1
Beiträge
69
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Für Euch wohl eine ganz einfach Frage bestimmt! Wenn ich in FUP ein Zähler (Vorwärts/Rückwärts) benutze, dann ist der DEZ Ausgang ein Word! Wenn ich diesen Wert über ein Datenbaustein speichern möchte und dann auf einen Vergleicher (INT) geben möchte, muss ich den ja umwandeln! Gibt es da eine leichte Möglichkeit? Mit einem Merkerwort geht es, aber möchte es über ein Datenbaustein machen!

Schöne Grüße
 
Für Euch wohl eine ganz einfach Frage bestimmt! Wenn ich in FUP ein Zähler (Vorwärts/Rückwärts) benutze, dann ist der DEZ Ausgang ein Word! Wenn ich diesen Wert über ein Datenbaustein speichern möchte und dann auf einen Vergleicher (INT) geben möchte, muss ich den ja umwandeln! Gibt es da eine leichte Möglichkeit? Mit einem Merkerwort geht es, aber möchte es über ein Datenbaustein machen!

Schöne Grüße


nimm einfach einen ADD_I (Positiv-Addierer) und triggere den "EN" Eingang beim hochzählen
und einen zweiten ADD_I (Negativ-Addierer) und triggere den "EN" Eingang beim runterzählen.




IN1 belegt mit Aktuellem Zählwert (aus DB)

IN2 belegt mit "1" (BZW MINUS 1 beim "Negativ-Addierer")

OUT belegt mit Aktuellem Zählwert +/-1 (aus DB)


kannst aber auch gleich alles mit ADD_D und DINT machen, denn sonst ist die Grenze +32767 / -32 768
 
Zuviel Werbung?
-> Hier kostenlos registrieren
?

Hallo!

In AWL:

L DB1.DBW0
BTI
T DB1.DBW2


BCD zu Integer wandler!
DBW0 hängt an deinem Ausgang DEZ.
DBW0 im DB1 ist vom Typ WORD
und DBW2 ist vom Typ INT.

Falls ich dich richtig verstanden habe!
 
Hallo!

In AWL:

L DB1.DBW0
BTI
T DB1.DBW2


BCD zu Integer wandler!
DBW0 hängt an deinem Ausgang DEZ.
DBW0 im DB1 ist vom Typ WORD
und DBW2 ist vom Typ INT.

Falls ich dich richtig verstanden habe!




BTI in AWL == BCD_I : BCD-Zahl in Ganzzahl (16 Bit) wandeln in FUP
 
Wenn man AWL bemüht ist es ganz einfach:
Code:
L "Dein Zähler"
T "Dein Datenbausteinwort"
Der Zählerwert steht dann als Integer im Datenbausteinwort.
Wobei IMHO der Vorschlag von IBFS aus seinem ersten Beitrag besser ist, weil weit größerer Wertebereich.
Ich selbst benutze die fertigen Zähler eigentlich nie..
 
Ich bin leider noch nicht ganz so fit in AWL! Bin Schulmäßig und in Ausbildung damit angefangen! Lesen kann ich es so ziemlich, aber selbst schreiben ist noch schwer!

Mal eine andere Frage, wenn ich einen FB für eine wiederkehrende Funktion anlege und somit auch die Schnittstelle anlege! Wenn ich einen Zähler (z.B. Z1) in der Programmierung verwende ist "Z1" doch in allen Bausteinen belegt und kann kein zweites mal benutzt werden oder ? Was ist denn, wenn ich jemanden den Baustein übergeben möchte und der benutzt Z1 schon in seiner Programmierung! Muss ich ihm das mitteilen oder gibt es dafür auch eine art Temp ??
 
Ich bin leider noch nicht ganz so fit in AWL! Bin Schulmäßig und in Ausbildung damit angefangen! Lesen kann ich es so ziemlich, aber selbst schreiben ist noch schwer!

Mal eine andere Frage, wenn ich einen FB für eine wiederkehrende Funktion anlege und somit auch die Schnittstelle anlege! Wenn ich einen Zähler (z.B. Z1) in der Programmierung verwende ist "Z1" doch in allen Bausteinen belegt und kann kein zweites mal benutzt werden oder ? Was ist denn, wenn ich jemanden den Baustein übergeben möchte und der benutzt Z1 schon in seiner Programmierung! Muss ich ihm das mitteilen oder gibt es dafür auch eine art Temp ??

Soweit ich weiß, hast du die Probleme mit den Standartzählern richtig erkannt. Zusätzlich sind sie nur begrenzt verfügbar (CPU abhängig).

Darum dieser Vorschlag:

nimm einfach einen ADD_I (Positiv-Addierer) und triggere den "EN" Eingang beim hochzählen
und einen zweiten ADD_I (Negativ-Addierer) und triggere den "EN" Eingang beim runterzählen.




IN1 belegt mit Aktuellem Zählwert (aus DB)

IN2 belegt mit "1" (BZW MINUS 1 beim "Negativ-Addierer")

OUT belegt mit Aktuellem Zählwert +/-1 (aus DB)


kannst aber auch gleich alles mit ADD_D und DINT machen, denn sonst ist die Grenze +32767 / -32 768
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@IBFS:
Was ist ADD_I?


Ich bin leider noch nicht ganz so fit in AWL! Bin Schulmäßig und in Ausbildung damit angefangen! Lesen kann ich es so ziemlich, aber selbst schreiben ist noch schwer!

Mal eine andere Frage, wenn ich einen FB für eine wiederkehrende Funktion anlege und somit auch die Schnittstelle anlege! Wenn ich einen Zähler (z.B. Z1) in der Programmierung verwende ist "Z1" doch in allen Bausteinen belegt und kann kein zweites mal benutzt werden oder ? Was ist denn, wenn ich jemanden den Baustein übergeben möchte und der benutzt Z1 schon in seiner Programmierung! Muss ich ihm das mitteilen oder gibt es dafür auch eine art Temp ??

Wenn du einen FB Programmierst dann kannst du die IEC Zähler SFB0, 1, 2 als Multiinstanz verwenden oder du Programmierst dir den Zähler selbst mit STAT - Variablen.

godi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich auch nicht und ohne nach zuschauen kann es sein das der DEZ Ausgang BCD liefert und der "echte" Ausgang DUAL lautet warum wandeln einfach den richtigen Ausgang nehmen ;o)

Den Wert des DUAL-Ausgangs des Zählers kann er aber in FUP mit eingeschalteter Typprüfung nicht als Eingang für den INT-Vergleicher verwenden. Daher nimmt er den Wert des DEZ-Ausgangs des Zählers und wandelt den BCD-Wert in einen INT-Wert um. Den INT-Wert kann er dann für den INT-Vergleicher verwenden.

Wenn ich in FUP ein Zähler (Vorwärts/Rückwärts) benutze, dann ist der DEZ Ausgang ein Word! Wenn ich diesen Wert über ein Datenbaustein speichern möchte und dann auf einen Vergleicher (INT) geben möchte, muss ich den ja umwandeln!

Gruß Kai
 

Anhänge

  • Zähler.jpg
    Zähler.jpg
    179,7 KB · Aufrufe: 31
Zuletzt bearbeitet:
Ich hoffe das man das nun auch ohne Bilder, PDFs, usw. verstehen kann.

Der BCD Rotz kann man in dem Fall getrost vergessen. Nimm den DUAL-Ausgang anstelle von DEZ und MOVE statt BCD_I.

PS: Zähler sind aus der Steinzeit! Und BCD habe ich das letzte mal in der Schule benutzt.
 
@IBFS:
Wenn du einen FB Programmierst dann kannst du die IEC Zähler SFB0, 1, 2 als Multiinstanz verwenden oder du Programmierst dir den Zähler selbst mit STAT - Variablen.

godi

Was für ein Thema ist das geworden, gewaltig! Aber Zähler ist wohl ein gutes Thema :ROFLMAO:

Brauch man für den SFB0 immer einen eigenen DB ? Das wäre ja schon eine gute Lösung sonst!
 
Was für ein Thema ist das geworden, gewaltig! Aber Zähler ist wohl ein gutes Thema :ROFLMAO:

Brauch man für den SFB0 immer einen eigenen DB ? Das wäre ja schon eine gute Lösung sonst!

Wenn du mit einem FB arbeitest dann brauchst du für die SFB keinen eigenen Instanzdatenbaustein. Du brauchst nur den SFB als STATische Variable anlegen -> Multiinstanz.
In einem FC oder OB brauchst du schon einen Datenbaustein!

Zähler ist wohl ein gutes Thema:
Naja man kann halt Zähler auf verschiedene Arten programmieren und jeder hat eben seine Lieblingsvariante.
Ich verwende in der S7 selten die Siemens-Zähler weil ich sie ein wenig nervig finde.

godi
 
Zuletzt bearbeitet:
Zurück
Oben