Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Analogspannung einlesen über die Serielleschnittstelle (https://www.delphipraxis.net/75015-analogspannung-einlesen-ueber-die-serielleschnittstelle.html)

andries 12. Aug 2006 20:32


Analogspannung einlesen über die Serielleschnittstelle
 
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;

marabu 12. Aug 2006 20:46

Re: Analogspannung einlesen über die Serielleschnittstelle
 
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

chaosben 12. Aug 2006 21:05

Re: Analogspannung einlesen über die Serielleschnittstelle
 
@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.

andries 13. Aug 2006 10:25

Re: Analogspannung einlesen über die Serielleschnittstelle
 
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.

marabu 15. Aug 2006 15:26

Re: Analogspannung einlesen über die Serielleschnittstelle
 
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

andries 16. Aug 2006 08:34

Re: Analogspannung einlesen über die Serielleschnittstelle
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

marabu 16. Aug 2006 20:47

Re: Analogspannung einlesen über die Serielleschnittstelle
 
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

andries 19. Aug 2006 08:55

Re: Analogspannung einlesen über die Serielleschnittstelle
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 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