Zeitproblem Rechenzelle allgemein

Dieser Bereich dient dem Austausch über geplante oder bereits realisierte Projekte - von Anwender zu Anwender.
Antworten
Karsten
Beiträge: 25
Registriert: Dienstag 7. Juni 2011, 10:50

Zeitproblem Rechenzelle allgemein

Beitrag von Karsten » Freitag 7. September 2012, 06:29

Hallo zusammen,

ich habe in einem meiner Projekte Probleme mit der Abarbeitungszeit und habe mich an die Optimierung gemacht.
Auffällig ist hier der Baustein "Formel universal". Die Beispiele in der Anlage hab ich unter Nutzung der Formel universal und unter konsequenter Vermeidung Derselben realisiert. Die Funktion beider Varianten ist gleich: Extrahiere aus einer 3-stelligen Zahl den Wert für Hunderter-, Zehner- und Einzerstelle.
Auf meinen PC ergibt sich zwischen beiden Varianten ein Unterschied in der Abarbeitungsgeschwindigkeit von ca. 1:70!!!!! Von dieser Größe war ich doch überrascht.
Daraus kann ich nur die konsequente zukünftige Meidung der Formel universal schlußfolgern.
So, jetzt meine Frage: Gibt es vergleichbare Erfahrungen mit anderen Elementen / Bausteinen? Z.B. Den Eingang eines Gatters negieren oder einen Negator vorschalten.......?

Viele Grüße
Karsten
Dateianhänge
Test_Rechnung.prj
(3.47 KiB) 309-mal heruntergeladen
Test_Rechnung_universal.prj
(3.05 KiB) 315-mal heruntergeladen

Karsten
Beiträge: 25
Registriert: Dienstag 7. Juni 2011, 10:50

Re: Zeitproblem Rechenzelle allgemein

Beitrag von Karsten » Freitag 7. September 2012, 08:01

Hallo,

ich habe mal einige Sachen probiert. Hier die Ergebnisse:
einfaches Gatter (AND oder OR) mit externen Negator verglichen mit negierten Anschluß ca. 40% langsamer. Also möglichst den PIN des Gatters negieren.
Taktgeber 1Hz realisiert mit Taktgeber 0,1s ...1000s verglichen mit Taktgeber 1Hz...1kHz ca. 3-mal so schnell.
Werden durch andere Nutzer ähnliche Ergebnisse erreicht?

Viele Güße
Karsten

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: Zeitproblem Rechenzelle allgemein

Beitrag von tom_g » Samstag 8. September 2012, 09:02

Hoi Karsten,

ich habe zwar keine so aufschlussreichen Vergleiche wie Du (super !), aber die Hinweise in Abacoms Objekthilfe erklären wohl die Effekte:

Formel universell: "Dieses Bauteil enthält einen Formelinterpreter. "
Dieses Objekt kann eine lange Reihe von (wenigen) Funktionen und Operatoren, und mit vielen Eingängen korrekt interpretieren. Es braucht im Hintergrund daher Zeit für diese Interpretation, wohl jeden Zyklus, was Du ja konstatiert hast. Je nach Komplexität der Formel wird somit die diskrete Ausprogrammierung schneller sein.

Würde die Formel kompiliert (im Unterschied zur Interpretation) könnte die Ausführung beschleunigt werden. Dieser Weg führt zur Programmierung von DLLs, was PL ja unterstützt.


Es gibt auch noch
Math und den Hinweis: "Dieses Bauteil implementiert verschiedene mathematisch Funktionen und arbeitet schneller als eine interpretierte Formel."

Grüsse von Thomas
Curiousity makes us progress !

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: Zeitproblem Rechenzelle allgemein

Beitrag von tom_g » Sonntag 9. September 2012, 09:06

Hi miteinander,

Hier die Formel in ProfiLua interpretiert.
Auf meinem Rechner macht der Interpreter immerhin 30kHz "durch".

Für mein Interesse: Was erreicht Ihr hiermit für Zykluszeiten ?

(die drei Files müssen im selben Directory liegen, das lua-File kann editiert werden, Aenderungen kommen nach Stop/Neustarten der Simu zur Wirkung)

File 1.prj muss zu 1.lua umbenannt werden.

Gruss Thomas
Dateianhänge
1.prj
(500 Bytes) 268-mal heruntergeladen
calc_test.prj
(3.13 KiB) 276-mal heruntergeladen
Zuletzt geändert von tom_g am Montag 10. September 2012, 07:25, insgesamt 4-mal geändert.
Curiousity makes us progress !

compander
Beiträge: 657
Registriert: Dienstag 14. Oktober 2008, 17:06
Wohnort: Markt Schwaben

Re: Zeitproblem Rechenzelle allgemein

Beitrag von compander » Sonntag 9. September 2012, 10:30

Hallo Thomas.

Leider kann ich die "calc_test.zip" nicht entzippen.

Zu den Beipielen: Frequenzteiler.prj.
Vor geraumer Zeit stand das Problem an, eine Frequenz (hier 10 Hz) durch 75 und durch 1000 zu teilen.
- am einfachsten geht dies durch die Nutzung der Formel. Dies führte jedoch dazu, daß die Simulationsgeschwindigkeit auf 18 kHz sank.
Daraufhin habe ich nach Alternativen gesucht und diese realisiert.
- T75. Lösung mittels AVG. Sim-Speed: 305 kHz. Im dem Moment, wo die Led leuchtet: ca. 200 kHz.
- D75. Lösung mittels Zähler. Sim-Speed: 195 kHz. Im dem Moment, wo die Led leuchtet: ca. 140 kHz.

