Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Erweiterung: Daten von AD-Wandler aufzeichnen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
didi



Anmeldungsdatum: 01.07.2005
Beiträge: 22

BeitragVerfasst am: 24.07.2005, 19:39    Titel: Erweiterung: Daten von AD-Wandler aufzeichnen Antworten mit Zitat

lachen 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
Benutzer-Profile anzeigen Private Nachricht senden
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 24.07.2005, 20:13    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 24.07.2005, 22:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
didi



Anmeldungsdatum: 01.07.2005
Beiträge: 22

BeitragVerfasst am: 24.07.2005, 23:54    Titel: Erweiterung: Daten von AD-Wandler aufzeichnen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 25.07.2005, 00:01    Titel: Antworten mit Zitat

Ups...da habe ich doch glatt vergessen, in den Grafikbildschirm umzuschalten. Füge einfach als allererste Zeile

Code:
SCREEN 12


ein.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
didi



Anmeldungsdatum: 01.07.2005
Beiträge: 22

BeitragVerfasst am: 25.07.2005, 19:44    Titel: Erweiterung: Daten von AD-Wandler aufzeichnen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 25.07.2005, 22:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
didi



Anmeldungsdatum: 01.07.2005
Beiträge: 22

BeitragVerfasst am: 26.07.2005, 19:39    Titel: Erweiterung: Daten von AD-Wandler aufzeichnen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 26.07.2005, 21:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
didi



Anmeldungsdatum: 01.07.2005
Beiträge: 22

BeitragVerfasst am: 27.07.2005, 20:29    Titel: Daten von AD-Wandler aufzeichnen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
didi



Anmeldungsdatum: 01.07.2005
Beiträge: 22

BeitragVerfasst am: 31.07.2005, 12:11    Titel: Erweiterung: Daten von AD-Wandler aufzeichnen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 31.07.2005, 13:37    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 31.07.2005, 16:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
OdinX



Anmeldungsdatum: 29.07.2005
Beiträge: 253
Wohnort: SG Schweiz

BeitragVerfasst am: 31.07.2005, 16:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 31.07.2005, 16:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
OdinX



Anmeldungsdatum: 29.07.2005
Beiträge: 253
Wohnort: SG Schweiz

BeitragVerfasst am: 31.07.2005, 17:32    Titel: Antworten mit Zitat

hab eben abgebrochen, weil ich den text nicht zwei mal schreiben wollte
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
didi



Anmeldungsdatum: 01.07.2005
Beiträge: 22

BeitragVerfasst am: 31.07.2005, 18:57    Titel: Daten von AD-Wandler aufzeichnen Antworten mit Zitat

happy Danke
jb und ALLE.
Es klappt.

Gruß didi
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz