10.11.2009 02:46 | |
Beigetreten: 07.10.2005 Letzter Bes: 19.10.2024 Beiträge: 3024 Bewertung: (1054) |
Hallo viktory da hat der Wuestenraeuberschon recht wenn er sagt "... einen Aufruf wie call FB3, DB[MW2] funktioniert meines Wissens nach nicht" Du kannst aber ueber einen kleinen "Kunstgriff"erreichen was Du willst und das Prinzip dafuer ist folgendes: 1.) Oeffne"direkt"den IDB (Instanz DB) des FB's (dies ist die DB number die Du "berechnen" willst). 2.) Versorge dieIN und IN_OUT parameter des FB's mit Werten/Variablendurch direktes schreiben in den (DB2 register geoeffneten) IDB. 3.) Rufden FB ohne IDB (Instanz DB) auf("UC" call in englischer mnemonic). 4.) Nimm dieIN_OUT und OUT parameter des FB's vom IDB und versorge dieVariablen damit. Anbei ist ein Bild das hoffentlich mehr als tausend Worte sagt undhilft aus dem obengesagten mehr Sinn zu machen (hab's im englischen dokumentiert, sorry). P.S: Das Bildbeispiel ruft FB2 von FB1 auf und zeigt ausserdem wie man den IDB des FB1 wiederherstellt nachdem FB2 fertig ist (und wie FB2 "mit Absicht" die DB register veraendert). Man darf in diesem Zusammenhang natuerlichnicht vergessen zu erwaehnen, das ein sogennanter Multi-Instanz Aufruf des FB2 eleganter waehre und eventuell auch fuer DeineAnwendung nuetzlich sein koennte. Ich hoffe es hilft |
Cheers |
|
Für diesen Beitrag bedanken sich2 Benutzer |
10.11.2009 03:27 | |
Beiträge: 139 Bewertung: (25) |
sehr klug |
11.11.2009 08:29 | |
Beigetreten: 07.10.2005 Letzter Bes: 19.10.2024 Beiträge: 3024 Bewertung: (1054) |
Hallo nochmal viktory die Aussage verwirrt mich jetzt schonein bisschen und ich bin mir nicht so sicher was Du jetzt eigentlich machen oder erreichen willst. Also, erstmal ist ein DB ein DB, der Unterschied zwischen "global" und "IDB" liegtgrundsaetzlich nur in der Handhabung. Global DB: Du bastelst ihn zusammen und jeder Block darf frei drauf zugreifen. Instanz DB: Du bastelst die Variablen Deklaration des FB's zusammen (IN, OUT, IN_OUT & STAT) und der IDB ist eine Kopie davon die jetzt das "Gedaechtnes" des FB's wird (und ideallerweise nur vom FB zu dem er gehoert benutzt wird). Wenn Dumeinen "Kunstgriff" benutzen willst um verschiedene IDB's fuer denselben FB zu benutzen, musst Du schon beachten das alle (I)DB's die Struktur des FB's haben. Wenn Du einfach nur einen DB an den FBuebergeben willst, geht das natuerlich wiel einfacher mit dem "Block_DB" IN parameter.
kannst Du schon,das Interface des FB's ist ja auf jeden fall bekannt und auch wenn der FB "Know how protected" ist kannstDu seine STAT Variablen sehen wenn Du einen IDB fuer ihn erzeugst und Dir den IDB anguckst.. Wie schon oben gesagt,ich mir nicht so sicher bin was Du eigentlich genau erreichen oder machen willst . Sollte Dein Nonlin FB nicht urheberechtlich geschuetzt schein, wuerde es helfen wenn Du ihn hier hochlaedst und Deine konkrete Anwendung beschreibst. Ich hoffe dieshilft |
Cheers |
|
Folgen Sie uns auf