AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Analogspannung einlesen über die Serielleschnittstelle
Thema durchsuchen
Ansicht
Themen-Optionen

Analogspannung einlesen über die Serielleschnittstelle

Ein Thema von andries · begonnen am 12. Aug 2006 · letzter Beitrag vom 19. Aug 2006
Antwort Antwort
andries

Registriert seit: 12. Aug 2006
Ort: D79189 Bad Krozingen
4 Beiträge
 
Delphi 5 Standard
 
#1

Analogspannung einlesen über die Serielleschnittstelle

  Alt 12. Aug 2006, 20:32
Hallo,

Ich bin Anfänger in der Programmierung mit Delphi habe die 5er Standardversion und
Arbeite mit Windows xP mit Labtop.

Habe dass Analog-Interface gekauft aber es funktioniert nicht irgend was mache ich verkehrt!

Bitte können Sie mir weiter helfen mit eine fertiges *.pas und *.dfm Programm?
Wo wenigstens einen Analogkanal einliest und in eine Form anzeigt in mV / oder 0..1023 Einheiten.


Das beispiel Programm greift nicht echt auf dass Interface zu es Simuliert nur die 6-Kanäle.


Mit freundlichen Grüßen. Andries




Allgemeine Beschreibung
Das Interface verwendet den AD-Wandler TLC1543 von Texas Instruments mit seriell getakteter Datenübertragung. Die Datenübertragung zum und vom Wandler erfolgt durch direkte Steuerung der Handshakeleitungen der seriellen Schnittstelle. Die Stromversorgung wird durch die hochgesetzte TXD-Leitung gespeist. Alle Eingänge sind durch Vorwiderstände gegen Überspannungen geschützt. Die Eingänge liegen an Schraubklemmen die auch die interne Referenzspannung von +5V zur Verfügung stellen. Der Wandler kann mit dem beiliegenden Programm SERAI610.EXE ausgelesen werden. Die Programmierung kann in einer beliebigen Programmiersprache erfolgen. Beispiele für Turbo Pascal, Delphi und Visual Basic liegen bei.
Der TLC1543 besitzt von Haus aus Eingänge mit einem Messbereich von 0 bis 5V. Bei einer Auflösung von 10 Bit wird das Messsignal in Quantisierungsstufen von 5 mV erfasst. Der Wandler liefert an den PC Zahlenwerte zwischen 0 und 1023. Zur Anpassung an die vorgesehenen Eingangsbereiche wurden hochohmige Spannungsteiler vorgeschaltet. Sie bieten zugleich auch einen Schutz bei eventuellen kurzzeitigen Bereichsüberschreitungen bis ±100V. Der effektive Eingangswiderstand beträgt 200 k in den Bereichen –5...+5V und 0...10 V sowie 133 kim Bereich –10V...+10V. Ein angeschlossener Sensor sollte einen geringen Innenwiderstand unter 1 k aufweisen, um Messfehler zu vermeiden. Davon kann man in den meisten Fällen ausgehen, zumindest solange der Sensor über einen eigenen Messverstärker verfügt
Technische Daten:
Messbereiche -5V ...+5V (Ch0, CH5)
0 ...+10V (Ch1, Ch4)
-10V ...+10V (Ch2, Ch3)
Auflösung 10 Bit (10 mV bzw. 20 mV
Eingangswiderstand 200 k (Ch0,1,4,5)
133 k (Ch2, CH3)
Linearität +/- 1 LSB
Eingangskanäle 6
Wandlungszeit 20 µs ... 1 ms

Anschlussbelegung der Schraubklemmen
1 Referenz +5 V, extern belastbar bis 3 mA
2 CH0, -5V ... +5V, offener Eingang: +5V, Ri=200k
3 CH1, 0...10V, offener Eingang 0V, Ri=200k
4 CH2, -10V...+10V, offener Eingang 3,33V, Ri=133k
5 CH3, -10V...+10V, offener Eingang 3,33V, Ri=133k
6 CH4, 0...10V, offener Eingang 0V, Ri=200k
7 CH5, -5V ... +5V, offener Eingang: +5V, Ri=200k
8 Gemeinsame Masse


Programmbeispiel in Delphi 4
Das folgende Beispiel zeigt ein einfaches Test-Programm in Delphi 4. Das Projekt Serai6p liegt auf der Diskette bei. Hier wird die Rsline32.DLL zur Ansteuerung der Schnittstellenleitungen verwendet.

Function messung (Kanal: Integer): Word;
var BitOut, BitIn, DataOut, DataIn: Word;
begin
DataOut := Kanal * 16; // Adresse auf Bits 4...7
DataIn := 0;
for BitOut := 1 to 10 do begin
RTS ((DataOut And 128)div 128); //Din
DataIn := DataIn * 2;
DTR (1); //Clock
DataIn := DataIn + CTS; //Dout
DTR (0);
DataOut := DataOut * 2;
end;
Messung := DataIn;
While DSR() =0 do; //EOC abwarten
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Messung (0);
Edit1.Text := floattostr((Messung (1)-512)/512 * 5) ;
Edit2.Text := floattostr((Messung (2))/1024 * 10) ;
Edit3.Text := floattostr((Messung (3)-512)/512 * 10) ;
Edit4.Text := floattostr((Messung (4)-512)/512 * 10) ;
Edit5.Text := floattostr((Messung (5))/1024 * 10) ;
Edit6.Text := floattostr((Messung (0)-512)/512 * 5) ;
end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Analogspannung einlesen über die Serielleschnittstelle

  Alt 12. Aug 2006, 20:46
Herzlich willkommen in der Delphi-PRAXiS, andries.

Leider habe ich keinen Zugang zu dem von dir verwendeten A/D-Wandler, aber das von dir gezeigte Beispielprogramm scheint mir nichts zu simulieren. Woraus schließt du das? Kannst du das Programm übersetzen? Kannst du es ausführen?

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Analogspannung einlesen über die Serielleschnittstelle

  Alt 12. Aug 2006, 21:05
@all: Für die, die helfen wollen, gibt es hier die Programme mit denen andries (wahrscheinlich) versucht, auf das Modul zuzugreifen.

@andries:
Mir ist aber noch nicht ganz klar, was du für ein Problem hast. Sag bitte mal, welches Programm du probieren willst und wann welches Problem auftritt.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
andries

Registriert seit: 12. Aug 2006
Ort: D79189 Bad Krozingen
4 Beiträge
 
Delphi 5 Standard
 
#4

Re: Analogspannung einlesen über die Serielleschnittstelle

  Alt 13. Aug 2006, 10:25
Hallo Marabu und chaosben,

Herzlichen Dank für Euer Antworten. Ich kann nur sagen dass es nicht klappt!
Entweder sollte ich erst mal ein Jahrlang mit kleine Delphi anwendungen die nur auf den Bildschirm zugreifen üben, aber ich wollte das mit Analoge spannungen machen irgend was aus-und oder abmessen zu können mit hilfe der Schöne Windowsoberfläche.

Der Link vom chaosben... eben genau von dort kommt meine Hardware und die Software es ist einen fertiges Programm dabei was alle 6 Kanäle bedient und wo die COM1 oder 2,3 auch einzustellen sind
und das funktioniert naturlich aber da kann ich nichts veränderen und auch keine eigene anwendungen reallisieren.

Es gibt noch einen TPascal routine die lauft auch aber nur in Dosfenster.
Hier kann ich mit einen Poti von 0..5V 0..1023 den wert wunderbar einstellen aber wie gesagt keine
Windowsoberfläche.

Ich kann das Programm übersetzen Starten kann die COM2 auf COM1 änderen es gibt nur manchmal der hinweis das die Variable 'BitIn' wurde deklariert aber in 'Messung'nicht verwendet.

Sonst zeigt es mir nach Timer1 ablauf einfach an die 6 Kanäle

1) 4,990234375 und hier steht der Cursor
2) 9,990234375
3) 9,98046875
4) 9,98046875
5) 9,990234375
6) 4,990234375

Wie gesagt ich hänge fest und weiss nicht wo!

Nochmals Vielen Dank für Euern bemühungen.

Freundliche Grüße vom andries.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Analogspannung einlesen über die Serielleschnittstelle

  Alt 15. Aug 2006, 15:26
Hallo Andries,

wenn ich dich richtig verstehe, dann funktionieren die Programmbeispiele schon, aber du hast Probleme damit sie deinen Wünschen entsprechend zu verändern. Da du nach eigener Einschätzung noch den Umgang mit D5 übst, solltest du dich erstmal mit dem grundsätzlichen Aufbau eines Delphi-Programms auseinandersetzen.

Wenn du möchtest, dann gehen wir den Aufbau der Unit SERAI6.PAS im Detail durch. Oder du beschreibst, was konkret deine Probleme sind.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
andries

Registriert seit: 12. Aug 2006
Ort: D79189 Bad Krozingen
4 Beiträge
 
Delphi 5 Standard
 
#6

Re: Analogspannung einlesen über die Serielleschnittstelle

  Alt 16. Aug 2006, 08:34
Hallo marabu,

erst mal Vielen Dank fürs Antworten und mir zu helfen dieses [SERAI6.PAS] zu verstehen.
Ich war inzwischen nicht untätig und habe einen Mini RS232 Tester du zwischen geschaltet um die
Ein-/ Ausgänge zu beobachten und das funkts auch bei dem [SERAI6TP.PAS] nur nicht bei dem
[Delphi 4 SERAI6.PAS] also Folgendessen Fehlt doch irgendwas oder nicht?


