Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Achsbewegung (REAL oder INT) in BOOL ausgeben

  1. #1
    Registriert seit
    18.09.2011
    Beiträge
    13
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    als blutiger Anfänger (im Rahmen einer Hausarbeit) habe ich mir die Finger wund gegoogelt und bin meinem Ergebnis kein Stück näher gekommen... Vielleicht gibt es hier Hilfe!

    Ich bilde mir ein mein Problem zu verstehen und auch beschreiben zu können, habe jedoch keinerlei Idee wie ich es in CoDeSys (2.3) umsetzen kann!

    Es soll überprüft werden, ob sich ein Roboter auf einer Achse bewegt oder nicht. Ich habe in AS ein Mini-Programm geschrieben, dass den Roboter auf der X/Y-Achse (mit gleichem Vorschub) bewegt (bis X=Y=300) und dann von dort wieder zum Ausgangspunkt (X=Y=0) zurück bewegt.

    Nun würde ich gerne zwei boolsche Variablen haben:
    X+ (*Variable ist TRUE, wenn der Roboter in Richtung positiver X-Achse verfährt*)
    X- (*Variable ist TRUE, wenn der Roboter in Richtung negativer X-Achse verfährt*)

    Den aktuellen Positionswert habe ich in meinem "AS-Mini-Programm" und kann diesen auch in das "FUP-Hauptprogramm" übernehmen, aber ich weiß net wogegen ich vergleichen soll oder wie ich sonst einer bool Variable sagen kann: "Schau ob sich der Wert verändert und wenn er größer wird sei TRUE" (um es mal umgangssprachlich zu formulieren im Falle der X+ Variable).

    Ich hoffe dass irgendjemand trotz unfachmännischer Beschreibung mein Problem versteht und mir weiterhelfen kann.

    Grüße,
    Mund Rodriguez
    Zitieren Zitieren Achsbewegung (REAL oder INT) in BOOL ausgeben  

  2. #2
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von MunoRodriguez Beitrag anzeigen
    Nun würde ich gerne zwei boolsche Variablen haben:
    X+ (*Variable ist TRUE, wenn der Roboter in Richtung positiver X-Achse verfährt*)
    X- (*Variable ist TRUE, wenn der Roboter in Richtung negativer X-Achse verfährt*)

    Den aktuellen Positionswert habe ich in meinem "AS-Mini-Programm" und kann diesen auch in das "FUP-Hauptprogramm" übernehmen, aber ich weiß net wogegen ich vergleichen soll oder wie ich sonst einer bool Variable sagen kann: "Schau ob sich der Wert verändert und wenn er größer wird sei TRUE" (um es mal umgangssprachlich zu formulieren im Falle der X+ Variable).
    Als erstes brauchst du eine statische (globale) Variable im gleichen Format wie die Position der Achse und benennst sie meinetwegen als "Altwert".
    Mit "Start" wird die Istposition auf den Altwert geschrieben.
    Nun wird entweder pro Zyklus oder pro einer beliebigen Zeiteinheit verglichen ob die Position größer oder kleiner als der Altwert ist und dementsprechend wird das Bit "X+" oder "X-" gesetzt.
    Nach dem Vergleich wird die aktuelle Position wieder auf den Altwert geschrieben und der Vergleich startet nun im nächsten Zyklus oder nächsten Zeittakt erneut.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  3. Folgender Benutzer sagt Danke zu Paule für den nützlichen Beitrag:

    MunoRodriguez (24.09.2011)

  4. #3
    MunoRodriguez ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.09.2011
    Beiträge
    13
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Paule,
    erst mal herzlichen Dank für die schnelle Antwort!
    Ich befürchte aber, dass ich noch ein bisschen weitere Unterstützung benötige.
    Ich habe nun eine globale Variable "xPosAltwert" angelegt.
    Dieser Wert verläuft (wie er soll) analog zum X-Wert. Soweit so gut.

    Nun denke ich, dass ich den von dir angesprochene "Vergleich" in irgendeiner Form über die Operatoren LT, GT und EQ abbilden können sollte, oder?

    Mir ist aber in jedem Fall noch nicht klar, wie ich den Wert (in einem bestimmten Intervall) speichere und danach zurücksetze. Ich habe mich gerade (mal wieder) versucht im Handbuch schlau zu machen und bin dabei auf die "Watschlist" gestoßen. Weiter gebracht hat es mich aber auch nicht...

    Wenn du mir nochmal ein bisschen Support geben könntest, wäre ich dankbar!

    Grüße, MR

  5. #4
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Auf die schnelle mal ein Codeschnipsel, ich hoffe er hilft dir weiter:
    Code:
    // xPos Altwert initialisieren
       IF Achse_Start AND NOT Achse_Ein THEN
            Achse_Ein := TRUE;
            xPosAltwert := xPos;
       END_IF;
     
    // Abfrage über Zyklus oder Zeittakt
       IF Abfrage THEN
     
            X- := FALSE:
            X+ :=FALSE;
     
            IF xPos < xPosAltwert THEN
                 X- := TRUE;    
            ELSIF xPos > xPosAltwert THEN
                 X+ := TRUE;
            END_IF;
     
    // Neue Position auf Altwert schreiben 
            xPosAltwert := xPos;
     
       END_IF;
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  6. Folgender Benutzer sagt Danke zu Paule für den nützlichen Beitrag:

    MunoRodriguez (24.09.2011)

  7. #5
    MunoRodriguez ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.09.2011
    Beiträge
    13
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Paule,
    vielen Dank!
    Da wir in FUP arbeiten müssen fällt es mir ein bisschen schwer deinen Code in ST (?) zu lesen, aber ich denke ich kann es im groben nachvollziehen, was da passiert bzw. passieren soll.
    Ich habe aber keinen Ansatz, wie ich das in FUP umsetzen kann.
    Mir fehlt vor allem das Verständnis, wie ich den Wert in bestimmten Intervallen (z.B. 1 x pro Sekunde) "speichern" kann um dann den aktuellen Wert damit zu vergleichen.
    Ich habe den Kern des Problems nun mal in ein eigenes Projekt geladen und davon einen Screenshot gemacht. Vielleicht hilft das ja.

    Grüße, MR
    Angehängte Grafiken Angehängte Grafiken

  8. #6
    MunoRodriguez ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.09.2011
    Beiträge
    13
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hier ist noch ein weiterer Shot mit einem Teil deines Codes.
    Es scheitert aber (wie gesagt) daran, dass xPos und xPosAltwert ja bisher die gleichen Werte sind...
    Angehängte Grafiken Angehängte Grafiken

  9. #7
    MunoRodriguez ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.09.2011
    Beiträge
    13
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich habe die Funktion nun über den Baustein "SEL" realisiert.
    Ein vorgeschalteter Baustein SEL liefert das TRUE/FALSE Eingangssignal für den SEL-Baustein und dieser schreibt dann den Wert weg.
    So kann ich den aktuellen und den weggeschriebenen Wert vergleichen.
    Versuche nun das aus meiner Bastellösung in das Original zu übertragen. Dann muss ich noch das blinken abstellen, so dass ich ein Dauersignal habe. Danke für die Hilfe!

  10. #8
    Registriert seit
    17.03.2011
    Ort
    im Wald
    Beiträge
    284
    Danke
    11
    Erhielt 36 Danke für 35 Beiträge

    Standard

    Hallo Muno,

    du hast oben geschrieben, du sollst mit FUP arbeiten. Dein letzter Screenshot hat ein AS-Teil und einen ST-Teil.

    Denke mal an die FUP-Bausteine, EQ (Vergleich zweier Werte auf gleich), LE (kleiner gleich) und GE (größer gleich).

    Gruß, Voxe

  11. Folgender Benutzer sagt Danke zu Voxe für den nützlichen Beitrag:

    MunoRodriguez (26.09.2011)

  12. #9
    MunoRodriguez ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.09.2011
    Beiträge
    13
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Voxe,
    über die Bausteine hatte ich ja weiter oben schon geschrieben.
    Hier ein aktueller Shot, wie ich es realisiert habe. Fachmännisch ist das aller Voraussicht nach nicht, ist aber auch mein erstes "Projekt"...
    Den AS Teil benötige ich (nach meinem Verständnis) damit sich auch was "bewegt" (Verfahrbefehl für Roboter).
    Der ST Teil war nur ein eingelesener Teil des Codes von Paule (siehe oben).
    Nach wie vor habe ich aber das Problem, dass die Signale "move..." nicht gehalten werden, sondern (in Abhängigkeit vom Impuls) blinken. Diesen Impuls benötige ich (bei meinen Kenntnissen) aber, da ich sonst nicht weiß, wie ich den Wert xPosAlt bzw. yPosAlt "speichern" kann...
    Grüße, MR
    Angehängte Grafiken Angehängte Grafiken

  13. #10
    Registriert seit
    17.03.2011
    Ort
    im Wald
    Beiträge
    284
    Danke
    11
    Erhielt 36 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    mache mal aus dem AS-Teil ein FUP-Teil mit dem Gedanken, das wenn es in die eine Richtung geht nicht die andere angesteuert wird. Um mehr Aussagen treffen zu können, gibt dein Screenshot nicht alles her. Was passiert in den AS-Aktionen ?

    Gruß

  14. Folgender Benutzer sagt Danke zu Voxe für den nützlichen Beitrag:

    MunoRodriguez (26.09.2011)

Ähnliche Themen

  1. Word,DWORD oder doch Real
    Von Thor´sHammer im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 24.09.2011, 14:22
  2. Format DATE in real oder INt wandeln
    Von jensel im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.05.2011, 18:18
  3. Berechnung DINT oder REAL
    Von mitchih im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 22.01.2010, 09:24
  4. Maxwerte vergleichen und als iO oder niO ausgeben
    Von Pinmaster im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 11.09.2008, 08:33
  5. Real oder DINT in Integer
    Von rene im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 02.07.2007, 15:31

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •