Jump to content
  • 0

Steuerung für Toleranz für z.B. Heizen/Kühlen


Dainara

Question

Huhu, 

ich spiele seit einiger Zeit Stationeers, aber an den Steuerungen scheitert es bisher, wenn es SPS wäre, würde ich wohl weniger bis kaum Probleme haben.

Ich scheitere an folgendem Problem und hoffe dass mir jemand diese Steuerung die ich mir vorstelle aufzeichnen bzw. Erklären könnte. Ansich echt nicht schwer aber ich bekomme es nicht umgesetzt.

 

Gemessene Temperatur vom Sensor 20 Grad = 293 Kelvin

( ich werde es jetzt einfachhalber nur in Celcius schreiben)

Temperatur Minimal 23

Temperatur optimal 25

Temperatur Maximal 27

wenn die Temperatur zwischen 23 und 27 ist und keine Heizung oder Kühlung an ist, soll nichts passieren.

Wenn die Temperatur 23 unterschreitet, soll die Heizung angehen und so lange heizen bis 25 erreicht ist, danach wider aus gehen.

wenn die Temperatut 27 überschreitet, soll die Kühlung angehen und so lange Kühlen bis 25 erreicht ist, dann wider aus gehen.

ich scheitere daran, hab schon einen halben Block Papier verbraucht und Tage lang rum probiert.

 

hoffe jemand kann helfen, danke

bb

 

 

Link to comment

6 answers to this question

Recommended Posts

  • 0

Als erstes Mal Willkommen im Forum! Wo bleiben denn meine Manieren ?

Ich finde mit dem IC10 ist es sehr viel einfacher geworden das zu erreichen, was man haben möchte, deswegen erstmal die Lösung dafür. Eine Schaltung aus Logikbausteinen überlege ich mir noch, aber da muss ich noch tüfteln, geht aber auch recht "einfach", muss mich nur erstmal wieder rein denken. Benötigt natürlich sehr viel mehr Platz.

Was wird benötigt:

  • 1x IC Housing (das "Gehäuse")
  • 1x IC10 (programmierbarer Chip)
  • 1x Sensor
  • 2x Logic Memory
  • 2x Batch Writer
  • X Wandkühler
  • X Wandheizungen

Der Sensor und die beiden Memory Kits werden an das Gehäuse angeschlossen (Sensor an d0, etc. siehe das Programm unten). Die Schrauben beginnen oben links mit der Zählung (d0) und gehen dann nach unten und anschließend rechts und wieder runter bis wir bei d5 sind. Startest du das Programm einmal (das Gehäuse anschalten) erhälst du zwar einen Fehler, aber was bei den Schrauben erwartet wird, wird als gelber Text dazu geschrieben, wenn man mit der Maus darüber fährt.

Bei den Batch Writern (dt. Verbundschreiber) wird als Input das jeweilige Memory Kit eingestellt (d1 für die Kühlung und d2 für die Heizung). Als Output der Batch Writer stellen wir entsprechend die Wandkühler bzw. Wandheizungen ein. So kann man beliebig viele Kühl bzw. Heizeinheiten mit einer Steuerung ansteuern.

alias GasSensor d0
alias Kuehlung d1
alias Heizung d2
alias Temperatur r0

start:
l Temperatur GasSensor Temperature
sub Temperatur Temperatur 273

heat:
brlt Temperatur 23 4
blt Temperatur 25 restart
s Heizung Setting 0
j cool
s Heizung Setting 1
j restart

cool:
brgt Temperatur 27 4
bgt Temperatur 25 restart
s Kuehlung Setting 0
j restart
s Kuehlung Setting 1

restart:
yield
j start

Wie funktioniert das Ganz also?

  • mit dem alias Befehl "benennen" wir Geräte und Register (Speichervariablen), um den Namen schreiben zu können anstatt die Bezeichnung
  • direkt nach dem Start lesen wir die Temperatur aus dem Gassensor aus und speichern sie im Register "Temperatur"
  • anschließend wird 273 von dem ausgelesenen Wert abgezogen und der neue Wert überschreibt Temperatur (so können wir weiter unten die Werte in Celsius angeben)
     
  • zum Heizen prüfen wir als Erstes ob wir unter 23 Grad Celsius sind und wenn ja springen wir 4 Zeilen weiter (zum Start der Heizung)
  • sind wir über 23 Grad wird geprüft ob wir auch noch unter 25 Grad sind und wenn ja springen wir zum restart, um das Programm neuzustarten (wir wollen ja noch ein bisschen heizen)
  • sind wir allerdings über 25 Grad schalten wir die Heizung ab in dem wir auf unser Memory 0 als Setting schreiben, anschließend springen wir zur Kühlung und schauen sicherheitshalber gleich mal ob wir schon kühlen müssen
     
  • die Kühlung funktioniert genau gleich nur in die andere Richtung, wir prüfen also erst ob wir einen Wert überschritten haben und lassen so lange kühlen bis wir bei mindestens 25 Grad sind

