Probleme mit FB

Pockebrd

Level-1
Beiträge
327
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich hab mir ein FB zusammengestellt und in meiner eigenen Bibliothek abgelegt.
Mit dem FB22 zähl ich ein Impuls Eingang und bei erreichter Zahl setzte ich ein Ausgagng.

Jetzt hab ich den FB 22 im FC 2 aufgerufen und und die Variablen bestimmt.
Wenn ich den FB22 vom Netzwerk 1 bearbeite funktioniert es.
Wenn ich den FB22 vom Netzwerk 2 bearbeite funktioniert es auch.
Wenn ich allerdings beide Netzwerke mit dem FB22 bearbeite kommt irgendwas zusammen dammit es nicht mehr funktioniert.

Die Impulseingänge werden nicht mehr im DB abgelegt, auser die zwei Impulseingänge kommen gleichzeitig.
Dachte ich kann so ein FB in mehreren Netzwerken aufrufen.
Hab auch schon den FB22 umbenannt und dann FB 22 und FB23 zusammen bearbeitet, funktioniert aber auch nicht gemeinsam.
Mach ich hier grungsätzlich was falsch ?

Gruß Markus
 

Anhänge

  • FB.jpg
    FB.jpg
    51,7 KB · Aufrufe: 74
Wo ist denn der Istwert deklariert in Stat oder temp

PS : bei in Position reicht ein Vergleicher >=D statt >D + =D
 
Habe zwar Dein problem nicht ganz verstanden (welche Funktion nicht klappt), aber Du hast den E 2.2 beim 1. FB-Aufruf (FC2, NW1) an den FB-Eingang "Position" geschrieben und beim 2. FB-Aufruf (FC2, NW2) an den FB-Eingang "Impuls". Soll das so sein oder sich hier ein Tippfehler eingeschlichen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja klar als Anhang.
Ich habe das Projekt so nachgemalt, wie du es hier gezeigt hast.
Hast du den Hinweis von 190B angeschaut?
Da hast du ein Problem und vermutlich die Lösung deines Problems.


bike
 
Ja, Projekt packen, dann oben auf die Büroklammer.
Dann oben rechts auf Dateien hochladen,
und nun Dateien auswählen.
Danach Dateien hochladen drücken.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn die Aussage stimmt, dass der Baustein funktioniert, wenn er nur 1x benutzt wird, kommt wohl kein Fehler bei dem Handling mit TEMP-Variablen in Frage.
Die Beschaltung mit dem E2.2 sieht wirklich so aus, als sei hier ein Fehler.
Grundsätzlich bleiben aber nur diese beiden Möglichkeiten:
1) Es wurde irgendeine Globalvariable im Baustein benutzt. Oft sind das Timer, die sich hier einschleichen...
2) Die Beschaltung der Schnittstelle stimmt nicht. --> Ggf. mal mit unbenutzten Variablen beschalten um den Fehler gezielt einzukreisen.
 
Wenn die Aussage stimmt, dass der Baustein funktioniert, wenn er nur 1x benutzt wird, kommt wohl kein Fehler bei dem Handling mit TEMP-Variablen in Frage.

Doch, wenn beim zweiten Aufruf die Temp den selben Status haben ist es fehlerfrei, wenn die Zustände verschieden sind, dann funktioniert es auch, doch nicht so wie gewollt ;-)


bike
 
Hallo,
ja so wie beschrieben. Wenn ich ein Baustein von NW 1 oder 2 einzeln bearbeite funktioniet es.
Sobald ich beide Netzwerke bearbeite, geht nichts.
Hab unter anderem beobachtet, das die Zahlenwerte nicht in den DB geschrieben werden.
Dann hab ich beide Impulseingänge gleichzeitig laufen lassen dann ging etwas.

Dann plötzlich hat sich der Zahlenwert im DB hochgezählt obwohl kein Impuls gekommen ist.
Am Eingang war "1" und wird eigentlich über Flanke wird abgefragt. Wußte nicht woher jetzt plötzlich die Flanken kommen.
Beide Impulsgeber waren still.

