Supervisor
Level-1
- Beiträge
- 93
- Reaktionspunkte
- 2
-> Hier kostenlos registrieren
Hallo zusammen,
ich dachte, ich hätte die Anwendung schon beschrieben!?
Guckst du hier:
Nur, um das ganze nochmal zu verdeutlichen:
-Es existiert ein FB (genannt: Sendebaustein). Dieser ist vom Code her unantastbar. Die Nummer dieses FBs ist standardmäßig "FB2", kann aber je nach Umstand jede andere beliebige Nummer haben. Also z.B. FB10 oder FB15 etc.. Das gleiche gilt für den symbolischen Namen. Dieser Name ist ja nicht fest und kann in beliebige Bezeichnungen umbenannt werden.
-Ich will nun (eher gesagt: muss) einen zweiten FB oder FC erstellen (SDO-Baustein), der den FB2-Sendebaustein "benutzt". Dieser neue Baustein soll einen SDO-Transfer durchführen (expedited transfer, SDO download initiate => siehe Spezifikation "CANopen"). Dazu brauche ich ein paar wenige Eingangsparameter, die intern verarbeitet werden und an den FB2-Sendebaustein übergeben werden müssen. Da kommt jetzt die Angabe der FB-Nummer mit ins Spiel. Da die Nummer vom FB-Sendebaustein nicht fest ist, muss der SDO-Baustein doch wissen, welche Nummer der FB-Sendebaustein hat, damit er ihn intern aufrufen kann.
-Das ganze soll wiederverwendbar programmiert werden, also bibliotheksfähig (der FB2-Sendebaustein ist dies schon).
-Es existieren hinterher also zwei Bausteine: der bestehende FB-Sendebaustein und der neue SDO-Baustein
-es sind alle notwendigen Bausteine und InstanzDB in einer Bibliothek verfügbar (FB-Sendebaustein und sein InstanzDB, etc.)
-der neue SDO-Baustein soll dann flexibel in beliebigen Programmteilen zum Einsatz kommen (natürlich wird der FB-Sendebaustein und sein InstanzDB immer benötigt)
Ich hoffe, jetzt ist es ein wenig klarer geworden???
Grüsse!
ich dachte, ich hätte die Anwendung schon beschrieben!?
Guckst du hier:
Hi Larry,
danke für die Tipps! Das mit dem "BLOCK_DB" und "BLOCK_FB" habe ich bis jetzt noch nie ausprobiert. Da muss ich erst ein bischen rumprobieren. Klingt aber sehr interessant.
Als Multiinstanz geht das ganze aber auch nicht, da der aufzurufende FB nicht multiinstanzfähig ist. Und ich meine, bei Multiinstanzen müssen alle FB multiinstanzfähig sein (stimmt doch, oder?).
Symbolische Adressierng fällt auch weg, da der Baustein auch gerne mal vom Anwender einen anderen Namen bekommt.
Aber was zur Anwendung:
Es existiert ein FB (Sendebaustein) für ein Profibus-CAN-Gateway. Dieser Sende-FB nimmt als Eingangsparameter Eigenschaften einer CAN-Nachricht entgegen (z.B. ID-Nummer, DLC, Datenbytes 1 bis 8, etc.) und schreibt diese Daten an die A-Adressen des Profibus-CAN-Gateways, welches daraus eine CAN-Nachricht generiert.
Ich möchte nun einen Baustein erstellen, der für einen SDO-Transfer genommen werden kann (SDO als expedited transfer, CANopen). Mein SDO-Baustein nimmt also entsprechende Eingangsparameter (Node-ID, Index, Subindex, etc.) entgegen, verwurschelt die intern und übergibt diese Parameter an den Sendebaustein für das Profibus-CAN-Gateway. Dazu muss aber mein SDO-Baustein den Sendebaustein intern aufrufen. Und da fangen die Probleme an, weil alles eben bibliotheksfähig sein soll.
Gruß!
Nur, um das ganze nochmal zu verdeutlichen:
-Es existiert ein FB (genannt: Sendebaustein). Dieser ist vom Code her unantastbar. Die Nummer dieses FBs ist standardmäßig "FB2", kann aber je nach Umstand jede andere beliebige Nummer haben. Also z.B. FB10 oder FB15 etc.. Das gleiche gilt für den symbolischen Namen. Dieser Name ist ja nicht fest und kann in beliebige Bezeichnungen umbenannt werden.
-Ich will nun (eher gesagt: muss) einen zweiten FB oder FC erstellen (SDO-Baustein), der den FB2-Sendebaustein "benutzt". Dieser neue Baustein soll einen SDO-Transfer durchführen (expedited transfer, SDO download initiate => siehe Spezifikation "CANopen"). Dazu brauche ich ein paar wenige Eingangsparameter, die intern verarbeitet werden und an den FB2-Sendebaustein übergeben werden müssen. Da kommt jetzt die Angabe der FB-Nummer mit ins Spiel. Da die Nummer vom FB-Sendebaustein nicht fest ist, muss der SDO-Baustein doch wissen, welche Nummer der FB-Sendebaustein hat, damit er ihn intern aufrufen kann.
-Das ganze soll wiederverwendbar programmiert werden, also bibliotheksfähig (der FB2-Sendebaustein ist dies schon).
-Es existieren hinterher also zwei Bausteine: der bestehende FB-Sendebaustein und der neue SDO-Baustein
-es sind alle notwendigen Bausteine und InstanzDB in einer Bibliothek verfügbar (FB-Sendebaustein und sein InstanzDB, etc.)
-der neue SDO-Baustein soll dann flexibel in beliebigen Programmteilen zum Einsatz kommen (natürlich wird der FB-Sendebaustein und sein InstanzDB immer benötigt)
Ich hoffe, jetzt ist es ein wenig klarer geworden???
Grüsse!