SIC Konzept

| ALPHA-VISION® PMU

# SIC - Station in Control

Inhaltsverzeichnis

1. Vorbemerkung
2. Begriffsbestimmung
3. Grundlegendes
4. Laufzeit-Strukturen
5. Parametrierung

1. Parametrierung mit dem Visu-Browser
2. Zusätzliche Parametrierung über Vision.INI_Datei

6. Online-Benutzer-Verwaltung
7. Hinweise zur Projektierung
8. Aktionen und Funktionen für SIC

1. Sic_Accept()
2. Sic_Acceptable(<SIC-Nummer>)
3. Sic_AllowedToUsr(<SIC-Nummer>, Variablenname)
4. Sic_AllwdUserObj(<SIC-Nummer>, Variablenname)
5. Sic_Clear()
6. Sic_EmergRequest(<SIC-Nummer>, Variablenname)
7. Sic_GetUsrProf(UserNummer)
8. Sic_HasByUserObj(<SIC-Nummer>, Variablenname)
9. Sic_OnStation(<Station-Nummer>, <SIC-Nummer>)
10. Sic_Reject()
11. Sic_Release(<SIC-Nummer>,<Objektname>
12. Sic_Request(<SIC-Nummer>,<Objektname>
13. Sic_Transaction()

9. Datenobjekt-Ereignisse

1. Abgabewunsch bzw. Anforderung einer SIC von fremder Station
2. Reagieren auf Akzeptieren der Transaktion von fremder Station
3. Reagieren auf Ablehnung der Transaktion von fremder Station
4. Anzeige des SIC-Verlusts an Station infolge Notfallübernahme
5. Notfallübernahme / -abgeben -anfordern momentan nicht möglich
6. Verlust einer SIC

10. Szenarien

1. Abgeben einer speziellen SIC
2. Anfordern einer SIC
3. Ausloggen
4. Einloggen

11. Zyklische Überprüfungen

1. Automatisches Umloggen eines Benutzers an einer neuen Station
2. Reaktionen auf Busfehlermessstellen
3. Überwachung der SIC-Limits
4. Überwachung mehrfach eingeloggter User

## Vorbemerkung

SIC - Station In Control ist Nachfolger des Subsystems ExCo - Exclusive Controls.
SIC ist eine Erweiterung der bestehenden Zugriffsschutzmechanismen, es ermöglicht den 'dynamische' Berechtigungs-Erwerb sowie eine wechselnde 'ausschließliche' Berechtigung.

## Begriffsbestimmung

Funktionsnummer -steht für eine entsprechende Berechtigung

SIC -steht einerseits als Name für das gesamte Konzept, andererseits als Bezeichnung für eine Ansammlung von Funktionsnummern.
(Wird auf SIC als Konzept Bezug genommen erscheint das Wort SIC ohne Artikel, in Zusammenhang mit Funktionen wird von 'einem SIC' oder 'mehreren SICs' die Rede sein.)

"logisches" SIC -darunter gruppieren sich die möglichen "realen" SICs einer Gruppe

"reales" SIC -eine aufgrund der Berechtigung einem Benutzer zugeordnete Untermenge des logischen SIC

SIC-Profil -die über ein SIC erworbenen (zu erwerbenden) Funktionsnummern

## Grundlegendes

In der bisherigen Version von VisuNT ist der Zugriffsschutz auf einfache Weise geregelt.

- Benutzer melden sich mit Benutzernamen und Paßwort beim System an
- Benutzer haben ein Benutzerprofil.
- Einem Benutzerprofil sind Funktionsnummern zugeordnet.
- Zu schützende Funktionalitäten werden mit einer Funktionsnummer belegt.
- Beim Ausführen der Funktionalität wird über die Funktionsnummer die Berechtigung überprüft.

  SIC als Erweiterung des normalen Zugriffsschutz-Mechanismus

- Arbeitet ebenfalls mit Funktionsnummern
- Mit dem Erhalt eines SICs erwirbt ein Benutzer zusätzlich zu den in seinem Benutzerprofil vorhandenen die SIC-Funktionsnummern.
- Ein SIC ist durch eine SIC-Schutznummer vor unberechtigtem Zugriff geschützt.
  (Ein Benutzer muß die für den Erwerb des SICs notwendige SIC-Schutznummer = Funktionsnummer in seinem Benutzerprofil haben)
- Ein SIC kann einmal oder mehrfach verfügbar ist.
- Eine SIC Definition erfolgt über Visu-Browser und INI_Datei

  ## Laufzeit-Strukturen

  Zur Laufzeit kann die über SIC realisierte Berechtigungsstruktur in ihrem jeweils aktuellen Stand wie folgt kontrolliert werden:

- Eine Matrix mit so vielen Zeilen, wie Stationen und so vielen Spalten, wie es SICs gibt; so kann angezeigt werden an welcher Station welches SIC vorhanden ist. (siehe Einträge INI-Datei)

- Ein Feld mit allen Stationen in dem festgehalten wird, welcher User an welcher Station aktiv ist. (siehe Einträge INI-Datei)

  ## Parametrierung

  Die Projektierung erfolgt über die Benutzerverwaltung und über Einträge in eine INI_Datei.

  ### Parametrierung mit dem Visu-Browser

  Im Browser unter Benutzerprofile werden die SIC-Profile eingetragen. Es gibt dabei keine Unterschiede zwischen Benutzerprofilen und SIC-Profilen, d.h. ein Profile mit einer gegebenen Nummer kann sowohl als Benutzerprofil, als auch als SIC-Profil angesprochen werden. Ist eine explizite Unterscheidung an der Stelle notwendig, so dürfen sich die Nummern nicht überlappen.
  Die Berechtigung ein SIC zu erwerben ist als ganz normale Funktionsnummer = SIC-Schutznummer im Benutzerprofile gespeichert.

  ### Zusätzliche Parametrierung über Vision.INI_Datei

  Einstellungen, die nicht über den Browser vorgenommen werden können, werden als Einträge in der INI-Datei vorgenommen.

  Alle folgenden Parameter werden in der Sektion [SIC] eingetragen

  P R O F I L Z U O R D N U N G

      SIC.Entry01=1,1,99
      SIC.Entry02=1,11,90
      SIC.Entry03=1,12,95
      SIC.Entry04=2,2,99
      SIC.Entry05=2,21,95
      SIC.Entry06=2,22,90

  Die Einträge SIC.Entry01, SIC.Entry02,...bis SIC.EntryXX sind fortlaufende Schlüsselzuordnungen. Die erste Zahl nach dem "=" gibt die logische SIC an, die Zweite eine zugeordnete reale SIC und die Dritte die SIC-Schutznummer(Funktionsnummer), die zum Erwerb des SICs Bedingung ist.

  In dem Beispiel sind 2 logische SICs definiert.
  Je nach Berechtigung des Benutzers, wird das logische SIC #1 durch das reale SIC-Profil 1, 11 oder 12 ersetzt.
  SIC #2 wird alternativ durch die realen SIC-Profile 2, 21, 22 ersetzt.

  Ein Benutzer mit der Berechtigung 90 erhält für diese Beispielwerte beim Anfordern des logischen SIC-Profils 1, das reale SIC-Profil 11. Hat der Benutzer hingegen die Berechtigung 95, so erhält er das reale SIC-Profil 12.

  Ein Benutzer mit der Berechtigung 90 & 95 (was vermieden werden sollte) erhält für das logische SIC #2 das Profil 22

  M E H R F A C H V E R F Ü G B A R K E I T

      SIC.Limit01=1,1,0
      SIC.Limit02=2,5,2

  Die Einträge SIC.Limit01, SIC.Limit02 sind fortlaufende Schlüsseleinträge.
  Die erste Zahl nach dem "=" gibt die logische SIC an, die Zweite die maximal erlaubten Verwendung, die Dritte das Minimum an Verwendung an.

  Die Einträge in diesem Beispiel bedeuten:

  Das logische SIC 1 darf nur an einer Station gleichzeitig, oder gar nicht verwendet werden.
  Das logische SIC 2 darf maximal an 5 Stationen= muß mindestens an 2 Stationen verwendet werden.
  Ein nicht definiertes logisches SIC hat keine Begrenzung

  Hinweis:
  Ein existierendes SIC, das hier nicht definiert ist, hat für min/max die Vorbelegung 1,1.

  Auch ein mit min. definiertes SIC ist bei Systemstart keinem Benutzer zugeordnet; mit den folgenden SIC-Anforderungen "wächst" das System in die definierte Parametrierung, die dann nicht mehr über=, bzw. unterschritten werden kann.

  W E R T Z U O R D N U N G B E I N O T F A L L Ü B E R N A H M E

      EmergMsg.1=SICMSG1
      EmergMsg.2=SICMSG2

  Es können Objekte definiert werden, die auf den Wert 1 gesetzt werden, wenn die zugeordnete SIC infolge Notfallübernahme der aktuellen Station entzogen werden. Diese Variablen müssen für die einzelnen Stationen individuell vorhanden sein.

  Die Einträge im Beispiel ordnen der SIC 1 die Variable SICMSG1 und der SIC 2 die Variable SICMSG2 zu.

  S T A T I O N / S I C M A T R I X

      HasSic.101.3=STN101SIC3
      HasSic.102.3=STN102SIC3
      HasSic.103.3=STN103SIC3
      HasSic.104.3=STN104SIC3
      HasSic.105.3=STN105SIC3

  Weitere Einträge ordnen jeder Kombination aus SIC und Station eine Variable zu. Über diese Variablen kann das SIC-Subsystem kontrollieren welche SICs an welchen Stationen vorhanden sind. Außerdem können diese Variablen verwendet werden, um zum Beispiel in einem Übersichtsbild die Verteilung der SICs auf die einzelnen Stationen zu visualisieren. Diese Variablen müssen über die Stationen hinweg abgeglichen werden

  Im Beispiel wird definiert, daß die Variable STN101SIC3 anzeigt, ob die Station 101 die SIC 3 besitzt oder nicht.

  L O G G E D I N U S E R

      UserVar.101=STN101USR
      UserVar.102=STN102USR
      UserVar.103=STN103USR
      UserVar.104=STN104USR
      UserVar.105=STN105USR

  Über diese Variablen wird die Information bereit gestellt, welcher Benutzer an einer Station eingelogged ist.
  Dabei wird die Usernummer in dem betreffenden Objekt gespeichert. Für diese Variablen wird auch ein Datenabgleich zwischen den Stationen benötigt.

  ## Online-Benutzer-Verwaltung

  Im laufenden Betrieb können durch die Benutzer in beschränktem Umfang Änderungen an der Konfiguration vorgenommen werden.

- Jeder Benutzer kann sein eigenes Paßwort ändern. (Usr_ChngUsrPwd)
- Ein Benutzer mit Superuser-Privilegien kann das Paßwort jedes Users ändern. (Usr_ChngUsrPwd)
- Ein Benutzer mit Superuser-Privilegien kann das Profil eines Benutzers ändern. (Usr_PrfChange)
- Ein Benutzer mit Superuser-Privilegien kann dem Profil eines Benutzers eine Funktionsnummer hinzugefügt. (Usr_PrfAddFct)
- Ein Benutzer mit Superuser-Privilegien kann aus dem Profil eines Benutzers eine Funktionsnummer entfernen. (Usr_PrfRmvFct)

  Superuser-Privilegien haben Benutzer, die in ihrem Benutzerprofile über die Funktionsnummer verfügen, die im CFG-Programm in der Lasche "Control Access" unter dem Punkt "Function Number for Access Admin" eingetragen ist.

  ## Hinweise zur Projektierung

  Die Vergabe der Funktionsnummern und Benutzergruppen muß mit großer Sorgfalt erfolgen. Insbesondere ist darauf zu achten, daß:

  1.)Die Funktionsnummern, über die die SICs vor unberechtigtem Zugriff geschützt sind, die SIC-Schutznummern, ausschließlich in den Benutzerprofilen und nicht in den SIC-Profilen verwendet werden. (Erläuterung: Es ist normalerweise sicher nicht beabsichtigt, daß ein Benutzer durch den Erwerb eines SICs die Berechtigung erwirbt, ein anderes anzufordern, für das er die Berechtigung vorher nicht besaß. Ein Fall wo dies sinnvoll erschiene, wären SICs, die zueinander in Beziehung stehen, wie SBetr / SSich und SIC-Throttle, jedoch müsste in diesem Fall auch beim Abgeben des einen SICs die Abgabe des anderen erzwungen werden.

  2.)Unter den realen SICs die einem logischen SIC zugeordnet sind, sollte ein Benutzer in seinem Benutzerprofil nur die Berechtigung, für genau eines haben. Sollte er über Berechtigungen für mehrere passende reale SICs verfügen, ist zwar sichergestellt, daß er beim Anfordern eines logischen SICs immer ein genau bestimmtes reales SIC erhält, aber um Unklarheiten zu vermeiden, welches SIC zu einem Zeitpunkt wirklich aktiv ist, sollte auch nur jeweils ein, zu einem logischen SIC gehöriges, reales SIC zulassen.

  ## Aktionen und Funktionen für SIC

  ### Sic_Accept()

  Ein Abgabe- oder Übernahmewunsch der Partnerstation wird angenommen - Aktion auf Schaltflächen.
  Setzen die Variable $SICREPLY auf 1. (wird nur ausgeführt, wenn $SICACTIVE gleich $OSNO (Operator-Station-Number))
  Kann auf einer Schaltfläche durch die Freischaltfunktion: (Obj_CmpValues($SICSIC,< const>) ) an eine spezielle Variable gekoppelt werden.

  Parametrierung

  ### Sic_Acceptable(<SIC-Nummer>)

  Liefert 1 zurück, wenn momentan eine Sic-Transaktion aktiv ist, in der die angegebene SIC an die aktuelle Station abgegeben werden soll.
  Verwendung als Freischaltfunktion an den Schaltflächen zum Ablehnen oder Annehmen der aktuell laufenden Transaktion

  Parametrierung

  ### Sic_AllowedToUsr(<SIC-Nummer>,PointID)

  Liefert 1 zurück, wenn der User (UserID = Value "PointID") berechtigt ist die SIC-Nummer zu haben.
  Als Freischaltfunktion für Schaltflächen, die das gezielte Abgeben der SIC an eine berechtigte Station ermöglichen sollen.

  Parametrierung

  ### Sic_AllwdUserObj(<SIC-Nummer>, $USR)

  Liefert 1 zurück, wenn der aktuell eingeloggte User, berechtigt ist die durch den ersten Parameter bezeichnete SIC zu haben. Als zweiten Parameter muß hier der Name der Uservariablen angegeben werden, also "$USR".
  Als Freischalt-Funktion für Schaltflächen zur Notfallübername einer SIC.

  Parametrierung

  ### Sic_Clear()

  Im Falle, das die Varianle $SICREPLY den Wert 2 annimmt (ablehnen einer Transaktion), wird auf allen Stationen die Funktion Sic_Clear() aufgerufen. (Dies muß wiederum über ein Datenobjektereignis projektiert werden.)
  Wenn die Bedingung $SICACTIVE = $OSNO erfüllt ist, löscht die Funktion alle Variablen, d.h. nur die Station, die die Transaktion ursprünglich initiiert hatte ist in der Lage, das Löschen durchzuführen.

  Parametrierung

  ### Sic_EmergRequest(<SIC-Nummer>, Variablenname)

  Durch den Aufruf dieser Funktion wird das gewünschte SIC unmittelbar an der anfordernden Station hinzugefügt.
  Falls eine andere Station dieses nicht mehrfachverfügbare SIC auch besitzt, wird ihr das SIC über den Abgleich von Datenobjekten entzogen. Falls gerade anderweitig eine SIC-Transaktion durchgeführt wird, wird der Wert der über den zweiten Parameter bezeichneten Variablen auf 2 gesetzt. Ein entsprechend projektiertes Datenobjekt-Ereignis kann dazu verwendet werden, um einen Dialog als Hinweis darauf zu projektieren.

  Parametrierung

  Hinweis:
  Diese Funktion nur für einfach verfügbare SICs verwenden

  ### Sic_GetUsrProf(UserNummer)

  Die Funktion liefert die Nummer des UserProfils des über die Nummer identifizierten Users zurück.

  Parametrierung

  ### Sic_HasByUserObj(<SIC-Nummer>, Variablenname)

  Die Funktion liefert das Ergebnis 1, wenn die im Parameter 1 übergebene SIC beim aktuell eingeloggten User vorhanden ist. Als zweiter Parameter muß "$USR" angegeben werden.
  Verwendung als Freischaltfunktíon an dem Button zum Abgeben der betreffenden SIC

  Parametrierung

  ### Sic_OnStation(<Station-Nummer>, <SIC-Nummer>)

  Die Funktion liefert als Ergebnis 1 zurück, wenn die im ersten Parameter übergebene Station über die im zweiten Parameter übergebene SIC verfügt.
  Verwendung als Freischaltfunktion an einem Button zum Anfordern einer SIC von einer Station

  Parametrierung

  ### Sic_Reject()

  Ein Abgabe- oder Übernahmewunsch der Partnerstation wird abgelehnt. Einsatz als Aktion auf Schaltflächen.

  Parametrierung

  ### Sic_Release(<SIC-Nummer>,<Objektname>

  Versucht die SIC <SIC-Nummer> abzugeben.
  Kann dies nicht unmittelbar durch Rückgabe an das System (Bei SICs, die mehrfach vorhanden sein dürfen, und noch an mindestens einer weiteren Station vorhanden sind) erfolgen, so wird das durch <Objektname> bezeichnete Objekt auf den Wert 1 gesetzt. Der Name kann vom Benutzer frei vergeben werden, es muß sich aber um ein Objekt handeln, das an dieser Station lokal ist. Außerdem muss ein Datenobjektereignis projektiert werden, das einen Dialog aufblendet, und in der Reaktion auf das entsprechende Datenobjektereignis dieses Objekt auch wieder auf Null setzt.

  Parametrierung

  ### Sic_Request(<SIC-Nummer>,<Objektname>

  Versucht die SIC <SIC-Nummer> abzufordern. Kann dies nicht unmittelbar durch Eintragen der SIC erfolgen, (z.B. wenn die SIC noch an keiner Station vorhanden ist, oder die SIC mehrfach verfügbar ist und die Anzahl der gleichzeitig möglichen Stationen noch nicht ausgeschöpft wurde) so wird das durch <Objektname> bezeichnete Objekt auf den Wert 1 gesetzt.
  Der Name kann vom Benutzer frei vergeben werden, es muß sich aber um ein Objekt handeln, das an dieser Station lokal ist. Außerdem muss ein Datenobjektereignis projektiert werden, das einen Dialog aufblendet, und in der Reaktion auf das entsprechende Datenobjektereignis dieses Objekt auch wieder auf Null setzt.

  Parametrierung

  ### Sic_Transaction()

  Diese Funktion führt die am SIC notwendigen Änderungen aus.
  Die Funktion muß projektiert werden, als Reaktion auf ein Datenobjektereignis, wenn der Wert der Variablen $SICREPLY 1 wird.
  Die Transaktion betrifft 2 Stationen. Aufgrund der Werte der globalen PVs wird entschieden, was zu tun ist. Die Station, die $SICREPLY setzt (angesprochene Station) kriegt die Wertänderung sowieso mit. Die Partnerstation, steht in $SICACTIVE setzt das SICREPLY wieder auf Null und markiert damit das Ende der Transaktion.
  Im Falle, daß die Variante $SICREPLY den Wert 2 annimmt, wird auf allen Stationen die Funktion Sic_Clear() aufgerufen. Wenn die Bedingung SICACTIVE = $OSNO erfüllt ist, löscht die Funktion alle Variablen, d.h. nur die Station, die ursprünglich die Transaktion initiiert hatte ist in der Lage, das Löschen durchzuführen.

  Parametrierung

  ## Datenobjekt-Ereignisse

  Die Datenobjektereignisse werden projektiert, um auf bestimmte Ereignisse im SIC-System zu reagieren.

  ### Abgabewunsch bzw. Anforderung einer SIC von fremder Station

  Ereignis | Aktion
  --- | ---
  Obj_CmpValues($OSNO,$SICPASSIVE) | Wnd_Dialog(DIALOG,0)

  Dadurch wird, wenn der Wert der Variablen $OSNO gleich dem Wert von $SICPASSIVE ist, der Dialog "DIALOG" aufgerufen.
  Das Aufblenden dieses Dialogs ist die Reaktion auf die Anforderung zur Abgabe/Annahme des SICs durch eine fremde Station.
  Im Dialogfenster muß die Unterscheidung projektiert werden, ob eine Anforderung oder ein Abgabewunsch vorliegt. (Figurumschaltung über Dynamikfunktion "Obj_ValueInt($SICACTION)")

  ### Reagieren auf Akzeptieren der Transaktion von fremder Station

  Ereignis | Aktion
  --- | ---
  Obj_ValCmp($SICREPLY,1) | Sic_Transaction()

  Die Funktion Sic_Transaction führt die Transaktion der SIC durch und löscht alle die Transaktion betreffenden Variablen, sofern es sich bei der Station um die Station handelt, die ursprünglich die Transaktion initiiert hatte. An allen anderen Stationen bleibt der Aufruf der Funktion wirkungslos.

  ### Reagieren auf Ablehnung der Transaktion von fremder Station

  Ereignis | Aktion
  --- | ---
  Obj_ValCmp($SICREPLY,2) | Sic_Clear()

  Die Funktion Sic_Clear löscht alle die Transaktion betreffenden Variablen, sofern es sich bei der Station um die Station handelt, die ursprünglich die Transaktion initiiert hatte. An allen anderen Stationen bleibt der Aufruf der Funktion wirkungslos.

  ### Anzeige des SIC-Verlusts an Station infolge Notfallübernahme

  Ereignis | Aktion
  --- | ---
  Obj_ValCmp(<EmergMsgVar>,1) | Wnd_Dialog(DIALOG,) Obj_SetVal(<EmergMsgVar>,0)

  Die über die Vision.INI-Datei der SIC zugeordnete Variable hat den Wert 1 angenommen. Dadurch wird signalisiert, daß die betreffende SIC der localen Station entzogen wurde.
  An der localen Station soll das in einem Dialogfenster anzeigt werden. Als Reaktion auf dieses Ereignis wird gleichzeitig die Variable zurückgesetzt.
  (Für verschiedene SICs werden individuelle Variablen erstellt um individuelle Dialog projektieren zu können)

  ### Notfallübernahme / -abgeben -anfordern momentan nicht möglich

  Ereignis | Aktion
  --- | ---
  Obj_ValCmp(<Variablenname>,2) | Wnd_Dialog(DIALOG,) Obj_SetVal(<Variablenname>,0)

  Die Funktionen Sic_EmergRequest, Sic_Release und Sic_Request bekommen als Parameter den Namen einer Variablen übergeben, deren Wert von der Funktion auf 2 gesetzt wird, falls die entsprechende Funktion nicht ausgeführt werden kann, weil die Variablen gerade in Benutzung sind.
  Dadurch hat der Projektierer die Möglichkeit für alle 3 Fälle individuelle Variablen anzulegen. Über ein Datenobjekt-Ereignis lassen sich dann die dafür angelegten Dialoge aufblenden

  ### Verlust einer SIC

  Ereignis | Aktion
  --- | ---
  Obj_ValCmp(<Variablenname>,-1) | Wnd_Dialog(DIALOG,)

  Wenn eine Station die eine einmal verfügbare SIC besitzt den Kontakt zum Bus verliert, so wird ihr die SIC entzogen.
  Über die INI-Datei werden Variablen für alle Kombinationen aus Station und SIC festgelegt. Der Wert der entsprechenden Variablen wird auf -1 gesetzt. Darüber läßt sich durch ein Datenobjekt-Ereignis ein Dialog aufblenden, in dem Der Verlust der entsprechenden SIC den anderen Stationen bekanntgegeben wird.

  ## Szenarien

  ### Abgeben einer SIC

  Schaltfläche für den Abgabewunsch eines SICs drücken
  1. Wird durch die Abgabe des SICs das Minimum der unter Mehrfachverfügbarkeit definierten Nutzer nicht unterschritten, wird das SIC abgegeben.

  2. Wird durch die Abgabe des SICs das Minimum unterschritten, wird eine Liste der Stationen mit berechtigten Benutzern für dieses SIC aufgeblendet, aus dieser kann der Benutzer an den das SIC übergeben werden soll ausgewählt werden; dieser Benutzer wird von dem Übergabewunsch informiert - er kann annehmen oder ablehnen

  ### Anfordern einer SIC

  Schaltfläche zur Anforderung eines SICs drücken
  1. Besitzt der Benutzer die erforderlicher Berechtigung und die definierte Mehrfachverfügbarkeit wird nicht überschritten, so erhält der Benutzer die SIC.

  2. Wird durch die Anforderung des SICs das Maximum überschritten, wird eine Liste der Benutzern dieses SICs aufgeblendet, aus dieser kann der Benutzer der das SIC abgeben soll ausgewählt werden; dieser Benutzer wird von dem Übernahmewunsch informiert - er kann annehmen oder ablehnen

  ### Ausloggen

  Ein dem Benutzer zugeordnetes SIC wird mit dem Ausloggen abgegeben.
  1. Wird durch die Abgabe des SICs das Minimum der unter Mehrfachverfügbarkeit definierten Nutzer nicht unterschritten, ist das Ausloggen erfolgreich.

  2. Wird durch die Abgabe des SICs das Minimum unterschritten, muss das SIC vor dem Ausloggen einem anderen Benutzer übergeben werden.

  ### Einloggen

- Soll ein Benutzer der im Besitz eines SIC ist von einem anderen Benutzer abgelöst werden, muss der neue Benutzer die Berechtigung für das vorhandene SIC haben - ansonsten ist der Benutzerwechsel nicht möglich.

- Wechselt ein Benutzer der im Besitz eines SIC ist die Station, wird er an der alten Station ausgelogged und an der Neuen mit gleichem SIC eingelogged.

## Zyklische Überprüfungen

Die folgenden zyklischen Überprüfungen werden 1 mal pro Sekunde durchgeführt.

### Automatisches Umloggen eines Benutzers an einer neuen Station

Wenn ein Benutzer an einer Station einloggt und dieser Benutzer bisher an einer anderen Station eingeloggt war sollen alle seine SICs mitgenommen werden und der Benutzer an der bisherigen Station ausgeloggt werden.

;AutoLogout.<OsNo>
AutoLogout.101=STN101AL
AutoLogout.102=STN102AL
AutoLogout.103=STN103AL
AutoLogout.104=STN104AL
AutoLogout.105=STN105AL
AutoLogout.106=STN106AL
AutoLogout.107=STN107AL
AutoLogout.108=STN108AL

Die Station an der der Benutzer sich jetzt anmeldet setzt dazu die z.B. Variable STN105AL um den Benutzer an seiner alten Station 105 abzumelden. Der Wert der Variablen wird dazu auf 1 gesetzt.

Die Station, deren Wert auf 1 gesetzt wurd führt darauf hin folgende Aktionen aus:

1. Verwerfen aller SICs
2. Rücksetzen der SIC-Variablen, die das Vorhandensein dieser SICs an anderen Stationen anzeigen
3. Rücksetzen der AutoLogoutVariablen
4. Ausloggen des Benutzers

### Reaktionen auf Busfehlermessstellen

Wenn der Wert einer Busfehlermessstelle sich ändert, wird überprüft, ob er den erlaubten Wert 1 bis 3 verlassen hat. Kehrt der Wert innerhalb von 5 Sekunden bzw. der eingestellten TimeOut-Zeit wieder in den Normal-Bereich zurück, so werden keine weiteren Maßnahmen durchgeführt.

Bleiben die Fehler bestehen, so wird überprüft, ob diese Station eine Transaktion von einer Sic veranlasst hat, wenn ja, werden die Variablen die diese Transaktion koordinieren zurückgesetzt.

Ausserdem werden die Variablen, die das Vorhandensein einer Sic an dieser Station signalisieren auf -1 gesetzt. (HasSic.<iStationNum>.<iSicNum>) Ferner wird die Variable, die anzeigt welcher Benutzer an dieser Station eingeloggt ist auf 0 gesetzt. (UserVar.<OsNo>)

Die ausgefallene Station selbst wird alle ihre Sics löschen und die entsprechenden Variablen auf 0 setzen und den eingeloggten Benutzer ausloggen.

Wenn der Wert einen Busfehlermessstelle wieder im erlaubten Bereich (1..3) ist wird geprüft, ob entsprechende HasSic-Variablen auf -1 stehen. Wenn ja, werden diese Variablen auf 0 gesetzt.

Im folgenden Beispiel wird die TimeOut-Zeit auf 20 Sekunden eingestellt

    [SIC]
    SicTimeOut=30

Um durch Verzögerungen bei der Wertänderung der Objekte bzw. bei den Meldungen des Multiservers nicht unnötig SICs zu verwerfen, gibt es beim Programmhochlauf und bei Busfehlern eine einstellbare Delay-Zeit (Sekunden) bis der Korrekturmechanismus startet:

    [SIC]
    SicStationFaultDelay=5
    und
    SicStartCheckDelay=120

### Überwachung der SIC-Limits

Die Überschreitung der SIC-Limits wird bereits durch entsprechende Maßnahmen in der Projektierung verhindert. Trotzdem werden die SIC-Variablen von den Stationen noch auf Verletzungen überprüft Wenn die Anzahl der verfügbaren SICs überschritten wurde, verwirft die Station mit der höchsten Stationsnummer ihre SIC und setzt die globalen Variablen zurück.

### Überwachung mehrfach eingeloggter User

Bei ungünstigen zeitlichen Abläufen bei Busfehlern und ihrer Behebung, Umloggen und Masterwechsel kann es vorkommen, daß ein User an mehreren OSen gleichzeitig eingeloggt ist. Dies wird zyklisch überprüft. Wenn ein User mehrfach eingeloggt ist, wird ein Systemobjekt auf den Wert 1 gesetzt. Damit kann per Datenobjektereignis eine Meldung an den Bediener erfolgen.
Einstellungen in Vision.ini:

    [SIC]
    DoubleUserNotifyVar=SYSOBJ
    und
    SicCheckDoubleUsersCycle=5 (Sekunden)