Simulation allg. möglich? (sim. frequenz problem)
Simulation allg. möglich? (sim. frequenz problem)
Hallo ich habe wieder ein kleines Problem.
Ich habe eine art Simulation aus Analogbauteilen (berechnungen) gebastelt.
Das hauptsächliche Problem ist das ich intern mit Variablen arbeite die an andere "Baustellen" weitergegeben werden.
Da die Frequenz leider nur zwischen Low und High wählbar ist,
habe ich dementsprechend eine Simulation mit 1000+Hz. ich bräuchte aber 1Hz.
Jetzt habe ich schon mit Schieberegistern, Analogverzögerung etc rumexperimentiert, aber es hat leider nichts geholfen.
Wenn ich mit einer Analogverz. vor jeder Variable arbeite, bekommt die nächste "Baustelle" die mit der Variable rechnet,
den aktuellen Wert, den sie jetzt braucht, halt erst im nächstem Takt, und somit is nix mehr mit Simulation -.-
Habt ihr irgendeine Idee wie ich es eventuell doch hinbekommen könnte oder eignet sich ProfiLab einfach nicht für eine derartige Aufgabe?
MfG
Nico
Ich habe eine art Simulation aus Analogbauteilen (berechnungen) gebastelt.
Das hauptsächliche Problem ist das ich intern mit Variablen arbeite die an andere "Baustellen" weitergegeben werden.
Da die Frequenz leider nur zwischen Low und High wählbar ist,
habe ich dementsprechend eine Simulation mit 1000+Hz. ich bräuchte aber 1Hz.
Jetzt habe ich schon mit Schieberegistern, Analogverzögerung etc rumexperimentiert, aber es hat leider nichts geholfen.
Wenn ich mit einer Analogverz. vor jeder Variable arbeite, bekommt die nächste "Baustelle" die mit der Variable rechnet,
den aktuellen Wert, den sie jetzt braucht, halt erst im nächstem Takt, und somit is nix mehr mit Simulation -.-
Habt ihr irgendeine Idee wie ich es eventuell doch hinbekommen könnte oder eignet sich ProfiLab einfach nicht für eine derartige Aufgabe?
MfG
Nico
Re: Simulation allg. möglich? (sim. frequenz problem)
Hallo,
erzähle mal etwas genauer, was du machen willst.
Ich habe verstanden, dass du Werte im "Einsekundentakt" weitergeben willst. Wenn das so ist, dann kannst du die Werte mit dem Sample&Hold Baustein sekündlich einspeichern (mit einem Taktgeber); damit erreichst du die "1Hz Taktrate".
Mit einer 1 Hz Sim-Rate würden keine berechneten Werte im "Einsekundentakt" anfallen.
Gruß MM
erzähle mal etwas genauer, was du machen willst.
Ich habe verstanden, dass du Werte im "Einsekundentakt" weitergeben willst. Wenn das so ist, dann kannst du die Werte mit dem Sample&Hold Baustein sekündlich einspeichern (mit einem Taktgeber); damit erreichst du die "1Hz Taktrate".
Mit einer 1 Hz Sim-Rate würden keine berechneten Werte im "Einsekundentakt" anfallen.
Gruß MM
Re: Simulation allg. möglich? (sim. frequenz problem)
ah ich hab gewusst das ichs schlecht beschrieben habe^^
ich weiß auch nicht wie ichs gescheit beschreiben soll...ich häng mal nen Screen dran.
Die rot umrandeten Variablen sind die interessanten. Das sind interne Variablen mit denen gerechnet wird. Die sind halt leider voneinander abhängig.
Somit habe ich das Problem wenn ich SegM berechne, dass dieser Wert für die Berechnung von Mmech erst mit dem nächsten Takt zur Verfügung steht. Somit habe ich eine Verzögerung drin die ich nicht gebrauchen kann. Das äusert sich darin, dass ich anstelle einer geraden Linie in meinem Graphen die ganze Zeit einen Dreieckssprung drinhabe.
Lass ich die Analogverzögerung weg, funktioniert alles. Wenn ich meinen Regler runterstelle dann bleibt meine Linie auch konstant und schwankt nicht hin und her. Das Problem ist aber dann, dass ich halt mit 1000Hz "Simuliere" und somit quasi nen Zeitraffer erstellt habe und 1s in meinem Programm also 1000s in "wirklichkeit" entsprechen.
Ich hoffe das Problem ist einigermaßen klar^^
ich weiß auch nicht wie ichs gescheit beschreiben soll...ich häng mal nen Screen dran.
Die rot umrandeten Variablen sind die interessanten. Das sind interne Variablen mit denen gerechnet wird. Die sind halt leider voneinander abhängig.
Somit habe ich das Problem wenn ich SegM berechne, dass dieser Wert für die Berechnung von Mmech erst mit dem nächsten Takt zur Verfügung steht. Somit habe ich eine Verzögerung drin die ich nicht gebrauchen kann. Das äusert sich darin, dass ich anstelle einer geraden Linie in meinem Graphen die ganze Zeit einen Dreieckssprung drinhabe.
Lass ich die Analogverzögerung weg, funktioniert alles. Wenn ich meinen Regler runterstelle dann bleibt meine Linie auch konstant und schwankt nicht hin und her. Das Problem ist aber dann, dass ich halt mit 1000Hz "Simuliere" und somit quasi nen Zeitraffer erstellt habe und 1s in meinem Programm also 1000s in "wirklichkeit" entsprechen.
Ich hoffe das Problem ist einigermaßen klar^^
- Dateianhänge
-
- flr_test.JPG (163.59 KiB) 14333 mal betrachtet
Re: Simulation allg. möglich? (sim. frequenz problem)
Hi,
so klar ist mir das immer noch nicht
welches Signal stellst du graphisch dar ? ; kannst du das passende Signal nicht mit S&H für knapp eine Sekunde festhalten (dann sind deine Dreiecke weg).
Die Angabe Sim-Frequenz 1000 Hz bedeutet eigentlich: es werden 1000 Rechenschritte, Abtastraten o. ä. pro Sekunde durchgeführt (nur so nebenbei; deshalb wird diese Freq. mit rechnintensiven Bauteilen immer niedriger werden)). D.h. mit 1000 Hz kannst du Signale noch halbwegs vernünftig erfassen, die sich um die 500 Hz bewegen.
Du musst halt dein "fertiges Signal" im Einsekundentakt weitergeben
Auf meinem Rechner hier habe ich kein PL, deshalb kommt von mir kein Beispiel; du nimmst einfach ein S&H Baustein und taktest den Hold Eingang mit 0,5 bzw. 1 Hz, dann kullern die Werte im 1 Sekundentakt aus dem Baustein.
Falls ich's nicht richtig verstanden habe, dann erklär's halt nochmal noch genauer.
Gruß MM
so klar ist mir das immer noch nicht
welches Signal stellst du graphisch dar ? ; kannst du das passende Signal nicht mit S&H für knapp eine Sekunde festhalten (dann sind deine Dreiecke weg).
Die Angabe Sim-Frequenz 1000 Hz bedeutet eigentlich: es werden 1000 Rechenschritte, Abtastraten o. ä. pro Sekunde durchgeführt (nur so nebenbei; deshalb wird diese Freq. mit rechnintensiven Bauteilen immer niedriger werden)). D.h. mit 1000 Hz kannst du Signale noch halbwegs vernünftig erfassen, die sich um die 500 Hz bewegen.
Du musst halt dein "fertiges Signal" im Einsekundentakt weitergeben
Auf meinem Rechner hier habe ich kein PL, deshalb kommt von mir kein Beispiel; du nimmst einfach ein S&H Baustein und taktest den Hold Eingang mit 0,5 bzw. 1 Hz, dann kullern die Werte im 1 Sekundentakt aus dem Baustein.
Falls ich's nicht richtig verstanden habe, dann erklär's halt nochmal noch genauer.
Gruß MM
Re: Simulation allg. möglich? (sim. frequenz problem)
Hallo miau,
ohne genauer hinter die PL-Abarbeitung dahinterzusehen (was wird wann abgearbeitet, und steht dann wo wieder an, das dürfte ziemlich kompliziert sein und nur durch Abacom genauer erläuterbar)
gehe ich schwer davon aus, dass Du auf RealTime Simulation verzichten musst.
Hier würde sich Matlab-Simulink oder als OpenSource "pendant" SciLab-Scicos wohl besser eignen (letzteres ist frei und lohnt sich zu betrachten, ich habe aber keine Erfahrung damit.
Allenfalls könnte die Verknüpfung einer formalen Programmiersprache mit PL (als GUI, Trender...und als Schnittstelle zur Simulation) funktionieren, wenn die Simulationsaufgabe nicht sehr kompliziert ist.
Was auch unbekannt ist, ob evt. die kommende Version von PL im Bereich einstellbare Zykluszeit etwas mitbringt ?
Viele Grüsse von Thomas
ohne genauer hinter die PL-Abarbeitung dahinterzusehen (was wird wann abgearbeitet, und steht dann wo wieder an, das dürfte ziemlich kompliziert sein und nur durch Abacom genauer erläuterbar)
gehe ich schwer davon aus, dass Du auf RealTime Simulation verzichten musst.
Hier würde sich Matlab-Simulink oder als OpenSource "pendant" SciLab-Scicos wohl besser eignen (letzteres ist frei und lohnt sich zu betrachten, ich habe aber keine Erfahrung damit.
Allenfalls könnte die Verknüpfung einer formalen Programmiersprache mit PL (als GUI, Trender...und als Schnittstelle zur Simulation) funktionieren, wenn die Simulationsaufgabe nicht sehr kompliziert ist.
Was auch unbekannt ist, ob evt. die kommende Version von PL im Bereich einstellbare Zykluszeit etwas mitbringt ?
Viele Grüsse von Thomas
Curiousity makes us progress !
Re: Simulation allg. möglich? (sim. frequenz problem)
@tmm
Leider nicht richtig verstanden^^
Ob ich jetztn S&H oder ne Analogverz. habe ist imho relativ egal. Beides geben mir die eingelesenen Werte im 1s Takt an meine Berechnung weiter.
Das mit der Frequenz von 1000Hz habich auch verstanden. Genau das ist aber auch das Problem. Er Darf nur genau eine Berechnung machen.
Ich gebe mit einem Regler einen Eingangsmassenstrom vor. Heißt ich schieb xy Kg/s auf eine Walze. Demnach steigt die Höhe des aufgeschichteten Materials auf meiner Walze abhängig von der Zeit. Wobei Zeit hier nicht ganz richtig ist. Ich habe intern ganz einfach ausgedrückt die Logik:
Eingangsmassenstrom+x*y/5=h
die Formel hier ist willkürlich. Aber das Problem ist halt das mir Profilab die Berechnung nicht im Sekundentakt macht, sondern wie du schon geschrieben hast 1000mal pro sekunde.
Und somit bekomm ich halt nach 1s eine höhe raus, die ich in wirklichkeit erst nach 1000s bekommen hätte.
Ich kann natürlich mit der Verzögerung oder der S&H quasi die Berechnung 1000mal mit den selben Werten durchführen und habe somit quasi meine simulationszeit von 1s.
Das problem nun ist wiederum, das ich halt nicht nur eine logik habe, sonderne mehrere, die alle die Variable h brauchen. Die rechnen aber halt leider nicht mit dem Aktuellem wert sondern mit dem Alten, da die Verz. den gerade errechneten wert erst mit dem nächstem takt weitergibt....wenns net klar is ises auch egal. Ich glaube Profilab ist für mein Problem eher ungeeignet. Danke trotzdem^^
@tom_g
jo...werd mich nach ner anderen guten alternative umsehen müssen. danke trotzdem
Leider nicht richtig verstanden^^
Ob ich jetztn S&H oder ne Analogverz. habe ist imho relativ egal. Beides geben mir die eingelesenen Werte im 1s Takt an meine Berechnung weiter.
Das mit der Frequenz von 1000Hz habich auch verstanden. Genau das ist aber auch das Problem. Er Darf nur genau eine Berechnung machen.
Ich gebe mit einem Regler einen Eingangsmassenstrom vor. Heißt ich schieb xy Kg/s auf eine Walze. Demnach steigt die Höhe des aufgeschichteten Materials auf meiner Walze abhängig von der Zeit. Wobei Zeit hier nicht ganz richtig ist. Ich habe intern ganz einfach ausgedrückt die Logik:
Eingangsmassenstrom+x*y/5=h
die Formel hier ist willkürlich. Aber das Problem ist halt das mir Profilab die Berechnung nicht im Sekundentakt macht, sondern wie du schon geschrieben hast 1000mal pro sekunde.
Und somit bekomm ich halt nach 1s eine höhe raus, die ich in wirklichkeit erst nach 1000s bekommen hätte.
Ich kann natürlich mit der Verzögerung oder der S&H quasi die Berechnung 1000mal mit den selben Werten durchführen und habe somit quasi meine simulationszeit von 1s.
Das problem nun ist wiederum, das ich halt nicht nur eine logik habe, sonderne mehrere, die alle die Variable h brauchen. Die rechnen aber halt leider nicht mit dem Aktuellem wert sondern mit dem Alten, da die Verz. den gerade errechneten wert erst mit dem nächstem takt weitergibt....wenns net klar is ises auch egal. Ich glaube Profilab ist für mein Problem eher ungeeignet. Danke trotzdem^^
@tom_g
jo...werd mich nach ner anderen guten alternative umsehen müssen. danke trotzdem
Re: Simulation allg. möglich? (sim. frequenz problem)
na gut - wenn's nicht geht ..............
(wobei du natürlich bei einer Sim-Freq. von einer Sekunde auch ca. eine Sekunde lang "alte" Werte anliegen hast)
Gruß MM
(wobei du natürlich bei einer Sim-Freq. von einer Sekunde auch ca. eine Sekunde lang "alte" Werte anliegen hast)
Gruß MM
Re: Simulation allg. möglich? (sim. frequenz problem)
Hallo Miau
Also , wenn ich das richtig verstehe machst Du einen Fehler in der Betrachtung der rechenzeit und Verarbeitungszeit.
z.B. wenn ich einen Wert berechne , in aber nur alle Sekunde z.B. auf einen YT Schreiber gebe oder an einen Zahler weitergebe dann habe ich die Daten im Sekundentakt , egal wie oft der Dividierer x / y rechnet .
Entscheidend ist es doch die Werte an den kritischen Stellen im Sekundentakt - z.B. mit einem Sample and Hold weiterzugeben .
Bilde Dir einen Zyklusimpuls alle Sekunde und schon müsste es klappen
also 1 kg Kohlen alle Sekunden 1 ms aufs Band und 999ms nix - fertig
Gruß Gerhard
Also , wenn ich das richtig verstehe machst Du einen Fehler in der Betrachtung der rechenzeit und Verarbeitungszeit.
z.B. wenn ich einen Wert berechne , in aber nur alle Sekunde z.B. auf einen YT Schreiber gebe oder an einen Zahler weitergebe dann habe ich die Daten im Sekundentakt , egal wie oft der Dividierer x / y rechnet .
Entscheidend ist es doch die Werte an den kritischen Stellen im Sekundentakt - z.B. mit einem Sample and Hold weiterzugeben .
Bilde Dir einen Zyklusimpuls alle Sekunde und schon müsste es klappen
also 1 kg Kohlen alle Sekunden 1 ms aufs Band und 999ms nix - fertig
Gruß Gerhard
Re: Simulation allg. möglich? (sim. frequenz problem)
Hallo Miau
Hier ein kleines Beispiel der 1 Sekunden Verarbeitung und Anzeige auf dem Schreiber
Es wird nur für einen Zyklus alle sekunde ein Takt erzeugt .
Gruß Gerhard
Hier ein kleines Beispiel der 1 Sekunden Verarbeitung und Anzeige auf dem Schreiber
Es wird nur für einen Zyklus alle sekunde ein Takt erzeugt .
Gruß Gerhard
- Dateianhänge
-
- 1sek.prj
- (1.99 KiB) 489-mal heruntergeladen
Re: Simulation allg. möglich? (sim. frequenz problem)
ich bin mir nicht sicher ob du mein Problem richtig verstanden hast.
mir ist schon klar das er 25mio mal 1*6 rechnen kann. solange er 1*6 rechnet ändert sich das Ergebnis nicht.
Deswegen habe ich auch Verzögerer drin, die mir eben nur alle 1s den neuen Wert an die Rechnung weitergeben.
Funktioniert ja auch fast richtig.
Das Problem ist jetzt aber, dass ich in Block A Ergebniss X Berechne. In Block B berechne ich mit X Ergebniss Y. Und in C berechne ich Z mit Hilfe von Y.
Das Problem is halt wenn ich jetzt X,Y,Z immer erst mit einem Takt einlese, es 2 Takte braucht bis sich Ergebnbis X auf Z auswirkt.
Und diese Verzögerung verfälscht mir meine weiteren berechnungen, da nicht alle Formeln in einem Takt mit den aktuellen Ergebnissen abgearbeitet werden.
Ist das jetzt einigermaßen verständlich? Kp vll denk ich auch komplett flasch und der fehler liegt woanders. Aber das ganze funktioniert halt ohne verzögerer perfekt. Nur halt viel zu schnell
Und dein Bsp. versteh ich nicht. dein S&H ist irgedwie unnötig,, da dein INC ja taktabhängig ist. UNd helfen tuts mir leider nicht, da ich ja durch meine analogverz. ja schon ne entsprechende Funktion implementiert habe. Ich hab das auch schon durch nen S&H ersetzt ändert aber leider wegen oben beschriebenem Problem nix.
Profilab kann einfach nicht mit diesen internen rückführungen und berechnungen arbeiten. Halte ich z.b. die Schaltung an und starte erneut bekomme ich Werte jenseits von Gut und Böße, da irgendwo noch irgendwie werte gespeichert sind.
mir ist schon klar das er 25mio mal 1*6 rechnen kann. solange er 1*6 rechnet ändert sich das Ergebnis nicht.
Deswegen habe ich auch Verzögerer drin, die mir eben nur alle 1s den neuen Wert an die Rechnung weitergeben.
Funktioniert ja auch fast richtig.
Das Problem ist jetzt aber, dass ich in Block A Ergebniss X Berechne. In Block B berechne ich mit X Ergebniss Y. Und in C berechne ich Z mit Hilfe von Y.
Das Problem is halt wenn ich jetzt X,Y,Z immer erst mit einem Takt einlese, es 2 Takte braucht bis sich Ergebnbis X auf Z auswirkt.
Und diese Verzögerung verfälscht mir meine weiteren berechnungen, da nicht alle Formeln in einem Takt mit den aktuellen Ergebnissen abgearbeitet werden.
Ist das jetzt einigermaßen verständlich? Kp vll denk ich auch komplett flasch und der fehler liegt woanders. Aber das ganze funktioniert halt ohne verzögerer perfekt. Nur halt viel zu schnell
Und dein Bsp. versteh ich nicht. dein S&H ist irgedwie unnötig,, da dein INC ja taktabhängig ist. UNd helfen tuts mir leider nicht, da ich ja durch meine analogverz. ja schon ne entsprechende Funktion implementiert habe. Ich hab das auch schon durch nen S&H ersetzt ändert aber leider wegen oben beschriebenem Problem nix.
Profilab kann einfach nicht mit diesen internen rückführungen und berechnungen arbeiten. Halte ich z.b. die Schaltung an und starte erneut bekomme ich Werte jenseits von Gut und Böße, da irgendwo noch irgendwie werte gespeichert sind.
Re: Simulation allg. möglich? (sim. frequenz problem)
Hoi miau,
wegen den noch gespeicherten Werten:
kann es sein, dass Du die Voreinstellungen gesetzt hast ? (während Laufzeit: Werkzeug - Optionen - es gibt Einstellungen speichern oder laden)
Ich weiss aber nicht, ob sich das auch auf Zustandsgrössen bezieht. -> ausprobieren.
Gruss Thomas
wegen den noch gespeicherten Werten:
kann es sein, dass Du die Voreinstellungen gesetzt hast ? (während Laufzeit: Werkzeug - Optionen - es gibt Einstellungen speichern oder laden)
Ich weiss aber nicht, ob sich das auch auf Zustandsgrössen bezieht. -> ausprobieren.
Gruss Thomas
Curiousity makes us progress !
Re: Simulation allg. möglich? (sim. frequenz problem)
gute idee, ändert aber leider nix.
wenn ich jetzt z.b. nen INC Baustein nehme, und die Schaltung dann Stope, ist beim Start immernoch der alte Wert drin.
Da hilft anscheinend nur nen ResetOnPower oder wieß heißt.
edit:
kurzes update...fragt mich net warum aber mit dem set&hold funktionierts doch einigermaßen. warum auf einmal weiß nur der teufel *grml*
einigermaßen, da der s&h ja immer nen wert durchgibt wenner auf high is. deswegen rechnet er dann nen bissl schnell.
ich hab jetzt nen pulstimer genommen und muss nen bissl an der high zeit rumspielen, das der graph gescheit aussieht.
aber immerhin funktionierts jetzt zu 95% so wie wir wollten^^ danke nochmal an alle
achja falls mir noch einer sagen kann wie ich die schaltung resete wenn ich auf stop gedrückt hab wäre ich echt happy^^
so muss ich das projekt jedesmal neu öffnen
wenn ich jetzt z.b. nen INC Baustein nehme, und die Schaltung dann Stope, ist beim Start immernoch der alte Wert drin.
Da hilft anscheinend nur nen ResetOnPower oder wieß heißt.
edit:
kurzes update...fragt mich net warum aber mit dem set&hold funktionierts doch einigermaßen. warum auf einmal weiß nur der teufel *grml*
einigermaßen, da der s&h ja immer nen wert durchgibt wenner auf high is. deswegen rechnet er dann nen bissl schnell.
ich hab jetzt nen pulstimer genommen und muss nen bissl an der high zeit rumspielen, das der graph gescheit aussieht.
aber immerhin funktionierts jetzt zu 95% so wie wir wollten^^ danke nochmal an alle
achja falls mir noch einer sagen kann wie ich die schaltung resete wenn ich auf stop gedrückt hab wäre ich echt happy^^
so muss ich das projekt jedesmal neu öffnen
Re: Simulation allg. möglich? (sim. frequenz problem)
Wenn ich das alles richtig verstehe geht es hier um REKURSIVE Berechnungen.
So wird´s gemacht...
So wird´s gemacht...
ABACOM support
Re: Simulation allg. möglich? (sim. frequenz problem)
Danke, Abacom für diese Schaltung,
und auch an miau für das aufgebrachte Problem, hab hiermit wieder echt was gelernt !
Beste Grüsse von Thomas
und auch an miau für das aufgebrachte Problem, hab hiermit wieder echt was gelernt !
Beste Grüsse von Thomas
Curiousity makes us progress !
Re: Simulation allg. möglich? (sim. frequenz problem)
Hallo miau
Mein Beispiel sollte das verdeutlichen .
Wer mit Speicherprogrammierten Steuerungen arbeitet ( S7 ...) hat ständig damit zu kämpfen .
Werde einlesen und Zeitlich verarbeiten . Dies geht auch nur schritt für schritt.
Die Überlegung wann berechnet und wann das Ergbnis kommt ist halt nun mal Eins nach dem Anderem.
Berechnen > übernehmen > nächste Berechnung > .....
Gruß Gerhard
Mein Beispiel sollte das verdeutlichen .
Wer mit Speicherprogrammierten Steuerungen arbeitet ( S7 ...) hat ständig damit zu kämpfen .
Werde einlesen und Zeitlich verarbeiten . Dies geht auch nur schritt für schritt.
Die Überlegung wann berechnet und wann das Ergbnis kommt ist halt nun mal Eins nach dem Anderem.
Berechnen > übernehmen > nächste Berechnung > .....
Gruß Gerhard