Hilfe, was mach ich falsch?

stupiduser

Level-1
Beiträge
34
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich bastel mir gerade einen Funktionsbaustein und habe nun folgendes Problem sobalt der FB mehr als einmal aufgerufen wird werden die Signale wohl intern kopiert und auf alle schaltungen mit dem FB kopiert.

Habe da wie man sehen kann den FB kopiert und auch alle Variablen mit einer 2 als endung versehen und es wird tro. kopiert.

Also ich bin mit meinem latein am ende, ist ebstimmt nen sau doofer fehler.. wäre schön wenn man mir helfen könnte...

Das Test0000 projekt ist als anhang dabei...

danke im vorraus..:)
 

Anhänge

  • Test0000.zip
    258,1 KB · Aufrufe: 20
Hast Du jedem FB Aufruf einen eigenen Instanz DB zugeordnet?
Oder es als Multiinstanz aufgerufen?
 
Hi,

leg doch deine Variablen mal vom temp in den stat Bereich. Dafuer ist ein FB ja eigentlich auch gedacht.

mfg
marlob
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
woher weisst du denn, dass der FB sich falsch verhält (ich habe mir das PRG bisher nicht angesehen) ?
Hast du dir den Status im FB oder im DB angesehen ?
Wenn der FB in deinem Programm 2x aufgerufen wird, dann kannst den den SDtatus des 2. Aufrufs nur online sehen, wenn du den 1. Aufruf verhinderst ...
 
ich habe mir die beiden FCS angeschaut und halt die Bits gesetzt die ich brauchte und ohne bei dem FC1 etwas zu machen kopiert er den zustand von FC2 oder auch teilnhemer 2 wie man es nennen will...

hab es halt bis jetzt nur simuliert....

auch mit allem unbeschriften udn unter verwendung 2 fast identischen FBS ( FB1 und FB2 , und je für die FCs je eigene iDBs ) kopiert er in der simulation den Zustand des anderen teilnehmers..

MW 0 = bit 0.1 und 0.5 aktiv für auto
wasser anforderung M5.0 aktiv

und dann sollte nur ein Teilnehmer z.B Start_San oder Start_back
annehmen, das was ich nun komisch finde ist, ohne es bei dem anderen zu machen geht er auch in SAN oder BACK modus ...

das kann doch net sein oder?
 
Hi,

leg doch deine Variablen mal vom temp in den stat Bereich. Dafuer ist ein FB ja eigentlich auch gedacht.

mfg
marlob
Ja, das kann so nicht funktionieren! Wenn Du aus den Temp`s Stat`s machst geht es warscheinlich.
Aus der Step7 Hilfe
Daten, temporär
Temporäre Daten sind Lokaldaten eines Bausteins, die während der Bearbeitung eines Bausteins im Lokaldaten-Stack (L-Stack) abgelegt werden und nach der Bearbeitung nicht mehr verfügbar sind.
 
sie sollen doch nur intern verarbeitet werden oder seh ich das falsch?

Es geht nicht darum, dass Deine TEMPs von kein anderen FB oder FC benutzt werden, TEMPs halten ihren Wert nur für einen Aufruf - also für einen Zyklus. Beim nächsten Aufruf (z.B. im nächsten Zyklus) sind die TEMPs in undefiniertem Zustand.
 
Hallo stupiduser.

Habe mir deinen FB mal angeschaut. Dabei ist mir fogendes aufgefallen. Im Netzwerk 1 lädst du deine Systemeinstellungen in das Lokalwort 0.
Code:
L     #Systemeinstellungen
T     LW     0

Im Netwerk 19 sicherst du nur das Lokalbyte 0 in die Systemeinstellugen
Code:
L     LB     0
T     #Systemeinstellungen

Das heißt es fehlt die der letzte Status der daten vom Lokalbyte 1. Außerdem wird die Sicherung nicht in den MW0 geladen, da deine Variable "Systemeinstellungen" eine IN Variable ist und keine INOUT Variable. Ändere also mal deine Variable in INOUT und probiere es noch einmal. Bei fragen stehe ich dir gerne zur Verfügung.
 
Trotzdem wird das nicht zuverlässig funktionieren. Im Netzwerk 4 wird z.B. lesend auf die Variable #SAN (L3.0) zugegriffen, ohne dass sie vorher beschrieben wurde. Das heißt, es ist reiner Zufall ob diese Variable den Zustand "1" oder "0" hat. Das gleiche ist mir noch bei einigen anderen Variablen aufgefallen.
 
Trotzdem wird das nicht zuverlässig funktionieren. Im Netzwerk 4 wird z.B. lesend auf die Variable #SAN (L3.0) zugegriffen, ohne dass sie vorher beschrieben wurde. Das heißt, es ist reiner Zufall ob diese Variable den Zustand "1" oder "0" hat. Das gleiche ist mir noch bei einigen anderen Variablen aufgefallen.

Da hast du schon recht. Er müsste seinen Systembereich von einem "WORD" auf "DWORD" legen oder er legt bestimmte Varibalen in den STAT Bereich des FB's, damit sie bis zum nächsten Aufruf ihren Zustand behalten.
 
Hast Du denn im FC1 beim Aufruf des FB1 den Instanz-Datenbaustein DB100 neu generiert? Und im FC2 beim Aufruf des FB1 den Instanz-Datenbaustein DB101 neu generiert? Nur dann werden Deine Änderungen im FB1 übernommen.

Gruß Kai
 
Du hast in Deinem Programm mehrere SR-Glieder sowie mehrere S-Befehle und R-Befehle. Du willst hier also den Zustand Deiner Variablen speichern, und damit das Speichern funktioniert, müssen diese Variablen als STAT-Variablen deklariert werden. Nur dann wird der Zustand der Variablen über den Baussteinaufruf hinweg gespeichert.

Du darfst dann natürlich Deine STAT-Variablen nicht einfach alle zurücksetzen, dann hast Du ja wieder keine Speicherung des Zustandes der Variablen.

Gruß Kai
 
Zurück
Oben