English English

UWR Schiedsrichteranlage

Autor: Ulrich Wüller





Früher musste sich immer bei den Piranhas Paderborn vor und nach jedem UWR-Turnier jemand um die Ausleihung und Zurückbringung der geliehenen Hupanlage kümmern. Im Frühjahr 2003 entstand deshalb die Idee eine Schirianlage selbst zu bauen. Um die Sache einfach zu halten, beschlossen wir, diese auf Basis eines PCs bzw. Notebooks zu konzipieren. Im folgenden wird diese Idee und deren Umsetzung beschrieben.


Screenshot


Online testen: SchiriAnlage-Applet

1. Hardware

1.1 Komponenten

Die Hardware der ganzen Anlage besteht aus den folgenden Komponenten:
Hardware

1.2 Zusammenspiel

Der Parallelport vom PC ist über ein halbes Druckerkabel in das Schaltungs-Gehäuse geführt. Die Leitungen zu den anderen Geräten sollte man mit Steckverbindungen realisieren (läßt sich dann einfacher auf- und abbauen).
Parallelport-Belegung


In dem kleinen Schaltungs-Gehäuse steckt eine einfache Schaltung:
Layout real

Layout der Platine in dem Schaltungskasten, Anklicken führt zur Schema-Darstellung (Mouseklick-Effekt)

1.3 Redundanz

Die Hupe wird parallel über zwei Ports angesteuert. Durch Klick auf eines der beiden Icons lässt sich jeder Port einzeln vor dem Spiel testen.

Wenn ein Anschluss für einen Schiedsrichter-Signalgeber nicht funktionieren sollte, kann man auf einen anderen wechseln, falls alle nach aussen Anschlüsse haben. Im Programm muss der Wechsel unter Konfiguration eingestellt werden.

2. Software

Die Software funktioniert nicht nur als Programm auf der oben beschriebenen Hardware, sondern auch zum Testen als Java-Applet im Browser. Das Applet startet bis auf die Bilder und die Templates komplett aus dem Java-Archive "SchiriAnlage.jar", das alle notwendigen Dateien enthält. Es ist mit dem Applet kein Hardware-Zugang möglich. Deshalb wird sofort der Simulations-Modus gestartet, d.h.der Thread ParallelPort-Kommunikation öffnet keine Fifos. Statt dessen wird durch Klicken auf die Schiri-Anzeigen (Kreise) das Signal des entsprechenden Schiedsrichters simuliert.

Für die Nutzung als Schiri-Anlage braucht man:
Prozesse

2.1 Die Hardware-Steuerung

Das ParallelPortControl-Programm ist ein recht schlankes Programm, das die Hardware-Steuerung übernimmt. Es läuft unter root-Rechten (über s-Bit) und ersetzt einen Treiber, der solche Aufgaben im Normalfall übernimmt (Ich wollte mich aber nicht mit der Treiberprogrammierung herumschlagen).

2.2 Das Java-Programm

Wie immer bin ich angefangen mit der Vorstellung, dass so ein kleines GUI (Grafisches User Interface) mit ein wenig Steuerung des ParallelPortControl-Programms schnell mal zu programmieren ist. Jetzt sind es aber knapp 8000 Zeilen Code bei der Version 2.1.

Für die Steuerung des ParallelPortControl-Programms (siehe 2.1) gibt es einen eigenen Java-Thread (Mini-Prozess) ParallelPortKommunikation. Über diesen Thread laufen alle Daten von und zum Schaltkasten. Sollte keine Verbindung zum ParallelPortControl-Programm (siehe 2.3 Fifos) aufgebaut werden können, geht das Programm in den Simulation-Modus und simuliert die Kommunikation selbst (setStatusOverwrite). Für den Haupt-Thread besteht dann kein Unterschied zwischen der Simulation und dem Real-Einsatz. Der Simulations-Modus wird aktiv beim Start als Applet oder wenn die Fifos nicht vorhanden sind. Damit die Funktionen des Programms, die von den Schiedsrichter-Signalen abhängen, getestet werden können, gibt es unabhängig davon noch die Schiri-Eingabe-Simulation (siehe Konfiguration). Mittels Klicken auf eine Schiedsrichter-Anzeige wird ein Drücken des entsprechenden Schiedsrichter-Signalgebers simuliert.

Die Signal-Erkennung (kurz-kurz-kurz für Foul, lang-lang für Tor und Anhupen mit einmal lang) funktioniert jetzt recht zuverlässig. Man kann aber die Schwelle zwischen kurz und lang, die in der Voreinstellung bei 300 Millisekunden liegt, auch noch anpassen (Konfiguration). Probleme gibt es nur, wenn die Schiedsrichter-Signalgeber kein sauberes Signal geben, d.h. beim Drücken der Kontakt nicht dauerhaft besteht.

Mehr zur Benutzung der Schiri-Anlage weiter unten.

2.3 Die Fifos

Die Fifos "fifo_pp_command" und "fifo_ppc_answer" werden von dem Script "runSchiriAnlage.sh" erzeugt und nach Beendigung wieder gelöscht. Die erste wird  von dem Java-Programm benutzt, um dem C-Programm die Kommandos und die Daten für die Hupe und Strafzeitanzeigen zu schicken. Die Antwort mit den Eingaben der Schiedsrichter kommt dann über die zweite Fifo. Dies geschieht alle 20 ms.

2.3 Das Start-Script

