Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
didi
Anmeldungsdatum: 01.07.2005 Beiträge: 22
|
Verfasst am: 24.07.2005, 19:39 Titel: Erweiterung: Daten von AD-Wandler aufzeichnen |
|
|
Hallo,
Mit Hilfe einiger Forum-Mitglieder läuft jetzt meine PH-Regelung zufriedenstellend.
Es wäre natürlich Super wenn man die Werte über einen längeren Zeitraum nachverfolgen (aufzeichnen) könnte.
Hat jemand einen Vorschlag?
Gruß didi |
|
Nach oben |
|
 |
Kai Bareis

Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 24.07.2005, 20:13 Titel: |
|
|
Code: | OPEN "messwert.txt" FOR APPEND AS #1
DO
'Programm
Print #1, "Uhrzeit:";time$;" Datum:";date$;" Messwert:";blabla%
loop
close |
So könnte sowas aussehen.
Mit OPEN wird die Datei messwert.txt geöffnet und das Append bedeutet das auch wen das Programm neugestartet wird die Messdaten an die Datei angehängt werden und die Datei wird nicht komplett wieder überschrieben.
Sonst einach mal bei Qbasic mit dem Cursor auf den entsprechenden Befehl und F1 drücken. _________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 24.07.2005, 22:54 Titel: |
|
|
Hallo
Ich hoffe, das hier funktioniert:
Code: | KEY(1) ON 'Ueberwachung der F1-Taste einschalten
ON KEY(1) GOSUB notaus 'Wird sie gerdr.,nach notaus springen
Tpumpe = 300 'Laufzeit der Pumpe in Sekunden
Tpause = 600 'Wartezeit bis zum Scharfschalten
Tmess = 60 'Abstand der Messwertaufzeichnung
farbe = 10 'Grün (10) wenn Pumpe an, sonst rot (12)
pHmax = 3 'Schaltspannung
URef = 5 'Referenzspannung (messen & anpassen)
Port$ = "1" 'Nummer LPT-Port vorbelegen
DEF SEG = 0 'Segment setzen
BA1% = PEEK(&H408) + PEEK(&H409) * 256 'LPT1-Basisadresse auslesen
BA2% = PEEK(&H40A) + PEEK(&H40B) * 256 'LPT2-Basisadresse auslesen
IF BA2% THEN 'Abfrage, falls LPT2 vorhanden
CLS : PRINT
PRINT "Welchen LPT-Port benutzen? [1] oder [2] druecken."
DO: Port$ = INKEY$
LOOP UNTIL Port$ = "1" OR Port$ = "2"
END IF
IF Port$ = "2" THEN BA% = BA2% ELSE BA% = BA1% 'Basisadresse setzen
CLS
LOCATE 2, 1
PRINT "Auslesen des TLC549 8-Bit AD - Wandlers >>fst'01<<"
PRINT "ueber LPT "; Port$; " I/O-Adr. ="; BA%; "/ "; HEX$(BA%); "hex"; ""
PRINT
PRINT "Referenzspannung ="; URef; "Volt"
PRINT
LINE INPUT "Name der Messwertedatei: "; datei$
GOSUB neuertag
StatR% = BA% + 1 'Statusregister ist bei Offset 1
SteuR% = BA% + 2 'Steuerregister ist bei Offset 2
OUT BA%, 8 'Stromversorgung ueber Datenausgang 3 ein
Tstart = TIMER 'Startzeit festhalten
talt = TIMER
OPEN datei$ FOR OUTPUT AS #1 'Messwertdatei oeffnen
PRINT #1, DATE$ 'Startdatum speichern
PRINT #1, TIME$ 'Startzeit speichern
PRINT #1, Tmess 'Zeitabstand speichern
'INIT -> I/O CLOCK auf low = Bit2 (Wert 4) auf 0:
OUT SteuR%, INP(SteuR%) AND 255 - 4
DO 'Start Hauptschleife
DO 'Start Warteschleife
GOSUB messen
dt = TIMER - talt
IF dt < 0 THEN dt = dt + 86400
IF dt >= Tmess THEN GOSUB aufzeichnen
Tdauer = TIMER - Tstart 'Laufzeit der Schleife ermitteln
IF Tdauer < 0 THEN Tdauer = Tdauer + 86400 'Gegen Ueberlauf um Mitternacht
LOOP UNTIL (Volt >= pHmax) AND Tdauer > Tpause 'Pumpe aus bis beides wahr ist
OUT BA%, 12 'Pumpe an
farbe = 10
Tstart = TIMER 'Zeitpunkt merken
DO
GOSUB messen
dt = TIMER - talt
IF dt < 0 THEN dt = dt + 86400
IF dt >= Tmess THEN GOSUB aufzeichnen
Tdauer = TIMER - Tstart 'Laufzeit der Schleife ermitteln
IF Tdauer < 0 THEN Tdauer = Tdauer + 86400 'Gegen Ueberlauf um Mitternacht
LOOP WHILE Tdauer < Tpumpe 'Ist die Pumpzeit vorbei?
OUT BA%, 8 'Pumpe aus
farbe = 12
Tstart = TIMER 'Zeitpunkt merken
LOOP 'Ende der Hauptschleife
aufzeichnen:
talt = talt + tmess
IF talt >= 86400 THEN talt = talt - 86400: GOSUB neuertag
x = TIMER / 135
y = 255 - Volt
PSET (x, y), farbe
voltwert = Volt 'so sieht man nachher, ob die
if farbe = 12 then voltwert = voltwert + 256 'Pumpe an war oder nicht
PRINT #1, voltwert
RETURN
neuertag: 'das ist der Grafikteil
CLS
LINE (0, 256)-(639, 479), 8, BF
FOR y = 50 TO 205 STEP 51
LINE (0, y)-(639, y), 8 'horiz. Linien im Abstand von 1 Volt
NEXT
FOR x = 26.7 TO 630 STEP 26.7
LINE (x, 0)-(x, 255), 8 'vertikale Linien im Abstand von 1 Std.
NEXT
RETURN
messen:
WDat% = 0 'alten Wandlerwert loeschen
'AUTO FEED -> CS auf high = Bit1 (Wert 2) auf 0:
OUT SteuR%, INP(SteuR%) AND 255 - 2
'AUTO FEED -> CS auf low = Bit1 (Wert 2) auf 1,
OUT SteuR%, INP(SteuR%) OR 2
FOR i% = 7 TO 0 STEP -1 'Bits7-0 des TLC 549 nacheinander auslesen
IF (INP(StatR%) AND 8) THEN 'Bit3 (Wert 8) DATA OUT->ERROR gesetzt?
M% = 1 'wenn ja, Multiplikator auf 1
ELSE M% = 0 'wenn nein, Multiplikator auf 0
END IF
'INIT -> I/O CLOCK auf high = Bit2 (Wert 4) auf 1:
OUT SteuR%, INP(SteuR%) OR 4
'INIT -> I/O CLOCK auf low = Bit2 (Wert 4) auf 0:
OUT SteuR%, INP(SteuR%) AND 255 - 4
WDat% = WDat% + M% * 2 ^ i% 'Wert des Bits aufsummieren
NEXT 'naechstes Bit holen
'hier ist eine Pause von min. 17 Mikrosek. erforderlich
Volt = URef / 256 * WDat% 'Ein Digit stellt den 256'sten Teil (8 Bit)
'der Referenzspannung dar
RETURN
notaus: 'Hier wird mit der F1 hingesprungen
OUT BA%, 0 'Stromversorgung ausschalten
CLOSE #1
END |
Da fehlt noch eine Überprüfung, ob eine Messwertedatei gleichen Namens schon besteht (wenn ja, wird diese überschrieben) und die Grafik zeigt immer nur die Messwerte des laufenden Tages an, um Mitternacht wird der Bildschirm gelöscht und eine neue Anzeige begonnen, die Aufzeichnug der Messwerte in der Datei läuft aber weiter. Ich habe versucht es gleich so zu machen, dass sich ein kleines Anzeigeprogramm für die Messwertedatei relativ einfach erstellen lässt. Noch nicht sehr elegant, aber falls es läuft, kann man vielleicht darauf aufbauen.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
didi
Anmeldungsdatum: 01.07.2005 Beiträge: 22
|
Verfasst am: 24.07.2005, 23:54 Titel: Erweiterung: Daten von AD-Wandler aufzeichnen |
|
|
Hallo Skilltronic
Bekomme folgende Fehlermeldung:
Unzulässiger Funktionsaufruf
neuertag: 'das ist der Grafikteil
CLS
LINE (0, 256)-(639, 479), 8, BF
FOR y = 50 TO 205 STEP 51
LINE (0, y)-(639, y), 8 'horiz. Linien im Abstand von 1 Volt
NEXT
FOR x = 26.7 TO 630 STEP 26.7
LINE (x, 0)-(x, 255), 8 'vertikale Linien im Abstand von 1 Std.
NEXT
RETURN
Danke schon mal
Gruß didi |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 25.07.2005, 00:01 Titel: |
|
|
Ups...da habe ich doch glatt vergessen, in den Grafikbildschirm umzuschalten. Füge einfach als allererste Zeile
ein.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
didi
Anmeldungsdatum: 01.07.2005 Beiträge: 22
|
Verfasst am: 25.07.2005, 19:44 Titel: Erweiterung: Daten von AD-Wandler aufzeichnen |
|
|
Hallo Skilltronic
Jetzt funktioniert die Anzeige. Doch die Differenz kann man fast nicht erkennen. Also ein Unterschied von ca. 3 Volt, den ich normal nie habe,
beträgt max. 2 - 3 mm. Rot u. Grün kann nan erkennen (Schreibt ein
wenig zu dünn, ist aber Ok.
Vielen Dank nochmals für Deine Mühe.
Hätt ich allein nie fertig gebracht.
Gruß didi |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 25.07.2005, 22:20 Titel: |
|
|
Hallo
So ist das eben mit ungetesteten Programmen...
Ersetze in diesem Teil die Variable Volt durch WDat%
Code: | x = TIMER / 135
y = 255 - Volt
PSET (x, y), farbe
voltwert = Volt |
wird also zu:
Code: | x = TIMER / 135
y = 255 - WDat%
PSET (x, y), farbe
voltwert = WDat% |
Dann sollte ein Volt auch wirklich den Abstand zwischen zwei horizontalen Linien ausmachen.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
didi
Anmeldungsdatum: 01.07.2005 Beiträge: 22
|
Verfasst am: 26.07.2005, 19:39 Titel: Erweiterung: Daten von AD-Wandler aufzeichnen |
|
|
Hallo Skilltronic,
habe eine Nacht mal aufgezeichnet. Die Anzeige stimmt jetzt auch.
Die Pumpendauer kann man nicht oder fast nicht erkennen weil
30 - max 90 Sekunden zu kurz sind. Länger braucht die Pumpe nicht zu laufen. Weis auch nicht was gut wäre, vielleicht statt Punkt einen Strich,
oder so ähnlich.
Gruß und nochmal besten Dank
didi |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 26.07.2005, 21:53 Titel: |
|
|
Hallo
Freut mich, dass es jetzt enigermassen läuft. Das mit der anderen Farbe wenn die Pumpe an ist, war nur so eine Idee. Man könnte auch einen kürzeren Zeitraum als 24 Stunden anzeigen lassen, dann wären die roten Abschnitte grösser. Das könntest du dir ja deinen Wünschen entsprechend durch Ändern von ein paar Zahlen im Programm anpassen.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
didi
Anmeldungsdatum: 01.07.2005 Beiträge: 22
|
Verfasst am: 27.07.2005, 20:29 Titel: Daten von AD-Wandler aufzeichnen |
|
|
Hallo,
Bin mit der Regelung und der Aufzeichnung zufrieden.
Werde trotzdem mal einen Versuch starten, für Fehlersuche oder ähnliches eine kurze Aufzeichnung hin zu bekommen um die
Pumpfunktion zu sehen.
Gruß
didi |
|
Nach oben |
|
 |
didi
Anmeldungsdatum: 01.07.2005 Beiträge: 22
|
Verfasst am: 31.07.2005, 12:11 Titel: Erweiterung: Daten von AD-Wandler aufzeichnen |
|
|
Hallo,
habe noch 2 Fragen (Probleme)
kann ich hier statt pset (x, y), farbe auch das einsetzen?
(damit der Punkt größer wird?
CIRCLE (x, y), (1), farbe
und die 2. Frage:
möchte gerne, daß das Programm beim Start nach
folgenden Einstellungen fragt und nach Eingabe so startet.
Tpumpe = 30 'Laufzeit der Pumpe in Sekunden
Tpause = 100 'Wartezeit bis zum Scharfschalten
pHmax = 3 'Schaltspannung
Vielleicht kann mir jemand ein Beispiel zeigen. Werde es dann wahrscheinlich vollends schaffen. Tut mir leid, verstehe einfach zu wenig.
Gruß didi |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 31.07.2005, 13:37 Titel: |
|
|
Zur ersten Frage: Das müsste theoretisch gehen, mit
Code: | CIRCLE (x, y), Radius, Farbe |
Das Problem dabei ist nur, dass dann die vorherigen Punkte zum Teil überschrieben
werden könnten.
Zur 2. Frage: Schreib am Anfang das hier:
Code: |
INPUT "Laufzeit der Pumpe in Sekunden: ", tpumpe
INPUT "Wartezeit bis zum Scharfschalten: ", tpause
INPUT "Schaltspannung: ", pHmax
|
Das hättest du aber auch in der MonsterFAQ gefunden.
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 31.07.2005, 16:04 Titel: |
|
|
rofl, mach sowas nie. das was meistens hängt ist die Weiterleitung des Browsers auf die Seite nach dem Posten. Der post ist immer so schnell drin dass du garnicht abbrechen drücken kannst bevor der schon fertig ist. Also auch nachträgliches umschreiben geht nicht, einmal gedrückt und das ding ist weg wenn nicht grade deine Verbindung kaputt ist was dir dein Browser mit "Server konnte nicht erreicht werden" sagt. dann kannst du nochma posten, sonst nicht. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
OdinX

Anmeldungsdatum: 29.07.2005 Beiträge: 253 Wohnort: SG Schweiz
|
Verfasst am: 31.07.2005, 16:23 Titel: |
|
|
wenn sich der ladebalken nach ner halben minute nicht bewegt hat ist das ein anzeichen, dass keine verbindung bestehet.
die verbindung ist eben extrem lahm, da meine schwester downloaden wie die spinner |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 31.07.2005, 16:39 Titel: |
|
|
stimmt nich, wenn die verbindung weg ist bekommst du nen TimeOut irgendwann. Wenn die Verbindung da ist ist dein kilobyte daten so schnell übertragen dass dus nicht mitbekommst, also dann einfach nur in Forum gehen und schaun obs gepostet ist was dann fast immer der fall sein wird, nicht einfach abbrechen und nochma drücken. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
OdinX

Anmeldungsdatum: 29.07.2005 Beiträge: 253 Wohnort: SG Schweiz
|
Verfasst am: 31.07.2005, 17:32 Titel: |
|
|
hab eben abgebrochen, weil ich den text nicht zwei mal schreiben wollte |
|
Nach oben |
|
 |
didi
Anmeldungsdatum: 01.07.2005 Beiträge: 22
|
Verfasst am: 31.07.2005, 18:57 Titel: Daten von AD-Wandler aufzeichnen |
|
|
Danke
jb und ALLE.
Es klappt.
Gruß didi |
|
Nach oben |
|
 |
|