Hallo Zusammen,
vorweg: Ich kenne mich wirklich nur am Rande mit SPS aus, möchte aber dennoch eine Versuchsanlage wie gewünscht zum Laufen bringen. Vielen Dank für Eure Hilfe!!!
Zur Leistungssteuerung einer Heizung in einer Versuchsanlage würde ich gerne eine Pulsweitenmodulation im SPS (BC9000) einsetzten. Inzwischen ist es gelungen den Baustein PWM_PW der Oscat Library einzubinden (über TwinCat 2).
Für die Gesamtpulsweite sind 5s (bzw. F=0,2Hz) vorgesehen, wobei die Leistung im Prozentbereich (sprich ganzzahlig Werte von 0-100 als "Leistungsvorgabe") gesteuert werden soll. Sprich der Puls würde in 100 Schritte, also 50ms unterteilt, bei welchen geschaltet werden soll. Der Ausgang der PWM soll also innerhalb des 5s-Pulses genau "Leistungsvorgabe*50ms" ein sein, die restliche Zeit des Pulses aus.
Nun Stellt sich die Frage wie deffiniert der Schaltzustand sein wird, bzw. inwieweit es zur Zykluszeitüberlappung kommt:
Die Messung des SPS-Zyklus ergab bis ca. max 30ms Zykluszeit. Sicherheitshalber würde ich die Zykluszeit deshalb auf 50ms einstellen (gibt es nebenbei für den BC9000 eine Möglichkeit einen Fehlermeldung bei überschreitung dieser 50ms zu generieren?)
Erreiche ich nun, wenn die Pulsweite (Eingang PW des PWM_PW Bausteins) über "Leistungsvorgabe*50ms" eingestellt wird, einen deffinierten Schaltzustand?
Sprich beziehen sich Zykluszeit und PWM Zeit auf die gleiche "Zeitbasis"?
Bzw. habe ich nach jedem SPS-Zyklus einen genau deffinierten Schaltzustand, oder kann es passieren, dass die Zeitbasis einen minimalen Versatz hat also bei einer "Leistungsvorgabe" von beispielsweise 63 es sein kann, dass wie gewünscht nach genau 63 SPS-Zyklen (63*50ms) der PWM-Ausgang abfällt, aber es ebenso sein kann, dass dieser erst nach dem 64sten Zyklus abfällt?
Dadurch ergäbe siche eine Ungewissheit der Leistungssteuerung von +/-1%, das würde ich gerne vermeiden. Leider kann ich den Schaltzustand nichtmal wirklich überprüfen (auf 50ms genau).
Falls der Schaltzustand undeffiniert ist, gibt es eine Möglichkeit dies zum umgehen oder zu verbressern? Z.B. über eine PWM die nicht eine bestimmte Zeit, sondern einen bestimmte "SPS-Zyklenzahl" an ist? (-> lässt sich die "SPS-Zyklenzahl" auslesen/als Variable verwenden?)
Ich hoffe meine laienhafte Erklärung ist verständlich genug!
Vielen herzlichen Dank für Eure Hilfe!!
Beste Grüße
Gebo