Problem - Instanz übernimmt Signale von FB nicht

Oschbert

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Community,

ich kämpfe jetzt seit Stunden mit dem Problem, das eine Instanz meines FB das Signal nicht übernimmt.
Der Wert geht in dem Baustein auf TRUE, aber die Instanz realisiert es einfach nicht. (Siehe Anhang)
2016_11_17 Problem-1.JPG

Habe teile des Codes entfernt, da es eine Uni-Hausarbeit ist, und ich nicht die Lösung präsentieren wollte.
Rechts ist der Baustein in AS und links die Instanz im PLC_PRG.

Wenn Ihr noch Fragen habt, so beantworte ich sie gerne.

Bin da mittlerweile echt ratlos. Es wäre schön wenn mir hier jemand helfen könnte.

Vielen Dank im Voraus.

Mit freundlichem Gruß
Oschbert
 
Mein erster Tip wäre, dass MDV noch an einer anderen Stelle in deinem Programm beschrieben wird. Entweder die Variable selber oder der Speicherbereich.
 
Guten Abend,

also doppelt habe ich hier wissentlich nichts vergeben. Habe gerade auch nochmal nachgesehen aber da finde ich nichts.
Die meisten Bezeichnung hat die UNI auch genau vorgegeben, damit die Prozesssimulation wohl vernünftig funktioniert.
Die haben Sie uns nämlich gestellt.

@Harald: Was meinst du genau mit Controller in RUN?

Also die Simulation läuft bis zu dieser Ecke ohne Probleme. Habe da auch alles nach dem gleichen Schema aufgebaut...aber
an der Position will er einfach nicht.

Danke und Gruß
Christian



Muss zurückrudern, da war doch noch ein Baustein versteckt mit den gleichen Ausgängen.
Die habe ich jetzt umgenannt, aber irgendwie muss ich eigentlich mit dem Baustein auch diese MDV und MDR ansprechen.
Genauso wie mit dem gezeigten Baustein greift er auf diese Ausgänge zu....wie realisiert man das dann, wenn man die
nicht gleich benennen darf?

Gruß
 
Zuletzt bearbeitet:
Wenn 2 Verschiedene Bausteine auf eine Variable zugreifen, musst du in deinem Programm eine Fallunterscheidung vorsehen, die dafür sorgt das immer nur ein Baustein auf den Ausgang schreiben darf.
D.h. du brauchst Bedingungen die erfüllt sein müssen damit entweder der eine oder der andere Baustein schreiben darf. Die Bedingungen ergeben sich aus der Funktion deines Programms und dürfen sich in ihrer Logik nicht überlappen (müssen sich gegenseitig ausschließen).

In Strukturiertem Text werden die Verweigungen mit IF ... THEN ... (ELSE)... realisiert. In FUP und KOP mit entsprechenden Netzwerken aus Logik Bausteinen und in AS mit Zweigen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo MasterOhh,

vielen Dank erstmal für deine Unterstützung.
Ich komme leider mit dem Problem nicht weiter.
Ich versuche mal, es genauer zu erläutern.

Ich habe einen Baustein xy, der zwei Ausgänge anspricht. Einmal runter fahren und einmal hoch. Innerhalb dieses Bausteins soll ein weiterer Baustein xz aktiviert werden, der diese Hoch- und Runterbewegung in feinen Schritten ausführt (Sensorüberwacht). Diese Feine Bewegung soll eben in einem Extra Baustein xz realisiert werden...wird aber innerhalb das Bausteins xy aufgerufen.

Jetzt sprechen eigentlich beide Bausteine die Ausgäng Hoch und Runter an, was zu Problemen führt. Ich weiß aber nicht wie ich das in dem Baustein xy mit einem Alternativen Zweig aufbauen soll.

Ich hoffe es bringt Licht ins Dunkel.

Gruß
Christian
 
In Deiner Deklaration ist MDV ein BOOL, das bedeutet, das Du Dir überlegen musst, welcher Baustein vorrecht hat, diesen Ausgang zu beschreiben. In FUP könntest Du das z.B. mit SEL lösen.

In Deiner letzten Antwort klingt es so, als ob Du den zweiten Baustein xz INNERHALB von xy aufrufst, dann übergib die entsprechenden Ausgänge von xz doch an xy und verarbeite die dort, so dass nach außen nur an xy die entsprechenden Variablen gesetzt werden.
 
