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

Ergebnis 1 bis 8 von 8

Thema: Probleme beim Programmieren einer Moellersteuerung

  1. #1
    Registriert seit
    02.05.2008
    Beiträge
    9
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich soll bei einer Extruderheizung mit 4 Heizkreisen unterschiedlicher Leistungen eine Steuerung programmieren, die bei einer vorgegeben Leistung die entsprechenden Heizkreise ansteuert. Genau Aufgabenstellung befindet sich im Anhang.
    Um die Aufgabe zu lösen, habe ich mir eine Excel-Tabelle (Anhang: Heizkreise) erstellt, die beinhaltet, welche Heizkreise bei der jeweiligen Leistung angesteuert werden.
    Nun zum Problem der Programmierung. Ich wollte per Strukturiertem Text das Problem entweder mit einer CASE-Anweisung oder mit mehreren IF-Anweisungen bearbeiten. Dieses funktioniert aber nicht, weil, sobald ich einen Wert bei der CASE-Anweisung mehrfach verwende, die Moeller Software mir die Fehlermeldung ausgibt:
    Fehler 4270 ... CASE Konstante`...`wird bereits verwendet.
    Zudem gibt es noch ein weiteres Problem. Wenn einmal ein Heizkreis=TRUE ist, so bleibt dieser das auch. Dieser kann aber bei einer neuen Eingabe eines Wertes wieder FALSE sein.
    Die Lösungsversuche/ansätze sind ebenfalls im Anhang per pdf.

    Da ich noch in den Anfängen der SPS Programmierung stecke, hoffe ich, dass mir jemand Ratschläge geben kann (u.a. ist mein Lösungsansatz überhaupt zu realisieren, wenn er richtig ausgeführt würde?), um diese Aufgabe lösen zu können.

    MfG
    Tobi
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Probleme beim Programmieren einer Moellersteuerung  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    an deiner tabelle hege ich zweifel ...

    case mit mehreren zuweisungen funktioniert natürlich nicht, ist ja auch eine eindeutige form der zuweisung...

    versuch mal folgendes umzusetzen:

    Code:
    *
    IF soll >= 9 THEN Q4:=True ELSE Q4:=False
    IF (soll >=15 OR (soll>=6 AND soll<=8)) THEN Q3:=True ELSE Q3:=False
    IF ((soll >=3 AND soll<=5) OR (soll >=13 AND soll<=14) OR (soll >=18 AND soll<=21)) THEN Q2:=True ELSE Q2:=False
    IF ((soll >=1 AND soll<=2) OR (soll >=4 AND soll<=5) OR (soll >=7 AND soll<=8) OR (soll >=10 AND soll<=14) OR (soll >=16 AND soll<=17) OR (soll >=19 AND soll<=21)) THEN Q1:=True ELSE Q1:=False
    ist aber nicht die schönste lösung, mal dir mal ein karnough-diagramm, da ist sicher noch was rauszuholen
    Geändert von vierlagig (22.05.2008 um 11:38 Uhr) Grund: vereinfacht
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    bayerntobi (22.05.2008)

  4. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Ich denke mal, dass das von 4L schon gesagt wurde - ich schreibe es trotzdem nochmal :
    die Case-Situationen : 1,3,4,6,7,8,10 ...
    und : 2,4,5,9,10 ...
    überschneiden sich. Das geht bei "IF .. OR .. OR .. THEN" so zu machen aber nicht bei CASE.

    Gruß
    LL

  5. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    bayerntobi (22.05.2008)

  6. #4
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Ich würde es mit einem Array machen:

    Code:
      heizkreise : ARRAY[1..21,1..4] OF BOOL := 
       (*HK1,    HK2,     HK3     HK4 *)
         FALSE, FALSE,  FALSE, TRUE,  (* Sollwert 1 *)
         FALSE, FALSE,  FALSE, TRUE,  (* Sollwert 2 *)
         FALSE, FALSE,  TRUE ,  FALSE,(* Sollwert 3 *)
         FALSE, FALSE,  TRUE , TRUE,   (* Sollwert 4 *)
        (* usw...... *)
    Dann kann man dass so schreiben:

    Code:
    HK1 := heizkreise[sollwert,1];
    HK2 := heizkreise[sollwert,2];
    HK3 := heizkreise[sollwert,3];
    HK4 := heizkreise[sollwert,4];

  7. Folgender Benutzer sagt Danke zu drfunfrock für den nützlichen Beitrag:

    bayerntobi (22.05.2008)

  8. #5
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von drfunfrock Beitrag anzeigen
    Ich würde es mit einem Array machen:
    und ich dachte mein herangehen wäre unkomfortabel
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  9. #6
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Ja ja, aber mein Array spart CPU-Zeit oder ? Jedenfalls nach dem ich angefangen die kleinen Beckhoff-SPSen wie die CX1000 zu nutzen, wird man etwas vorsichtiger. Solche IF-Verknüpfungen sind doch etwas CPU-Intensiver.

  10. Folgender Benutzer sagt Danke zu drfunfrock für den nützlichen Beitrag:

    bayerntobi (22.05.2008)

  11. #7
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    wenn die moeller-steuerungen MODULO-Operationen unterstützt kann man das auch ganz einfach berechnen...

    Bsp.:

    Code:
    *
    16kW:  16 / 9    = 1 -> Q4:=True  ... Rest: 7
            7 / 6    = 1 -> Q3:=True  ... Rest: 1
            1 / 3    = 0 -> Q2:=False ... Rest: 1
            1 / 1..3 = 1 -> Q1:=True  ... Rest: 0
    
    19kW:  19 / 9    = 2 -> Q4:=True  ... Rest: 1  (If x>=2 Then Rest:=(x-1)*9+Rest)
           10 / 6    = 1 -> Q3:=True  ... Rest: 4
            4 / 3    = 1 -> Q2:=True  ... Rest: 1
            1 / 1..3 = 1 -> Q1:=True  ... Rest: 0
    Geändert von vierlagig (22.05.2008 um 12:18 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  12. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    bayerntobi (22.05.2008)

  13. #8
    bayerntobi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.05.2008
    Beiträge
    9
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat von vierlagig:
    an deiner tabelle hege ich zweifel ...
    Ja, ich habe einige Lösungsmöglichkeiten weggelassen (HK1=HK2&HK3) und den HK4 nur dann benutzt, wenn die Leistung nicht durch die 3 anderen Heizkreise erzeugt werden konnte. Mir ging es erst einmal um die Methodik der Darstellung.

    Dass die CASE eine eindeutige Form der Zuweisung ist, wusste ich nicht, dafür aber jetzt.

    Ich werde mich dann mal mit der Möglichkeit des Arrays und der Modulo Operationen auseinandersetzen.

Ähnliche Themen

  1. FB Probleme beim rücksetzen einer Zeit
    Von Ladwig im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 12.11.2010, 09:58
  2. Hilfe beim programmieren einer S7 224
    Von Andyzrx im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 06.07.2009, 15:03
  3. Antworten: 1
    Letzter Beitrag: 16.04.2009, 08:43
  4. Probleme beim Laden einer CPU 318
    Von Jacko im Forum Feldbusse
    Antworten: 1
    Letzter Beitrag: 22.07.2005, 15:26
  5. Probleme beim Intebtirebnehmen einer PC-Sation.
    Von Jochen Kühner im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 29.03.2005, 16:59

Lesezeichen

Berechtigungen

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