Kontrollraum-Situation

Kontrollsysteme etwa zur Verkehrssteuerung erfordern besonders flexible Konfigurationsmöglichkeiten bis hin zur Ausfallsicherheit.

Flexible Arbeitsplatzkonfiguration

Wird ein Kontrollraum im Schichtbetrieb gefahren, ist es wünschenswert, in der Nachtschicht mit halber Besetzung zwei Arbeitsplätze zusammenzufassen.

Am Tage gilt für zwei nebeneinander stehende, dual-headed Workstations etwa die folgende Konfiguration:

options +DynamicServer
metaScreen .0
width (2*2*1278)
screen localLeft display :1.0
followPointerX 9999
followPointerMode jump
followPointerRestrict control
screen localRight display :1.1
followPointerX 9999
followPointerMode jump
followPointerRestrict control
serverCommand /usr/bin/X11/X :1

Damit bewegen sich die beiden Screens gemeinsam (Variable Position eines Screens) auf einem doppelt breiten Meta-Screen (Größe eines Meta-Screens), wenn der Bediener mit dem Mauszeiger am entsprechenden Bildschirmrand anstößt und die Control-Taste gedrückt hält.

Beim Schichtwechsel am Abend werden der XmetaX-Konfiguration auf der linken Workstation die beiden Bildschirme der rechten Workstation hinzugefügt:

#!/bin/sh
# /etc/opt/XSOXmetaX/nightShift

usage="Usage: $0 remoteDisplayHostname"
if [ $# != 1 ]
then
echo $usage 1>&2; exit 1
fi
/opt/XSOXmetaX/bin/xmetaxtool -nogui -display :0.0 \
screen localLeft clipX 0
/opt/XSOXmetaX/bin/xmetaxtool -nogui -display :0.0 \
screen localRight offsetX 0
/opt/XSOXmetaX/bin/xmetaxtool -nogui -display :0.0 \
screen remoteLeft display "$1":1.0 \
priority 1 0 \
screen remoteRight display "$1":1.1 \
priority 1 0

Hier werden zuerst die lokalen Screens an den linken Rand des Meta-Screens bewegt und dann die Screens der rechten Workstation hinzugefügt. Die priority-Konfigurationsanweisung sorgt dafür, daß der XmetaX-Proxy der rechten Workstation die beiden Screens freigibt (Priorität).

Am Morgen wird die XmetaX-Konfiguration der rechten Workstation wieder in den normalen Zustand versetzt:

#!/bin/sh
# /etc/opt/XSOXmetaX/dayShift

usage="Usage: $0 remoteDisplayHostname"
if [ $# != 1 ]
then
echo $usage 1>&2; exit 1
fi
/opt/XSOXmetaX/bin/xmetaxtool -nogui -display "$1":0.0 \
screen localLeft display "$1":1.0 \
followPointerX 9999 \
followPointerMode jump \
followPointerRestrict control \
priority 1 0 \
screen localRight display "$1":1.1 \
eastOf localLeft \
followPointerX 9999 \
followPointerMode jump \
followPointerRestrict control \
priority 1 0



Hier wird der XmetaX-Proxy der linken Workstation von den Screens der rechten Workstation verdrängt.

Bei den Schichtwechseln müssen die X11-Sitzungen auf beiden Workstations nicht verlassen werden, die Applikationen bemerken die Konfigurationsänderungen nicht.

Wand-Display in Alarm-Situationen: einfache Konfiguration

Der Prioritätsmechanismus (Priorität) läßt sich auch im folgenden Szenario nutzen: In einer Gefahrensituation soll jeder der Bediener einen Meta-Screen zusätzlich auf einem großen Wand-Display anzeigen können ohne sich mit seinen Mitarbeitern koordinieren zu müssen.

Die Konfiguration für die single-headed Arbeitsplätze definiert das Screen-Merkmal static (Screen-Merkmale), damit trotz der DynamicServer-Option (Dynamische Konfiguration) der XmetaX Ressourcemanager nicht gestartet wird:

options +DynamicServer +Vario
screen local display :1.0
tags static
serverCommand /usr/bin/X11/X :1

Das folgende Shell-Skript nimmt in die lokale XmetaX-Konfiguration einen Screen auf dem Wand-Display wall:0.0 aufdabei wird der Screen-Inhalt vergrößert (Vergrößerung oder Verkleinerung eines Screens)oder entfernt ihn:

#!/bin/sh
# /etc/opt/XSOXmetaX/wall

usage="Usage: $0 alarmLevel"
if [ $# != 1 ]
then
echo $usage 1>&2; exit 1
fi
case "$1"
in 0)
sub=delete
;; [0-9]*)
sub="direction same relativeTo local
clipWidth 1278 clipHeight 1022
displayWidth 1918 displayHeight 1438
pointer allowEnter off
priority $1 `expr $1 - 1`"
;; *)
echo $usage 1>&2; exit 1
;; esac
/opt/XSOXmetaX/bin/xmetaxtool -nogui -display :0.0 \
screen wall:0.0 $sub

