SCL : Instanz in Instanz

Larry Laffer

Super-Moderator , User des Jahres 2008-2009
Teammitglied
Beiträge
14.426
Reaktionspunkte
3.282
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
da bin ich doch heute bei der Inbetriebnahme über etwas "Nettes" gestossen :
Ich habe einen selbsterstellten SCL-FB in dessen STAT-Bereich ich einen anderen FB integriert habe - nicht Tolles - hat man ja schon öfter mal gemacht. Bei mir hat diese Instanz nun sich am Ende des STAT-Bereiches befunden. Den Compiler hat das nicht weiter gestört - warum auch. Will ich nun aber den Baustein in der SPS benutzen, dann schmiert mir diese ab mit eine unbrauchbaren Fehlermeldung, die auf den eingebundenen FB hindeutet. Da ich mir irgendwann keinen Rat mehr wußte habe ich dann hinten den FB im Speicher noch eine Dummi-Variable (hier vom Typ DWORD) angelegt und nun läuft der Baustein (und die Steuerung).
Hat das schon mal sonst jemand beobachtet ?
Ich hatte jetzt leider keinen Gelegenheit zu testen, ob sich das auch in AWL so verhalten würde.
Es ist manchmal schon merkwürdig.

Ein schönes WE
LL
 
Hallo Larry,

einzig plausible Erklärung wäre, wenn der Online-FB mehr Instanzdaten belegen würde als der Offline-FB. Diesen Fehler würde ich dir allerdings nicht zutrauen ;) .


Gruß, Onkel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
naja, jeder kann sich mal verzählen ;)

kommt drauf an, was der baustein macht, adressierst du darin indirekt auf den bausteineigenen stat bereich?
standalone müßte der baustein, wenn ich mich mal auf onkel dagoberts vermutung einlasse, einen bereichslängenfehler fabrizieren ...

aber wahrscheinlich ist es ein baustein, den du schon tausendfach eingesetzt hast und hast ein schönes scl-feature gefunden :ROFLMAO:
 
... anscheinend könnt ihr meine Beobachtung nicht bestätigen ...

Zur Vervollständigung :
Ich hatte den besagten Fehler mit einem von mir selbst erstellten "Standard"-FB, den ich tatsächlich sowohl Stand-Alone wie auch eingebunden schon tausendfach eingesetzt habe. Es funktioniert generell wenn ich den Baustein in der Instanz nicht am Ende stehen habe. Auch zwei in der Deklaration hintereinanderliegende Bausteine beharken sich nicht. Als möglichen Grund erkenne ich im Augenblick nur, dass die letzten Delarationen meines Unter-FB's 3 Bool-Variablen sind. Wenn das der Grund wäre, dann würde das bedeuten, dass der Adressbereich des Haupt-I-DB's nicht vollständig belegt wird - das ist aber m.E. an der Haaren herbei gezogen. Ich werde mich daran aber am Montag auf jeden Fall noch einmal versuchen ...

Gruß
LL
 
mich würde in erster linie interessieren ob du diese beobachtung mit AWL auch machst (ich hab letzte woche einen interessanten klammerfehler in SCL gesehen - ich trau dem zeuch nimmer ;) )
das mit den bool-variablen am ende kann ich von AWL her ausschließen, vielleicht liegt hier tatsächlich das übersetzungsfeature von SCL, so abwegig ist das leider nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Siemens tut sich mit ST/SCL wohl wirklich schwer, liegt wohl an der Massenträgheit des Riesen. Dabei hätte das echt Potential.

Zum Thema: Was passiert denn mit der Dummy Variable? Schreibt der FB denn da irgendwas rein? Das wäre ja ein worst case.
Wie lautet denn die unbrauchbare Fehlermeldung?
 
anscheinend könnt ihr meine Beobachtung nicht bestätigen ...
...

Doch, kann ich...

