[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: : DDW-DDL-ML kleines script-die 3.



Hallo Frank, du könntest die Magnete selber durch dein Programm
abschalten lassen, in dem du als Zeitintervall -1 sendest nach dem
ausgewähltem Intgervall den Abschaltbefehl. Also etwas so:

"SET 5 GA 7 1 1 -1\n";
Pause 200 ms
"SET 5 GA 7 1 0 -1\n";

Ich habe zusätzlich in den Weichendekodern eine Schutzeinrichtung, die
die Magnete automatisch nach einer bestimmtenZeit abschaltet.

Gruß - Michael


On Mon, 22 May 2006 09:23:48 +0200 (CEST), frank wagner
<franky_wagner@yahoo.de> wrote:

> Hallo Gurus,
> Ich habe mir ein kleine Perlprogramm gebastelt.
> Das macht nichts anderes als srcp 8 Befhle an den ddw
> Server zu senden und auf die Antwort zu warten.
> Hat für mich den Vorteil, dass ich die Bahn nicht mit
> Rückmeldern ausstatten muss und dennoch alles von
> selbst läuft.
> Nun zu meinem Problem:
> Hochsporradisch schaltet der weichen umschalt Impuls
> nicht nach 200ms ab.
> d.h. der Magnet der weichen zieht ständig an. Die
> Weiche  brummt und zieht Strom.
> Kann mir vielleicht jemand einen Tipp geben.
> 
> Hier das Perlprogramm
> 
> #!/usr/bin/perl -w
> my $hostname;
> my $ddw;
> my $server_ver;
> my $i = 5;
> 
> $hostname = "localhost";
> 
> 
> #----------------------------------------------------------------
> #eigentlicher sokethandler
> print "Connektion zum ddw server \n";
> use IO::Socket;
> $ddw = new IO::Socket::INET (
>     PeerAddr => $hostname,
>     PeerPort => 12345,
>     Proto => 'tcp')|| die "Kein Socket... $!\n";
> print "connected\n";
> sleep 1;
> $server_ver = <$ddw>;
> print "$server_ver\n";
> 
> #------------------------------------------------------------
> #SRCP initialisieren
> &send ("SET PROTOCOL SRCP 0.8.2");
> &send ("SET CONNECTIONMODE SRCP COMMAND");
> &send ("GO");
> &send ("INIT 1 POWER");
> &send ("SET 1 POWER ON");
> print "Booster einschalten";
> sleep 1;
> 
> #------------------------------------------------------------
> print "initialisierung der loks und weichen\n";
> while ($i <= 24) {
> &send ("INIT 5 GA $i M");
> $i++;
> }
> #Alle Loks eintragen
> &send ("INIT 1 GL 01 M 1 14 5");
> 
> #------------------------------------------------------------
> f2 ();
> #----------------------------------------------------------------
> 
> sub send {
> print "@_\n";
> print $ddw "@_\n";
> $get = <$ddw>;
> print "$get\n";
> Win32::Sleep 200;
> }
> 
> #----------------------------------------------
> sub f2 {
> print $ddw "SET 5 GA 6 1 1 200\n";
> print $ddw "SET 5 GA 10 1 1 200\n";
> print $ddw "SET 5 GA 14 1 1 200\n";
> sleep 1;
> print $ddw "SET 5 GA 7 1 1 200\n";
> print $ddw "SET 5 GA 11 1 1 200\n";
> print $ddw "SET 5 GA 16 1 1 200\n";
> print $ddw "SET 5 GA 15 1 1 200\n";
> sleep 1;
> }
> 
> 
> 
> 	
> 
> 	
> 		
> ___________________________________________________________ 
> Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de
Hallo Gurus,
Ich habe mir ein kleine Perlprogramm gebastelt.
Das macht nichts anderes als srcp 8 Befhle an den ddw
Server zu senden und auf die Antwort zu warten.
Hat für mich den Vorteil, dass ich die Bahn nicht mit
Rückmeldern ausstatten muss und dennoch alles von
selbst läuft.
Nun zu meinem Problem:
Hochsporradisch schaltet der weichen umschalt Impuls
nicht nach 200ms ab.
d.h. der Magnet der weichen zieht ständig an. Die
Weiche  brummt und zieht Strom.
Kann mir vielleicht jemand einen Tipp geben.

Hier das Perlprogramm

#!/usr/bin/perl -w
my $hostname;
my $ddw;
my $server_ver;
my $i = 5;

$hostname = "localhost";


#----------------------------------------------------------------
#eigentlicher sokethandler
print "Connektion zum ddw server \n";
use IO::Socket;
$ddw = new IO::Socket::INET (
    PeerAddr => $hostname,
    PeerPort => 12345,
    Proto => 'tcp')|| die "Kein Socket... $!\n";
print "connected\n";
sleep 1;
$server_ver = <$ddw>;
print "$server_ver\n";

#------------------------------------------------------------
#SRCP initialisieren
&send ("SET PROTOCOL SRCP 0.8.2");
&send ("SET CONNECTIONMODE SRCP COMMAND");
&send ("GO");
&send ("INIT 1 POWER");
&send ("SET 1 POWER ON");
print "Booster einschalten";
sleep 1;

#------------------------------------------------------------
print "initialisierung der loks und weichen\n";
while ($i <= 24) {
&send ("INIT 5 GA $i M");
$i++;
}
#Alle Loks eintragen
&send ("INIT 1 GL 01 M 1 14 5");

#------------------------------------------------------------
f2 ();
#----------------------------------------------------------------

sub send {
print "@_\n";
print $ddw "@_\n";
$get = <$ddw>;
print "$get\n";
Win32::Sleep 200;
}

#----------------------------------------------
sub f2 {
print $ddw "SET 5 GA 6 1 1 200\n";
print $ddw "SET 5 GA 10 1 1 200\n";
print $ddw "SET 5 GA 14 1 1 200\n";
sleep 1;
print $ddw "SET 5 GA 7 1 1 200\n";
print $ddw "SET 5 GA 11 1 1 200\n";
print $ddw "SET 5 GA 16 1 1 200\n";
print $ddw "SET 5 GA 15 1 1 200\n";
sleep 1;
}



	

	
		
___________________________________________________________ 
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de