Hallo Harald,
danke für deine Antwort. Nein, es sind Daten die ich nicht nach außen geben soll/darf. Bin Student und aktuell in der Praxisphase in einer Firma.
Ich bin hingegangen und habe die EN (enable) Eingänge der Bausteine immer so beschaltet, damit ich den richtigen aktiviert habe. Aber es funktioniert nicht wie gedacht.
Verstehe ich deinen Text richtig, dass ich die unterschiedlichen Parameter von außen eingeben? Jedoch unterscheiden die Geräte sich nur in der HW-Kennung. Die Zugriffsparameter (Index) sind identisch.
Paul
Dein Problem ist das Du den Baustein etwa 100 mal oder häufiger aufrufst.
EN zu deaktivieren/aktivieren ist der falsche Weg. Damit nimmt man Bausteine komplett raus. Wenn aber nun eine Verbindung angestossen wurde, diese nicht beendet, enable aber wegfällt, dann gibts keinen Abschluss. Timeout dauert.
Weiters hast Du REQ=1 - Heisst, mit jedem Zyklus aktivierst Du eine Aufgabe, daher die zu häufigen Aufrufe.
Die CPU wird damit nicht klarkommen und alle Ressourcen belegen, wodurch sie binnen kürzester Zeit auf Error geht, je nach Dauer des Aufrufs sogar bevor der erste Aufruf beendet wurde.
Wenn man read dann write programmiert, dann würde der read den write dauerhaft blockieren, in jedem Zyklus.
Besser ist z.B.:
Merker nutzen:
1, wenn RDREC done meldet
0 wenn WRREC done meldet
Aufruf:
RDREC wenn Merker=0 und RDREC_Busy false und WRREC Busy false
S Merker P_Trig RDREC_DONE
WRREC wenn Merker=1 und RDREC_Busy=false und WRREC Busy=false and RDREC_error=false
R Merker P_Trig WRREC_DONE
Dann würden immer abwechselnd diese beiden Bausteine den gleichen Bereich lesen, dann schreiben, letzteres aber nur wenn Read keinen Fehler verursacht hat. Dann würde man das Schreiben in der Regel weglassen und eine Fehlerbehandlung durchführen.
Ein Aufruf geht über mehrere Zyklen, halt so lang wie es dauert.
Da Du einen FB nutzen willst (mache ich auch immer), einfach im statischen Teil "Aufrufmerker":bool
Der obere Aufruf ist kurz gehalten, kann natürlich größer werden je nachdem was Du brauchst.
Wenn Du mehrere FBs nutzen willst kann ab einer bestimmten Anzahl auch ein Ressourcenproblem aufkommen. Das unterbindest Du indem Du die Anzahl vorhandener Ressource ausschöpfst und nur soviele FBs starten lässt wie auch vorhandene Ressourcen benötigt werden.
Also bei 500 Aufrufen zum Beispiel 50 Aufrufe mit je 10 Ressourcenanbindungen gleichzeitig. Heisst - 50 Durchläufe. Wie lang das dauert und ob es sinnvoll ist, ist eine andere Frage.
Warum nochmal ist eine Geheimhaltung des Index nötig? Da sieht glaube ich keiner einen Sinn drin.
EDIT: Ich sehe, das alle Ä Ö Ü unleserlich sind. Kommt bei mir häufiger vor. Kann mir jemand den Workaround geben? Nutze Win10/Chrome. Sorry das ich die Fehler da grad nicht rausnehme.