Weiterhin habe ich das buch PC Schnittstelle unter Windows MSR mit dem PC und noch
COM/DCOM/COM+ mit Dehphi bestellt. Ich hoffe mit diese Bücher und deine Freundliche Hilfe
zum Positive Ergebnisse zu gelangen!

Es ist alles nur Hobby von mir man muss sich gerade im alter fit halten sonst rostet man ein…!
Mein erstes Progrämmle füge ich bei und das Zweite hängt an der RS232 Schnittstelle.

Ich freue mich das Du mir helfen willst, und nochmals Dankeschön.

Mit freundlichen Grüßen.
Andries.
Angehängte Dateien
Dateityp: zip project2__626.zip (176,7 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Analogspannung einlesen über die Serielleschnittstelle

  Alt 16. Aug 2006, 20:47
Hallo Andries,

Bücher zum Thema COM bzw. DCOM haben nichts mit der seriellen Kommunikation zu tun - da geht es um das Component Object Model von Microsoft.

Ich habe mir das Beispielprogramm nochmal angesehen und komme zu dem Schluss, dass die Version für Delphi4 funktionieren muss, wenn die Bibliotheksfunktionen von RSLINE32 funktionieren. Vielleicht solltest du mal eine andere Kommunikationsschnittstelle ausprobieren.

Gute Nacht

marabu
  Mit Zitat antworten Zitat
andries

Registriert seit: 12. Aug 2006
Ort: D79189 Bad Krozingen
4 Beiträge
 
Delphi 5 Standard
 
#8

Re: Analogspannung einlesen über die Serielleschnittstelle

  Alt 19. Aug 2006, 08:55
Hallo marabu,

ich habe mein Hardwaremodul zum leben erweckt, mit der Hilfe von einen DLL vom das buch PC Schnittstelle unter Windows!
Diese neue DLL hat viele Procedure und Functionen wo die beim Hardwaremodul mitgelieferte DLL nicht hat oder nicht (extra nicht) eingefügt worden ist!
Es ist ungefähr so als hätte man ein Auto gekauft und zum starten muss man sich der Zündschlüssel noch eigens passend Feilen…

Wie auch immer ich kann jetzt weiter machen und melde mich mal vorübergehend ab.

Mit freundlichen Grüßen
Andries
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz