# Phasenverschiebung in DB schreiben - schnelle Regelung



## SPS-newbie (6 Mai 2010)

Hallo zusammen,

seit einigen Tagen überlege ich nun schon wie man am besten eine Phasenverschiebung einer Regelstrecke aufnehmen kann, doch mit meiner Lösung habe ich immer wieder Probleme mit der Zykluszeit!

folgende Anlage: System wird mit ET 200S und OB35 der die Regelung ausführt (eingestellte Weck-Zeit 3ms) geregelt.

Die Phasenverschiebung, so hab ich mir gedacht soll wie folgt aufgeniommen werden: Sinussignal in bestimmter Frequenz wird auf den Regelkreis gegeben -> Wert der 1. Abtastung des sinussignales speichern -> Zeitmessung starten --> Eingang nach der Regelstrecke einlesen und mit Wert vgl.
 Ist der eingelesene Wert = Wert der 1. Abtastung Timer stoppen --> Differenz bilden und  Anzahl der Zyklen x die Periodendauer abziehen --> somit habe ich die Verschiebung!

ich will die Phasenverschiebung im bereich von 0,1 Hz bis 100 Hz aufnehmen, wobei hier schon das Problem auftritt. 100 Hz sind ja bekanntlich 10ms pro Periode.

dies hat zur Folge das im endeffekt nur 3 mal pro Periode des aus und Eingangssignals abtaste und somit es eine ewigkeit dauert bis ich den 1. Abtastwert wieder erreiche.

Jettz die Frage.: Kann man meinen Ansatz noch optimieren, genauer, schneller machen??Oder habt ihr evtl. einen ganz anderen Lösungsansatz??

Vielen Dnak fürs reindenken, an diesem "wunderbaren Frühlingstag ":sm12:

viele grüße


----------



## rostiger Nagel (6 Mai 2010)

könntest du nicht eine IM-CPU nehmen die nur die Werte aufnimmt, so
hast du schon mal Buslaufzeit zwischen normaler CPU und ET200 weg.
Die Zykluszeit wird dann auch noch kürzer, wie die von dir eingestellten
3ms im Alarm OB. Das Programm läuft dann natürlich im OB1 und wird 
warscheinlich im µs bereich liegen.


----------



## SPS-newbie (6 Mai 2010)

Danke, für diene Antwort. Hab wohl ganz vergessen zu erwähnen dass das Programm auf einer ET 200s mit ner IM151/8 CPU läuft!

noch eine CPU kommt leider nicht infrage! --> Kosten wären zu hoch!

Gruß


----------



## rostiger Nagel (6 Mai 2010)

SPS-newbie schrieb:


> Danke, für diene Antwort. Hab wohl ganz vergessen zu erwähnen dass das Programm auf einer ET 200s mit ner IM151/8 CPU läuft!
> 
> noch eine CPU kommt leider nicht infrage! --> Kosten wären zu hoch!
> 
> Gruß


 
ja wenn es schon am geld scheitert....


----------



## rostiger Nagel (6 Mai 2010)

Einfallen würde mir jetzt nur noch eine andere Plattform, entweder
leistungsstärkere CPU aus dem 300er Specktrum. Oder eine Microbox
mit PC104 Karten, DI/DO und AI/AO. Wenn nur ein Analoger Eingang
benutzt wird hat die eine Wandlungszeit von 50..100µs; bei 4 200-400µs
und bei 8 400-800µs. Denn SPS-Zyklus auf 1ms zu bekommen ist un-möglich
wenn es auf eine IM CPU läuft.
Also wäre es möglich 10 Werte pro ms zu verarbeiten.


----------



## Beren (11 Mai 2010)

*gelöscht*


----------



## SPS-newbie (12 Mai 2010)

Vielen Dank für Eure Antworten. Ist echt der Wahnsinn wie schnell und gut hier geantwortet wird!!
 Leider ist es nicht möglcih andere HW einzusetzen. Anscheinend bleibt mir nur die Möglichkeit mit der ungenauigkeit aufgrund des zu großen Weckalarmintervalles zu leben..

Muss wohl versuchen die Regelung noch etwas zu kürzen, damit die Durchlaufzeit des Bausteines kleiner wird und ich somit die Weckalarmzeit runtersetzen kann. hoffe ich bringe es auf 1 - 2 ms ohne das die CPU in Stopp geht!
Viele Grüße,
SPS-newbie


----------



## Zottel (12 Mai 2010)

SPS-newbie schrieb:


> ...
> Die Phasenverschiebung, so hab ich mir gedacht soll wie folgt aufgeniommen werden: Sinussignal in bestimmter Frequenz wird auf den Regelkreis gegeben -> Wert der 1. Abtastung des sinussignales speichern -> Zeitmessung starten --> Eingang nach der Regelstrecke einlesen und mit Wert vgl.
> Ist der eingelesene Wert = Wert der 1. Abtastung Timer stoppen -->


1. Wert = Wert der 1.Abtastung setzt voraus, daß Amplituden gleich sind.
2. Wenn du z.B. bei dem Analogwert 1% Fehler hast und nun in der Nähe der Scheitelpunkte der Sinuskurve bist, schau mal wieviel Grad Phase das da sind.


SPS-newbie schrieb:


> Differenz bilden und  Anzahl der Zyklen x die Periodendauer abziehen --> somit habe ich die Verschiebung!


3. Da wirkt sich ein kleiner Fehler der Periodendauer dann fatal aus.


SPS-newbie schrieb:


> Oder habt ihr evtl. einen ganz anderen Lösungsansatz??



Wegen 1. ist der Nulldurchgang besser geignet, 0 ist bei jeder Amplitude 0.
Gleichzeitig ist im Nulldurchgang die Sinuskurve am steilsten, so daß ein Fehler bei der Amplitude den geringsten Fehler nach sich zieht.

Ich würde beide Signale - vom Ein- und vom Ausgang - auf eine Elektronik führen, die die Nulldurchgänge erkennt (Schmitt-Trigger).
Deren Ausgänge betätigen eine "Stoppuhr" und du hast die Zeit. Diese kannst du auf die bekannte Periodendauer beziehen. Oder, noch besser, du mißt auch die Zeit zwischen 2 gleichsinnigen Nulldurchgängen desselben Signals und bestimmst die Periodendauer.

Ob sich eine SPS als "Stoppuhr" eignet, ist eine andere Sache. Eventuell kannst du es mit Prozeßalarmen oder schnellen Zählern machen. Egal wie, da die Signale jetzt digital sind, brauchst du "nur" eine gute Zeitauflösung, während dein Ansatz auch noch eine gute Amplitudenauflösung erfordert.


----------