Meine Funktion war dann auch N.I.O. darauf hab ich ein FB / DB wieder gelöscht und die Funktion war ok.
Danach denn getesteten gelöscht und wieder den Anderen FB / DB getestet war auch ok.
Weiter mit beiden FB / DB gleichzeitg war wieder NIO.

Kann das Programm heute nicht mehr hochladen, ich stell es morgen abend rein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ja so wie beschrieben. Wenn ich ein Baustein von NW 1 oder 2 einzeln bearbeite funktioniet es.
Sobald ich beide Netzwerke bearbeite, geht nichts.
Hab unter anderem beobachtet, das die Zahlenwerte nicht in den DB geschrieben werden.
Dann hab ich beide Impulseingänge gleichzeitig laufen lassen dann ging etwas.

Dann plötzlich hat sich der Zahlenwert im DB hochgezählt obwohl kein Impuls gekommen ist.
Am Eingang war "1" und wird eigentlich über Flanke wird abgefragt. Wußte nicht woher jetzt plötzlich die Flanken kommen.
Beide Impulsgeber waren still.

Meine Funktion war dann auch N.I.O. darauf hab ich ein FB / DB wieder gelöscht und die Funktion war ok.
Danach denn getesteten gelöscht und wieder den Anderen FB / DB getestet war auch ok.
Weiter mit beiden FB / DB gleichzeitg war wieder NIO.

Kann das Programm heute nicht mehr hochladen, ich stell es morgen abend rein.

Ich würde so etwas in Ruhe mit einem FC entwickeln und testen.
Für Stat würde ich Merker oder DBX nehmen.
keinen Multiaufruf, denn das ist etwas schwierig manchmal.
Aber wenn du deine Flanken in den Stat legst, den Eingang reparierst, und den IDB neu generierst., dann funktioniert es.
Oder zunächst den OB 121 löschen, denn dann stürzt vermutlich die PLC ab.

Wenn deine Aussagen stimmen, ist vermutlich dein IDB nicht aktuell.


bike
 
Doch, wenn beim zweiten Aufruf die Temp den selben Status haben ist es fehlerfrei, wenn die Zustände verschieden sind, dann funktioniert es auch, doch nicht so wie gewollt ;-)


bike

Hab ich jetzt nicht ganz verstanden. Wenn der Baustein nur 1x benutzt wird, gibt es doch keinen zweiten Aufruf.

Ich glaube weiterhin daran, dass es etwas ganz einfaches ist. Im Detail lauert der Fehlerteufel...
Wenn der Code sauber ist und nur lokale Variablen benutzt wurden, würde ich den Test mit den "Dummymerkern" machen. Wenn der Wert im DB immer noch "irgendwas" macht, obwohl an der Schnittstelle garantiert nicht benutzte Variablen angebunden sind, kommt vielleicht noch so etwas wie ein IDB in Frage.

Leider sind die Aussagen zur Funktion
Dann hab ich beide Impulseingänge gleichzeitig laufen lassen dann ging etwas.
noch etwas schwammig formuliert.
 
Hallo,
ich hab beide Motoren Laufen lassen, für jeden Motor ein Impuls.

So im Anhang
 

Anhänge

  • Markus_.zip
    44,5 KB · Aufrufe: 3
Ich habe mir Dein Projekt mal runtergeladen. Du hast in der Deklaration des FB22 Deinen Flankenmerker "#FlankeWertOben" im temporären und nicht im statischem Bereich angelegt. Somit hatte Paule (Beitrag #11) Recht.

Edit: Allerdings bin ich mir sicher, meine Vermutung mit dem doppelt benutzten Eingang führt auch zu einem Fehlverhalten... ;)
 
Zuletzt bearbeitet:
Hi,
danke, funktioniert. Hab Paules Antwort noch nicht getestet gehabt. Aber Warum hat das zu einem Problem geführt ?
Ist das nicht nur der Unterschied, das temp. wieder nach dem Zyklus gelöscht wird und das statische über DB geht (gespeichert wird) ?
Was für mich auch ein Rätzel ist, das der Wert im DB in einer Situation immer weiter hochgezählt hat. Ohne Flankenwechsel am Eingang.
 
Zurück
Oben