Ein Neuer / C-Control-Basic?

OP #8020230
Lesenswert?

Hi,

ich bin ein Neuer (alter) und möchte mich kurz vorstellen: ich hatte im aktiven Leben etwas mit IT-Organisation zu tun, ich hab' mir auch seinerzeit privat eine Branchenlösung in FoxPro gebaut, die seitdem im Einsatz ist.

Vor ca. 30 Jahren hab' ich auch ein Saunasteuergerät auf Basis einer Conrad C-Control (mit Tastatur + LCD-Anzeige) gebaut und dieses programmiert, d.h. ich hab' mir im Netz Bausteine zusammen gesucht und das Steuerprogramm in Basic geschrieben. Läuft seitdem klaglos.

Problem: jetzt hätte ich gerne in das Basic-Programm der Saunasteuerung noch eine neue Funktion drinnen gehabt - ich bin aber total überfordert :-( , d.h. ich kann teilweise nicht nachvollziehen, was da im Programm abläuft.

Frage: gibt's hier jemand, der eventuell mit Rat & Tat helfen könnte?

Thx Reinhard

: Bearbeitet durch User
#8020247
Lesenswert?

Reinhard S. schrieb:

Problem: jetzt hätte ich gerne in das Basic-Programm der Saunasteuerung noch eine neue Funktion drinnen gehabt - ich bin aber total überfordert :-( , d.h. ich kann teilweise nicht nachvollziehen, was da im Programm abläuft.

Das ist ein schönes Beispiel dafür, dass sich nicht existente Dokumentation nie bei der Erstellung, sondern erst Jahre, manchmal viele Jahre später rächt. Insofern hält es sich an das Prinzip, dass Rache stets kalt serviert werden sollte.

OP #8020260
Lesenswert?

Cyblord -. schrieb:

Ist immer schwierig wenn man etwas erweitern will dass man vorher nur per Copy&Paste zusammenstückelt hat, ohne es verstanden zu haben.

Damals hatte ich es ja so halbwegs verstanden ... ist halt schon ca. 30 Jährchen her...

Ich beschreibe mal was es tut:

  • Nach Drücken eines Tasters (Eingang1) läuft der Ofen + die Kontroll-LED schaltet sich ein (je nachdem ob grad geheizt wird oder nicht)
  • Bis 60° läuft 'SaunaOfen' Vollgas
  • über 60° taktet selbiger (weil die 9 kW zu viel sind für die kleine Sauna)
  • Um Überschwingen zu vermeiden wird 4° früher abgedreht (Zeile 260)
  • 'SollTemp' = 95° (Zeile 89)
  • nach 4 Stunden (Zeile 112) wird automatisch abgedreht.

Weiters gibt's eine Temperatur-Änderungsmöglichkeit im LOOP (Zeile 106): durch nacheinander Drücken von z.B. ' * 8 5 # ' => wird die 'SollTemp' auf 85° gesetzt.

Weil meine sportliche Aktivität outdoor ca. 2-3 Stunden benötigt, ich die Sauna vor dem Verlassen des Hauses aufdrehen muss, selbige aber nur 45 Minuten zum Aufheizen benötigt, würde ich mir noch eine Zeitverzögerung (in Minuten) wünschen. D.h. die Sauna soll erst mal warten, bis sie aufzuheizen beginnt. Die Wartezeit möchte ich eingeben können ... eventuell so:

  • z.B. ' 0 5 0 * ' (0 zum Aktivieren der Eingabe (?), 50 = Minuten Einschaltverzögerung, # zum Abschließen der Eingabe)

Ginge das halbwegs problemlos einzubauen, ohne dass da viel umgestrickt werden muss?

Danke schon mal, lG, Reinhard

Angehängte Dateien:
: Bearbeitet durch User
#8020278
Lesenswert?

Reinhard S. schrieb:

Cyblord -. schrieb:

Ist immer schwierig wenn man etwas erweitern will dass man vorher nur per Copy&Paste zusammenstückelt hat, ohne es verstanden zu haben.

Damals hatte ich es ja so halbwegs verstanden ... ist halt schon ca. 30 Jährchen her...

Dein Programm ist ziemlich gut strukturiert und dokumentiert. Das sinnlose Gemotze bestimmter Leute hier mußt du ignorieren.

Weil meine sportliche Aktivität outdoor ca. 2-3 Stunden benötigt, ich die Sauna vor dem Verlassen des Hauses aufdrehen muss, selbige aber nur 45 Minuten zum Aufheizen benötigt, würde ich mir noch eine Zeitverzögerung (in Minuten) wünschen. D.h. die Sauna soll erst mal warten, bis sie aufzuheizen beginnt. Die Wartezeit möchte ich eingeben können ... eventuell so:

  • z.B. ' 0 5 0 * ' (0 zum Aktivieren der Eingabe (?), 50 = Minuten Einschaltverzögerung, # zum Abschließen der Eingabe)

Wir sehen deinen Hardware nicht, siehe Netiquette. Wie es scheint, hast du einer numerische Tastatur mit 12 Tasten, 0-9 + * + ??? Stimmt das?

Ginge das halbwegs problemlos einzubauen, ohne dass da viel umgestrickt werden muss?

Vermutlich schon. Das Problem ist eher das Testen. Da wir keine Hardware haben, musst du das machen und das wird einige Durchläufe brauchen.

OP #8020292
Lesenswert?

So - an oberen markierten Anschluss hängt das Display, am unteren markierten die Tastatur.

Na dann werd' ich mal ein Kabel suchen, um das Ding ggf. programmieren zu können...

===================

NACHTRAG: ein Käbelchen zum Programmieren über die Serielle hätte ich gefunden. Wenn ich mich richtig erinnere, muss ich noch die Autostart-Funktion abschalten, damit ich programmieren kann ... ich such' mal die Anleitungen durch, wie das geht bzw. wo der dazugehörige Jumper sitzt.

===================

NACHTRAG-2: zum Foto: ich hab' eruiert, dass der linke Teil die aufgesteckte C-Control-I ist - sie steckt auf einem C-Control-Applicationboard (rechter Teil).

Angehängte Dateien:
: Bearbeitet durch User
#8020361
Lesenswert?

@ Reinhard S.

Hmm. Ich hab mir das mal angeschaut. Da gibt es ein kleines Problem. Im Moment ist die Software so, daß man die Solltemperatur nur einstellen kann, wenn die Sauna aktiv ist! Das ist aber gerade beim Timer unpraktisch. Man will VORHER die Solltemperatur einstellen und DANACH soll der Timer die Sauna automatisch einschalten.

Mein Vorschlag. Man kann mit der *-Taste zwei Modi umschalten. Eingabe Solltemperatur Eingabe Timer für Autostart

Das geht IMMER, egal ob die Sauna an oder aus ist. Natürlich mit Anzeige im Display.

Ist das für dich OK?

OP #8020370
Lesenswert?

Falk B. schrieb:

Man will VORHER die Solltemperatur einstellen

Die einprogrammierte default-Solltemperatur wird praktisch NIE verstellt ... üblicherweise starte ich mit dem Taster und gut ist's - das sollte auch so bleiben. D.h. Taster drücken = startet sofort + mit der default-Temperatur.

Erst wenn a.) ein Zeitverzug oder b.) eine Temperaturänderung einzugeben ist, sollte die Änderungs-Routine aufgerufen werden müssen.

Vielleicht nur die Änderungsroutine erweitern(?) sodass BEIDE Werte in der Routine gesetzt werden, also z.B. ' * 8 5 # 1 2 0 # ' = die Temperatur auf 85 Grad + eine Heizpause von 120 min? Dann müsste man halt bei (nur) einer Temperaturänderung auch noch die 0 für KEINE Pause mit eingeben, also so: ' * 8 5 # 0 # ' für 85 Grad. Wobei dieses mittlere Sonderzeichnen natürlich auch der * sein könnte.

Konnte ich mich verständlich ausdrücken?

===================

NACHTRAG: oder Deine Variante OHNE Eingabeverpflichtung:

*) Taster einschalten = geht 2 Minuten in einen Wartemodus *) während dieser 2 Minuten KANN ich die Verzögerungszeit eingeben - wird nix gemacht, wird praktisch mit 2 Minuten Verzögerung zu heizen begonnen.

: Bearbeitet durch User
OP #8020463
Lesenswert?

Rbx schrieb:

Wie wäre es mit einer einfachen analogen Zeitschaltuhr für das verzögerte Timing?

Wenn man die in die 230V-Seite rein hängt, fehlt immer noch einer, der den Taster drückt, wenn's losheizen soll.

Bei längerem Nachdenken gefällt mir die erste Idee von Falk B. recht gut: NACH dem Start per Taster und noch VOR dem Loop müsste eine Abfrage rein...

.... nur ' * ' -> läuft los,

.... ' 1 2 0 * ' -> 120 min PAUSE (= WAIT, danach läuft's normal weiter)

Damit bräuchte ich im Normalfall nach dem Taster nur 1x den '*' drücken ...

LG

: Bearbeitet durch User
#8020585
Lesenswert?

Hier gibts Infos und den Compiler für C-Control 1

https://www.cctools.eu/c-control/ https://ccintern.dharlos.de/

Anbei der neue Quelltext. Ich hab relativ viel geändert, damit es passt und ich nich zuviel Murksen muss. Mal sehen wie es reagiert. Es wäre ein Wunder, wenn es auf Anhieb sofort läuft. Also viel testen. Anbei auch das Zustandsdiagramm.

Angehängte Dateien:
#8020681
Lesenswert?

Noch ein Hinweis. Die Kennlinie vom Temperatursensor ging nur bis 118°C! Die Notabschaltung reagiert in der Software aber erst ab 120°C! Hier solltest du nochmal prüfen, welche Spannung dein Temperatursensor WIRKLICH liefert. Ich hab den letzten Kennlinienpunkt auf 120°C verschoben, damit zumindest theoretisch eine Übertemperaturabschalung funktioniert. So wirklich gut ist das aber nicht. Der Sensor sollte am Ende der Kennlinie wenigsten 10°C mehr messen können, also erst bei 130°C den ADC-Wert 255 ergeben. Klar kann man die Notabschaltung auch runter setzen, aber wenn 115°C der Maimalwert im Normalbetrieb sind, sollte man da ein wenig Luft lassen, damit die Übertemperaturabschaltung nicht immer kurz vorm Abschalten ist.

Angehängte Dateien:
OP #8020686
Lesenswert?

Danke ... schau' ich mir an.

Ist aber nicht kritisch - die "richtige" Notabschaltung ist unabhängig von der C-Control und funktioniert mit einer Thermosicherung (130 Grad) und dem Hauptrelais. D.h. im Fall, dass das taktende Relais "picken" bleibt oder die C-Control "spinnt", gibt's das Hauptrelais über die Thermosicherung, das die ganze Geschichte abschalten kann.

: Bearbeitet durch User
OP #8026786
Lesenswert?

So ... es hat mir doch keine Ruhe gelassen.

Falk war so nett und hat sich meines Problems angenommen - und es "gut gemeint": er hat da viel um- und neugestrickt mit dem Effekt, dass ich einiges nicht nachvollziehen konnte, und Dinge, die vorher jahrzehntelang tadellos funktioniert haben, gingen nicht mehr. Und alles müsste von vorne durchgetestet werden - das war jetzt nicht das, was ich eigentlich wollte. Notbremse, ich hab' mich bei Falk höflich bedankt (er dürfte aber doch etwas angesäuert sein ... sorry, nochmals, Falk).

Habe nun selbst eine einfache Lösung gefunden und einen Timer mit einer fixen Zeitvorgabe von 60 Minuten eingebaut: beim Programmstart MIT gedrücktem Taster (Eingang1) führt das Programm einen 60-min-Timer aus. Funktioniert bestens - und ich muss nicht mal die Tastatur bemühen = praktisch ... damit sind 95% meines Bedarfes abgedeckt :-) . Könnte eigentlich so bleiben...

... nur mal interessehalber ;-) ... natürlich wäre es eleganter, wenn man die Zeit bis zum Einschalten über die Tastatur eingeben könnte - ich hab' das versucht, bin dabei auch recht weit gekommen - allerdings hängt's noch an einer Kleinigkeit(?), die ich nicht lösen konnte.

Habe das Unterprogramm jetzt mal angehängt ... die Eingabe des Timerwertes XXX mit ' * x x x # 'funktioniert, es kommt nach jeder Taste der Bestätigungs-Peep, das Programm verzweigt richtig nach #TIMER_WAIT, es schreibt mir die richtigen Sekunden über die Serielle raus, es hält auch das Programm die erforderliche Zeit an ('PAUSE TempTimer') - nur das Zurückspringen ins Hauptprogramm krieg' ich nicht richtig hin.

Dazu: dieses testweise 'GOTO WEITERGEHTS' bringt das Programm zwar zurück ins Hauptprogramm - ist natürlich völlig unsauber (ab dann funtioniert die LCD-Anzeige nämlich nicht mehr), da müsste ich mit einem RETURN zurück. PROBLEM: wie verschachtle ich den Loop (warten auf Tastatureingabe) richtig, wenn dieses uralte BASIC der uralten CControl-I kein mehrzeiliges IF (und damit kein ELSE) und auch kein DO WHILE kennt...?

Falls jemand eine Möglichkeit sieht, wie ich den Tastatureingabe-Loop mit den rudimentären Möglichkeiten der alten CControl BASIC umbauen müsste, damit ich nach dem 'PAUSE TempTimer' sauber zurück ins Hauptprogramm komme ... ? Eilt nicht - ich kann mich ohnedies erst am WE wieder drum kümmern.

LG Reinhard

Angehängte Dateien:
: Bearbeitet durch User

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren