FC Aufruf

Ja, kannst Du so oft aufrufen wie Du willst. Jedes Mal wo er aufgerufen wird, läuft der FC zu Ende - also es gibt keine Interaktionen zwischen verschieden Aufrufe, es sei denn, Du versuchst denselben Timer oder Zähler in den unterschiedlichen AUfrufen zu nutzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe einen Betriebstundenzähler. Muss den Ungefähr 50 mal aufrufen. Wenn ich ihn einmal einfüge Arbeitet er halbwegs normal.

Baustein: FC100 Betriebsstundenzähler


Sekundenauflösung.
Netzwerk: 1 Reset


UN #Reset
SPB kres
L 0
T #AnzWert // Bei reset Stunden und Minuten löschen
T #Stunden
kres: NOP 0


Netzwerk: 2 Ende nach reset oder wenn kein Start oder kein Sekundentakt
O #Reset
ON #Start
ON #S_Puls
SAVE
BEB


Netzwerk: 3 Anzeigewert inkrementieren und Stunden inkrementieren
L #AnzWert
L 1
+I
L 3600
>=D
SPB zae // alle 3600 Sekunden eine Stunde
TAK
T #AnzWert
BEA
zae: L #Stunden
L L#1
+D
T #Stunden // Stunde erhöhen
L 0
T #AnzWert // Sekundenzähler 0


rufe ihn dann so auf


Sekundentakt

UN T 91
L S5T#1S
SE T 90
U T 90
L S5T#1S
SE T 91
FP M 100.2
= M 100.0


Aufruf

CALL FC 100
S_Puls :=M100.0
Start :=DB103.DBX0.0
Reset :=M101.1
Stunden:=DB110.DBW0
AnzWert:=MW100

CALL FC 100
S_Puls :=M100.0
Start :=DB103.DBX0.1
Reset :=M101.1
Stunden:=DB110.DBW0
AnzWert:=MW101


Habe ich hier irgendwo einen fehler
 

Anhänge

  • fc100.pdf
    10,6 KB · Aufrufe: 13
Mal ne Frage funktioniert er denn nicht? Oder was ist falsch? Ich glaube wenn du dazu Angabem machst was nicht geht wird dir schneller geholfen.
 
vorab Adressüberschneidung bei den Aktualoperanden

z.B. MW 100 beinhaltet MB 100 + MB 101
MW 101 beinhaltet MB 101 + MB 102
:shock:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke, du arbeitest nur mit Temp Variablen. Dann funktioniert dein Counter nicht. Bei einem FC muestet du dann alle Werte in IO Variablen speichern. Besser ist ein FB mit STAT Daten.


pt
 
Wenn du eine FC benutzt, müssen die Funktionsausgänge unbedingt bei jedem Bausteinaufruf geschrieben werden! Wenn vor der Zuweisung der Ausgänge der Baustein durch BEB beendet wird, stehen undefinierte Werte in deinen Ausgangsvariablen.


Gruß, Onkel
 
also das heisst wenn ich richtig verstanden habe dass ich die mw verwnden kann aber halt, wie im Datenbaustein, nur jeden 2.

und dass es dann funktionieren müsste
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Habs nochmal probiert. Also mit den MW funktionierts nicht. Wenn ich noch ein DW angebe statt dem MW siehts aus als ob es funktioniert.

Wird das MW nur 1 Zyklus lang gespeichert oder so?
 
Hallo,

poste doch mal die vollständige AWL-Quelle (mit Variablendeklaration), dann kann man dir bestimmt weiterhelfen.
 
Danke habsjetzt hinbekommen.

Hab stat mww jetzt eine Eigene Temp DB genommen.

funktioniert super


Vielen Dank

Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Hab noch eine Frage. In dem Datenbaustein wo ich die Stundenreinschreibe. Wenn ich eine änderung mache oder bzw in die S7 den Datenbaustein neu rweinlese Verliert er immer die Daten die er gespeichert hat. Wie kann man das Verhindern?


Vieln Dank

Michael
 
Hallo!

Wenn Du den Datenbaustein von Deinem Programmiergerät überträgst, dann überschreibst Du damit den Datenbaustein auf der CPU.
Verhindern kann man das - soweit ich weiß - leider nicht.
Wenn Du Dein Programm geändert hast dann lasse einfach die Datenbausteine bei der Übertragung aus... problematisch wird es dann nur wenn man eine Änderung an einem Datenbaustein machen muss...
Ich lade dann immer den aktuellen Datenbaustein von der CPU in das Programmiergerät, ändere was geändert werden soll und übertrage dann umgehend diesen Datenbaustein zurück. Bei Betriebsstundenzählern fehlen dann halt ein paar Minuten - aber das störte bisher niemanden...

Viele Grüße, Tobias
 
Zurück
Oben