-> Hier kostenlos registrieren
Hallo
Ich habe eine Frage zum Thema übergabe von DB's. Ich habe einen Aufruf eines FC's, der Auruf ist in AWL.
Den FC selber will ich in SCL programmieren. Der FC soll jeweils einen Achsdatenbaustein bedienen (lesen und schreiben), pro Instanz wird eine andere Achse angesteuert. Beim Aufruf will ich jeweils nur den DB der betreffenden Achse übergeben, intern im FC möchte ich eigentlich mit den UDT-Symbolen des DB's programmieren. Alle Achsbausteine sind mit dem selben UDT erstellt. Gibt es hierfür eine Möglichkeit? Kann ein DB als VAR_IN_OUT definiert werden?
Ich habe momentan nur folgende Lösung gefunden, leider ohne symbolischen zugriff (da eine neue Sicht mit "AT" nicht funktionniert):
FUNCTION FC94 : VOID
VAR_INPUT
bdbAxisDB: Block_DB;
bRegelImpulsfreigabe, // [BOOL] 0=Keine Freigabe / 1=Regel-und Impuls
bKeineAchssperre:BOOL; // [BOOL] 0=Achssperre aktiv / 1=Freigabe
END_VAR
// Regel- und Impulsfreigabe setzen
bdbAxisDB.DBX2.1:=bRegelImpulsfreigabe;
bdbAxisDB.DBX21.7:=bRegelImpulsfreigabe;
// VorschubHalt setzen
bdbAxisDB.DBX4.3:= NOT bKeineAchssperre;
END_FUNCTION;
Ich habe eine Frage zum Thema übergabe von DB's. Ich habe einen Aufruf eines FC's, der Auruf ist in AWL.
Den FC selber will ich in SCL programmieren. Der FC soll jeweils einen Achsdatenbaustein bedienen (lesen und schreiben), pro Instanz wird eine andere Achse angesteuert. Beim Aufruf will ich jeweils nur den DB der betreffenden Achse übergeben, intern im FC möchte ich eigentlich mit den UDT-Symbolen des DB's programmieren. Alle Achsbausteine sind mit dem selben UDT erstellt. Gibt es hierfür eine Möglichkeit? Kann ein DB als VAR_IN_OUT definiert werden?
Ich habe momentan nur folgende Lösung gefunden, leider ohne symbolischen zugriff (da eine neue Sicht mit "AT" nicht funktionniert):
FUNCTION FC94 : VOID
VAR_INPUT
bdbAxisDB: Block_DB;
bRegelImpulsfreigabe, // [BOOL] 0=Keine Freigabe / 1=Regel-und Impuls
bKeineAchssperre:BOOL; // [BOOL] 0=Achssperre aktiv / 1=Freigabe
END_VAR
// Regel- und Impulsfreigabe setzen
bdbAxisDB.DBX2.1:=bRegelImpulsfreigabe;
bdbAxisDB.DBX21.7:=bRegelImpulsfreigabe;
// VorschubHalt setzen
bdbAxisDB.DBX4.3:= NOT bKeineAchssperre;
END_FUNCTION;