Steuerung Trichter an Absauganlage

JohnJRambo

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde euch bitten euch das folgende Programm anzuschauen, und wenn möglich Besserungsvorschläge oder Bedenken zu äußern.


WHILE ABS unterschied > 5 DO
soll:= endlage;
ist := input_3*b;
differenz := soll + 5 – hoehe_ist;
signal := differenz * c;
ist := input_3*b;
differenz := soll + 5 – hoehe_ist;
END_WHILE;

Danke fürs durchlesen.
Für eure Hilfe wäre ich Dankbar.
 
Zuletzt bearbeitet:
Na ja, die gesamte Funktion selbst zu erfassen, ist ein wenig mühsam, ein paar erklärende Worte oder Kommentare würden es den Lesern sehr vereinfachen.

Ich denke mit den While-Schleifen bekommst du u.U. Probleme, denn so lange die Bedingung für das Verlassen der Schleife nicht erfüllt ist, bleibt dein Programm in der Schleife. Eine SPS wird dann mit Zykluszeitüberschreitung in Störung gehen. Du mußt also dafür sorgen, dass dein Programm immer wieder die Schleife verläßt. In deinem Fall kann man auch normal mit einem IF-Then-Konstrukt arbeiten, statt der While-Schleife.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist das die Fortsetzung von hier:
https://www.sps-forum.de/threads/45447 ?

Also wie Ralle geschrieben hat, ist diese Art der Programmierung nicht ganz richtig, wegen Zyklus und so.

Du kannst doch dir die Frage selbst beantworten:
Macht das Programm was es soll?

Außerdem sehe ich in dem Codeschnipsel nicht wie du welchen Wert in die Funktion bekommst und was du nach außen schickst.

Ich denke es kann einfacher und strukturierter gemacht werden.


bike
 
Ich habe bisher noch keine SPS-Programmierung gemacht, das soll mein erstes Programm werden.

Was meinst du mit Codeschnipsel?

Zur Erläuterung der While Schleife:
Solange die Höhe des Kastens mehr als 5mm vom Soll-Wert abweicht soll die Position korrigiert werden. Wo ist da der Haken? Ich seh darin kein Problem.

Wie die Werte eingelesen werden und wie ausgegeben weiß ich nicht vlt. könntet Ihr mir ein konkretes Beispiel machen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
ich denke du hast das grundprinzip einer sps noch nicht verstanden.

mal ganz grob.
betriebssystem liest das pae (prozessabbild der eingänge).
anwenderprogramm bearbeiten.
betriebssystem schreibt das paa (prozessabbild der ausgänge).
und wieder von vorn.

das ganze nennt man zyklus. für 1 zyklus gibt es eine maximale laufzeit.
wird diese überschritten geht die cpu in stop.

und genau das würde in deiner schleife passieren.

die scheife ergibt sich schon aus der zyklusorientierten bearbeitung des sps

d.h. du fragst in deinem prog einfach ab ob die pos erreicht ist. ist dies der fall wird der ausgang auf 0 gesetzt. andernfalls die entsprechende richtung ansteuern.
wie ralle erwähnt hat machst du das mit if..then..else
 
Zurück
Oben