-> Hier kostenlos registrieren
Hallo,
Viel habe ich schon als "Mitleser" vom Forum profitiert, nun ist jedoch der Zeitpunkt zur Anmeldung gekommen, da ich bis jetzt noch keine Lösung mit den üblichen Mitteln gefunden habe.
Folgendes soll realisiert werden:
Es soll ein Impuls erzeugt werden, der genau jede Sekunde für einen Zyklus anliegt. Verwendet werden soll er für eigene Betriebsstundenzähler, selbstgebaute Timer und andere technologische Funktionen mit Zeithintergrund.
Bevor jetzt aber die üblichen Verdächtigen wie "Taktmerker", "OB1 Zykluszeit", "Simatic Timer" ect. gepostet werden erstmal ein wenig zu Background:
Die Sekundenimpulse sollen lokal erzeugt werden (multiinstanzfähig). D.h. im Zuge der Erstellung eines bestimmten Funktionsbausteins soll der Impuls IM Baustein erzeugt werden und nicht extern dran parametriert werden. Dieses soll für eine Bausteinbibliothek dienen, welche den Parametrieraufwand SO GERING WIE MÖGLICH halten soll.
Die Restriktionen mal kurz und knapp zusammengefasst:
1.) Keine Verwendung von Taktmerkern (müssten von draußen an jeden Baustein dran parametriert werden, bzw. bei interner Nutzung projektübergreifend gleich benannt/adressiert werden)
2.) Keine Verwendung eines OB32-Impulsbit (dito)
3.) Keine anderen global erzeugten Impulse
4.) Keine Timer (ebenfalls mit zusätzlichem Aufwand / unnötigen Querverweisen / zu planendem Timer-Einsatz / unter umständen mangelnden Timer-Ressourcen verbunden)
5.) Kein TON/TOF (Bei Tests stellte ich bei der Sekundenimpuls-Erzeugung mit TOF eine Zyklusabhängigkeit und somit eine Ungenauigkeit von über 1% im zeitlichen Verlauf fest (wahrscheinlich steigend mit größer werdender Zykluszeit)
6.) Lauffähig auf S7 300/400/1200/WinAC
7.) Kein AWL (Am geeignetsten ist SCL, da die Funktionsbausteine auch weitestgehend in SCL erstellt werden)
8.) Verbratene Ressourcen sind zweitrangig, ressourcensparende Lösungsansätze sind jedoch zu bevorzugen
9.) Die kurzzeitgeitgenauigkeit ist irrelevant (ob der Impuls jetzt +- ein Zyklus ankommt...), wichtig ist, dass die Impulse nicht mit der Systemzeit auseinanderlaufen, also mindestens die Exaktheit dieser aufweisen
Aus letzgenanntem Grund denke ich, dass man um eine Nutzung und Auswertung der Systemzeit (RD_SYS_T oder TIME_TCK) nicht herum kommt. Jedoch hapert es noch ein wenig an der Realisierung.
Ein Gedanke war den TIME_TCK mit Modulo 1000 abzufragen. Bei einer Zykluszeit von 3ms z.B. wird der Impuls logischerweise aber nur alle 3 Sekunden ausgelöst.
Jetzt seid ihr gefragt. Ich erwarte Gedankenanstöße im 1-Sekunden-Takt
Viel habe ich schon als "Mitleser" vom Forum profitiert, nun ist jedoch der Zeitpunkt zur Anmeldung gekommen, da ich bis jetzt noch keine Lösung mit den üblichen Mitteln gefunden habe.
Folgendes soll realisiert werden:
Es soll ein Impuls erzeugt werden, der genau jede Sekunde für einen Zyklus anliegt. Verwendet werden soll er für eigene Betriebsstundenzähler, selbstgebaute Timer und andere technologische Funktionen mit Zeithintergrund.
Bevor jetzt aber die üblichen Verdächtigen wie "Taktmerker", "OB1 Zykluszeit", "Simatic Timer" ect. gepostet werden erstmal ein wenig zu Background:
Die Sekundenimpulse sollen lokal erzeugt werden (multiinstanzfähig). D.h. im Zuge der Erstellung eines bestimmten Funktionsbausteins soll der Impuls IM Baustein erzeugt werden und nicht extern dran parametriert werden. Dieses soll für eine Bausteinbibliothek dienen, welche den Parametrieraufwand SO GERING WIE MÖGLICH halten soll.
Die Restriktionen mal kurz und knapp zusammengefasst:
1.) Keine Verwendung von Taktmerkern (müssten von draußen an jeden Baustein dran parametriert werden, bzw. bei interner Nutzung projektübergreifend gleich benannt/adressiert werden)
2.) Keine Verwendung eines OB32-Impulsbit (dito)
3.) Keine anderen global erzeugten Impulse
4.) Keine Timer (ebenfalls mit zusätzlichem Aufwand / unnötigen Querverweisen / zu planendem Timer-Einsatz / unter umständen mangelnden Timer-Ressourcen verbunden)
5.) Kein TON/TOF (Bei Tests stellte ich bei der Sekundenimpuls-Erzeugung mit TOF eine Zyklusabhängigkeit und somit eine Ungenauigkeit von über 1% im zeitlichen Verlauf fest (wahrscheinlich steigend mit größer werdender Zykluszeit)
6.) Lauffähig auf S7 300/400/1200/WinAC
7.) Kein AWL (Am geeignetsten ist SCL, da die Funktionsbausteine auch weitestgehend in SCL erstellt werden)
8.) Verbratene Ressourcen sind zweitrangig, ressourcensparende Lösungsansätze sind jedoch zu bevorzugen
9.) Die kurzzeitgeitgenauigkeit ist irrelevant (ob der Impuls jetzt +- ein Zyklus ankommt...), wichtig ist, dass die Impulse nicht mit der Systemzeit auseinanderlaufen, also mindestens die Exaktheit dieser aufweisen
Aus letzgenanntem Grund denke ich, dass man um eine Nutzung und Auswertung der Systemzeit (RD_SYS_T oder TIME_TCK) nicht herum kommt. Jedoch hapert es noch ein wenig an der Realisierung.
Ein Gedanke war den TIME_TCK mit Modulo 1000 abzufragen. Bei einer Zykluszeit von 3ms z.B. wird der Impuls logischerweise aber nur alle 3 Sekunden ausgelöst.
Jetzt seid ihr gefragt. Ich erwarte Gedankenanstöße im 1-Sekunden-Takt
