Anfängerfragen zum Programmablauf

Casimyr

Level-1
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe ein paar grundsätzliche Fragen zum Ablauf von SPS Programmen, da diese wohl ein paar Besonderheiten haben.

Ich versuche zur Zeit ein kleines Programm zu entwerfen, welches einen Motor referenzieren soll. Sprich, an jeder Seite ans Ende seines Bewegungsspielraums fahren und dort die Position vom analogen Eingang speichern. Am Ende soll der Motor genau in der Mitte positioniert werden.

Das Problem verstehe ich, aber beim Programmablaufplan habe ich schon große Schwierigkeiten.

Im Anhang ist die Übersicht zu einer solchen Unterfunktion bzw Funktionsbaustein.

Meine Probleme:
1) Wie bekomme ich da eine Abbruchbedingung rein? Wenn der Motor fertig ist soll das ganze Programm übersprungen werden, obwohl der Schalter auf "on" bleibt. Wen ich am Anfang des Programm auf eine Variable abfrage und diese am Ende des Programm auf Null setze komme ich nie wieder in das Programm? Könnte man die Variable mit der Anschalt-Flanke vom ON-Schalter auf "eins" setzen? Wie wird das dargestellt?

2) Wie und wo werden Variablen initialisiert? Ich kann mir nicht vorstellen, dass ich das richtig gemacht habe. Es muss aber irgendwie eine Verzweigung vor die Initialisierung, da sie sonst ständig zurückgesetzt werden.

3) So wie ich das verstanden habe, darf man innerhalb der Funktionen keine Schleifen einbauen und die ganze Referenzierung am Stück abarbeiten. Ist das richtig?

4) Darf ich den Motor drehen und direkt danach die Position des Gebers mit der gespeicherten Position abgleichen? Ich habe keine Vorstellung davon, wie schnell die SPS arbeitet. Wird man eine Veränderung feststellen können? Gibt es andere Möglichkeiten zu überprüfen ob sich der Motor bzw. der Geber bewegt?

Ich würde mich auch über grundsätzliche Tipps freuen, wie man ein solches Problem angeht. Der Stoff ist neu für mich und ich bastel eher auf "gut Glück".

danke
Casi
 

Anhänge

  • pap.jpg
    pap.jpg
    367,5 KB · Aufrufe: 56
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe ein paar grundsätzliche Fragen zum Ablauf von SPS Programmen, da diese wohl ein paar Besonderheiten haben.

Ich versuche zur Zeit ein kleines Programm zu entwerfen, welches einen Motor referenzieren soll. Sprich, an jeder Seite ans Ende seines Bewegungsspielraums fahren und dort die Position vom analogen Eingang speichern. Am Ende soll der Motor genau in der Mitte positioniert werden.

Das Problem verstehe ich, aber beim Programmablaufplan habe ich schon große Schwierigkeiten.

Im Anhang ist die Übersicht zu einer solchen Unterfunktion bzw Funktionsbaustein.

Meine Probleme:
1) Wie bekomme ich da eine Abbruchbedingung rein? Wenn der Motor fertig ist soll das ganze Programm übersprungen werden, obwohl der Schalter auf "on" bleibt. Wen ich am Anfang des Programm auf eine Variable abfrage und diese am Ende des Programm auf Null setze komme ich nie wieder in das Programm? Könnte man die Variable mit der Anschalt-Flanke vom ON-Schalter auf "eins" setzen? Wie wird das dargestellt?

2) Wie und wo werden Variablen initialisiert? Ich kann mir nicht vorstellen, dass ich das richtig gemacht habe. Es muss aber irgendwie eine Verzweigung vor die Initialisierung, da sie sonst ständig zurückgesetzt werden.

3) So wie ich das verstanden habe, darf man innerhalb der Funktionen keine Schleifen einbauen und die ganze Referenzierung am Stück abarbeiten. Ist das richtig?

4) Darf ich den Motor drehen und direkt danach die Position des Gebers mit der gespeicherten Position abgleichen? Ich habe keine Vorstellung davon, wie schnell die SPS arbeitet. Wird man eine Veränderung feststellen können? Gibt es andere Möglichkeiten zu überprüfen ob sich der Motor bzw. der Geber bewegt?

