Märklin CS3 Blocksteuerung für 6 Blöcke mit Python auf einem Raspberry P400 inklusive Zugwechsel

  Рет қаралды 453

alteeisenbahn

alteeisenbahn

10 ай бұрын

Die 6 Blöcke sind linear hintereinander geschaltet. Die Züge fahren vom hintersten Gleis (Gleis 1, Block 1) zum Block 2 unten links, zum Block 3 im Bahnhof Gleis 2, zum Block 4 unten links, zum Block 5 im Bahnhof (abwechselnd Gleis 3 oder Gleis 4) und dann über die Brücke zum Block 6 unten links und von dort zurück zum Block 1 (Gleis 1 im Bahnhof oben).
Jeder Block ist mit einem Märklin Bremsbaustein ausgerüstet.
Die Steuerung erfolgt über eine CS3 und einem Python Programm welches auf einem Rasperry P400 läuft.
Die Züge fahren in diesem Demo-Video alle etwa gleich schnell, sonst würde der langsamste Zug die anderen ausbremsen und die schnelleren Züge müssten immer warten, bis der Block davor wieder frei ist.
Die Anlage hat 66 Rückmeldekontakte; davon werden hier aber nur deren 13 verwendet.
Der Code ist eine Erweiterung des letzten Videos:
• Märklin CS3 einfache B...
hier noch jener Teil des Codes, der sich vom Code im letzten Video unterscheidet:
while True:
monitor status change of relevant contacts
msg = cs3_socket.recv(13)
msg_hex = binascii.b2a_hex(msg)
if (msg_hex[2:3] == b'2' and msg_hex[3:4]==b'3'): # command b'23': ein S88 Kontakt hat Status geändert
module = int(msg_hex[16:17])+1
module_input=int(msg_hex[17:18],16)
input_status=int(msg_hex[21:22])
if ((module==1) and (module_input==8) and (input_status==1)): # Ausf Bhf G1: Ausfahrt Block 1 (Bhf G1) Rot
set_signal(6,"rot")
set_signal(41,"rot")
elif ((module == 4) and (module_input == 7) and (input_status == 1)): #Ausf Bhf S G1: Ausfahrt Block 6 (Bhf S G1) Rot
set_signal(31, "rot")
set_signal(59, "rot")
elif ((module == 4) and (module_input == 9) and (input_status == 1)): # Ausf Bhf S G2 : Ausfahrt Block 2 (Bhf S G2) Rot
set_signal(30, "rot")
set_signal(58, "rot")
elif ((module == 1) and (module_input == 9) and (input_status == 1)): # Ausf Bhf G2: Ausfahrt Block 3 (Bhf G2) Rot
set_signal(7, "rot")
set_signal(42, "rot")
elif ((module == 1) and (module_input == 10) and (input_status == 1)): # Ausf Bhf G3: Ausfahrt Block 5 (Bhf G3) Rot
set_signal(8, "rot")
set_signal(43, "rot")
set_signal(9, "rot")
set_signal(44, "rot")
elif ((module == 4) and (module_input == 10) and (input_status == 1)): # Ausf Bhf S G3: Ausfahrt Block 4 (Bhf S G3) Rot
set_signal(29, "rot")
set_signal(57, "rot")
#Ungerade Blöcke freigeben
elif ((module==3) and (module_input==11) and (input_status==1)): #Einf Bhf S G2: Einfahrt Block 1 (Bhf G1) aus Block 6 freigeben
set_signal(31, "gruen")
set_signal(59,"gruen")
elif ((module == 3) and (module_input == 12) and (input_status == 1)): # Einf Bhf G2: Einfahrt Block 3 (Bhf G2) aus Block 2 freigeben
set_signal(30, "gruen")
set_signal(58, "gruen")
elif ((module == 3) and (module_input == 10) and (input_status == 1)): # Einf Bhf S G3: Einfahrt Block 5 aus Block 4
set_signal(29, "gruen")
set_signal(57, "gruen")
if (flag_Ausf_Gleis3 and (not flag_Ausf_Gleis3a)):
flag_Ausf_Gleis3 = False
elif ((not flag_Ausf_Gleis3) and flag_Ausf_Gleis3a):
flag_Ausf_Gleis3 = True
#gerade Blöcke freigeben
elif ((module == 4) and (module_input == 12) and (input_status == 1)): # Einf Bhf S G1: Einfahrt Block 6 aus Bloock 5
if (flag_Ausf_Gleis3):
set_weiche(3, "gerade")
set_weiche(23, "gerade")
set_signal(8, "gruen")
set_signal(43, "gruen")
if (flag_Ausf_Gleis3 and flag_Ausf_Gleis3a):
flag_Ausf_Gleis3a = False
elif (flag_Ausf_Gleis3 and flag_Ausf_Gleis3a):
flag_Ausf_Gleis3a = True
elif (not flag_Ausf_Gleis3):
set_weiche(3, "rund")
set_weiche(4, "rund")
set_weiche(23, "rund")
set_weiche(24, "rund")
set_signal(9, "gruen")
set_signal(44, "gruen")
flag_Ausf_Gleis3a = True
elif ((module == 4) and (module_input == 13) and (input_status == 1)): # Einf Bhf S G1: Einfahrt Block 4 aus Block 3 freigeben
set_signal(6, "gruen")
set_signal(41, "gruen")
elif ((module == 4) and (module_input == 14) and (input_status == 1)): # Einf Bhf S G1: Einfahrt Block 3 (Bhf G2 freigeben)
set_signal(7, "gruen")
set_signal(42, "gruen")

Пікірлер: 4
@m-gleis
@m-gleis 3 ай бұрын
Schöne Lösung. Meine Bahn läuft noch analog 👍🙋‍♂️ Gruß vom Michel
@kefallos8442
@kefallos8442 10 ай бұрын
Muss ich zuhause ansehen, scheint gut zu sein.
@burkhardsmodelleisenbahn
@burkhardsmodelleisenbahn 10 ай бұрын
Sehr schön
@alteeisenbahn
@alteeisenbahn 10 ай бұрын
Danke!
Märklin 42470 - "Pullman Edelweiss Express"
13:53
Fritz' Märklin MoBa
Рет қаралды 5 М.
Визуализация гравитации
10:00
Макар Светлый
Рет қаралды 13 МЛН
顔面水槽をカラフルにしたらキモ過ぎたwwwww
00:59
はじめしゃちょー(hajime)
Рет қаралды 35 МЛН
Did you find it?! 🤔✨✍️ #funnyart
00:11
Artistomg
Рет қаралды 121 МЛН
1🥺🎉 #thankyou
00:29
はじめしゃちょー(hajime)
Рет қаралды 71 МЛН
CS3 Erweiterte Steuerung 3. Teil
4:21
alteeisenbahn
Рет қаралды 1 М.
Engineer Explains: Raspberry Pi is FINALLY Dead, Here's Why
11:47
Data Slayer
Рет қаралды 182 М.
Märklin C- Gleis Blockstrecke mit Rückmelder bauen
16:38
XtraLiner / Hermanns Modellbahn H0
Рет қаралды 14 М.
WinDigipet 2021 Demoversion Test
1:51
alteeisenbahn
Рет қаралды 519
Heimweg & Feierabend I Teil 7:7
5:10
Jens Knopf rangiert
Рет қаралды 106
Fahrtag2 bei Johannes 180524
2:16
Bernhard Dittmann
Рет қаралды 8 М.
Märklin Kontaktgleise  mit C Gleisen für PC Steuerung erstellen
6:17
LOLLIPOP CHALLENGE 🍭 [ANIME]
0:20
Alan Too
Рет қаралды 6 МЛН