Autor Beitrag
delphistart
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119



BeitragVerfasst: Do 15.03.07 15:27 
Ich habe folgendes Problem:

Ich habe eine Relaisplatte über die meine Modellbahn gesteuert wird. Zur zeit funktioniert das Auslösen der Schaltung über einen Magnetschalter (Reedkontakt). Nun möchte ich gerne diesen Impuls vom PC auslösen lassen.

Dazu habe ich mir gedacht den COM-Port anzusteuern und über diesen entsprechende elektrische impulse zu senden. Gleichzeitig müsste der PC aber auch auf Impulse reagieren können, die von Magnetschaltern an den Comport gehen.

Ich habe schon eine ganze Weile gegoogelt, aber leider nichts für mich hilfreiches gefunden. Hoffe daher mal wieder auf eure Hilfe! DANKE SCHONMAL!
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 15.03.07 15:44 
Nimm USB, alles andere kannst Du vergessen:

USB EXPERIMENT INTERFACE BOARD - BAUSATZ
Artikel-Nr.: 191003 - 62 bei www.conrad.de
29,95 EUR

USB Experimentier Interface-Board

Das Interface-Board hat 5 digitale Eingangs- und 8 Ausgangskanäle. Zusätzlich stehen noch 2 analoge Ein- und 2 Ausgänge mit einer 8-Bit Auflösung zur Verfügung. Die Anzahl der Ein- und Ausgänge kann noch weiter vergrößert werden, indem bis max. 4 Karten mit den USB-Anschlüssen des PCs verbunden werden. Alle Kommunikationsprogramme sind in einer Dynamic Link-Library (DLL) K8055D.DLL gespeichert. Sie können maßgeschneiderte Windows® (98 SE, 2000, ME, XP) Applikationen in Delphi, Visual Basic, C++ Builder oder jedem anderen 32 bit Windows-Hilfsprogramm für Applikationen, die DLL unterstützen, schreiben.
Lieferumfang: Diagnose-Software und DLL.

www.velleman.de/ot/d...duct/view/?id=351346

www.velleman.de/ot/d...roduct/view/?id=9358

www.velleman.de/ot/d...duct/view/?id=345892

www.velleman.de/ot/d...roduct/view/?id=9069

www.velleman.de/ot/d...duct/view/?id=364910


Zuletzt bearbeitet von hathor am Do 15.03.07 15:47, insgesamt 1-mal bearbeitet
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Do 15.03.07 15:45 
Du kannst DTR und RTS softwaremaessig setzen (-12V aus, +12V an)

CTS und DSR können ausgelesen werden (-12..-3V aus, +3..+12V an).



Als Software würde ich die Delphi Komponente Async Pro (Sourceforge) empfehlen.

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
delphistart Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119



BeitragVerfasst: Do 15.03.07 15:55 
Das klingt zwar gut mit den Geräten, aber ich hatte gehofft man kann dem PC einfach mit einem Befehl über Delphi sagen:
"Gib impuls an PIN 3 von Com-Port 1"
Dann schaltet das Relais un fertig... Jemand eine Idee wie bzw. ob man das umsetzen könnte?
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Do 15.03.07 16:02 
Genau was ich beschrieben habe, mit Async Pro würde das so aussehen :


ausblenden Delphi-Quelltext
1:
2:
Comport.RTS := True; //+12V auf dem Pin 7 (9 pol) bzw Pin 4 (25 pol)
Comport.RTS := False; //-12V auf dem Pin 7 (9 pol) bzw Pin 4 (25 pol)

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
delphistart Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119



BeitragVerfasst: Fr 16.03.07 07:46 
@chrisw: Danke! Das werde ich auf jeden Fall mal ausprobieren!

user profile iconhathor hat folgendes geschrieben:
Nimm USB, alles andere kannst Du vergessen:

Kennst dazu vielleicht auch eine Anleitung/Tutorial wo jemand das schonmal gemacht hat? Ich stell mir das ziemlich kompliziert vor über USB, zumal ich (wenn es erst einmal funktioniert) weit mehr Ein- und Ausgänge brauchen werde, als mit dem Conradangebot möglich sind.
Hatte auch daran gedacht sowas selber zu bauen, aber leider weis ich nicht, wie ich die Ralais mit dem USB verbinden muss, damit das dann auch wirklich klappt...
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 16.03.07 08:44 
user profile iconhathor hat folgendes geschrieben:
Nimm USB, alles andere kannst Du vergessen:

