Aktionen von Funktionsblöcken in ST bei B&R

Pippen

Well-known member
Beiträge
95
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Ich komme aus der CoDeSys/Beckhoff Welt und bin mich am Einarbeiten in die Entwicklungsumgebung von B & R.
Ich programmiere ausschliesslich in ST.

Von CoDeSys bin ich es mir gewohnt, dass man Funktionsblöcke mit Hilfe von Aktionen strukturieren kann.
Dies habe ich aber im Automation Studio nirgends finden können. Es gibt zwar Aktionen, die gelten
aber auf Programmebene.

Wie mache ich dies nun bei B & R?
 

uncle_tom

Well-known member
Beiträge
627
Punkte Reaktionen
161
Bei Funktionsblöcken gibt´s bei B&R keine Aktionen.
Die Aktionen bei den Programmen gibt´s auch erst seit AS3.

Die FB-Unterstützung ist bei B&R meiner Meinung nach sehr schlecht gelöst - hier könnte sich B&R mal bei Codesys ein bissel was abschauen:

Funktionsblöcke kann man bei B&R mit AS3 nur innerhalb bzw. zugehörig zu einem Programm im Projekt hinterlegen.
Programmübergreifende bzw. Projektweitgültige FB´s können nur über eine Bibliothek eingebunden werden.
 

Bitmanipulator

Well-known member
Beiträge
121
Punkte Reaktionen
21
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Pippen,

wenn ich das richtig verstanden habe, werden Funktionsblöcke und Funktionen in Bibliotheken zusammengefasst um Datenkonsistenz und einen problemlosen Export/Import zu gewährleisten. Aktionen werden hingegen in Programmen verwendet, damit man Programmcode, der evtl. auch häufiger verwendet werden soll, im eigentlichen Programm zu verbergen. Halt durch das Einfügen der Aktion.

Grüße
 
OP
P

Pippen

Well-known member
Beiträge
95
Punkte Reaktionen
3
Wir SW-Entwickler hier in unserer Firma verwenden Aktionen in Funktionsblöcken zur Strukturierung und Kapselung. Das heisst, die Funktionsblöcke entsprechen
im Prinzip einer Klasse. Die Aktionen (bei CoDeSys) der Funktionsblöcke entsprechen den Methoden der Klasse.

Bsp.
Funktionsblock = fbFeeder
Aktionen: Init, Run, SetSpeed, Start, Stop, ...

Von diesem fbFeeder können dann verschiedene Instanzen erzeugt werden: FB_InputFeeder, FB_OutputFeeder, ...
Diese Instanzen laufen dann völlig eigenständig.

Wie macht man sowas im AS in ST?
 

trinitaucher

Well-known member
Beiträge
1.364
Punkte Reaktionen
248
Ich komme aus der CoDeSys/Beckhoff Welt und bin mich am Einarbeiten in die Entwicklungsumgebung von B & R.
Was ist der Sinn dahinter? :ROFLMAO: (Scherz)

Bei Funktionsblöcken gibt´s bei B&R keine Aktionen.
[...]
Funktionsblöcke kann man bei B&R mit AS3 nur innerhalb bzw. zugehörig zu einem Programm im Projekt hinterlegen.
Programmübergreifende bzw. Projektweitgültige FB´s können nur über eine Bibliothek eingebunden werden.
Habe zwar nur CoDeSys/Beckhoff-Erfahrung, aber Ich dachte solche Dinge seinen herstellerübergreifend genormt und mittlerweile eine Selbstverständlichkeit.
Dann scheint man mit CoDeSys/Beckhoff wohl enorm viele Freiheiten zu genießen. :-?
 

Bitmanipulator

Well-known member
Beiträge
121
Punkte Reaktionen
21
Baut doch einfach eine Bibliothek, die die Funktionen/Funktionsbausteine Init, Run, SetSpeed usw. implementiert. Dann noch einen Baustein fbFeeder, in dem Init, Run, SetSpeed in einer State Machine abgebildet sind. Anschließend die Instanzen InputFeeder, OutputFeeder erzeugen und die Welt ist in Ordnung.

Grüße
 
OP
P

Pippen

Well-known member
Beiträge
95
Punkte Reaktionen
3
Da es aber bei anderen Fu-blöcken (z. Bsp. fbLifter) auch wieder einen Init, Run, SetSpeed usw. gibt und die Daten dann total anders aussehen, sehe ich das nicht als gute Lösung an. Denn
dann müsste man die Funktionen InitFeeder, RunFeeder, SetSpeedFeeder nennen, damit man die Implementierung unterscheiden kann, oder?
Da man ja leider nicht vererben, ableiten kann wird das ziemlich mühsam.
 

Bitmanipulator

Well-known member
Beiträge
121
Punkte Reaktionen
21
Zuviel Werbung?
->Hier kostenlos registrieren
Mit jeder neuen Instanz von fbFeeder werden natürlich auch neue Instanzen von Init, Run, SetSpeed usw. im Speicher angelegt. Vererbung im Sinne von OOP würde das Problem m.E. auch nicht lösen. Falls es aber Ambitionen gibt, kann man bei B&R auch in C++ programmieren.
 
OP
P

Pippen

Well-known member
Beiträge
95
Punkte Reaktionen
3
Dass für jede Instanz von fbFeeder dann auch Instanzen von Init, Run, SetSpeed usw angelegt werden ist mir klar. Ich brauche aber für einen anderen Fu-Block (z. Bsp. fbLifter) auch wieder Init, Run, SetSpeed, usw. Diese
funktionieren aber anders als Init, Run, SetSpeed von fbFeeder. Da sich fbLifter und fbFeeder in den Daten und auch im Ablauf ziemlich stark unterscheiden, von der Grundstruktur her aber nicht.
Ja, wahrscheinlich werden wir den Weg gehen, viele Sachen in C++ zu programmieren. Das muss man aber bei B&R dazukaufen.
 

carepicha

Well-known member
Beiträge
49
Punkte Reaktionen
1
Hallo Zusammen,

Das ist zwar eine ältere Diskussion, aber nach wie vor Brandaktuell. Hat sich in der Zwischenzeit etwas geändert beim AS?
@Pippen, wie habt ihr es nun umgesetzt?

Danke für eure Rückmeldung(en)
 
Oben