Es ist mir bei SCL schon öfter aufgefallen, dass es sich mit der Reihenfolge der statischen Daten ein wenig "unkooperativ" zeigt.

Habe öfter mal an einem FB rumgespielt, Tons und Tofs als Multiinstanzen eingefügt, und danach noch andere diverse statische Variablen angehängt. Es befanden sich die Tons und Tofs mitten im Block der statischen Variablen. FB geladen, -> SPS meldet irgendeinen Fehler. Hin und herprobiert... irgendwo muss der Fehler ja liegen.... :confused:

Ton und Tof Instanz ans Ende der Variablen gelegt... und tataaaa sofort gehts wieder. Wieder in der Reihenfolge verschoben und sofort ist der Fehler wieder da. Und, nein, ich hatte keine indirekten Zugriffe auf meine statischen Daten.

Also nur wundern, und nicht ärgern:ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Grubba:
Mit den TON's hatte ich im Zusammenhang mit SCL diese Probleme noch nicht. Da macht es anscheinend auch nichts aus, ob sie am Ende oder irgendwo anders im STAT-Bereich stehen.

@Zotos:
Der Wert des Dummy wird nicht verändert. Jedenfalls nicht, soweit von mir beobachtet. Er muß einfach nur da sein. Das diese Variable beeinflusst wird schliesse ich auch insofern aus, da es auch noch einen anderen Baustein gibt in den ich den ("besagten") FB eingebaut habe und dieser zickt nicht herum - dort ist der FB allerdings in der Mitte des STAT-Bereichs.
Die Fehlermeldung besagt, dass auf die erste Variable der IN-Schnittstelle nicht zugegriffen werden kann. Das ist in dem Fall ein INT, der von dem aufrufenden FB übergeben wird. Nach Anhängen des Dummy's besteht dieses Problem dann nicht mehr ...

@VL:
Ob das nur ein SCL-Fehler ist werde ich in der nächsten Woche auf jeden Fall noch checken - ich weiß ja nun, was ich machen muß. Ich werde auch checken, ob das Problem auch vom Tisch ist, wenn ich am Ende des STAT-Bereiches des FB nicht mehr die 3 BOOL's sondern einen INT oder so stehen habe. Ich bin ja nun neugierig.

Ich werde auf jeden Fall berichten ... :rolleyes:

Gruß
LL
 
@Larry,
den original Quellcode wirst du wahrscheinlich nicht veröffentlichen wollen/können/dürfen. Ist es möglich, den besagten Fehler irgendwie nach zu bauen?

Welche SCL-Versionen verwendet ihr denn?
Wie sind die Compilereinstelluingen (Objektcode optimieren usw.)?
Und wie ruft ihr den "obersten" FB auf (FUP?)?


Gruß, Onkel
 
Hallo Onkel,
natürlich kann ich den FB hier einstellen - ich glaube allerdings nicht an einen Fehler in dem FB. Das müßten wir dann nur auf Montag vertagen.

Die Compiler-Einstellungen sind "Objekt-Code optimieren" und "Debug-Info erstellen" und "geschachtelte Kommentare zulassen" auf aktiv.

Ich verwende aktuell SCL 5.3 SP4 - ich habe mir aber das SP5 nun auch mal heruntergeladen. Dazu habe ich aber noch kein Ergebnis (also ob der "Fehler" damit auch auftritt).

Den obersten FB rufe ich mit AWL auf ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Böse Welt ...
ich weiß jetzt nicht, was im Ergebnis-Code nun anders geworden ist - jedenfalls tritt das oben genannte und wunderschön reproduzierbare Ergebnis nun nicht mehr auf.
Ich muß allerdings nun gestehen, dass ich am Freitag in meinem Wahn gleich wieder 2 Sachen auf einmal gemacht habe - SP5 installiert und im Projekt die Bausteinkonsistenz geprüft mit Option "Alles übersetzen". Ich tippe allerdings eher auf SP5 ...

Gruß
LL
 
Zurück
Oben