Solche Aussagen, die zudem noch unbelegt sind, zeugen von einem nicht ausgereiften Grundwissen über Ansteuerungsmöglichkeiten und Hardwareschnittstellen. Das ist so, als ob der Bayer sagt: 'Nimm Knödel, alles andere kannst Du vergessen'. :wink:

hathor, wie kommst Du zu dieser Einschätzung? Wieso werden Millionen von Geräten weiterhin mit RS-232 angesteuert? Es ist vielleicht archaisch, aber dennoch so weit verbreitet, das man ohne das Wissen um die Ansteuerung in der Industrie nicht weit kommt.

Da außerdem viele Hobbygeräte mit RS-232 Schnittstelle angeboten werden, schadet es nicht. Zumal mit Paketen wie Async-Pro, oder Varian die Programmierung popeleinfach ist: Komponente schnappen, Parameter setzen und los gehts.

_________________
Na denn, dann. Bis dann, denn.
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 16.03.07 09:22 
Schon 1998 haben die PC-Hersteller beschlossen, sog. Legacy-Schnittstellen - Z.B. herkömmliche serielle Schnittstellen (RS232) und parallele Schnittstellen (Centronics-Interface) NICHT mehr zu unterstützen.

Solche PC/Notebooks werden als "legacyfree" immer häufiger angeboten - obengenannte Schnittstellen findet man immer seltener in der Grundausstattung.

Such mal einen Drucker, Scanner, ext.Festplatte oder sonst was mit Parallelschnittstelle - da kannst Du lange suchen!
Legacy-Schnittstellen sind für heutige Anforderungen viel zu langsam.
Saubäär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Fr 16.03.07 10:43 
Allerdings sind diese Schnittstellen für Anfänger sehr einfach zu programmieren und für kleine "langsame" Anwendungen trotzdem immernoch völlig ausreichend.
Die Aussage:
user profile iconhathor hat folgendes geschrieben:
Nimm USB, alles andere kannst Du vergessen:
kann ich auch absolut nicht nachvollziehen.
Zur Ansteuerung des USB braucht man immer Interfaces, die man sich bei anderen Schnittstellen sparen kann.
aim65
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 312

Win 9x, Win XP
Delphi 3pro, 7PE
BeitragVerfasst: Fr 16.03.07 13:41 
@hathor:
ich muss alzaimar völlig recht geben - das kommt eben davon, wenn man den Horizont nur auf Computer-Peripherie reduziert. :wink: Wurde alles schon mal sattsam diskutiert, siehe hier:
www.delphi-forum.de/...sc&highlight=usb

Nur zum Verständnis: USB ist da überlegen, wo es um den Durchsatz von großen Datenmengen geht. Bei Steuerungsaufgaben, bei denen es normalerweise nur um kurze Datenpakete (einige Bytes) geht, ist USB u.U. sogar langsamer als RS232 mit z.B 57600bit/sec.
Kann ich jedem gerne vorführen. :D

Saubäär: guck mal unter Google unter "Burkhard Kainka" und "RSCOM" nach. ich benutze iese (von mir etwas modifizierte) Komponente, weil sie sehr einfach ist. Die anderen mir bekannten Komponenten sind für solche Steuerungen einfach zu umfangreich (Modem-, Terminalfunktionen, usw).

MfG Horst
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 16.03.07 15:03 
hathor, das weiss ich (aber gut, das Du es erwähnst). Wie Du siehst, ist in 9 Jahren nix passiert, außer das man im Consumerbereich kein RS-232 mehr findet. Zu Recht, denn wer braucht das schon. Zum Spielen und Surfen ist es überflüssig.

Ich hab ja auch nicht gesagt, das USB Müll ist, aber RS-232 ist schon noch ein Standard, den man -auch weils so simpel ist- im Prinzip an einem Nachmittag gefressen hat.

Ob das bei USB auch so ist, weiss nicht nicht. Ich kenns nicht.

_________________
Na denn, dann. Bis dann, denn.
delphistart Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119



BeitragVerfasst: Fr 16.03.07 17:45 
user profile iconchrisw hat folgendes geschrieben:
Du kannst DTR und RTS softwaremaessig setzen (-12V aus, +12V an)

CTS und DSR können ausgelesen werden (-12..-3V aus, +3..+12V an).



Als Software würde ich die Delphi Komponente Async Pro (Sourceforge) empfehlen.


Ich denke, dass dies sicherlich die einfachste möglichkeit ist, doch finde ich einfach keinen konkreten Ansatzt für die Umsetzung. Suche jetztschon seit 3 Stunden das ganze Internet ab und komme einfach nicht wirklich weiter. Vielleicht beschreibe ich nochmal genauer, was ich wirklich brauche:

