Kont. Signal in SCL abtasten

Andidas

Level-1
Beiträge
12
Reaktionspunkte
0
Hi Leute,
ich möchte ein kontinuierliches Signal abtasten und nachher dann in ein Array legen. Jetzt fehlt mir die Idee wie ich die Abtastung durchführe. Hat jemand eine Idee für mich.
Der Eingang sieht wie folgt aus:
VAR_INPUT
x :REAL; (*kont. Signal*)
time :TIME; (*Abtastzeit*)
time_r :REAL; (*Abtastzeit als REAL-Wert*)
END_VAR

Ich danke euch!

Noch eine Frage:
Gibt es die Möglichkeit die Abtastzeit einem vorrangegangenem FB anzupassen. Nach dem Motto: GETTIME(OB35); oder so?
 
Ja genau, möchte ein Signal abtasten und davon das Integral bilden. Die Abtastzeit sollte variabel gelassen werden.
Gruß Andreas
 
Nun denn ...
Dann sollte es ungefähr so funktionieren :
- Du konfigurierst das Aufruf-Intervall deines OB35 so klein es deine Steuerung verträgt - also z.B. 1 ms.
- Du baust dir einen FB, dem du als Parameter den OB35-Takt und deinen Aufzeichnungs-Takt, eine Freigabe_Aufzeichnen und deinen Rohwert mitteilst (und was dir da noch so einfällt).
Zurück liefern sollte der FB dir, dass er mit der Aufzeichnung fertig ist.
- In dem FB wenn Freigabe_Aufzeichnen = true zählst du den OB35-Takt in einer Zählvariablen hoch. Ist der Wert der Zählvariablen >= deinem Wunschtakt, dann liest du den IN_Wert in dein ARRAY[Pointer], inkrementierst den Pointer und dekrementierst die Zählvariable um das Wunsch-Intervall.
Die Aufzeichnung ist beendet, wenn das Array voll ist.

Wenn du nun die aufgezeichneten Werte in irgendeiner Form auswerten willst, so würde ich das auf jeden Fall außerhalb des OB35 im zyklischen Programm machen, weil sonst der OB35-Aufruf sehr wahrscheinlich überfordert wird. Gleiches gilt für ein initialisieren des FB.
Diese Vorgänge lassen sich ALLE über geeignete IN-Parameter an dem Baustein machen - jedenfalls mache ich es so ... :rolleyes:

Kannst du damit etwas anfangen ?

Gruß
Larry
 
Zurück
Oben