Ich würde mich auch über grundsätzliche Tipps freuen, wie man ein solches Problem angeht. Der Stoff ist neu für mich und ich bastel eher auf "gut Glück".

danke
Casi

Den Start würde ich über ein Flanke vom Einschalter machen und wenn der Motor fertig ist diesen Merker zurücksetzen.
Du willst den Motor auf Block fahren und dann rechtzeitig erkennen, steht an und dann stopp?
Dann muss da noch einiges an Informationen kommen.
Welche Art von Motor ist es? Leistung und Drehzahl und ggF m/min.

Welche Art Geber ist verbaut?
Welche CPU hast du zur Verfügung.

Ist das mal wieder eine Hausaufgabe oder ein reales Projekt?


bike
 
Den Start würde ich über ein Flanke vom Einschalter machen und wenn der Motor fertig ist diesen Merker zurücksetzen.
ok, danke

Du willst den Motor auf Block fahren und dann rechtzeitig erkennen, steht an und dann stopp?
japp

Dann muss da noch einiges an Informationen kommen.
Welche Art von Motor ist es? Leistung und Drehzahl und ggF m/min.

Welche Art Geber ist verbaut?
Welche CPU hast du zur Verfügung.
Ich soll erstmal überlegen, wie man das Problem lösen kann. Danach wird die Hardware passend bestellt. Es geht mir allgemein darum wie man so ein Problem löst.

Ist das mal wieder eine Hausaufgabe oder ein reales Projekt?
Im Zusammenhang mit meinem Studium muss ich mich in das Thema einarbeiten. Ich habe die Aufgabenstellung quasi als Übung für mich bekommen.
 
Ich soll erstmal überlegen, wie man das Problem lösen kann. Danach wird die Hardware passend bestellt. Es geht mir allgemein darum wie man so ein Problem löst.

Wenn der Motor nicht zu viel Moment hat und keinen zu hohen Wirkungsgrad, kann der so für 100 ms blockiert werden.
Dann würde ich die Position alt mit neu vergleichen und wenn der Unterschied zu gering wird, stopp ausgeben.
Das Signal kann in diesem Fall analog sein oder auch von einem Encoder kommen.
Als Luxus wäre natürlich ein geregelter Motor, der bei Block den Strom selbst minimiert und der PLC mehr Zeit zum auswerten gibt.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ok, danke.

Ich sehe aber noch ein Problem darin, dass der Vergleich zwischen Geber und der letzten gespeicherten Position "zu früh" kommt. Also, dass die SPS zu schnell arbeitet und deshalb keine Differenz zwischen den Werten sieht und den Motor anhält.

Ich weiß nicht wie so ein Code aussieht, aber sinngemäß steht da ja:

drehe Motor

und in der nächsten Zeile

Vergleiche Werte

Schafft ein Motor eine messbare Bewegung in dieser Zeit?
Wie wird das sonst gelöst?
Kann man die SPS ein paar ms warten lassen, bis sich der Motor auf jeden Fall ein Stück weiter bewegt hat?
 
ok, danke.

Ich sehe aber noch ein Problem darin, dass der Vergleich zwischen Geber und der letzten gespeicherten Position "zu früh" kommt. Also, dass die SPS zu schnell arbeitet und deshalb keine Differenz zwischen den Werten sieht und den Motor anhält.

Ich weiß nicht wie so ein Code aussieht, aber sinngemäß steht da ja:

drehe Motor

und in der nächsten Zeile

Vergleiche Werte

Schafft ein Motor eine messbare Bewegung in dieser Zeit?
Wie wird das sonst gelöst?
Kann man die SPS ein paar ms warten lassen, bis sich der Motor auf jeden Fall ein Stück weiter bewegt hat?

Wenn es S7 CPU ist, dann würde ich mich einmal über OB 35 klug machen.
Oder vielleicht andere OB oder über Taktmerker den Vergleich starten.
Es kommt immer darauf an wie schnell und und wie genau alles sein darf/muss


bike
 
Zurück
Oben