Variable von verschiedenen Punkten setzen

Purple

Level-1
Beiträge
13
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
ich habe ein Programm geschrieben mit dem ich einen Motor mit einem Drehgeber verschiedene Positionen anfahren lassen kann. Jetzt will ich mehrere Positionen hintereinander anfahren. Dazu habe ich einen Funktionsbaustein programmiert bei dem man die Position und ein Start Signal angibt. Der gibt dann ein Signal aus wenn er seine Position erreicht hat, dass dann den nächsten Funktionsbaustein ansteuert und immer so weiter. Mein Problem ist das ich bei jedem dieser Bausteine auch immer eine Variable verbinden muss die die Position weiterleitet sowie das Anfahrsignal, da eine Variable ja nicht von verschiedenen Punkten aus gesetzt werden kann. Das ist bei vielen Position ziemlich umständlich, verbraucht Speicherplatz usw. Habt ihr eine Idee wie ich das einfacher umsetzen kann.
Ich benutze ein ILC150ETH von Phoenix Contact mit der Steuerungssoftware PC WorX.

Danke schonmal!
 
Hmm
hört sich an als wenn du alles diskret auskodiert hast...
Ggf macht es Sinn sich über ein Array mit den Positionen Gedanken zu machen .
Wenn es feste Positionen mit variabler Auswahl sind können diese im Array auf true gesetzt werden etc.
Ggf hilft es etwas weiter
LG Shrimps
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich habe für solche Sollwertvorgaben eine Funktion "Move_On_Condition".
Den Sollwert als Out, 3(oder mehr...) bool Eingänge als Bedingung und 3 Sollwerte für die Bedingungen.
( zB.: BA Hand, Auto, Einrichten)
Danach in der Funktion nacheinander: If Bedingung_1 then Sollwert := Soll_Bedingung_1 ...

Hat den Vorteil, dass du den Positionssollwert immer nur an einer Stelle schreibst und du dann schnell anhand der Bedingung erkennst in welchem Prozessschritt du dich befindest.
Und deinen FB zur Positionierung brauchst du auch nur einmal aufrufen und mit jeder Sollwertänderung neu starten lassen....
Lg Peter
 
Zuletzt bearbeitet:
Hallo Purple,

ich persönlich würde, wenn du es denn mit vielen einzelnen Bausteinen aufbauen möchtest, wie folgt aufbauen.

Eine boolsche Variable, die dir dein Startsignal setzt, eine IN_OUT_Variable, in der deine aktuelle Position steht eine INPUT Variable,in der du die anzufahrende Position vorgibst und eine boolsche OUTPUT Variable mit der du den nächsten FB anstößt.
Die IN_OUT_Variable übergibst du dann an jeden FB.

Alternativ könntest du natürlich auch deine gesamte Schrittkette in einem FB mittels CASE Anweisung schreiben.

Gruß
Ulrich Kleinschmidt
 
Zurück
Oben