B&R Funktionsbausteine/Funktionen

pec

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich schreibe gerade an meine Abschlussarbeit und bin in dem Zusammenhang zum ersten Mal mit B&R in Berührung gekommen. Ich programmiere in AS 3.0.71.31 ein PP420.

Meine Frage bezieht sich auf FBs und Funktionen. Den Zustand eines FBs oder einer Funktionen kann man meines Wissens während der Laufzeit (ohne in den Debug-Modus zu gehen) nicht anschauen. D.h. wenn eine selbstgeschriebene Funktion oder ein FB einen Fehler beinhaltet, kann ich bei laufender Maschine nicht feststellen an welcher Stelle der Fehler sitzt. Das sehe ich so richtig oder?

In meinem Fall ist es jetzt aber so dass die Maschine nicht einfach angehalten werden und im Debug-Modus betrieben werden kann. Von daher kommt es aus meiner Sicht gar nicht in Frage FBs oder Funktionen zu verwenden, da ich ja eigentlich nie sicher sein kann dass diese keine Fehler beinhalten. Aber es kann ja nicht die Lösung sein keine Funktionen und FBs zu verwenden!?
Die Folge davon wäre anstatt FBs Programme zu verwenden. Grundsätzlich ist ja ein Programm auch nichts anderes als ein FB. Allerdings würde dann mein Programm in dem Fall aus unzähligen Programmen bestehen. Das ist auch nicht wirklich die Lösung, die man sich wünscht.

Kann mir jemand einen Tip geben wie ich das am besten lösen kann?

Vielen Dank im Vorraus!

Gruß Martin
 
Hallo pec,

hast du schon den "normale" Task-Watch aufgerufen über die SW Konfiguration.Damit kannst du die Variablen in dem FB beobachten und auch steuern.

Gruß

adi5
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo adi5,

danke für deine Antwort. Ja die "Überwachung" der Variablen im Watchdog ist mir bekannt. Allerdings hab ich dann erst den Status der Ein- und Ausgangsvariablen, d.h. ich weiß das etwas falsch berechnet wird. An welcher Stelle das im FB oder in einer Funktion passiert weiß ich aber immer noch nicht. Je nach dem wie groß der FB oder die Funktion ist kann der Fehler sehr schwer zu finden sein.
Aber wie schon erwähnt glaube ich ist das bei B&R einfach so. Finde ich persönlich sehr schlecht gelöst, erschwert eine Fehlersuche unter Umständen sehr!
Für Tipps wie man das ganze umgehen kann oder wie man besser damit leben kann bin ich aber immer noch offen. Ich könnte mir auch gut vorstellen dass es schon erfahrene B&R-User gibt die genau mit dem Problem im Fehlerfall schon konfrontiert wurden --> wie gesagt bin für alle Tipps dankbar!

Gruß
 
Es gibt eine (wenn auch unschöne) möglichkeit, bei B&R auch das Programm in FUBs zu beobachten, allerdings nur im Einzelschrittmodus.
Man setzt einen Haltepunkt unmittelbar vor dem FUB-Aufruf, anschließend kann man mit "Einzelschritt" auch in FUB-Aufrufe reinspringen.
Ich weiß nicht ob das bei AS3 noch geht, bei AS2.x gings auf jeden Fall noch.

Noch ein Tipp:
Es ist ja möglich, Funktionen mit statischen Variablen anzulegen. Diese können allerdings nicht beobachtet werden, da sie einfach irgendwo am Stack liegen. In solchen Fällen sollten unbedingt Funktionsbausteine zum Einsatz kommen, weil dann auch die internen Variablen beobachtbar werden.

mfg Maxl
 
Guten Morgen Maxl,

