PLC Auslastung optimieren

Zuviel Werbung?
-> Hier kostenlos registrieren
Also kann ich festhalten dass, um die CPU-Last zu senken, ich verschiedene fest laufende Task benötige (kein einziger davon freilaufend), auf die ich meinen Code entsprechend klug aufteile.
Am besten wäre dann vermutlich noch eine PLC mit Mehrkernunterstützung?!

Schade, ich hatte gehofft, dass es eventuell noch andere Wege geben würde.
 
Mehrkern-Prozessoren sind immer gut :cool: - aber eyh hör auf jetzt, sonst platzt noch bei einigen die Siemens-Brille.:twisted:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oje Leute, aus welchem Jahrundert seid Ihr denn entsprungen?:eek:
Aus dem Jahrhundert, in dem die PLC das Laufen lernte! ;)

Mehrere Prozessoren parallel "prozessieren" zu lassen, war eher keine Option und zyklische Programme waren deshalb ein Super-"WorkAround". In der Wirkung nicht schlechter als ZeitScheibenTechnik, aber unkompliziert und mit ohne Overhead.
Ich werde immer kribbelig, wenn ich höre, "da nimmste noch eine Task mit einer kurzen ZyklusZeit dazu für die zeitkritischen Aufgaben und evtl. eine Task mit einer laaangen ZyklusZeit für die Aufgaben, die nicht so eilig fertig werden müssen und gut is". Das ist irgendwo ganz richtig gemeint, aber kein RundumSorglosPaket, das man unreflektiert umsetzen kann, ohne sich in neue Probleme zu stürzen.
Die "LuftPolster", in denen sich zusätzliche Tasks ausbreiten können, ohne die vorhandene[n] Task aus dem gewohnten/erwarteten Takt zu bringen, sind nun mal begrenzt.
Die Überlegung, für unterschiedliche Tasks teilerfremde ZyklusZeiten zu wählen, ist auch nur AugenWischerei. Die zeitlichen Abstände, in denen ZyklusZeiten aus dem Ruder laufen, vergrösseren sich dann zwar, aber der NutzungsGrad der nutzbaren LuftPolster verschlechtert sich dementsprechend.

Sync-Lock-Mechanismen? Ja, schon gehört. Aber die zaubern doch keine zusätzlichen LuftPolster herbei und sie automatisieren auch nicht das optimale Ausnutzen der vorhandenen!? Sie helfen, sich keine zusätzlichen DatenInkonsistenzen einzufangen. Oder hat sich das seit dem letzten Jahrhundert geändert? :confused:
 
Sync-Lock-Mechanismen? Ja, schon gehört. Aber die zaubern doch keine zusätzlichen LuftPolster herbei und sie automatisieren auch nicht das optimale Ausnutzen der vorhandenen!? Sie helfen, sich keine zusätzlichen DatenInkonsistenzen einzufangen. Oder hat sich das seit dem letzten Jahrhundert geändert?

Alles richtig, aber das Wichtigste vergessen: Sie ermöglichen erst die Aufgabenprorisierung über unterschiedlich schnelle Tasks. Wobei es aber auch noch eine andere Möglichkeit gibt: Variablen immer nur in dem selben Task beschreiben. Die anderen Tasks lesen, kopieren um und arbeiten erst dann damit.


Aus dem Jahrhundert, in dem die PLC das Laufen lernte! ;)

Ich bin auch Jahrgang 1975. Meine ersten Entwicklungsprojekte liefen auf 8bit Prozessoren, programmiert in Assembler. Ja, ich weiß wie es damals war. Die SPS-Programmierung habe ich noch auf der S5-Steuerung gelernt. Doch bin ich nie stehen geblieben. in den 2000er habe ich begonnen die S7, soweit es möglich war, objektorientiert zu programmieren. Das war damals schon in Bezug auf Nutzen und Aufwand ein Quantensprung. 2005 habe ich zusätzlich mit TwinCAT begonnen. Ein System, das von dem Entwicklungsstand und den Möglichkeiten voll meinen Nerv getroffen hat. Heute habe ich mich u.a. spezialisiert auf hochperformante Steuerungen und Geschwindigkeit. Du brauchst da nicht kribbelig werden. Wenn man es richtig implementiert hat es echte Vorteile. Das würde jetzt aber den Rahmen sprengen.

