Fehlermeldung bei FUP-Programmierung

Stephan_5

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Sehr geehrte User,

ich habe eine Frage bezüglich Codesys.

Die Aufgabenstellung lautet folgend:

Sobald der Schalter 1 (wurde als DI300 bezeichnet) betätigt wird soll der Motor mit 300 U/min laufen
Sobald der Schalter 2 (DI600) betätigt wird, soll der Motor mit 600 U/min laufen und
Sobald der Schalter 3 (DI1000) betätigt wird, soll der Motor mit 1000 U/min laufen.

Ich habe mich erkundigt und herausgefunden, dass die IF-Anweisung hilfeich wäre, doch jetzt bin ich nicht sicher, ob ich die IF-Anweisung an der richtigen Stelle geschrieben habe.
Es kommt zu verschiedenen Fehlermeldungen (siehe Abbild).

Programmiert wird in FUP.

Da ich leider nur mit LOGO Siemens vertraut bin, ist diese Herausforderung neu für mich, daher würde ich mich um jede Hilfe freuen, damit ich meine Kenntnisse erweitere.

Dieses Forum dient nicht dazu, dass ein Anderer meine Aufgaben erledigt. Diese Frage dient dazu, damit ich ein Verständnis für Codesys bekomme.

Freue mich auf Ihre Antworten.
 

Anhänge

  • Frage1.jpg
    Frage1.jpg
    84,8 KB · Aufrufe: 51
  • Frage2.jpg
    Frage2.jpg
    63,5 KB · Aufrufe: 37
Die IF-Anweisungen stehen im Deklarationsbereich wenn ich das richtig sehe. Da haben die nichts zu suchen. Kenne mich mit FUB nicht aus, aber denke das es da auch nen IF-Block oder so gibt, den man dann im Programmteil nutzen kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt wurde dies im PLC_PRG geschrieben, oder meinen sie mit dem Programmteil den unteren Bereich mit dem Schaltplan, wo es ein eigenen Baustein mit If gibt? Danke für ihre Antwort, alles ist hilfreich :)



Frage3.jpg
 
Du hast IF immer noch im Deklarationsbereich, hier werden ausschließlich Variablen definiert, Sachen wie IF haben da nichts zu suchen.

Legen ein Prog in ST an, und schreibe dein IF in den unteren Teil.
 
Ja ich meine den unteren Bereich mit den Bausteinen. Wie gesagt, ich habe keine Ahnung von FUP und weiß nicht wie da IF realisiert ist. Deine IF-Abfragen sind ja eben in ST "structured text" geschrieben und können so in keinem FUP genutzt werden, glaube ich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
- das "VAR" vor den IF-Zeilen und das "END_VAR" nach den IF-Zeilen löschen
- das "sollwert := LIMIT" ist eine unvollständige Anweisung, da fehlen noch die Parameter der LIMIT-Funktion

- eine bedingte Zuweisung kann man mit MOVE erreichen, aber nur in CFC und KOP, nicht aber in FUP (da fehlt der EN-Anschluß)
- eine bedingte Zuweisung kann man mit SEL realisieren mit dem Ausgangswert an IN0 und dem Zuweisungswert an IN1

Ich kann Dir leider keine FUP-Lösung zeigen, weil ich kein Codesys habe.

Harald
 
IF DI_Taste_1 THEN sollwert := 300; END_IF
IF DI_Taste_2 THEN sollwert := 500; END_IF
IF DI_Taste_3 THEN sollwert := 1000; END_IF

sollwert := LIMIT(sollwert ...
...

Das von Harald hat geholfen. Es geht. Vielen Dank!!!
@Stephan_5
Frag doch mal "Deinen Kollege" wie der das hingekriegt hat... ;)
Allerdings hat der Kollege nachträglich alle Bilder aus seinen Beiträgen gelöscht, auch die vom Programm ... :roll:

Harald
 
Die Variable rRefSpeed in Deinem zweiten Bild ist Deine Solldrehzahl? Dann versuche es mal so:
Code:
          +-----+         +-----+         +-----+         +-----+         +-----+         +-----+     +-----+
          | ABS |   DI300-| SEL |   DI500-| SEL |  DI1000-| SEL |         | ADD |     0.0-|LIMIT|     | MUL |
rRefSpeed-|     |---------|     |---------|     |---------|     |---------|     |---------|     |-----|     |-rRefSpeed
          +-----+   300.0-|     |   500.0-|     |  1000.0-|     |   +-----|     |  ...Max-|     |  +--|     |
                          +-----+         +-----+         +-----+   |  +--|     |         +-----+  |  +-----+
                                                                    |  |  +-----+                  |
                                                          +-----+   |  |                           |
                                                          | SEL |   |  |                           |
                                                DI_SLOWER-|     |---+  |                           |
                                                      0.0-|     |      |                           |
                                                     -0.1-|     |      |                           |
                                                          +-----+      |                           |
                                                                       |                           |
                                                          +-----+      |                  +-----+  |
                                                          | SEL |      |                  | SEL |  |
                                                DI_FASTER-|     |------+        DI_REVERS-|     |--+
                                                      0.0-|     |                     1.0-|     |
                                                      0.1-|     |                    -1.0-|     |
                                                          +-----+                         +-----+