danke für deine Antwort. Ja den Einzelschritt-Modus gibts es auch noch in AS 3. Allerdings ist das ja auch keine Lösung für mein Problem. Beim Einzelschritt-Modus würde meine Maschine ja auch schon stehen.
Ich habe inzwischen aber etwas gefunden, das zumindest in die Richtung von dem geht was ich suche. Ab AS 3 (wenn ich richtig informiert bin) gibt es so genannte "ACTION". Diese kann man in Programmen und Funktionsblöcken nutzen und soll zur Strukturierung des Programms beitragen. Im Prinzip ist eine ACTION ähnlich wie eine Funktion. Allerdings besitzt eine ACTION keine eigene Paramterliste. Sie benutzt den gleichen Scope wie der FB bzw. das Programm in dem sie eingesetzt wird. D.h. man kann auf alle Variablen zugreifen, die auch im FB bzw. dem Programm vorhanden sind.
Auf alle Fälle kann man den Zustand einer ACTION auch beobachten ohne den Einzelschritt-Modus oder ähnliches benutzen zu müssen.

Gruß pec
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ganz verstehe ich deine Fragestellung aber nicht...

Du hast eine Funktion / Funktionsblock?
Und der liefert dann falsche Werte in bestimmten Situationen,
die Ursache kann aber nicht im Debugmodus analysiert werden, weil die Steuerung nicht angehalten werden kann. Richtig?

Eine weitere Möglichkeit ist, im Variablen Trace des AutomationStudio die Eingänge und Ausgänge aufzuzeichnen, hier kommt man sehr oft Fehlern auf die Spur. (Hierzu wird die Laufzeitumgebung auch nicht beeinflusst...)

Ansonsten, ja, die Möglichkeit des AS 3 mit ACTIONS,
da kannst du Sourceteile in eigene Files geben.
Erhöht die Lesbarkeit des zyklischen Programmteiles deutlich, und die Übersichtlichkeit des Projektes wird auch verbessert.
 
Ja genau, die Fragestellung hast du richtig verstanden. Ob jetzt Funktionen oder Funktionsblöcke spielt dabei keine Rolle.
Die Frage war eher allgemein gedacht, ich arbeite mich ja gerade in AS und Strukturiert Text ein. Beim "spielen" in AS bin ich eben auf dieses Problem gestoßen und hab mich dann gefragt wie das ganze am einfachsten lösbar ist.
Die Trace-Aufzeichnung ist eine schöne Sache aber sie ist halt doch noch aufwändiger wie wenn ich direkt in den FB bzw. die Funktion springen könnte. Inzwischen habe ich mich aber auch damit abgefunden.
 
In der Hinsicht hinkt B&R wirklich noch weit hinterher - das nervt mich teilweise auch gewaltig.

Wenn man sich da mal Codesys bzw. Twincat anschaut, da kann man jeden FB mit beliebiger Instanz Online im Code beobachten. Ausserdem kann man hier anders als bei B&R einen FB bzw. einen FC direkt im Projekt hinterlegen und muss nicht unbedingt eine Library anlegen.

Wenn ich für B&R einen FB brauche, und der etwas umfangreicher und komplizierter ist, dann bin ich schon öfters den Weg gegangen, dass ich mir den Baustein in Twincat erstellt und ausgetestet habe. Denn fertigen getesteten Code hab ich dann in B&R ins AS übernommen.

In der Hinsicht, bin ich froh, dass ich B&R nicht so oft programmieren muss - Sorry aber wenn ich persönlich die Wahl hätte, dann würde ich Siemens und die Codesys-Ableger derzeit immer B&R vorziehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zu FUBs allgemein:
Normalerweise schreibe ich einen FUB immer zuerst als "Task" und nach erfolgreichen tests etc. wird das ganze in einen FUB/Library gepackt.

Im AS 3.0 sollten einige Neuerungen sein, auch bezüglich Funktionen / Funktionsblöcke.
Diese können da direkt zu einem Task erstellt werden, und müssen nicht mehr in einer Library sein.
Hab mich aber auch noch nicht genauer damit beschäftigt....
 
Im AS 3.0 sollten einige Neuerungen sein, auch bezüglich Funktionen / Funktionsblöcke.
Diese können da direkt zu einem Task erstellt werden, und müssen nicht mehr in einer Library sein.

ich programmiere auch noch mit V 2.6, da es vom Kunden so gewünscht ist.

Hab mir aber mal die 3.0 besorgt und ne virtuelle aufgezogen - ich hab bezüglich FB´s FC´s keine Unterschiede feststellen können.
Der erste Eindruck vom 3er AS ist meiner Meinung nach grauenhaft - unübersichtlich, versteckte Menüs, etc....
 
Zurück
Oben