Morgen Ralle,
die Werte landen im DB_AXIS, da dieser als letzter vor dem Aufruf des FC geöffnet war.
Folgender Bausteinaufruf wird vorgenommen:
In dem FB wird der DB_Init über die Integer uiParaDB geöffnet.Code:AUF #DB_Axis CALL "IFX_INIT_PARAMETER" //FC uiAxisDB :=#DB_Axis_NR //IN uiParaDB :=#DB_Init_NR //IN bExecute :=#Init_Start //IN bErrorOut :=DBX190.0 //OUT bDone :=DBX190.1 //OUT bBusy :=DBX190.2 //OUT uiErrorPos :=DBW192 //OUT
Wenn jetzt in dem FC die Out-Variablen beschrieben werden, wo landen die Werte tatsächlich, im DB_Axis, oder im DB_Init ???
ralle
Morgen Ralle,
die Werte landen im DB_AXIS, da dieser als letzter vor dem Aufruf des FC geöffnet war.
Hi Ralle,
Die daten dürften im DB_Axis landen.
Zunächst liegen sie ja nach Abarbeitung des FC über das CALL-Makro in den Lokaldaten des aufrufenden Bausteins.
Da das CALL-Makro im aufrufenden Baustein abläuft, kopiert es dann die Lokaldaten in den letzten geöffneten Baustein (Axis)
Gruß Jörg
Das haut irgenwie nicht hin, AG ging in STOP, Bereichlängenfehler beim schreiben/lesen im FC, genau an der Stelle, an der in die Out-Parameter geschrieben werden soll. (Der DB_INIT ist um einiges kürzer als der DB_AXIS).
Ich vermute, daß doch in den DB_Init (zuletzt im IFX-FC geöffneter DB)geschrieben werden sollte, der war natürlich zu kurz und peng!
So geht es jetzt, wobei alle Variablen mit "#" Temp-Var sind, ist aber irgendwie nicht gerade schön. Die Temp-Var's fülle ich nur der Vollständigkeit halber vorher wieder auf, sind ja Outputs.
Code:AUF #DB_Axis U DBX 190.0 = #Init_Error U DBX 190.1 = #Init_Done U DBX 190.2 = #Init_Busy L DBW 186 T #Number_Para L DBW 188 T #Count_Para CALL "IFX_INIT_PARAMETER" uiAxisDB :=#DB_Axis_NR uiParaDB :=#DB_Init_NR bExecute :=#Init_Start bErrorOut :=#Init_Error bDone :=#Init_Done bBusy :=#Init_Busy uiErrorPos :=#Init_Error_pos number_Para:=#Number_Para Count :=#Count_Para AUF #DB_Axis U #Init_Error = DBX 190.0 U #Init_Done = DBX 190.1 U #Init_Busy = DBX 190.2 L #Number_Para T DBW 186 L #Count_Para T DBW 188
Ups...![]()
wieder was g'lernt !![]()
hat es eigentlich einen bestimmten Grund, daß Du keine voll-qualifizierten Parameter an den FC schreibst ?
Dann könntest Du dir doch das hin- und herkopiere sparen !
Gruß Jörg
@jogi
Ja, hat einen Grund, der FC wird auch wieder von einem anderen FC aufgerufen, der einen DB übergibt, also geht ein qualifizierter Zugriff leider nicht. (17 Schrittmotoren --> 1 Standardbaustein zum Ansteuern) Der IFX_Init ist ein mitgelieferter Baustein, ich wollte nicht darin rumändern, falls die Herstellerfirma mal eine neue Version liefert.
ralle
@Ralle,
im Diagnose U-stack steht der zu letzt geöffnete DB.
Ich hätte jetzt auch auf Jogis Meinung getippt. Kann man mal sehen.
pt
Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.
Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.
Bookmarks