COMPort_SetDTR unter 4.0

Hallo

Nachdem jetzt die Migration auf 4.0 geklappt hat, habe ich nun ein Problem mit meinem SML EHz

bisher habe ich den IR-Lesekopf zyklisch per

COMPort_SetDTR aktiviert, und die Daten ausgewertet.

Das klappt nun irgendwie nicht mehr. In der Doku habe ich gefunden das es es wohl jetzt mit
SPRT_SetDTR gesetzt werden muss ?!

Das klappt aber ebenfalls nicht . Es kommen keine Daten im SerialPort an (Debug).

Hat jemand noch einen Tipp für mich.

Danke

Oliver

Moin Oliver!

Ich hab grade das Messgerät bei uns nochmal „drangehalten“ und kann den Fehler leider nicht nachstellen.

Mit diesem Skript hab ich einfach mal an Pin 1(GND) und 4(DTR) gemessen und einen Flankenwechsel von +7V auf -7V messen können. Somit alles korrekt.

IPS_Sleep(4000);
SPRT_SetDTR(30449 /*[Serial Port]*/, false);
IPS_Sleep(4000);
SPRT_SetDTR(30449 /*[Serial Port]*/, true);

Grüße
Pio

Hallo PIO

Danke für die Rückmeldung. Ich hätte vielleicht noch erwähnen sollen, das es sich um einen „weitergeleiteten“ COM-Port handelt. Der Lesekopf hängt an einem Exsys COM-LAN umsetzer. (EX-6034)
Allerdings hat dies unter 3.4 problemlos (lief fast 2 Jahre ohne probs.) geklappt.

Mit diesem Skript.


COMPort_SetDTR (28045 /*[EHz]*/,  true); 
IPS_Sleep(1000); 
COMPort_SetDTR (28045 /*[EHz]*/,  false); 

Nach der Migration kamen keine Daten mehr über die Schnittstelle. Habe es daraufhin mit


SPRT_SetDTR 

versucht, aber ohne Erfolg.

Danke nochmal

Oliver

Hast du bei der Migration wirklich nur IP-Symcon geändert?

Oder gab es ein Wechsel bei Hardware oder andere Verkabelung?
Ein möglicher Wechsel des Betriebssystems?

Pio

P.S. Hast du vielleicht wirklich mal versucht mit ein Messgerät zu gucken, ob das DTR Signal wirklich ankommt?

Ja, habe nur die Migration auf 4.0 gemacht. Die restliche Hard/Software ist unverändert.

OS ist das gleiche ! Server 2008 R2

Muss ich wohl mal machen.
Habe aber mal die alte Installation (3.4) gestartet, da kommen sofort wieder die Werte am Com-Port an.
seltsam ?!? :confused::confused:

Hallo PIO

habe mal am Stecker gemessen, und es kommt kein DTR an wenn ich es per IPS setDTR aktiviere. Wenn ich das gleiche per Hterm mache habe ich high Pegel, und es kommen Daten an im Terminal.Fenster.

Scheint also doch an IPS zu liegen.

Oliver

Wir haben das Gerät hier auch. Welchen virtuellen Com Port Treiber nutzt du?

paresy

Ich möchte mich da gleich mit anhängen.

Mit einem Silex SX1000U konnte ich unter V3.4 eine WS300PC mit einer FTDI-Instance als IO problemlos auslesen, Unter V4 geht das mit der ComPort Instance nur, wenn das Gerät direkt am PC hängt. Auch dort muss ich DTR aktivieren. Ich hatte jetzt auch den Silex-Treiber in Verdacht, aber evtl gibt es auch einen Zusammenhang mit dem aktuellen Problem hier?

Tommi

Hallo Paresy

Ich verwende Centos SEC als Com-Port Treiber .

Die Konfig sieht so aus:
COM2 ist der Lesekopf

Danke

Oliver

Hallo zusammen, ich lese auch meinen Zähler mit IR-Kopf der an einem EX-6030 hängt aus. (dürfte ja fast gleich sein wie EX-6034).

Aber ich verwende seit der 4.0 einen Client-Socket (nicht wie bisher den Seriell-Port) der soweit ich das verstehe dann doch gar keinen virtuellen Com-Port Treiber mehr benötigt… und direkt per Ethernet angesprochen wird.

Ich hatte noch nie weniger Probleme wie aktuell.

Damit es nicht alle Sekunde, die der Zähler sendet, den Zählerstand aktualisiert öffne und schließe ich den Client mit folgendem Skript: (ich glaube DTR ist dann immer Aktiv, das müßte doch in der Weboberfläche der EX Geräte einstellbar sein…)

IPS_SetProperty(42941 /*[Client Socket EX-6030 TCP Zähler]*/,"Open",true);
IPS_ApplyChanges(42941 /*[Client Socket EX-6030 TCP Zähler]*/);
ips_sleep(2000);
 //COMPort_SetDTR(26724 /*InstanceId des Com port */, false); //setzen, false = löschen
IPS_SetProperty(42941 /*[Client Socket EX-6030 TCP Zähler]*/,"Open",false);
IPS_ApplyChanges(42941 /*[Client Socket EX-6030 TCP Zähler]*/);

Vielleicht hilfts ja…

Grüße Helmut

Hallo Helmut

Danke für deine Antwort.
Die Idee mit dem Client Socket hatte ich auch schon mal, hat aber nicht geklappt.
Was hast Du im Webinterface des exsys eingestellt ???.
Das Problem mit dem DTR ist, das der Lesekopf darüber mit Spannung versorgt wird.
Was ich nicht verstehe ist, warum es mit der 3.4 sowie mit div. Terminalprogrammen klappt. nur mit 4.0 nicht ??:confused::confused:

LG

Oliver

Hallo Oliver,

ach ja da war noch was… über die Client Socket variante funktioniert das nur mit einer kleinen Manipulation… siehe dir mal diesen Beitrag an, da habe ich das schon beschrieben, ggf. ab post 9:

https://www.symcon.de/forum/threads/30422-Daten-vom-Stromzähler-am-Seriellen-Port-Client-Socket?p=281767#post281767

So läuft das bei mir schon seit diesem Post ohne einmal auszusetzen.

Grüße Helmut

Hallo Helmut

Der Hinweis mit der Kabelmodifikation hat den Durchbruch gebracht. jetzt kommen die Daten wieder über den COM-Port ohne das DTR-Signal schalten zu müssen.
Allerdings sind die Daten bei einem Client-Socket irgendwie unbrauchbar.
Wie dem auch sei , jetzt läuft es wieder.

Vielen Dank

Oliver

Du hast dann bestimmt direkt am Exsys Gerät die Baudrate nicht korrekt eingestellt. Wenn du das machst, kannst du den Client Socket nutzen. :slight_smile:

paresy

Was muss ich denn da einstellen ??
Steht im Moment auf 9600

EDIT

Wenn ich es auf RS232 (ohne den DTR/CTS etc) klappt es.

Vielen Dank für die Hilfe

LG

Oliver

Was hattest du im ComPort eingestellt? Das selbe muss dort auch eingestellt werden :slight_smile:

paresy

schon klar :wink:

Klappt ja jetzt

lag an der Betriebsart , muss auf RS232 ohne RTS/CTS etc. stehen.

Oliver

Ich hatte genau das selbe Problem wie beim ersten Post beschrieben: Gleiche HW und erst Probleme bei der Migration auf 4.0. Ich habe das Thema immer wieder aufgeschoben und mich heute endlich mal darum gekümmert.

„Früher“ musste ich DTR einschalten und bekam die erwarteten Daten. Mit 4.0 hat das nicht mehr funktioniert ich bekam immer nur 1-3 Bytes.

Bei meiner ersten Analyse konnte ich das Problem mit hterm nicht reproduzieren. JETZT ist mir folgendes aufgefallen: setze ich im hterm RTS auf true, dann bekomme ich genau die selben Werte wie im IP-Symcon!

Meine Lösung: SetRTS = false. Das ins Skript eingefügt und es funktioniert. Ohne sonstige Änderungen.
RTS false.PNG

Meine Vermutung ist das seit 4.0 RTS per Default auf ON ist und das verusracht die Probleme.