Gilt natürlich alles nur für meinen Rechner! Und nur für Sim.: FAST. Generatorfrequenz einheitlich 10 Hz.

Anbei noch das damalige Beispiel mit Formel (absichtlich mit Formel universell).

Gruß vom C :shock: mpander.
Dateianhänge
F75.prj
(1.59 KiB) 278-mal heruntergeladen

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: Zeitproblem Rechenzelle allgemein

Beitrag von tom_g » Sonntag 9. September 2012, 11:12

Hallo zusammen,
weiss nicht, was die Ursache war;
habe nun die drei nötigen Files in meiner obigen Nachricht diskret deponiert: 1.prj muss zu 1.lua umbenannt werden.

Gruss Thomas
Curiousity makes us progress !

compander
Beiträge: 657
Registriert: Dienstag 14. Oktober 2008, 17:06
Wohnort: Markt Schwaben

Re: Zeitproblem Rechenzelle allgemein

Beitrag von compander » Sonntag 9. September 2012, 11:34

Hallo Thomas.

Nun läßt sich leider die .dll nicht in die "calc_test.prj" importieren. (Fehlermeldung)
(daran auch die Umbenennung der 1.prj nichts geändert)
Oder: ich mache etwas falsch.......

Gruß von C :shock: mpander.

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: Zeitproblem Rechenzelle allgemein

Beitrag von tom_g » Sonntag 9. September 2012, 15:50

Hoi Compander,

zuerst die 1.prj in 1.lua umbenennen;
erst dann PL starten; DLL importieren, dann sollte es klappen.
Beim Importieren "baut" sich PL die IOs grafisch in den Funktionsblock auf (bei jeder DLL ist das so, hier (bei ProfiLua) ist zudem die Datei 1.lua für diese Definition nötig.
Das kannst Du mit einem Texteditor den LUA-Script 1.lua einsehen.

Grüsse von Thomas
Curiousity makes us progress !

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: Zeitproblem Rechenzelle allgemein

Beitrag von tom_g » Sonntag 9. September 2012, 20:47

Hallo miteinander,

ich habe Probleme mit uploaden.
Die DLL ist sicher beschädigt, sie muss grösser sein. (232531 Bytes)

BTW: Sie IST ProfiLua 5.1, incl. Bibliotheken (von Askr)

Ich melde mich morgen wieder.
Gute Nacht allerseits und Grüsse Thomas
Curiousity makes us progress !

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: Zeitproblem Rechenzelle allgemein

Beitrag von tom_g » Montag 10. September 2012, 07:37

Guten Morgen zusammen,

erneute Versuche, die ProfiLua-dll ins Forum hochzuladen, sind derzeit erfolglos.

Wer es trotzdem mit meinem "Speedtest" versuchen will, kann sich auf http://www.askrprojects.net/software/pr ... a_V09c.zip verschiedene sehr interessante Beispiele laden, welche alle die benötigte DLL mitführen.

Nach dem Entzippen: In jedem Subdirectory der Beispiele befindet sich die nötige DLL: ProfiLua_V09.dll.
Man kann diese zu "meinen" beiden Files hinzukopieren (ins gewählte Subdirectory, z.B. ein neues Beispiele-Dir).
Dann erst ProfiLab starten, und diese DLL importieren. Sichern ! Im Import-Moment sucht sich ProfiLab aus dem Skript-File 1.lua die Funktionsblock-Konfiguration heraus und baut daraus die Anzahl IO und deren Namen im PL-Projekt-Blatt ein.

Hoffe, hiermit könnt Ihr den Versuch machen.

Schönen Tag und Grüsse von Thomas
Curiousity makes us progress !

abacom
Site Admin
Beiträge: 3242
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: Zeitproblem Rechenzelle allgemein

Beitrag von abacom » Mittwoch 12. September 2012, 09:07

"Zeitproblem Rechenzelle allgemein"
... um was geht es hier?
ABACOM support

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: Zeitproblem Rechenzelle allgemein

Beitrag von tom_g » Mittwoch 12. September 2012, 09:52

Morgen Abacom,

Thema wieviel Rechen-(zyklus)-zeit in PL verschlingt welche Methode:

es wurden in diesem Thread

1. "Formel universell",
2. "diskrete" Formulierung,
3. eine DLL mit der Formel und
4. ProfiLua mit einem lua-Script (script wird interpretiert in der PL-Lua-DLL)

zur Formelberechnung anhand eines kleinen Rechenbeispiels hinsichtlich Zykluszeit qualitativ verglichen.
Dabei löst die diskrete Formulierung die Formel am Schnellsten, gefolgt von der DLL, von ProfiLua, am Schluss die universelle Formel.
(Jedem natürlich selbst überlassen, welche Kriterien in seiner Anwendung wichtig sind)

Können Sie auch was Wissenswertes bezüglich Optimierung der Abarbeitungsgeschwindigkeit in einer Anwendung hinzufügen ?

Freundliche Grüsse von Thomas
Curiousity makes us progress !

abacom
Site Admin
Beiträge: 3242
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: Zeitproblem Rechenzelle allgemein

Beitrag von abacom » Donnerstag 13. September 2012, 13:17

Danke für die Klarstellung. Ihre Forschungsergebnisse decken sich mit meinen Erwartungen.
ABACOM support

Antworten

Zurück zu „PROFILAB Kundenprojekte und Aufgabenstellungen“