Codesys Bibliothek in FUP geschrieben aber in ST aufrufen

said_ma

Level-2
Beiträge
8
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich habe eine Bibliothek in FUP geschrieben und kann sie auch problemlos nutzen, solange das Hauptprogramm welches die Bibliothek aufruft, ebenfalls in FUP geschrieben ist. Wenn ich allerdings ST als Sprache im Hauptprogramm nutze, funktioniert der Baustein der Bibliothek nicht. Die internen Signal reagieren nicht auf die eingehenden Signale. Ich kann beispielsweise sehen, dass das EN eines Move-Baustein True gesetzt wird, allerdings die Variable nicht gesetzt wird.

Habt Ihr vielleicht eine Idee was ich da falsch mache?

Bedanke mich jetzt schonmal.
 

Anhänge

  • Screenshot 2024-03-21 160154.png
    Screenshot 2024-03-21 160154.png
    28,4 KB · Aufrufe: 30
Wie rufst du den die Bausteine in deinem ST Program auf? Es scheint als würdest du die Variablen nur schreiben aber den Baustein nicht aufrufen.
Gruss Samus
 
So sehen jeweils die Aufrufe und Zuweisungen aus!
 

Anhänge

  • Aufruf_in_FUP.png
    Aufruf_in_FUP.png
    67,3 KB · Aufrufe: 37
  • Zuweisung_FUP.png
    Zuweisung_FUP.png
    31,1 KB · Aufrufe: 36
  • Aufruf_in_ST.png
    Aufruf_in_ST.png
    61 KB · Aufrufe: 35
  • Zuweisung_ST.png
    Zuweisung_ST.png
    17,1 KB · Aufrufe: 36
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie schon richtig vermutet wurde rufst Du den Baustein PNE_parameter_config_0 in ST nie auf, sondern greifst nur auf die Variablen zu.
Ein Aufruf in ST wäre z.B.
Code:
PNE_parameter_config_0(getTSP10_PNE_ID := TSP10_PNE_ID, iBusVoltage := GVL.iBus_Voltage, init_data_confirmed := confirm_init_data);
oder wenn Du vorher alle Eingänge belegt hast:
Code:
PNE_parameter_config_0();
Und danach kannst Du dann, soweit es ein Funktionsbaustein ist, der Variablen new_encoder_resolution nach dem Aufruf den Wert zuweisen, oder direkt beim Aufruf:
Code:
PNE_parameter_config_0(getTSP10_PNE_ID := TSP10_PNE_ID, iBusVoltage := GVL.iBus_Voltage, init_data_confirmed := confirm_init_data, OutInitParameter.iNewEncoderResolution => new_encoder_resolution);
Nachtrag: Der zweite Vorschlag kann nicht funktionieren, weil der Wert der Ausgangsvariablen einem Element einer Struktur versucht wird zu zuweisen und das geht nicht.
 
Zuletzt bearbeitet:
Super, ich danke Euch allen für Eure Hilfe. Jetzt hat es geklappt. Allerdings weise ich jetzt alles auf die Weise zu und das funktioniert auch.
Code:
new_encoder_resolution := PNE_parameter_config_0.OutInitParameter.iNewEncoderResolution;
Wenn ich es auf diese Weise mache zeigt er mir einen Fehler an.
Code:
PNE_parameter_config_0(getTSP10_PNE_ID := TSP10_PNE.ID, iBusVoltage := GVL.iBus_Voltage, init_data_confirmed := confirm_init_data, OutInitParameter.iNewEncoderResolution => new_encoder_resolution);
 
Zuletzt bearbeitet:
Super, ich danke Euch allen für Eure Hilfe. Jetzt hat es geklappt. Allerdings weise ich jetzt alles auf die Weise zu und das funktioniert auch.

Wenn ich es auf diese Weise mache zeigt er mir einen Fehler an.
Sorry, ja das kann sein, weil der Rüchgabewert ja Teil einer Struktur oder so ist und das kann man dann nicht verwenden , das habe ich nicht bedacht.
 
Zurück
Oben