B&R Verwenden
Hallo Leute,
ich habe eure Berichte mal durchgelesen. Dazu möchte ich sagen, dass ich selbst vor einigen Jahren bei BR gearbeitet habe und seit fünf Jahren als Selbständiger Programmierer unterwegs bin. Natürlich mit BR Hardware.
Nun, so wie ich das BR System ausreize bzw. der Anwendung folgend gezwungen werde dies zu tun, gibt es laut B&R nur etwa 2% der Anwendungen.
Ein kurzer Überblick was und wieso ich das mit B&R mache
1. Dynamische Generierung der Hardwarekonfiguration
Seit AS3.0 - auch mit bestimmten Tricks in AS 2x möglich - kann man unterschiedliche Hardwarekonfigurationen nebeneinander im AS erzeugen und diese entsprechend verwalten. Ich verwende diese Funktion lediglich wegen unterschiedlicher CPU´s. Den Rest - d.h. die Hardwarekonfiguration der IO - Module und der Antriebe erzeuge ich (d.h. das arconfig.xml (.br) und das iomap.xml (.br) erzeuge ich über einen beliebigen, von mir bestimmten Hardwareimport (via .csv) selbst. Dies ist notwendig, da eine Software für ganz unterschiedliche Hardwarekonfigurationen besteht. Dies bringt aber eine weitere Verfahrensweise mit sich:
2. Dynamische IO - Konfiguration (bzw. Variablenzuordnung)
Die in (1) angesprochene Methode benötigt ja auch eine IO - Zuordnung in die Variablen. Dieses kann zum einen auch der in 1 genannte csv import definieren, zum anderen wird für jedes logische IO automatisch eine Callbackliste bereitgestellt ( Ich nenne das den PV Manager). An diese Callbackliste kann ich die Information an beliebig viele Stellen in der Software verteilen - d.h. vielfaches Pollen auf ein Eingangsereignis reduziert sich auf lediglich ein if. Die ganzen Variablen (egal ob BOOL, UINT etc.) sind in einer Liste und können mit einer Methode auch invertiert und zu einem Ausgang umgebaut werden (wenn das IO Modul das hergibt z.b. DM 1321).
3. Verwendung von Ansi C bzw. jetzt dann C++
Die in 1 und 2 beschriebenen Eigenschaften wurden alle noch in Ansi C erstellt. Jedoch mit vollständigem OOP Ansatz. Man kann dann nur den Self - Pointer nicht verstecken und muß ein bisschen aufpassen. Andere Programmiersprachen würden das nicht so einfach - wenn überhaupt - hinbekommen.<br>Um es nochmals zu verdeutlichen, die Softwarefunktionalitäten werden alle nach Notwendigkeit Instanziert. Alles vollständig Dynamisch. Der "Werkzeugkasten" ist gar nicht so umfangreich aber mächtig. Er enthält: Heapverwaltung für Speicherallocierung, Listen, Callback, Tree und einige Logicbausteine.
4. Antriebstechnik mit Acopos, Acopos Multi, Acopos Mikro etc.
Auch die Anzahl der notwendigen Antriebe ist bei mir dynamisch einstellbar (durch in 1 beschriebene Methode). So bald ich meine Maschinenkonfiguration eingelesen habe, werden die benötigten Antriebsobjekte instanziert und sobald als möglich läuft jeweils der Global INIT ab. Danach werden sie weiteren Objekten zugeordnet, welche diese für ihre Zwecke entsprechend weiter Konfigurieren - z.B. Parametertabellen download, Zyklische Telegramme einstellen etc.
Selbst die Verknüpfung auf Ereignisse mit Eingängen bzw. setzen von Ausgängen ist kein Problem da die Methode in (2) besteht.
Zusätzlich sind die Anwendungen sehr Zeitkritisch. Hier hilft mir von Zeit zu Zeit der Support in Eggelsberg von B&R. Mit Hilfe von ihm bin ich bis jetzt immer weiter gekommen. Teilweise war es auch erforderlich, mit dem Entwickler dann direkt zu sprechen. Diesen Kontakt hat der Support - oder die ehemaligen Kontakte - dann hergestellt.
Mit der Visualisierung habe ich selbst auch schon einiges Umgesetzt. Ab und dann bin ich schon an die Grenzen des machbaren gestoßen, habe aber jedoch bis jetzt immer eine Lösung gefunden. Versteht das o.g. aber nicht als Abschreckung. Viele Anwendungen sind oft Standalone Lösungen und ohne großen Anspruch zu lösen. Dafür ist das gegebene im AS auch sehr leicht zu benutzen und man kommt sehr schnell an sein Ziel.Ich bin mit meiner Software nun seit fast 10 Jahren bei diesem Kunden unterwegs. Der Objektorientierte Ansatz, soweit heruntergebrochen wie ich ihn verwende hat durchaus eine beachtliche Initial Programmierzeit. Ist der Werkzeugkasten aber einmal verfügbar, schlägt mich so schnell keiner mit der möglichen Funktionalität, denn ich kann quasi alles mit jedem Verknüpfen, da ich keine Variablen mehr habe, die alle Softwareteile irgend wie wissen müssen, sondern ich verwende nur Methoden der Objekte.
Der Support (ich bemühe nur den in Eggelsberg) ist gut geschult und wird ständig weiter geschult. Es ist jedoch wichtig, das er dein Anliegen verstanden hat. Dieses Problem hatte ich von Zeit zur Zeit. Mit deren Hilfe bin ich - wie schon gesagt- immer weiter gekommen. Auch wenn irgend welche Bug´s im Betriebssystem auftauchen, können die euch meistens sehr schnell weiterhelfen, auch wenn sie mal kurz die Entwicklertruppe auf die Finger klopfen müssen damit diese den Fehler lösen und eine neue Version erstellen.
Fazit: Ich habe bis jetzt (abgesehen von C++) den ganzen Umfang meiner Tätigkeit und Anforderung vom Kunden mit einem Programmiertool - das Automation Studio - lösen können. Seit einiger Zeit sogar gibt es die ganze SAFE - Welt als PlugIN für das Studio. Was braucht man noch?? Und eines sollte uns doch klar sein: Wo Licht ist, ist auch Schatten. Soll heißen, auch B&R hat hier und da mal Probleme.
Gruß und schönen Abend noch
Xylon