Step 7 Zähler arbeiten nicht kein Zählen

ellmecc

Level-2
Beiträge
24
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Bin neu in der Siemens Welt also könnte es sich um einen banalen Fehler halten aber mit Hilfe und Handbuch komm ich grad nicht weiter.

Ich verwende zur Ablaufsteuerung einige Zähler, also diese globalen Z1.. usw.
Dass Problem ist wenn ich diese in zyklisch unbedingt oder bedingt aufgerufenen FC's verwende.
funktionieren sie einfach nicht.
Benutze in AWL einfach die Befehle: ZV R ZR

Interessanterweise laufen sie aber wenn ich irgend eine Verwendung im OB1 platziere.
Momentan:

CLR
ZV Z1
ZV Z2
ZV Z3

Den FR Befehl habe ich schon in den jeweiligen FC's platziert, hat auch nichts gebracht.

Warum ist das so?
Was mach ich falsch?

Bin kurz davor die Dinger auf zu geben.


Danke schon mal
Grüße
 
Hilfe zu AWL - ZV Zählen vorwärts schrieb:
ZV <Zähler> erhöht den Zählwert des adressierten Zählers um "1", wenn das VKE von "0" auf "1" wechselt [...]
d.h. nach jedem "Zählaufruf" mit VKE=1 muß der Zähler auch einmal mit VKE=0 aufgerufen werden (oder die Operation FR ausgeführt werden) - wobei er da nicht zählt, sondern nur der interne Flankenmerker rückgesetzt wird.

Deine FR-Operation hätte eigentlich das gleiche bewirken müssen - da kommt es wohl genau auf Deinen Programmcode drauf an ...
Hilfe zu AWL - FR Freigabe Zähler schrieb:
FR <Zähler> löscht den Flankenmerker [...] Das heißt, trotz konstantem VKE von 1 an den Anweisungen Setze Zählerstartwert, Zählen vorwärts oder Zählen rückwärts, werden nach der Freigabe diese Operationen erneut ausgeführt.

Werden Deine FC auch aufgerufen und bearbeitet?

PS: Schrittzähler oder Ablaufzähler macht man üblicherweise nicht mit den Zählern, sondern erhöht eigene INT-Variablen - das ist viel flexibler und einfacher.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Funktioniert jetzt, Danke Harald

Die FC werden Zyklisch aufgerufen, daran lag es nicht

Hatte das mit dem VKE wechsel von 0 auf 1 nicht richtig gemacht.
Bei meinem Test mit dem FR hatte ich wohl etwas falsch gemacht bei der Platzierung.

Normalerweise mache ich sowas auch mit INT Variablen, allerdings fand ich es mit dem ZV des Zähler einfacher und schöner was die abfragen usw. angeht.

Hab mich noch nicht so richtig an AWL gewöhnen können,
mir gefallen die ganzen Sprünge einfach nicht,
oder gibt es eine alternative bei VKE 1 zu inkrementieren?

Danke
 
Hi,

verstehe ich dich richtig dass du dein VKE von 1 auf 0 ändern möchtest?!
Wenn ja dient dazu der Befehl NOT.
Mit dem Befehl "NOT" wird das VKE in der Programmiersprache Anweisungsliste AWL negiert. Das geschieht in beide Richtungen, also von 1 auf 0 und von 0 auf 1. Das bedeutet:
Hat das VKE den Wert "1" und wird dann die Operation NOT ausgeführt, so hat das VKE nach der Operation NOT den Wert "0".
Hat das VKE den Wert "0" und wird dann die Operation NOT ausgeführt, so hat das VKE nach der Operation NOT den Wert "1".
 
verstehe ich dich richtig dass du dein VKE von 1 auf 0 ändern möchtest?!
Wenn ja ...
Eher nicht.
Da er bei der Variante selbst zählen möchte, möchte er seinen INT-Wert nur um 1 inkrementieren, wenn das VKE auf 1 ist. Dazu muss er, wie üblich, die folgende Rechen-Operation überspringen, wenn das VKE noch 0 ist. Und das gefällt ihm nicht und deshalb sucht er nach 'ner anderen Möglichkeit.


@ellmecc,
eine andere Möglichkeit gibt es aber unter AWL meines Wissens nach nicht. Ist nun mal Maschinensprache. Könntest höchstens auf die Hochsprache SCL ausweichen. Da siehst Du die Sprünge im Hintergrund, genau wie bei FUP/KOP, nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@hucki,
Genau das hab ich gemeint.

Werd mich schon noch an die Sprünge gewöhnen (müssen),
kann mir aber leider die Programmiersprache nicht selbst aussuchen,
ansonsten würde ich fast ausschliesslich mit SCL arbeiten.

Werde mir wahrscheinlich eine FC für solche Programmsteuerung basteln, braucht man eh ständig.

danke,
Grüße
 
Wie wäre es mit F(lanke)N(egativ) ...?
:confused:
Da muss man doch aber trotzdem über die Addition hinweg springen, wenn nicht gezählt werden soll.


Ich denke, er hatte sich sowas wie 'ne bedingt Addition erhofft:
Code:
L #Zähler
L 1
[COLOR="#FF0000"]+IB[/COLOR] //addiere nur, wenn VKE=1 -> gibt's aber (leider) nicht
 
Zurück
Oben