TWINCAT Zeitverlauf für Variable vorgeben

Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte gerne einer Stellgröße eines Ventils ein bestimmten Signalverlauf übergeben. Das Signal findet ihr im Anhang. Das Signal liegt mir als Tabelle vor mit Zeitschritten von 1s.
Ich bin auf den FB_CTRL_SETPOINT_GENERATOR gestoßen. Dort kann ich aber leider keine Tabelle einlesen lassen, sondern müsste das manuell einstellen, soweit ich das verstanden habe. Habt ihr da eine Idee wie ich das machen kann? Leider habe ich dazu nicht gefunden, was mir weiterhelfen könnte. Daher schreibe ich jetzt hier.


Schon mal vielen Dank im Voraus und beste Grüße

Der Amateur
 
Dem FB_CTRL_SETPOINT_GENERATOR kannst du ein Array übergeben.
In dem Parameter stParams gibt es den Pointer pDataTable. Diesem übergibst du die Adresse des Arrays in dem die Sollwerte enthalten sind. Die Erläuterung zum FB im InfoSys sind eigentlich recht eindeutig.
In stParams hast du alle Parameter die der Baustein zur Generierung der Rampe braucht (Zykluszeiten des Reglers und des Bausteinaufrufs, das Sollwert Array [Startadresse und Größe], Rampensteilheit für steigende und fallende Rampe, und den Schalter ob der Sollwert springen oder linear steigen und fallen soll)

Mit der Eingangsvariable nSetpointIndex gibt du vor, welchen Sollwert aus deinem Array der FB setzen soll. Wenn du jede Sekunden einen neuen Sollwert setzen willst, musst du nSetpointIndex in diesem Takt aktualisieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo MasterOhh,

danke für deinen Input. Leider bin ich mehr oder weniger ein Anfänger in Sachen SPS und habe deswegen meine Probleme mit dem InfoSys. Aber dein Input hat mir sehr geholfen.
Leider tritt jetzt noch ein Fehler auf und zwar bekomme ich folgende Errormeldung von dem FB "eCTRL_ERROR_INVALIDPARAM_DataTableSIZEOF". Mein Array sieht wie folgt aus arr1 : ARRAY[0..3] OF REAL := [12, 45, 56, 98]; und der Parameter nDataTable_SIZEOF:=4.
Eine Idee was hier falsch sein könnte?

Beste Grüße

der Amateur
 
Hallo, ich kenne den FB_CTRL_SETPOINT_GENERATOR nicht, aber der Name nDataTable_SIZEOF suggeriert mir, daß damit die Größe in Bytes gemeint ist, nicht die Anzahl Elemente. Versuche es mal mit nDataTable_SIZEOF:=16 oder nDataTable_SIZEOF:=SIZEOF(arr1)

Harald
 
Zurück
Oben