Hallo Morymmus,

das hab ich gerade Versucht, aber kriege es nicht hin.
Entweder steuer er Sie nicht an, oder er meldet vor der Simulation schon Fehler (Keine Schreibzugriff).

Keine Ahnung was ich da falsch mache.
Gibt es da einen Begriff wonach ich googlen kann?

Gruß
Christian
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wie übergibst Du denn die Variablen?

Ich hatte folgendes im Sinn:

Baustein xy erhält durch die Aussenbeschaltung (VAR_IN) die Information, ob er hoch oder runter ansteuern soll.
Zusätzlich muss eine der von aussen kommenden Variablen die Fein-Positionierung einschalten.
Ist die Bedingung "Fein_Pos" gesetzt, so übergibt er diese Information sowie alle weiter benötigten an den Baustein xz, den er hiermit aufruft (VAR_IN bei xz) - die Funktion von xy wird hierbei weitgehend umgangen.
xz gibt die Werte für die Feinpositionierung an xy zurück (VAR_OUT)
Die Ausgänge werden nun in xy mit dem SEL verschaltet, so das, wenn "Fein_Pos" gesetzte ist, die durchgereichten werte von xz an MDV ausgegeben werden, ist "Fein_Pos" nicht gesetzt wird der Wert von xy geschrieben.

Du musst allerdings darauf achten, das Du keine Variablen-Namen doppelt benutzt, wenn Du nicht wirklich die selbe Variable meinst, sonst kommt es zu konkurrierenden Zugriffen.

Ich hoffe das war ein bisschen klarer.
Einen Begriff für Google hätte ich da jetzt gerade auch nicht zur Hand
 
Hallo,

ich habe einfach mal die Aufgaben hochgeladen.
Die Uni gibt halt vieles vor, deswegen weiß ich nicht wie genau ich da den Vorschlag umsetzen kann.
Vielleicht habe ich mich aber auch falsch ausgedrückt und es ist viel einfacher als gedacht.
Ich hoffe die Aufgaben lassen mein "Problem" deutlich werden.

Teil1-Aufgabe3.jpgTeil1-Aufgabe4a.jpgTeil1-Aufgabe4b.jpg

Gruß
Christian
 
Hmm,

OK, Aufgaben aus der Uni sind halt nicht immer so arg nah an der Praxis...
Also bei der Positionienerung würde ich mich ungern nur auf den Motorstrom verlassen....

Also ich denke, Du denkst da zu kompliziert - in der Aufgabenstellung gibt es nur Deinen Baustein xy, der xz wird nicht benötigt sondern lediglich durch den Komparator des Motorstroms abgebildet.
Es ist auch nicht erforderlich (laut Aufgabe (!), in der Praxis sehe ich das anders) auf einen bestimmten Punkt zu warten - der Motor dreht die Dachbürste und beginnt sofot mit dem absenken, so daß er vermutlich etwa Mitte der Motorhaube ersten Kontakt haben dürfte (S5 muss ja über der Dachkontur des Fahrzeugs liegen) :confused:

Bei der Beschreibung des Waschganges (Punkte 1-7) drängt sich natürlich eine Schrittkette auf (oder eine Entsprechung in anderen Sprachen)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm,

OK, Aufgaben aus der Uni sind halt nicht immer so arg nah an der Praxis...
Also bei der Positionienerung würde ich mich ungern nur auf den Motorstrom verlassen....

Also ich denke, Du denkst da zu kompliziert - in der Aufgabenstellung gibt es nur Deinen Baustein xy, der xz wird nicht benötigt sondern lediglich durch den Komparator des Motorstroms abgebildet.

Das es nicht praxisnah ist denke ich auch, aber damit es nicht zu umfangreich wird haben die es so aufgebaut.
Ich muss mich eben daran halten, damit ich den "Mist" bestehe.
In den Erläuterungen zur Aufgabe steht auch direkt drin, dass alle FB in AS geschrieben sein sollen. Für BUERSTE solll eben auch ein FB geschrieben werden, der dann in meinen Augen auch in AS aufgebaut werden muss. Ist eigentlich der letzte Punkt wo es hängt.
Teil1-Aufgabe1.jpg

Hmm,
der Motor dreht die Dachbürste und beginnt sofot mit dem absenken, so daß er vermutlich etwa Mitte der Motorhaube ersten Kontakt haben dürfte (S5 muss ja über der Dachkontur des Fahrzeugs liegen) :confused:

