[Step7] Simulation eines DC-Motors

Mr Floppy

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Leute ein schickes Forum habt Ihr hier, ich finde es klasse das hier erfahrene SPSler den SPS Neulingen helfen. Echt super!

Ich hab hier leider ein kleines programmiertechnisches Problem zu lösen:
Ein Gleichstrommotor für eine einschleifige Lageregelung hab ich zu simulieren.

Die Regelung will ich über den PID Baustein SFB 41 realisieren.
Anstatt des hardware Motors muss ein Algorithmus her, der mir den Motor simuliert.

Der Sollwert des Reglers kommt über ein WINCC Programm, der Stellwert (+/- 10V) wird an die AO Baugruppe gegeben, der Istwert (+/- 10V) kommt von der AI Baugruppe.

Ich will eine Siemens S7-300 mit der CPU 315 2 DP für dieses Projekt verwenden.

Meine Gedanken gehen in die folgende Richtung:
Den Motor hab ich als IT1 Strecke bzw. I Strecke identifiziert (logisch, läuft konstant hoch)
Um die Strecke jetzt mit Step7 zu simulieren muss ja eigentlich nur eine Variable mit unterschiedlicher Geschwindigkeit hoch- bzw. bei "Umpolung" runterzählen.
Je nach Stellwert (Spannung) muss nach meiner Idee ein Takt variiert werden der den Zähler schaltet.

Habt Ihr vielleicht eine bessere, einfachere oder andere Idee wie ich das hinbekommen könnte?
Und wenn nicht wie kann ich das in Step7 realisieren, also einen Takt über eine Eingangsspannung zu variieren?

Über einen Denkanstoß in eine andere Richtung oder gar eine komplette Lösung würde ich mich verdammt freuen :)
Falls Ihr noch Daten braucht, schreibt ein paar Zeilen ;)


Ich sag schon mal Danke und lass auch einen freundlichen Gruß da

mfg

Floppy
 
...den Takt würde ich konstant halten
aber dafür den 2 ten Summand variieren


So nach der Art:

Altwert:= Altwert + variabler Summand

wobei

variabler Summand := von -100% bis 100% (je max. Drehzahlwinkel pro ZeitTakt)

Ich hoffe ich habe mich halbweg verständlich ausgedrückt.


Gruß

Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja moin,
erstmal danke für die fixe Antwort.

Ich hab mir heute während des Frühstücks mir dein Vorschlag durch den Kopf gehen lassen und ich muss sagen, der gefällt mir besser wie meiner.
Vor allem ist er auch leichter umzusetzen :)

Wäre ich jetzt wahrscheinlich so nicht drauf gekommen... haste Du mal so ein ähnliches Problem gehabt?

Man müsste nur den variablen Summanden mit einem Faktor multiplizieren, um die Steigung des I-Verhaltens mehr oder weniger exakt nachbilden bzw. einstellen zu können, oder?

Schon mal danke für die Idee :)

Gruß

Floppy
 
Man müsste nur den variablen Summanden mit einem Faktor multiplizieren, um die Steigung des I-Verhaltens mehr oder weniger exakt nachbilden bzw. einstellen zu können, oder?

..deshalb habe ich ja auch geschrieben:

-100% bis 100% (je max. Drehzahlwinkel pro ZeitTakt)

d.h. da stehen dann nicht max. +100 oder min. -100 sondern z.B.


OB35 (100ms)

3000U/min / 60 Sekunden / 10 = max 5 Umdrehungen pro Zeittakt(100ms)

ersetze: +100% => + 5 U und - 100% > - 5 U


Entweder du rechnest mit REAL oder du muß alles mit 100 oder 1000 Mulipizieren sonst wird logischerweise zu "grob-rasterisch".



Gruß
 
Auch wenn es jetzt blöde klingt:

Aber wie lauten die Befehle um eine analoge Spannung +- 10V prozentual anzugeben

also + 10 Volt => +100% und -10 Volt => -100%

Ich bekomme es gerade gar nicht auf die Reihe!
ungefähr so??

L PEW 288
ITD // Wert in 32 Bit Ganzzahl
DTR // Wert in Gleitpunktzahl
L 2.7648e+4
/R
L 9.000e+2
*R
L 1.000e+2
+R
T MD10
 
Ahhhhhh
jetzt klappt es so wie ich will :)

Eine REAL Zahl sind zwei Byte und nicht nur eins :rolleyes:
Vielleicht sollte man dann nicht die Doppelwörtern MD11 und MD12 verwenden um mit den Werten zu arbeiten.

Jetzt passt alles und es läuft wie es soll!

Danke Jungs!
 
Zurück
Oben