CoDeSys V3.2: Interfacenutzung nicht möglich

Tobi
2008-06-17
2008-06-19
  • Tobi - 2008-06-17

    Hallo zusammen,

    wie einige vielleicht wissen bin ich auch jemand, der versucht mit der V3 zu arbeiten. Soweit klappt auch alles gut bisher, aber aktuell stehe ich vor einem Problem, bei dem ich nicht weiter komme:

    Ich habe eine Applikation erstellt, diese getestet und möchte diese nun in verschiedene Bibliotheken auslagern.

    Der Aufbau der Applikation ist aktuell so, dass es eine Haupt-POU gibt, die eine gewisse Anzahl Kinder-POU's verwaltet. Das ist über zwei von mir definierte Interfaces möglich. Die Haupt-POU kann also die Methoden der Kinder-POU's aufrufen, wenn das Kind vorher der Haupt-POU bekannt gemacht wurde. Das Funktioniert soweit auch gut.

    Jetzt möchte ich einen Schritt weiter gehen und die Applikation in mehrere Teilbibliotheken aufbrechen. (Eine für die Haupt-POU und mehrere für die Kinder-POU's). Dazu muss ich natürlich eventuell vorher verwendete Bib's in den neuen Bib's einbinden. Auch die Interfaces müssen in jeder Bib bekannt sein. So weit so gut.

    Ich erhalte aber immer diesen Fehler, dass wenn ich ein Kind mit der Haupt-POU verbinden will:

    "Typ <instanzname_fba> kann nicht in Typ <name_interface_a> konvertiert werden"</name_interface_a></instanzname_fba>

    Allerdings implementiert FBA das Interface A... Und ohne Bib geht es.

    Es kann ja nur ein Namensauflösungsproblem sein, aber ich habe leider gar keinen Ansatz, wie ich es lösen könnte...

    Danke im Vorraus, falls jemand eine Idee hat.

     
  • Anonymous - 2008-06-19

    Originally created by: Bernhard Werner

    Hallo Tobi,

    so ganz klar kann ich Dir - ohne das Projekt zu sehen - keine Antwort geben.

    Allgemein ist eine der Hauptschwierigkeiten bei Bibliotheken die Versionierung. Es kommt häufig vor, dass eine Bibliothek mit mehreren Versionen installiert wurden. Typen in Bibliotheken mit unterschiedlicher Version sind nicht kompatibel. Man muss also genau darauf achten, dass alle Bibliotheken dieselbe Basisbibliothek anziehen.

    Das andere, was neu ist im Gegensatz zur 2.3: jede Bibliothek muss für sich übersetzbar sein, jede Bibliothek muss also alle Typen kennen mit der sie arbeitet. In der 2.3 konnte man die Bibliotheken im Projekt zusammenmischen, in der 3x müssen Projekte für sich übersetzbar sein.

    Am einfachsten Testet man das mit "Überprüfe Pool Objekte".

    Bernhard Werner

     
  • Tobi - 2008-06-19

    Hallo!

    Bernhard Werner hat geschrieben:
    Hallo Tobi,
    so ganz klar kann ich Dir - ohne das Projekt zu sehen - keine Antwort geben.

    Das hatte ich befürchtet, kann das aber gut nachvollziehen. Ist wirklich etwas schwierig zu erklären, muss ich sagen.

    Bernhard Werner hat geschrieben:
    Man muss also genau darauf achten, dass alle Bibliotheken dieselbe Basisbibliothek anziehen.
    Das andere, was neu ist im Gegensatz zur 2.3: jede Bibliothek muss für sich übersetzbar sein, jede Bibliothek muss also alle Typen kennen mit der sie arbeitet.

    Und genau dort lag auch mein Problem:

    Ich hatte die Interface-Definition in Bibliothek eingefügt. Daher konnte er diese natürlich nicht korrekt auflösen. Wenn man in der Bibliothek der Kind-POU die Bibliothek der Haupt-POU mit anziehen lässt und die Interfaces nur einmal (nämlich in der Haupt-POU) definiert, klappt es.

    Eigentlich ja ganz logisch - aber man muss halt erstmal drauf kommen und etwas Gehirnschmalz hineinstecken.

    Danke für die Antwort!

     

Log in to post a comment.