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

Ergebnis 1 bis 5 von 5

Thema: STL Programmierproblem: Wie man unterschiedliche DB Blöcke aufruft

  1. #1
    Registriert seit
    04.11.2015
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Liebe Experten,
    Ich bin neu in der AWL-Programmierung und ich habe ein Problem, das ich nicht lösen kann.
    Ich arbeite an einem Programm, das die Temperatur in den 10 Zimmern steuert. Jedes Zimmer verfügt über drei Eingänge: für Zimmer eins: EW10 Referenztemperaturwert, IW12 Messung, IW14 Arbeitsmodus (0 Heizung, 1 Kühlung sendet man an Bit 4) und zwei Ausgänge AW10-Heizung (auch bit 4), , QW12 Kühlung (auch bit 4), Für Zimmer zwei IW16 Referenztemperaturwert, IW18 Messung, EW20 Arbeitsmodus (0-Heizung, 1 Kühlung) und zwei Ausgänge QW14-Heizung, QW16 Kühlung und so weiter, bis Zimmer 10.
    Ich arbeite auch an der Berechnung der Anzahl der Zimmer mit Personen im gegensatz zur dem Anzahl der Zimmer, die leer sind.
    Ich habe mein Programm beigelegt und wäre dankbar, wenn jemand mir sagen kann, was ich falsch mache.
    Vielen Dank im foraus
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren STL Programmierproblem: Wie man unterschiedliche DB Blöcke aufruft  

  2. #2
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Gruß Gott im Forum!

    Also ganz neu wirst Du wohl nicht sein.

    Zu allererst:
    was funktioniert denn nicht? Du kannst ja nicht erwarten, dass Dir wer den gesamten Code durchschaut.

    Weiters:
    Den OB1 - Code würde ich säuberlich in einen FC/FB einbetten... ist eigentlich nicht üblich im OB1 unzählige Tempvariablen anzulegen.
    Die Symbolik hat keine Bezeichnungen/Klartext
    Bei der Umrechung von Raum auf EW- Adresse schreibt man üblicherweise statt L8 *D besser SLD3.
    Deine Beschreibung EW10 (wäre bei mir Eingangswort 10) gibt es in der Hardware nicht, da beginnt es bei EW288- im Programm ist es aber so programmiert, da beginnt der 1.Referenzwert bei EW10.
    Ich habe auch keine Ahnung wie die HW-Konfig aussehen soll: EW10 + 12 ist Analogeingabe und dann kommt 14.0 bis 15.7 eine DE-Karte? Und für die 10 DE's brauchst Du dann 10 DE-Karten?
    Uns selbst wenn das so irgendwie funktionieren sollte (was ich nicht annehme), was machst Du wenn ein Analogeingang defekt wird und Du einen anderen verwenden willst?


    Also Nein- so programmiert man nicht!
    Tipp:
    Einen FB für die Regelung programmieren.
    Den rufst Du dann 10 x auf mit den Adressen wo Deine Peripherie liegt, damit das auch wieder änderbar ist.

    Gruß
    Karl

  3. #3
    slavko ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.11.2015
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Sehr geehrter Herr Karl

    Erstmal Danke für Ihre Antwort. Was nich funktioniert ist das die CPU in STOP geht u SF Rot leuchtet (PLCSIM) und ich weiss nicht warum.
    Diese Aufgabe gab mir ein Professor, um besser indirekte Adressierung zu lernen. Ihr Vorschlag einen FB für die Regelung programmieren und dann 10 aufrufen ist nicht akzeptabel denn ich hate diese Idee am amfang aber der Professor hat sie nicht akzeptiert.
    Adressen für jedes Zimmer mit drei aufgelisteten Eingängen und zwei Ausgängen verstehe ich auch nicht .Die einzige logische Erklärung ist es dass es schwieriger zu lösen sein wird.

    Meine Idee für die Lösung des Problems ist es FB25 für die Regelung in einer Schleife aufrufen während der Inhalt jedes Datenblocks zur entsprechendem Zimmer im DB100 kopirt wird, der Instanz Datenblock der FB25 ist, woraufhin die modifizierten Inhalte des DB100 in dir entsprechenden Datenblocks zur entsprechendem Zimmer zurück kopiert werden.

    Ich weiß nicht, ob meine Idee richtig ist, und op auf diese Weise das Problem gelöst werden kann. Ich bin offen für Vorschläge

    Vielen Dank im Voraus

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von slavko Beitrag anzeigen
    Ihr Vorschlag einen FB für die Regelung programmieren und dann 10 aufrufen ist nicht akzeptabel denn ich hate diese Idee am amfang aber der Professor hat sie nicht akzeptiert.
    [...]
    Meine Idee für die Lösung des Problems ist es FB25 für die Regelung in einer Schleife aufrufen
    Eine solche Lösung wäre total aufwendig und praxisfremd und absolut nicht wartbar. So programmiert kein professioneller Programmierer.
    Wenn der Professor will, daß Ihr indirekte Adressierung lernt, dann könnte er Euch besser einen FIFO oder einen Ringpuffer programmieren lassen.

    Bei Siemens gibt es keine Arrays of Instanzen, mit denen man die Schleife halbwegs lesbar programmieren könnte. Bleibt dann noch das aufwendige und völlig undurchsichtige Umkopieren von Instanzen in einen Work-DB oder eine Fallunterscheidung für 10 unterschiedliche Aufrufe - da kann man auch gleich die ganze Schleife weglassen. Die umständliche indirekte Zuordnung der Eingänge und Ausgänge zu den Instanzen ist da auch noch zu lösen. Und alles nur, um nicht 10x nacheinander einen FB-Aufruf hinzuschreiben ...

    Weitere mögliche Schweinereien für FB-Aufrufe mit wechselnden Instanz-DB stammen aus dem vorigen Jahrtausend und sind eines Lehrers unwürdig, der modernes Wissen und Methoden vermitteln will. Zumal diese uralten Methoden auf den neueren Siemens-SPS sogut wie nicht mehr machbar sind.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    shrimps (05.11.2015)

  6. #5
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von slavko Beitrag anzeigen
    Was nich funktioniert ist das die CPU in STOP geht u SF Rot leuchtet (PLCSIM) und ich weiss nicht warum.

    Gut, Harald hat das perfekt beschrieben, was von der ganzen Sache zu halten ist.




    Um Dir in diesem Dilemma trotzdem zu helfen:
    Fehlerdiagnose der CPU auslesen.
    Ich nehme an, dort wird ein Peripheriezugriffsfehler sein, weil die von Dir beschriebenen Eingangsworte nicht existieren.

    Also müsstest Du die HW- Konfig mal anpassen- mit 2 kanaligen AE Karten und einer DE-Karte.
    Dann kann man weiterschauen.

    Ich nehme an, dass Du die Originalaufgabe nicht posten kannst- vermutlich ist diese nicht auf deutsch/englisch.
    Von wo kommst Du?

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 06.10.2013, 03:12
  2. TIA Wie man Datenbausteine im SCL aufruft
    Von bkizilkaya im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 09.09.2013, 20:32
  3. Wie rechnet man m³ in Nm³ um?
    Von veritas im Forum Stammtisch
    Antworten: 1
    Letzter Beitrag: 25.05.2010, 17:54
  4. Wie simuliert man am besten?
    Von Tigerkroete im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 16.08.2006, 13:50
  5. Antworten: 4
    Letzter Beitrag: 10.10.2005, 08:21

Stichworte

Lesezeichen

Berechtigungen

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