PS: und nicht wieder die Bilder löschen ;)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Hausaufgaben könnten hier auch gesammelt reingestellt werden, dann brauch es nicht mehrere Threads für die gleiche Aufgabe ;)
Idealerweise erledigt das gleich der Dozent.
 
Danke erstmals. Mein Freund wollte die Bilder nicht lange veröffentlichen aus privaten Gründen. Wir dachten wir würden es selber hinbekommen, deshalb die Antwort "Es geht". Allerdings haben wir uns geirrt. Jetzt werden wir Ihre Schaltung testen und hoffen auf Fortschritte. Danke.
 
Sehr geehrter Harald,

Das Programm wurde ausprobiert und es hat funktioniert, daher möchten wir uns bei Ihnen herzlich bedanken.

Wir haben beim Herumprobieren herausgefunden, dass der Baustein ADD den letzten Zustand speichert, was zu dem Problem führt, dass nach der erstmaligen Anwendung der Motor immer läuft, wenn man nur in Betrieb geht. Vermutlich gibt es eine Möglichkeit dem ADD mitzuteilen, dass es zurücksetzen soll, genauso wie es beim Selbsthalterelais in LOGOSiemens geht. Wir werden uns bemühen, das Problem ausfindig zu machen, dann ist die Aufgabenstellung fertig. SIe haben uns sehr viel geholfen, dafür möchten wir uns nocheinmal bei Ihnen bedanken.

MfG Stephan_5
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der ADD Baustein speichert nichts. Da in dem Netzwerk von Harald der Geschwindkeitswert sowohl Aus- als auch Eingangswert ist, wird immer der aktuelle Wert gehalten solange keine Eingabe erfolgt.

Wenn der Sollwert beim Abschalten auf 0 gesetzt werden soll, dann fügst du einfach am Ende (nach dem MUL) noch einen SEL an, der von deinem Freigabesignal geschaltet wird. Mit diesem SEL schreibst du entweder den berechneten Geschwindkeitswert in die Variable rRefSpeed (bei Freigabe = true) oder eine 0 (bei Freigabe = false).
 
Hallo Stephan_5,

der Baustein ADD speichert nichts. Die Sollgeschwindigkeit wird in der Variable rRefSpeed gespeichert. In Euren beiden Threads habt Ihr nicht angedeutet, daß beim Loslassen aller Tasten der Motor stehenbleiben soll. Aus den Bildern Eures vorhandenen Programms kann man nicht entnehmen, daß das Stoppen durch so langes Drücken auf DI_SLOWER bis rRefSpeed = 0.0 realisiert wird (was aber praktisch nicht besonders clever ist). Mein Programmvorschlag hat lediglich das Setzen des rRefSpeed auf die 3 gewünschten Drehzahlen in Euer Programm eingebaut.

Wie in dem ersten Thread schon angedeutet wurde, müßt Ihr Euch mit der Funktionsweise Eurer FU-Ansteuerung auseinandersetzen. Da gibt es einerseits den Drehzahl-Sollwertkanal und andererseits die Start/Stop-Steuerung. Wenn der FU so eingestellt ist, daß allein Sollwert <> 0.0 das Run/Stop bestimmt, dann müßt Ihr in Euer Programm das Stoppen des Motors durch Nullsetzen des Drehzahlsollwertes einbauen - am Einfachsten über ein weiteres SEL, welches den Wert 0.0 zuweist. Dabei müßt Ihr wissen was Ihr wollt/braucht, ob die Steuerung bei Stop des Motors auch die Soll-Drehzahl vergessen soll oder einfach nur schnell Ein/Aus mit der zuletzt eingestellten Drehzahl. Und wenn Ihr das wisst, dann ist wird auch klar wo das SEL für STOP hin muß und ob das direkt mit einem Stop-Taster verbunden wird oder mit einem Selbsthalterelais (bistabiles SR oder RS oder Selbsthaltung mit OR).

PS: hier im Forum sagen wir "Du" zueinander.

Harald
 
-500.jpg
Wir haben das Problem so gelöst. Den DI_SLOWER haben wir als Betrieb bezeichnet. Somit wird der rRefSpeed-Wert um 500 vermindert, sodass es auf Null kommen muss.

Danke an alle, die sich Zeit für uns genommen haben!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Somit wird der rRefSpeed-Wert um 500 vermindert, sodass es auf Null kommen muss.
Also als "Lösung" würde ich diesen Subtraktionstrick nicht bezeichnen. Auch nicht, wenn Du -5000000.0 rechnen würdest. :rolleyes:
Mache doch einfach in der oberen "Hauptlinie" ein weiteres SEL für die übersichtliche Zuweisung des Wertes 0.0. Am besten zwischen ADD und LIMIT, dann hat es Vorrang vor allen anderen Tasten.

Harald
 
Zurück
Oben