Das Start-Script "runSchiriAnlage.sh" überprüft die wesentlichen Dateien. Ggf. werden neuere Quelldateien übersetzt (falls ein passender Compiler vorhanden ist). Dann werden die Fifos (named Pipes) erzeugt und die Programme gestartet. Beim ersten Mal und nach Updates der Source-Dateien sollte man "runSchiriAnlage.sh" von der Shell starten, um die Kommentare zu sehen oder ggf. das root-Passwort einzugeben. Wenn alles ok ist, kann man "runSchiriAnlage.sh" auch über Desktop-Icon oder über Autostart aktivieren. Also normalerweise aufrufen und los geht's ...

2.4 Warum Linux, C und Java?

Weil Linux das bessere Betriebssystem ist ;-)

Aber mal ernsthaft; was hat Linux, was Windows nicht für dieses Projekt bietet:
Die Programmiersprache C für den Zugang zur Hardware ist unter Linux wohl klar. Ich kenne keine andere sinnvolle Art, es zu realisieren.

Das Oberflächen-Programm ist mit Java geschrieben, weil:

2.5 Knoppix mit der Schiri-Anlagen-Software

Viele Benutzer eines Rechners mit Windows haben schon einmal Linux mit einer "KNOPPIX-CD" getestet (siehe z.B. die Zeitschrift c't 4/2004): CD einlegen, Rechner starten und ein wenig warten, dann sieht man ein vollständiges Linux ohne Installation. D.h. nach dem Ausschalten hat sich an der Windows-Installation nichts geändert.

Da Knoppix so einfach zu nutzen ist, habe ich eine angepasste KNOPPIX-CD erzeugt. Die SchiriAnlagen-Software ist mit drauf und wird auch gleich gestartet. Also beim UWR-Turnier - wo sowieso alles durcheinander geht - einfach verkabeln, anschalten und warten bis die Software läuft. Ausserdem wird verhindert, dass durch eine eventuelle Löschung/Veränderung der Software die Schiri-Anlage beim Turnier nicht zur Verfügung steht. Je nach Geschmack kann man dies auch als Backup sehen.

Wer dies einmal ausprobieren möchtet, kann sich gerne mit mir in Verbindung setzen.

3. Benutzung der Schiri-Anlage

Am 03.04.2004 war die Schiri-Anlage im Einsatz beim Turnier des SV Paderborn (2.-te Bundesliga). Das Konzept hat sich als erfolgreich erwiesen.

3.1 Voraussetzungen

3.2 und los geht's ...

Nachdem alles verkabelt ist und die Software auf dem System liegt, startet man das Script "runSchiriAnlage.sh" unter einer Standard-Kennung. Beim ersten Mal und nach jedem Update am besten von einer Shell.

Wenn alle Tests und Kompilierungen erfolgreich durchgelaufen sind (Sollte das ParallelPortControl-Programm neu kompiliert werden oder noch nicht die richtigen Rechte haben, wird man noch aufgefordert das root-Passwort einzugeben.), wird das Java-Programm auf dem Bildschirm erscheinen.

Mit einem Klick auf ein Hup-Icon kann man jedes der beiden Hupen-Relais einzeln testen, solange das Spiel nicht läuft. Die Schiedsrichter-Signalgeber kann man mittels des Hup-Tests testen.

Zu Beginn sollte man mittels des Konfigurations-Buttons die Parameter überprüfen. Die Einträge sollten fast ohne Erklärung auskommen. Die "kuz/lang Signalschwelle" bezeichnet die Grenze, über der ein Schirisignal als lang angesehen wird. Mit "volles Protokoll u. Torstand"trifft man eine wesentliche Entscheidung. Bei der Default-Einstellung "nein" sind nur minimale Eingaben notwendig (Strafwurf, Zeitstrafe, Auszeit, ...). Die vollständige Spiel-Information, wer z.B. die Tore gemacht hat, ist dem Programm nicht bekannt. Bei "ja" werden alle Daten abgefragt, um ein vollstädiges Protokoll anzufertigen. Natürlich muss man dann auch vor Spielbeginn die Mannschaften eingeben bzw. die vom letzen Spiel gespeicherten einlesen. Will man das Protokoll ausdrucken, braucht man allerdings einen Drucker, der sinnvollerweise nicht über den Parallelport sondern über USB oder Netz angeschlossen wird.

Mit dem Aktivierungs-Button geht es weiter. Jetzt übernehmen die Schiedsrichter die Steuerung. Bei einer Strafzeit muss man einen der Strafzeit-Anzeigen starten. Entsprechend bei Strafwürfen, etc. Wenn die Halbzeit oder die Strafwurfzeit abgelaufen ist, hupt die Anlage automatisch ab (lang-lang-lang-lang-lang). Nach der ersten Halbzeit startet die Pausenuhr und die nächste Halbzeit wird aktivieren.

Mit einem Klick auf die Icons für Tor und Foul kann man die Erkennung des Programms korrigieren, solange das Spiel nicht wieder angehupt ist. Mit dem Protokoll-Button kann man an die bisherigen Informationen des Programms zum Spielverlauf sehen.

Die Strafwurfzeit und die Strafzeit fangen erst durch Anhupen des Schiris an. Ausnahme: Das Spiel ist schon wieder angehupt, dann kann "quasi verspätet" der Protokoll-Tisch die Zeit einfach durch den Button starten.

Detailierte Informationen


4. Download, Lizenzen ...

Die Software kann auch von anderen Vereinen kostenfrei genutzt werden kann. Ich beabsichtige, das Programm später unter die GPL zu stellen. Zuzeit gilt:

5. Disclaimers

Obwohl ich die Software und die Hardware am eigenen Rechner ausprobiert habe (und damit bin ich sehr eigen), kann ich keine Haftung für eventuell eintretende Schäden übernehmen. Generell sollte man mit Spielereien am Parallel-Interface vorsichtig sein. Zu hohe Spannungen oder Ströme sollen schon Interfaces zerstört haben.

6. Links