TIA HSC zu CTU. Zählerproblem S7-1200 CPU 1215C DC/DC/DC

rostorare

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist es möglich dass man mit jedem Hardwareinterrupt (OB 40), der durch meinen HSC bei CV=PV ausgeführt wird, einen CTUD-Zähler zum hochzählen zu bringen? (max. Frequenz 7-10Khz)

Denn ich habe 50 Zähler (CTUD) in meinem Programm von denen jeder benötigt wird. Jeder von diesen 50 Zählern ist am selben Drehgeber angeschlossen (ab-signal).

Ich versuche schon den ganzen Tag irgendetwas zu erreichen.
ich versuche über den Hardwareinterrupt einen Merker zu setzen, welcher den HSC_CV wieder auf 0 lädt und gleichzeitig einen CTU-Zähler +1 zählen lässt, bevor der nächste AB-Impuls kommt sollte der Merker jedoch wieder = 0 sein.

Problem 1:
Der Merker der im OB 40 mit der Zuweisung (=), zu 1 gesetzt wird bleibt nach dem der OB 40 einmal durchgelaufen ist gesetzt.
Wie kann man OB 40 zurücksetzen oder die Anweisung erst zurücksetzen nachdem man +1 bei dem CTU im OB1 gezählt hat? Ohne dass ein Zählimpuls des HSC verloren oder nicht mitgezählt wird?

Problem 2:
Kann ein CTU zähler überhaupt 7kHz zählen oder ist das zu schnell für ihn?


Information zu HSC
Zählen
A/B-Zähler 1X
"Vorwärtszählen"
Anfänglicher Zählwert = 0
anfägnlicher Referenzwert = 1

Alarm bei CV = PV
Prozessalarm (OB40 Hardwareinterrupt)


Bilder konnte ich nicht hier hochladen weil sie grösser als 1024x800 und grösser als 585kb sind.

Cyclic Interrupt OB 602 (HSC drin)
Main OB 1 (nur ein Zähler zum testen drin, alle andern Zähler befinden sich in den FB's)
Hardwareinterrupt (oben erwähnter Merker den ich zum zählen brauchen wollte)


wär nett wenn mir jemand helfen könnte
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das denke ich auch ^^
ich möchte eigentlich ein AB/-Signal dass bis zu 7Khz schnell sein kann zu zählen.
da Zähler wie CTU, 7Khz nicht zählen können habe ich einen HSC eingefügt.
und durch Hardwareinterrupts würde ich gerne immer einen Merker setzen, und mit diesem Merker müsste man doch CTU's zum zählen bringen können.

oder nicht???


sry für schlechtes deutsch.
 
Also pauschal würde ich sagen:
Dein Konzept ist irgendwas zwischen Unsinn und nicht realisierbar.

Deine Variante funktioniert schon alleine deshalb nicht, weil der CTUD wenn überhaupt dann auch schon im OB40 sein muss, ansonsten kannst du auf den schnellen Zähler schlussendlich verzichten, was dann aufgrund der vom CTUD benötigten Flanke allerdings die Pulse halbieren muss.
Desweiteren ist es mit Sicherheit nicht förderlich, den OB1-Zyklus derart häufig zu unterbrechen (wobei ich im Moment nicht vorhersagen könnte, wie sich die S7-1200 da wirklich verhält).

Also ist hier das übliche Konzept:
Den HSC einfach laufen lassen, und Anfangswerte zu speichern, und Endwerte zu berechnen, was dann im Prinzip deinen CTUS entsprechen würde.

Mfg
Manuel
 
Hi

da muss ich MSB Recht geben.

Wenn du unbedingt selber zählen willst, dann deklarier dir einen optimierten DB und darin einen derZaehler : DINT.
Im OB40 wird dieser mit einem simplen ADD inkrementiert. Den OB musst du so konfigirieren, dass er bei CV=PV ausgelöst wird. Dann brauchst du für den ADD keine Vorbedingung, die wird durch die Konfiguration erledigt.

KISS keep it stupid and simple.

Zum Problem 2.
Ein CTU kann so schnell zählen wie der in der 1200 verbaute Controller ist. Wenn man mal alles außer acht läßt, dann kann ich da mindestens einen 10MHz Zähler messen. Bloß ist das in keinster Weiße praxisrelevant. Ich will Eingänge lesen, will ein paar OB ausführen und Ausgänge schreiben. D.h. die Zykluszeit ist das was bei einer PLC als Taktfrequenz nutzbar ist. Deswegen gibt es ja Funktionsmodule wie den HSC. Separate Hardware für separate Aufgaben. Für den OB 1 sollte man eine sinnvolle, großzügig bemessene Zykluszeit von 10ms ansetzen. D.h. mehr als 100Hz kannst du damit nicht messen. Wenn du einen 1000 Liter Tank erhitzen willst, dann kannst du dir auch eine Zykluszeit von 10 Sekunden erlauben. Wenn du dagegen Flaschen befüllst, dann sind wohl besser 10µ anzusetzen -- das ist nun nix für die 1200.

Den HSC dafür zu nutzen schnell zu Zählen und nur gelegentlich dessen Überlauf mit zu verbuchen ist aber schon mal der richtige Weg.

Veranschlag für den OB-Aufruf 200µs Verwaltungszeit. Das macht 5000 Hz maximal Zählrate. Fall die 1200 sonst nix macht, was aber wieder Blödsinn ist. Also musst du den HSC so parametrieren, dass er zwischen 100ms und 1s zählt bis er den OB40 auslöst. Das sind natürlich grobe Richtwerte. Aber wenn du den OB40 öfter als jede Millisekunde aufrufst, dann wird die PLC nichts mehr sonst tun und vermutlich die Notbremse einwerfen. Wenn du de OB40 zu selten auslöst, dann bekommst du wahrscheinlich deinen Prozess nicht in Griff.

Fazit: Lass den HSC laufen und verwende dessen Zählwerte.



Jedem das Seine, mir das Meiste
 
Zurück
Oben