Simulationsbaustein im FB

motamas

Level-1
Beiträge
65
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Liebe Forum-User,
vor kurzem hatte ich mal ein Problem mit hochzählen gepostet was auf meiner jetzigen Funktion aufbaut. An dieser Stelle nochmal danke für den Einstieg!

So zu meinem Problem.
Folgenden Code verwende ich:

U #TAKT_DRE -> Taktmerker der das ganze in best. Takt ausführen soll
U #FRG_ANL -> Freigabebedingung

SPBNB end0 -> wenn nicht erfüllt springe zu end0
S #MER_ANLAUF -> Merker setzen damit ich weiß dass ich im Anlauf bin
L #SOLL_DRE -> im Folgenden die Mittelwertbildung
L #IST_DRE
+I
T #ZW_WERT_ANL
L #ZW_WERT_ANL
L 2
/I
T #IST_DRE -> wenn 999 erreicht ist soll weiter unten automatisch auf L #IST_DRE ->1000 gesetzt werden (könnte auch mit Runden gemacht L 999 -> werden)
==I
SPBNB end1
L 1000
T #IST_DRE
R #MER_ANLAUF
end0: NOP 0
end1: NOP 0

Damit soll ein Motorenanlauf über Mittelwertbildung simuliert werden. Grundsätzlich funktioniert diese Thematik wie ich es mir vorstelle, aber ich wollte diese Funktion in einen FB schrieben, weil ich sie öfter verwenden will. Nun habe ich das genauso reingeschrieben den FB parametriert und schön. Es funktioniert auch, aber ich habe das Gefühl bzw. es ist so dass es nicht mehr in dem Takt bzw. durch den Taktmerker zyklisch ausgeführt wird, sondern dass er alles sehr schnell hoch rechnet und die gewünschte 1000 erreicht.
Wieso funktioniert das mit dem Taktmerker über einen FB nicht mehr so ohne weiteres und wie kann man das Problem lösen?

Danke für eure Hilfe!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da fehlt noch eine Pulsbildung.

Wenn du z.B. den CPu takt nimmst von 1s, so wird 1s lang nix gezählt, aber in der nächsten sekunde 1s lang in jedem SPS Zyklus.
 
Da fehlt noch eine Pulsbildung.

Wenn du z.B. den CPu takt nimmst von 1s, so wird 1s lang nix gezählt, aber in der nächsten sekunde 1s lang in jedem SPS Zyklus.

das ist richtig. Aber er schreibt ja, dass es ausserhalb des FB klappt.
Deshalb nehme ich mal an, dass es ne Flanke gibt.

Was ist der Istwert für ein Parameter? IN/OUT?
Sind bei mehreren Aufrufen die gleichen Variablen dran?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
U     #TAKT_DRE -> Taktmerker der das ganze in best. Takt ausführen  soll
U     #FRG_ANL   -> Freigabebedingung
 [COLOR=Red]FP #Pulsbildung // Neu Als Stat anlegen Nicht Temp ![/COLOR]
SPBNB end0       -> wenn nicht erfüllt springe zu end0
S     #MER_ANLAUF -> Merker setzen damit ich weiß dass ich im Anlauf  bin
L     #SOLL_DRE -> im Folgenden die Mittelwertbildung
L     #IST_DRE
+I    
T     #ZW_WERT_ANL
L     #ZW_WERT_ANL
L     2
/I    
T     #IST_DRE -> wenn 999 erreicht ist soll weiter unten automatisch  auf L     #IST_DRE ->1000 gesetzt werden (könnte auch mit Runden  gemacht L     999         -> werden)
==I   
SPBNB end1
L     1000
T     #IST_DRE
R     #MER_ANLAUF
end0: NOP   0
end1: NOP   0
 
das ist richtig. Aber er schreibt ja, dass es ausserhalb des FB klappt.

Ich muss meine Aussage revidieren ich hab mir noch mal schnell nen Test FC erstellt und es klappt nicht also ignoriert er die Taktsteuerung ansteuerung! Sry!

Durch die eingebaute Flankensteuerung geht es dass heißt im FB muss ich wohl auf stat gehen weil ich die in Temp stehen hatte!
Ich werde es noch mal testen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau, kannst zum testen mal einen Merker nehmen , wenn es den FB im Moment nur einmal gibt. Aber für die Pulsbildung darf man auf keinen Fall einen Temp nehmen, dann kannst du das auch weg lassen.
 
SO um nochmal die anderen Fragen zu beantworten im Anhang mal nen Screenshot zu den Schnittstellen!
Und nein es werden keine Variablen doppelt verwendet!
Beim testen bekomm ich jetzt immer nen Sammelfehler muss noch mal gucken was ich da jetzt verhauen habe :D

Also jetzt setzt er die Drehzahl sofort auf 1000 da ist nichts mehr mit hochzählen :(
Vielleicht macht es sinn die Pulssteuerung als Eingang zu setzen und von außen zu beschalten?
 

Anhänge

  • Schnittstellen.PNG
    Schnittstellen.PNG
    23,1 KB · Aufrufe: 15
Zuletzt bearbeitet:
Ne also wie ebend schon gesagt wenn ich jetzt die Pulsbildung reinsetze (sollte ja bool sein oder) Dann ist der Istwert sofort auf 1000 da läuft nichts mehr hoch!

Den ganzen FB bekomm ich leider nicht auf den Screen aber die Variablen werden über einen DB parametriert!

OK alles geklappt danke euch! Hätte meine Simulation nur noch mal neustarten bzw. MRESen sollen jetzt gehts danke schön!
 
Zuletzt bearbeitet:
Zurück
Oben