Ich beobachte mit Sorge, wie viele meiner Kollegen einfach nicht mehr mit der Zeit mitkommen und noch programmieren wie vor 30 Jahren, flach und global und mit Merkern.:sm10: Wenn ich jetzt noch mit Mehrkernprozessoren beginne platzt warscheinlich einigen die Birne. Oder XFC, steuern und erfassen zwischen den SPS-Zyklen Nanosekunden-genau.



Warum die Sorge? Weil ich der Meinung bin, dass Maschinensoftware von Fachleuten programmiert werden sollte, die ein technisches Verständnis und einen Blick für die möglichen Gefährdungen haben. Es drängen immer mehr Informatiker :sc2: den Bereich vor, die zwar OOP prima verstehen und leben, aber keine Ahnung von Echtzeit-Programmierung haben. Aber OOP hat auch enorm viele Vorteile.

Ich kann nur jedem SPS'ler dringen raten, die neue Welt nicht zu verteufeln :sm14: sondern mit den alten Erfahrungen zu kombinieren. Dann kommt was dabei raus, was kein Informatiker mitbringen kann. Einfach offen bleiben für den aktuellen Stand. Nur so können wir die Informatiker zurückdrängen, die nur noch in UML und State Machines denken.

Hast Du schon vererbt, implementiert und über Interfaces Daten ausgetauscht? Hardware in der Instanz direkt angebunden. Syncmachines optimiert. :shock:



Ich bin auch noch Anwendungsprogrammierer - einer der wenigen, die beide Welten (SPS und Informatik :sb3: ) gleichermaßen gut verstehen. Und gelernter Energielektroniker bei der Siemens AG 1991-1994.

So das war jetzt genung off-topic.
 
Zuletzt bearbeitet:
Also kann ich festhalten dass, um die CPU-Last zu senken, ich verschiedene fest laufende Task benötige (kein einziger davon freilaufend), auf die ich meinen Code entsprechend klug aufteile.
Am besten wäre dann vermutlich noch eine PLC mit Mehrkernunterstützung?!

Schade, ich hatte gehofft, dass es eventuell noch andere Wege geben würde.
Prinzipiell ist das der richtige Weg, aber Rechenleistung herbeizaubern kannst Du mit Multitasking auch nicht. Wenn Du z. B. eine Task mit 1 ms und eine zweite mit 10 ms laufen lässt, wird die langsame Task in jedem Zyklus 10 mal durch die schnelle Task unterbrochen. Die langsame Task hat also gar nicht 10 ms zur Verfügung, sondern nur das, was die schnelle Task übrig lässt. Und der Rest der PLC, z. B. Sytemdienste oder die Kommunikation mit deinem Programmier-Laptop hat nur die Zeit, die beide Tasks übrig lassen.
Wie asci25 schon geschrieben hat, musst Du das Ganze von der Hardware aus angehen. Festlegen, wie schnell Dein schnelles Programm reagieren muss, die Zykluzeit entsprechend vorwählen und dann dafür sorgen, dass das Programm genügend Zeit für die übrigen Aufgaben lässt. Wenn das nicht möglich ist, dann ist der Rechner einfach zu schwach.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
zu diesem Thema kommt sicherlich noch ein Aspekt hinzu:
Multicore
Wenn man ne SPS verwendet die mehrere Cores unterstützt, kann man relativ einfach die Last eben auch auf verschiedene Kerne verteilen.
Damit lassen sich also z.B Visu und Alarme/Trend auf einen bestimmten Core binden und Motion oder auch Feldbusse auf andere Cores verteilen.
Könnt ihr ja mal mit Control WIN ( das ist die SPS die mit CODESYS mitkommt) oder auch dem Raspberr PI ausprobieren um einfach ein Gefühl dafür zu bekommen,
was man damit rausholen kann. ;-)
Grüße
 

Anhänge

  • Multicore1.jpg
    Multicore1.jpg
    48,2 KB · Aufrufe: 25
  • Multicore2.jpg
    Multicore2.jpg
    172,5 KB · Aufrufe: 29
Zuletzt bearbeitet:
Zurück
Oben