SPS Programmierung: Beckhoff CX8091, TwinCat2

Paddi299

Level-1
Beiträge
21
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe mich als Hiwi an der Uni für ein neues Projekt angeboten, bei dem es darum geht, eine Lichtinstallation (LED_matrix) mittels einer SPS zu steuern.
Nun ist es aber so, dass ich mir dafür alle Kenntnisse erst aneignen muss. Wenig Erfahrung wurde mit einem Arduino und dem WS2812B Streifen gesammelt.
Deswegen hier ein paar Einstiegsfragen:

Das Beckhoff System https://www.beckhoff.com/CX8091/ lässt sich laut dieser Seite über TC2 programmieren. Ist es auch möglich TC3 dafür zu benutzen?
Für die LED Controller wurde folgender Beispielcode gefunden, mit dem das System zuerst getestet und dann um weitere Funktionen erweitert werden soll:
(z.B. Ansteurung eines ganzen oder mehrerer LED-Stränge anstatt einer LED.)

Code1.jpg Code2.jpg Visual.jpg

Dieser soll eine einzelne LED mit durchlaufenden Farbwechseln ansteuern. Manche Elemente wie die Variablentypen erkenne ich wieder, allerdings weiß ich oft nicht, was die Befehle tun.
Wie wird denn in TC2 programmiert. Ist das eine eigene Sprache oder um welche Art von Code handelt es sich hier?

Mit dem Arduino konnte ich mit wenig Aufwand tolle Effekte erzielen, da es schon viele fertige Codebausätze gab. Mit der Einbindung der passenden Library hat praktisch ein Stichwort genügt, um einenn komplizierten Befehlssatz aufzurufen. Funktioniert das in diesem Beispiel hier ähnlich? Der Algorithmus ist ja total kurz und mir scheint es, als würde das meiste Geschehen "ungesehen im Hintergrund ablaufen".

Ich wäre dankbar für die Klärung der ersten Fragen und würde mich über weiteren Input oder Vorschläge zur Vorangehensweise freuen.
 
Das Beckhoff System https://www.beckhoff.com/CX8091/ lässt sich laut dieser Seite über TC2 programmieren. Ist es auch möglich TC3 dafür zu benutzen?
Nein, der CX ist nur unter TC2 programmierbar. Warum soll es unbedingt dieser sein?
Für die LED Controller wurde folgender Beispielcode gefunden, mit dem das System zuerst getestet und dann um weitere Funktionen erweitert werden soll:
(z.B. Ansteurung eines ganzen oder mehrerer LED-Stränge anstatt einer LED.)

Anhang anzeigen 50384 Anhang anzeigen 50385 Anhang anzeigen 50386

Dieser soll eine einzelne LED mit durchlaufenden Farbwechseln ansteuern. Manche Elemente wie die Variablentypen erkenne ich wieder, allerdings weiß ich oft nicht, was die Befehle tun.
Naja, sobald ein Startsignal anliegt läuft ein Timer los, sobald der Timer abgelaufen ist werden die Helligkeitswerte der einzelnen Farben je nach dem ob die Toggle Variable der jeweiligen Farbe TRUE oder FALSE ist erhöht oder verringert, wobei die Schrittweite bei jeder Farbe unterschiedlich ist. Das Ganze wird dann über eine DMX-Klemme an den Controller des LED-Streifens gegeben. Außerdem gibt es noch eine Visu, wenn man in dieser auf "Stop" klickt kann man die Helligkeit der einzelnen Farben über die Schieberegler beeinflussen. Dieses Beispiel ist allerdings verbesserungswürdig.
Wie wird denn in TC2 programmiert. Ist das eine eigene Sprache oder um welche Art von Code handelt es sich hier?
TC2 und auch TC3 basieren auf Codesys und Codesys setzt wiederum die EN61131-3 in der die Programmiersprachen beschrieben werden mehr oder minder um. Neben dem von Dir hier angeführten strukturiertem Text gibt es noch AWL als textorientierte Sprache und grafische Programmiersprachen.
Mit dem Arduino konnte ich mit wenig Aufwand tolle Effekte erzielen, da es schon viele fertige Codebausätze gab. Mit der Einbindung der passenden Library hat praktisch ein Stichwort genügt, um einenn komplizierten Befehlssatz aufzurufen. Funktioniert das in diesem Beispiel hier ähnlich? Der Algorithmus ist ja total kurz und mir scheint es, als würde das meiste Geschehen "ungesehen im Hintergrund ablaufen".
Dann gibt es vermutlich eine spezielle Bibliothek beim Arduino für Lichtsteuerungen, das von Dir Algorithmus genannte Programm ist sehr einfach und macht, was die Lichtsteuerung angeht, nichts im Hintergrund.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Der CX8091 würde vom zuständigen Wimi ausgewählt. Das System steht ja schon, es geht nur darum, es auch passend anzusteuern.
An der SPS hängen mehrere Klemmen, die zu DMX Multipixx Controllern führen, an denen wieder die WS2812B LED Streifen hängen.
Es sind 15 LED-Streifen mit jeweils 150 LEDS, was 2250 in der Matrix ergibt. Jede LED wird über 3 Kanäle angesteuert, womit 6750 Werte zu steuern wären.

Es geht nun darum den Code so zu erweitern, dass nach und nach mehr Funktionen möglich sind.
1 LED soll Farben wechseln, dann ein LED Strang, Mehrere LED Stränge, Mehrere Stränge unterschiedlich etc. pp.

Das mit der Toggle Variable und den Farbwerten habe ich soweit verstanden, denke ich. Was hingegen noch völlig unklar ist, das ist die Umwandlung eines Farbwerts in ein Steuersignal für den DMX Controller, bzw. gar zur LED.
Das sind die Funktionen, die ich hier im Hintergrund vermutet habe. Teils sollte das aber auch über den System Manager geschehen, denke ich.
Mich würde vor allem noch die Bedeutung der letzten beiden Absätze interessieren (arrDMXProcessData[2] := byGreen;) Das scheint ja auf den DMX Controller zu beziehen.

Im Moment habe ich jedenfalls das Problem, dass bei Programmstart zwar die Regler der Visualisierung hoch und runtergehen und sich auch die Werte für die Farben ändern, die LED-Wand aber nur den ersten Pixel eines jeden Stranges in einer Farbe ohne Wechsel anzeigt.
 
Zuletzt bearbeitet:
In Zeile 38 - 48 wird das Ganze über den FB an den DMX-Bus geschickt, hier müsste dann vermutlich etwas angepasst werden, allerdings kenne ich mich mit DMX nicht aus und kann nich sagen was.
 
Hast du dir schon die Doku zur DMX Bibliothek im Beckhoff Infosys angeschaut? Hier ist der =Link=. Und informiere dich ein wenig, wie DMX funktioniert (die Grundlagen sollten reichen -> Kollege Google). Wenn es keinen Standard zur Ansteuerung von LED für DMX gibt (kenne mich da nicht aus) sollte in der Doku zu den LED Streifen auch irgendwo vermerkt sein, welche Daten sie benötigen.
 
Zurück
Oben