Über das Argument des Shell-Skripts kann der Grad des Alarms übergeben werden, also etwa bei der Konfiguration von Hotkeys:

Meta<Key>F1 root|icon|window f.exec "/etc/opt/XSOXmetaX/wall 1&"
Meta<Key>F2 root|icon|window f.exec "/etc/opt/XSOXmetaX/wall 2&"
Meta<Key>F3 root|icon|window f.exec "/etc/opt/XSOXmetaX/wall 3&"
Meta<Key>F4 root|icon|window f.exec "/etc/opt/XSOXmetaX/wall 4&"
Meta<Key>F10 root|icon|window f.exec "/etc/opt/XSOXmetaX/wall 0&"

Auf dem Wand-Display befindet sich zu jedem Zeitpunkt nur ein Screen. Wenn ein anderer Screen dargestellt werden soll, müssen alle seine X11-Ressourcen zum Wand-Display übertragen werden. Dies sowie eine eventuelle Vergrößerung oder Verkleinerung des Screens ergibt Umschaltzeiten im Bereich von mehreren Sekunden, die in Alarm-Situationen meist nicht akzeptabel sind.

Wand-Display in Alarm-Situationen: schnelle Umschaltung

Bei der hier vorgestellten Lösung verbleiben alle einmal auf dem Wand-Display dargestellten X11-Ressourcen im X Window Server. Dies wird dadurch erreicht, daß die auf dem Wand-Display dargestellten Screens nicht aus den Konfigurationen der einzelnen Arbeitsplätze entfernt werden. Damit auf dem Wand-Display mehrere Screens gleichzeitig verwaltet werden können, wird die Option InWindow (Screen vom Typ window) benötigt:

options +DynamicServer +Failsafe +InWindow +Vario
screen local display :1.0
tags static
serverCommand /usr/bin/X11/X :1

Ein Screen auf dem Wand-Display ist vom window-Typ (Screen) und kann über das Screen-Merkmal onTop (Screen-Merkmale) zu oberstüber den den anderen Arbeitsplätzen zugeordneten Screensdargestellt werden. Da auf dem Wand-Display kein Windowmanager läuft, ist auch das Screen-Merkmal notManaged (Screen-Merkmale) zu konfigurieren. Das folgende Shell-Skript nimmt in die lokale XmetaX-Konfiguration einen Screen auf dem Wand-Display wall:0.0 auf oder bringt den bereits konfigurierten Screen nach oben:

#!/bin/sh
# /etc/opt/XSOXmetaX/wall

usage="Usage: $0"
if [ $# != 0 ]
then
echo $usage 1>&2; exit 1
fi
/opt/XSOXmetaX/bin/xmetaxtool -nogui -display :0.0 \
window wall:0.0 \
failsafeTimeout 10 \
sameAs local \
clipWidth 1278 clipHeight 1022 \
displayWidth 1918 displayHeight 1438 \
pointer allowEnter off \
tags notManaged onTop

Dies ergibt Umschaltzeiten von unter einer Sekunde bei erhöhtem Ressourcen-Verbrauch des Wand-Displays. Die Vergabe von Prioritätswerten ist nicht möglich.

Wenn, wie in der oben vorgestellten Konfiguration, die Meta-Screens aller Arbeitsplätze auf dem Wand-Display gespiegelt sind, fallen alle Arbeitsplätze aus, wenn das Wand-Display ausfällt. Dieser Mißstand läßt sich mit der Option Failsafe (Ausfallsicherheit) beheben. Dazu wird in der Konfiguration der Screens, die auf dem Wand-Display dargestellt werden sollen, die Ausfall-Zeitspanne angegeben. Wenn das Wand-Display zehn Sekunden lang nicht auf X11-Anweisungen reagiert, wird es automatisch aus der XmetaX-Konfiguration entfernt ohne die X Window Clients zu stören.

Copyright © 2018 X-Software GmbH
info@x-software.com