Die Schaltung macht nur 1 Pause (Yield), d.h. ein Tick wird pausiert, wobei 1 Tick = 1/2 Sekunde ist. Sprich: 2x pro Sekunde wird geprüft und geschaltet.

Ich habe die Schaltung nur in der Theorie und nicht im Spiel selbst getestet, dabei hat alles funktioniert (https://www.stationeering.com)

Du kannst dir meine deutsche Übersetzung der Abkürzungen gerne hier durchlesen:

Ich muss mich allerdings nochmal ransetzen, weil einige Befehle dazu gekommen sind, die hier noch nicht enthalten sind.

Gruß Philip

Link to comment
  • 0

Hmm, also das mit der IC10 verstehe ich noch überhaupt nicht, ist mir noch zu kompliziert mit den vielen Kürzeln und so, erstmal mit den normalen Logik Schaltkreisen, aber interessieren würde mich schon beides, dann hätte ich zumindest mal einen Anhaltspunkt wo ich mich durchbeißen kann 

:)

bb

Dainara

Link to comment
  • 0

vielen lieben Dank, ich werd mich mal hinsetzen und das nachbauen, die Erklärung war denke ich wirklich hilfreich und man braucht einige Bauteile weniger, ich hab die Schaltung bereits mit Logic Bausteinen realisiert, hab eine andere Schaltung gefunden die wohl das selbe macht, hab diese nur etwas umbauen müssen um das zu realisieren,

Der Beitrag war sogar von dir ? hab die Schaltung um einen 3. Memory Baustein erweitert 23   25   27  sowie um eine mathe einheit um in Celcius umzurechnen,  die Werte hab ich etwas abgeändert weil ständig hin und her geheizt gekühlt wurde

aber das mit dem Select Baustein verstehe ich nicht, es funktioniert aber ich verstehs nicht^^

 

BB

Dainara

Link to comment
  • 0

Super, dass du schon weiter gekommen bist ? Wäre auch kein Thema gewesen, dir die Schaltung dafür anzupassen. Hat nur etwas gedauert ?

Das mit Select ist relativ einfach: Select hat 2 "Schaltzustände": 0 und 1. Dann einen Eingang und einen Ausgang. An 0 wird eine Temperatur (über ein Memory Kit) angeschlossen und an 1 ebenfalls. Über den Eingang kommt dann von der Compare Einheit (der Vergleich) entweder 0 oder 1 an, je nachdem ob der Vergleich wahr oder falsch ist. Das was ankommt, bspw. 0 veranlasst dann die Select Einheit den Wert, der am Schaltzustand 0 ankommt (in dem Fall 310 Grad Kelvin) über den Ausgang auszugeben.

Konkret: In der Ausgangssituation ist die Temperatur kühl genug, also unter 310 Grad Kelvin, deswegen ist der Vergleich "0", weil wir auf "Größer" prüfen (das Memory Kit ist auch an die Compare Einheit angeschlossen). Steigt die Temperatur jetzt wird irgendwann der Wert überschritten und die Compare Einheit schaltet auf 1, weil der Vergleich wahr (oder eben "1") wird. Diese 1 wird jetzt an die Select Einheit übergeben, die umschaltet und 305 Grad Kelvin (Schaltzustand "1" der Select Einheit) am Ausgang übergibt.
Jetzt vergleicht die Compare Einheit ob die Temperatur größer als 305 Grad Kelvin ist. Das Ergebnis der Compare Einheit wird parallel auch an den Logic Writer übergeben, der die Kühleinheit steuert. Es wird jetzt also so lange gekühlt bis wir unter 305 Grad Kelvin sind (Compare schaltet auf "0" bzw. falsch, weil z.B. 300 kleiner als 305 ist). Dadurch wird a) die Kühleinheit ausgeschaltet und b) schaltet die Select Einheit wegen "0" wieder auf 310 Grad Kelvin. Die Kühlung bleibt jetzt also so lange aus bis wir wieder größer als 310 Grad erreicht haben.

Ich hoffe das war verständlich ? Ansonsten erkläre ich es nochmal ausführlicher mit Beispielen.

Gruß
Philip

Link to comment
  • 0

Deine letzte Frage habe ich abgetrennt und nach

verschoben, weil es ein neues Thema ist ?

Wenn deine Frage hier zu deiner Zufriedenheit beantwortet ist wäre es super, wenn du die Antwort, die dir geholfen hat markieren würdest (das Pokal-Symbol). So wird die Frage als beantwortet markiert.

Link to comment
Der letzte Beitrag war vor 1467 Tagen. Überlege dir ob es vielleicht sinnvoller ist ein neues Thema zu starten.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Beachte auch unsere Privacy Policy.