---Ausgang:
----Ich muss direkt Impulse auf einen Pin geben können (z.B 2 sek 12V)

---Eingang:
----Ich muss registrierren wenn ein durch magnetschalter ausgelöster Impuls ankommt.

Ich muss nicht die ankommenden/abgehenden SPannungen kontrollieren, jedoch muss ich wissen wie groß die abgehende ist bzw. ob diese zum Schalten eines Relais ausreicht.

Ein weiteres Problem wird früher oder später sein, dass ich wenn es erst einmal funktioniert sehr viele Ein- und Ausgängen brauchen Werde. Ich rechne mit bis zu 300 Eingängen und 350 Ausgängen. Daher müsste ich also auch Pinkombinationen nutzen können.

Natürlich kann ich wenn das einfacher ist auch irgendeinen anderen Anschluss meines PCs dafür verwenden, hauptsache ich sehe jetzt mal eine Art Lösungsansatz, sonst verzweifel ich an meiner eigenen Ratlosigkeit...
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 16.03.07 18:19 
Also ich bin ja kein Spezi, aber die Spannung kontrollieren geht schon mal gar nicht mit RS-232. Du solltest Dir vielleicht doch so ein Steuergerät für Modelleisenbahnen besorgen, die machen zumindest die Spannungsregelung und verwalten dann auch die ganzen Steuerleitungen (ich denke, zu Schranken und so).

Ich soetwas bei ELV gesehen.

_________________
Na denn, dann. Bis dann, denn.
JDKDelphi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 115
Erhaltene Danke: 22

WIN2000, XP, WIN 7 , UNIX, LINUX
Assembler für (Z8x, 68xxx,R6000,Intel), DELPHI 6 Enterprise, MAGIC eDeveloper V9+V10, C++, C#,VB, .NET, zertifizierter iBOLT-Programmierer
BeitragVerfasst: Fr 16.03.07 19:10 
Titel: RS-232 V24
Hallo,

ich nutze das MSCOMCTRL aus dem Betriebsystem und hab da keine Probleme mit..
Da gibts Events etc. Ganz einfach zu benutzen.

Ich poste gleich mal kurz ein Codefragment..

Gruss
JDKDelphi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 115
Erhaltene Danke: 22

WIN2000, XP, WIN 7 , UNIX, LINUX
Assembler für (Z8x, 68xxx,R6000,Intel), DELPHI 6 Enterprise, MAGIC eDeveloper V9+V10, C++, C#,VB, .NET, zertifizierter iBOLT-Programmierer
BeitragVerfasst: Fr 16.03.07 19:16 
Titel: RS-232 und V24
und hier der Post:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
unit V24_Main;

interface
  //['{A548FCA0-B315-4D67-A4E7-E2A7A23F0D7A}']
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, MSCommLib_TLB, V24_Const, StdCtrls, Menus, ComCtrls;

// { $ UNDEF COPYRIGHT}

