Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
sunny0815
Anmeldungsdatum: 24.11.2004 Beiträge: 28 Wohnort: Ludwigshafen
|
Verfasst am: 24.11.2004, 23:56 Titel: Probleme mit Aquariensteuerung |
|
|
Hallo Leute,
ich bin ziemlich neu hier und brauche einen Rat von Euch. Wer kann mir helfen?
Ich steuere mit einem 330 MHz Rechner und einem QBasic Programm ein Seewasseraquarium, insgesamt 16 Ausgänge und 12 Eingänge- läuft fehlerfrei.
Ich habe vor etwa einem Jahr mit dem Programmieren angefangen (Programmiererfahrungen hatte ich noch aus den C 64ér Zeiten).
Aber nun zu meinem "Problem": das Programm führt um Mitternacht einen Neustart durch so dass alle Variablen gelöscht werde- muss so sein, war ein Fehler am Anfang der Programmierung und der Aufwand das zu ändern wäre ein neues Programm und damit zu gross. Ich muss aber dem Programm sagen wieviel Tage vergangen sind, da alle 7 Tage Spurenelement nachdosiert werden müssen. Ich möchte aber die Daten (Zähler) nicht auf der Festplatte zwischenspeichern sondern will Peek und Poke verwenden, in welchem Bereich kann ich peeken und pokken?
Vielen Dank
Michael
P.S. bin fast wahnsinnig geworden alles möglich ohne Erfolg ausprobiert
Ihr seit meine letzte Rettung |
|
Nach oben |
|
|
FatalError
Anmeldungsdatum: 22.11.2004 Beiträge: 21 Wohnort: Berga/Elster
|
Verfasst am: 25.11.2004, 00:49 Titel: |
|
|
Erstmal ist es wichtig zu wissen, ob du nur das Programm, oder den ganzen Rechner neustartest?
Schätze mal es beschränkt sich nur auf das Programm...
Ich würde den Datenausgang vom LPT benutzen...
[EDIT] Quark, da hängt bestimmt n Teil der Steuerung dran, oder? |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 25.11.2004, 01:25 Titel: |
|
|
Hallo
Setze doch vor dem ersten Start einmal das Datum mit DATE$ zurück auf 1.Januar 1970 oder so. Die Uhr und damit das Datum laufen ja unabhängig vom Programm weiter und können als Referenz benutzt werden. Am 8. Januar ist es dann wieder Zeit für Spurenelemente.
Gruss
Skilltronic |
|
Nach oben |
|
|
sunny0815
Anmeldungsdatum: 24.11.2004 Beiträge: 28 Wohnort: Ludwigshafen
|
Verfasst am: 25.11.2004, 12:03 Titel: |
|
|
Hallo Leute,
danke erstmal für diese Tipps.
klar natürlich wird nur das Programm neu gestartet
LPT : habe 3 Karten am Rechner für Ausgänge und Eingänge mehr kann QB nicht verwalten.
date$ : diesen Befehl kenne ich nicht. Ich darf das Datum aber nicht verändern, da um Mitternacht alle Daten und Messwerte des Tages als Datei abgespeichert werden, der Dateiname ist das Datum, um später zu wissen was wann gemessen wurde.
Guß
Michael |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 25.11.2004, 13:09 Titel: |
|
|
Hallo
Um dein Problem mal einzukreisen: geht es darum, um Mitternacht alle Variablen nach dem Speichern zu löschen ausser den vergangenen Tagen ?
Was ich nicht ganz verstehe - du legst die Messwerte ja wohl auch auf der Platte ab. Warum dann nicht auch die Laufzeit ? Dann könntest du das Startdatum anschliessend wieder einlesen.
Wenn du aber unbedingt die Festplatte umgehen willst, vielleicht doch die Methode mit dem Datum. Mit
DATE$ = "MM-TT-JJJJ"
kannst du das Datum setze, und mit
datum$ = DATE$
abfragen. Beachte dabei die englische Schreibweise - der Monat wird zuerst angegeben. Also z.B.
DATE$ = "09-11-2001"
Also ich stelle mir das so vor: Du schreibst in die Messwert-Speicherdatei das wirkliche Startdatum und setzt das Datum dann mit DATE$ zurück. Das wird nur einmal ganz am Anfang gemacht. So kannst du deinen Messwerten eben statt dess echte Datums nur Tag 1, Tag 2 etc. zuordnen. Das wirkliche Datum hast du aber am anfang gespeichert. So kannst du's ja ausrechnen. Wenn es über einen Monat Laufen soll, muss noch eine kleine Tagesberechnung eingebaut werden, damit der 1. Februar eben als Tag 32 gezählt wird. Mit diesem Tageszähler kannst du dann z.B. mit
IF tag MOD 7 = 0 THEN GOSUB gibspurenelemente
oder so arbeiten. Die Messwerte um Mitternacht mit APPEND an die entsprechende Datei anhängen.
Da fällt mir gerade noch was ein. Kannst du nicht, wenn du die Messwertdatei sowieso öffnest, deren Länge mit LOF ermitteln, und daraus die bereits vergangenen Tage anhand der schon geschriebenen Messwerte errechnen ? Aber da müsstest du ja wieder nach dem Neustart auf die Platte zugreifen, und das willst du ja partout nicht...
Zitat: |
LPT : habe 3 Karten am Rechner für Ausgänge und Eingänge mehr kann QB nicht verwalten.
|
Wie meinst du das ? Sebastian - der Rekordposter dieses Forums - hat sich z.B. nach einem Plan von mit eine 24-Kanal Relaiskarte für den COM-Port gebaut, die gut zu funktionieren scheint. Das Prinzip nach dem diese arbeitet, kann auf fast beliebig viel Ein- und Ausgänge erweitert werden. Wie gesagt - für einen COM-Anschluss. Den Plan gibt es seit neustem (ich fühle mich ja so geehrt) ) in Form eines kleinen Tutorials von mir in der Rubrik Tutorials-> Steuern und Regeln mit dem PC -> COM-Port.ZIP auf www.qbasic.de. Die ganze Schaltung kostet ohne Relais nur ein paar Euro.
Gruss
Skilltronic |
|
Nach oben |
|
|
Mecki Igel
Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
|
sunny0815
Anmeldungsdatum: 24.11.2004 Beiträge: 28 Wohnort: Ludwigshafen
|
Verfasst am: 25.11.2004, 16:55 Titel: |
|
|
Hallo zusammen,
das mit dem Datum auslesen ist die Lösung, werde ich machen.
Zur Info:
alle Variablen werden um24:00 Uhr gelöscht.
LPT1 hier habe ich 8 Ausgänge die ich dirkt über out(&hxxx),y ansteuern kann. Gleichzeitig kann ich Schalter gegen Masse = ein einlesen, ist vorgeseh um Daten vom Drucker einzulesen wie z.B. Papierende. Habe alles über Optokoppler getrennt.
Der PC macht alles außer füttern (meerwasser werden mit Frostfutter gefüttet.
Es gibt folgende Schaltmöglichkeiten im Prg: - kleine Übersicht
Heizen > 25°C
Kühlen > 28°C
Licht 1 ein 12:00 Uhr
Licht 2 ein 16:00 Uhr
HQI ein 18:00 Uhr
alles aus 24:00
Niveau im Aquarium messen und ggf nachfüllen.
Niveau Vorratsbehälter kontrollieren wenn leer nicht nachfüllen sondern Alarm auslösen
Eiweißabschäumer kontrollieren: Wenn Vorratsbehälter für Abschäumer voll, Abschäumer inkl. Luftpumpe Ausschalten Alarm auslösen
Redoxpotential messen, ggf Wasserstoffperoxid nachdosieren
pH kontrollieren ggf Bicarbonat nachdosíeren
Überlauf im Aquarium konrollieren, wenn Wasserrücklauf zum Filter schlecht (Rohr verschmutzt) Flterpumpe asuschalten Alarm auslösen. 4 Stömungspumpen steuern Intervall/Strömungsrichtung.
Temperatur der Abdeckung Prüfen und Ablüfterdrehzahl anpassen
usw.
Vielen Dank für Eure Hilfen, hat mir sehr geholfen
Gruß
Michael |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 25.11.2004, 21:28 Titel: |
|
|
Aha interessante Idee... ;-) Ich nehme an, der PC, der das Aquarium steuert, hängt hoffentlich an einer USV (unterbrechungsfreie Stromversorgung) ähnlich wie meine Server. Für so eine Anwendung würde ich dem Prozessrechner zusätzlich noch ein RAID mit Promise-Festplattencontroller spendieren und eine Datenbank mit Transaktionen verwenden (von der Natur der Anwendung her ist dies bereits eine sog. OLTP-Datenbank), so dass die Anwendung jederzeit gestoppt und gestartet werden kann und sie aber weiss, in welchem Zustand sie das letzte Mal war. Und ebenfalls wichtig: Ich würde noch so eine Applikation ein Protokoll (einfache .TXT-Datei, welche man mit OPEN .. FOR APPEND öffnet, reicht bereits aus) schreiben lassen. Nur so kann man später auch einmal nachvollziehen, warum z.B. die Fische zu kalt hatten, Wasser schmutzig usw., wenn etwas einmal nicht so läuft, wie es sollte.
Zum Thema Datum und Uhrzeit: So etwas wie die Systemzeit ändern sollte man niemals aus Anwendungen heraus machen, auf einem normalen Windows-Benutzerkonto ohne Administratorenrechte ist das Ändern der Systemzeit ohnehin nicht möglich. Besserer Tipp von mir: Schau Dir am besten einmal
http://www.dreael.ch/Deutsch/Download/DatumBerechnung.html
an. Damit kannst Du ein Datum in eine absolute Anzahl Tage umwandeln und danach das MOD 7 anwenden und so z.B. Montag-Samstag etwas anderes als am Sonntag machen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 25.11.2004, 22:45 Titel: |
|
|
Hallo !
Zitat: |
Zum Thema Datum und Uhrzeit: So etwas wie die Systemzeit ändern sollte man niemals aus Anwendungen heraus machen, auf einem normalen Windows-Benutzerkonto ohne Administratorenrechte ist das Ändern der Systemzeit ohnehin nicht möglich.
|
Wieso denn nicht ? Ich schätze mal, der Rechner macht sowieso nichts anderes, als das Aquarium zu überwachen. Ausserdem wird unter Windows meiner Erfahrung nach bei der Rückkehr die Systemzeit wieder hergestellt, wenn sie in der DOS-Box mit QB geändert wurde.
Was die Sicherheit (USV usw.) angeht, wäre wohl ein Microcontroler am besten für die Steuerung geieignet . Mit eingebautem oder externem EEPROM zur Protokollspeicherung.
Gruss
Skilltronic |
|
Nach oben |
|
|
sunny0815
Anmeldungsdatum: 24.11.2004 Beiträge: 28 Wohnort: Ludwigshafen
|
Verfasst am: 26.11.2004, 11:52 Titel: |
|
|
Hallo
noch kurz zum Abschluß:
der Rechner hängt am normalen Stromnetz, mit externer Kontrolle ob sich der Rechner "aufgehängt" hat, kann manchmal vorkommen wenn es Problem mit z.B. dem pH-Meter gibt- Batterie leer z.B..
Rechner wird komplett ausgeschaltet und Regelung läuft auf minimaler Basis mit elekt. Zeitschaltuhren
Gruß
Michael |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 26.11.2004, 12:05 Titel: |
|
|
Wie nimmst du eigentlich die Messwerte wie pH-Wert etc. auf ? |
|
Nach oben |
|
|
sunny0815
Anmeldungsdatum: 24.11.2004 Beiträge: 28 Wohnort: Ludwigshafen
|
Verfasst am: 26.11.2004, 13:16 Titel: |
|
|
Ph -Wert
den pH-Wert, das Redoxpotential und die Temperatur erfasse ich über 2 verschiedene ph-Messgeräte (Redox-Messungen benötigen eine andere Elektrode als pH-Wert) die Messgeräre verfügen über RS 232 Schnitstellen. Über Com 1 und Com 2 werden die Werte ausgelesen, angezeigt und ausgewertet.
Gruß
Michael |
|
Nach oben |
|
|
|