Taktmerkerbyte verwenden
Du definiert z.B. mit HW-Config als Taktmerkerbyte (nennen wir es kurz TM) als 50 überträgst dann die Configuration zur CPU
(Systemdaten im Bausteinordner vom Manager nicht vergessen).
Jetzt erzeugt die SPS im MB50 8-Bit mit freuquenzen von 0,5Hz bis 10Hz.
- Jedem Bit des Taktmerkerbytes ist eine Periodendauer/Frequenz zugeordnet:
Bit 7 6 5 4 3 2 1 0
Perioden-
dauer (s): 2 1,6 1 0,8 0,5 0,4 0,2 0,1
Frequenzen
(Hz): 0,5 0,625 1 1,25 2 2,5 5 10
Das Tastverhältnis zwischen ein/aus beträgt für jedes Signal 50/50.
Jetzt erzeugst du hieraus 8-Flankenmerker
Code:
L MB50 // Taktmerker laden
L MB52 // Zustand der Taktmerker beim letzten OB1-Zyklus laden
XOW // für jedes Bit Flanke erkennen
T MB51 // 8-Taktmerker sichern
L MB50 // Taktmerker für nächsten OB1-Zyklus sichern
T MB52 // ...
Jetzt kannst du z.B. mit den Taktmerkern eine Zeiterfassung Programmieren:
Code:
UN M51.7 // Taktmerker nicht gesetzt
SPB nWrk // Programmteil überspringen es gibt nichts zu tun
//______________ Kontrollieren ob es was zu tun gibt ______________
L MW10 // Zähler laden (M.Word hier als 16Bit-Z.benutzt)
L 1
-I
SPN upDT // Zähler ist nicht abgelaufen (Zeit ist nicht um)
//____die 300sec sind abgelaufen, jetzt müssen wir die Ausgänge ändern ____
... hier muß jetzt der Code rein der die Ausgänge abhängig von den eingängen und dem vorhandenen Zustand ändert ...
//----------Zeit neu laden----------------------------------------------
L 300 // Zähler für 300sec (mit M51.7) neu initalisieren
upDT:T MW10 // Zähler aktuallisieren
nWrk: NOP 1 // deine weiteres Programm
Der Vorteil dieser Metode ist das du jedes Byte,Word oder DWord zur Zeitmessung benutzen kannst. Wenn du vor die Verarbeitung noch ein Freigabebit hängst, kannst du die Zeit sozusagen einfrieren, das geht mit den Simens-Timer nicht!
Du hast also keinerlei Beschränkungen mehr mit der Anzahl der verfügbaren Timer.
Die Taktmerker kannst du auch wunderbar dazu nutzen z.B. durch eine Lampe oder LED die Anlagenbetriebsart Anzeigen zu lassen z.B. so:
Code:
UN M50.5 // kein Schnelles Blinken ODER
ON ErrorFlag // kein Fehler vorhanden
spb noTg // ...
UN A1.0
= A1.0
SPA EXIT // hier nix mehr zu tun
noTg:UN M50.7 // kein langsames Blinken ODER
ON WarningFlag // keine Warnung vorhanden
spb norm // ...
UN A1.0
= A1.0
SPA EXIT // hier nix mehr zu tun
norm: U AnlageBereit
= A1.0
Gruß, Ulrich
P.S. Wenn du mehr Fragen hast kannst du mich auch mal anrufen
07244/7415-827