type
  TV24Form = class(TForm)

    Memo1: TMemo;
    MSComm1: TMSComm;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Neu1: TMenuItem;
    ffnen1: TMenuItem;
    Speichern1: TMenuItem;
    Speichernunter1: TMenuItem;
    N1: TMenuItem;
    Drucken1: TMenuItem;
    Druckereinrichtung1: TMenuItem;
    N2: TMenuItem;
    Beenden1: TMenuItem;
    Bearbeiten1: TMenuItem;
    Rckgngig1: TMenuItem;
    WiederholenBefehl1: TMenuItem;
    N3: TMenuItem;
    Ausschneiden1: TMenuItem;
    Kopieren1: TMenuItem;
    Einfgen1: TMenuItem;
    Inhalteeinfgen1: TMenuItem;
    N4: TMenuItem;
    Suchen1: TMenuItem;
    Ersetzen1: TMenuItem;
    Gehezu1: TMenuItem;
    N5: TMenuItem;
    Verknpfungen1: TMenuItem;
    Objekt1: TMenuItem;
    Fenster1: TMenuItem;
    NeuesFenster1: TMenuItem;
    Nebeneinander1: TMenuItem;
    berlappend1: TMenuItem;
    Alleanordnen1: TMenuItem;
    N6: TMenuItem;
    Verbergen1: TMenuItem;
    Zeigen1: TMenuItem;
    Hilfe1: TMenuItem;
    Inhalt1: TMenuItem;
    Index1: TMenuItem;
    Befehle1: TMenuItem;
    Verfahren1: TMenuItem;
    Tastatur1: TMenuItem;
    Suchen2: TMenuItem;
    Lernprogramm1: TMenuItem;
    Hilfebenutzen1: TMenuItem;
    Info1: TMenuItem;
    StatusBar1: TStatusBar;
    procedure MSComm1Comm(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Beenden1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  V24Form: TV24Form;
  V24String : STRING;

implementation

{$R *.dfm}

procedure TV24Form.MSComm1Comm(Sender: TObject);
begin
  //
   case MSComm1.CommEvent of
      comEventBreak: Begin End;      // Es wurde ein Anhaltesignal empfangen.
      comEventFrame: Begin End;      // Fehler im Übertragungsraster (Framing Error)
      comEventOverrun: Begin End;    // Datenverlust
      comEventRxOver: Begin End;     // Überlauf des Empfangspuffers
      comEventRxParity: Begin End;   // Paritätsfehler
      comEventTxFull: Begin End;     // Sendepuffer voll
      comEventDCB: Begin End;        // Unerwarteter Fehler beim Abrufen des DCB]
   //' Ereignisse
      comEvCD:   Begin End;          // Pegeländerung auf DCD
      comEvCTS:  Begin End;          // Pegeländerung auf CTS
      comEvDSR:  Begin End;          // Pegeländerung auf DSR
      comEvRing: Begin End;          // Pegeländerung auf RI (Ring Indicator)
      comEvReceive:                  // Anzahl empfangener Zeichen gleich RThreshold
                 Begin
                   MSComm1.RThreshold := 0;   // Event aus
                   v24string := MSComm1.Input;
                   MSComm1.Output := v24string;
                   if v24string=chr(13then
                   begin
                     memo1.Lines.Add('');   // cr ausschalten nextline
                     MSComm1.Output := chr(10);
                   end
                   else
                     memo1.Text := memo1.Text+v24string;
                   MSComm1.RThreshold := 1;   // und wieder an
                 End;
      comEvSend: Begin End;          // Im Sendepuffer befinden sich SThreshold Zeichen
      comEvEOF:  Begin End;          // Im Eingabestrom wurde ein EOF-Zeichen gefunden
   end;
end;

procedure TV24Form.FormCreate(Sender: TObject);
begin
  MSComm1.RThreshold := 1;
  MSComm1.PortOpen := TRUE;
{$IFDEF COPYRIGHT}
  MSComm1.Output := #10#13'JDK-Software 2006   Delphi6.0   V24.Terminal'#10#13;
  MSComm1.Output :=       'SN: A548FCA0-B315-4D67-A4E7-E2A7A23F0D7A'#10#13;
  MSComm1.Output :=       'Enter string: '#10#13;
  Memo1.text := '';
{$ENDIF}
end;


procedure TV24Form.FormDestroy(Sender: TObject);
begin
{$IFDEF COPYRIGHT}
  MSComm1.Output := #10#13'V24.Terminal ends'#10#13;
{$ENDIF}
  MSComm1.PortOpen := FALSE;
end;

procedure TV24Form.Beenden1Click(Sender: TObject);
begin
  Application.Terminate;
end;

end.


Kleine Test-Routine mit V24 zur Kommunikation mit einem alten PC

Wichtig!! TLB laden


Gruss
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Di 20.03.07 10:34 
Hi
Nachdem nun die Diskussion ob Schnittstellen in 100 Jahren noch verfügbar oder nicht eigentlich nicht wirklich eine Hilfe war, möchte ich darauf hinweisen, es ist sehr lustig, einen alten Rechner mit Win98 auszurüsten und ein wenig mit dem LPT Port zu spielen. Ich habe hier als auch bei Delphi- Praxis ein Tutorial geschrieben, wie man mit diesen Schnittstellen arbeiten kann. Nix Profi, aber zum Erlernen von Delphi mit Spaß durchaus brauchbar. Und wenn denn auch noch eine "alte" völlig undigitale Modelleisenbahn gesteuert werden soll, nur zu. Wer Interesse haben sollte, nicht nur immer wieder hören zu müssen, "das geht nicht", "das macht man nicht", " das taugt nicht" der sollte mir eine kurze PN schicken und ich werde die alten Tutorials mal wieder ausgraben und direkt verschicken.

_________________
Zier dich nich so, ich krieg dich schon....
Saubäär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Di 20.03.07 13:37 
Hallo,

ich habe mal den LPT- Port mit der 'io.dll' angesprochen. Wie siehts denn da mit der RS-232 aus? Kannst dich ja mal umschauen.