Darauf haben Sie in der Aufgabenstellung ebenfalls hingewiesen, und es als für uns ausreichend beschrieben wenn wir es so machen.

Danke für die Hilfe

Gruß
Christian
 
Zuletzt bearbeitet:
Das es nicht praxisnah ist denke ich auch, aber damit es nicht zu umfangreich wird haben die es so aufgebaut.
Ich muss mich eben daran halten, damit ich den "Mist" bestehe.

Ich behaupte, das könnte man einfacher und schneller lösen - aber gut...

In den Erläuterungen zur Aufgabe steht auch direkt drin, dass alle FB in AS geschrieben sein sollen.

Das glaub ich sofort... meiner Erfahrung nach können die "Dozenten" nämlich keine anderen Sprachen lesen *ROFL*

Also zumindest das PLC_PRG ist nicht in As gemeint, da hier von Netzwerken gesprochen wird.
Den FB BUERSTE in AS zu schreiben macht die Sache ebenfalls unnötig kompliziert, die CoDeSys-Hilfe sagt dazu:
Die Ablaufsprache ist eine grafisch orientierte Sprache, die es ermöglicht, die zeitliche Abfolge verschiedener Aktionen innerhalb eines Programms zu beschreiben. Dazu werden Schrittelemente verwendet, denen bestimmte Aktionen zugeordnet werden und deren Abfolge über Transitionselemente gesteuert wird.

Ich bin jetzt wirklich nicht der AS-Freak, aber damit eine Funktion zu schreiben, die eben nicht einen zeitlichen Ablauf sondern eine kontinuierliche Bearbeitung ausführt... naja


Einziger Work-Around wäre vielleicht, den Komparator auzuwerten, als Transition S5 oder S6 erreicht, wenn nicht: gehe zurück auf Los

Also in etwa so:
IMG_20161118_171708516[1].jpg

Sorry für die Bierdeckel-Skizze aber ich hab hier gerade kein CAD zur Hand :rolleyes:
 
Passt schon, ist alles zu erkennen.
Leider habe ich nur eine grobe Vorstellung darüber, was Sie meinen.
Am Ende verstehe ich nicht, wie ich darüber das "Hoch und Runter" der Bürste regeln soll.

Irgendwie verzweifel ich andauernd daran, dass die gleichen Signale des PLC_PRG von zwei unterschiedlichen
Netzwerken angesprochen werden müssen.
Gedanklich und auch praktisch finde ich da keine Lösung für.

Gruß
Christian
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also in FUP löse ich das normalerweise so:

Ich baue mir eine Schrittkette auf, am Ende der Kette gibt es für jeden Ausgang ein Netzwerk dem über ein ODER-Gatter die verschiedenen Schritte zugeordnet sind. So last sich verhindern, das an verschiedenen Stellen auf den gleichen Ausgang geschrieben wird.

gesendet von meinem Moto G mit Tapatalk
 
Das klingt ja auch ganz sinnig, aber ich bin halt an den Lösungsansatz gebunden.
Bin mir da sehr sicher, dass es zahlreiche bessere und elegantere Lösungen gibt :-(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe am Wochenende nochmal ein paar Stunden investiert und es endlich zum Laufen gebracht. Habe die Variablen, welche auf den gleichen Ausgang gehen sollten auf einen Oder-Baustein gelegt. Dieser steuert dann die jeweiligen Ausgänge. So hat es dann endlich funktioniert!

Vielen Dank für die Hilfestellungen

Gruß
Christian
 
Das ist schön zu hören!

Ich seh grad, das mein vorheriger Beitrag ein wenig gekürzt im Forum angekommen ist...
Hatte per Tapatalk geantwortet und bei mir lokal auf dem Handy ist der Beitrag auch komplett.
der fehlende Rest hätte lauten sollen:

[...] Wahl und baue Dir von "rechts nach links" denkend, also nicht Variable A schaltet Ausgang A und B sondern andersherum gedacht: Ausgang A - was benötige ich um diesen zu schalten. Dann ergeben sich die parallel-Pfade von alleine und können einfach über Oder-Gatter zusammengeführt werden. Mehrfaches Beschreiben eines Ausganges wird damit sicher vermieden.
 
Zurück
Oben