VISUalisation SIC

SUMMARY

‘Station in Control’ is a subsystem of the ALPHA-VISION® VISU Software; it offers the opportunity to control the permissions among the stations of a multi-user-system and is intended as an enhancement to the standard access protection system.

CONTENTS

  1. Definition of Terms
  2. Basics
  3. Runtime Structure
  4. Parameterisation
  5. Online User Administration
  6. Considerations when Configuring
  7. Actions and Functions for SIC
  8. Data Object Events
  9. Loss of a SIC
  10. Scenarios

Definition of Terms

The term ‘Station in Control’ stands, on one hand, as a name for the overall concept and on the other, for an individual area of activities resp. for a collection of function numbers.
Where reference is made to SIC as a concept, the word ‘SIC’ appears without an article. Where a special SIC reference is intended, it is referred to ‘one SIC’ or ‘several SICs’.

Function numbers range between 1 and 99. A function number, independent whether assigned by an entry in the user profile or obtained by requesting an SIC, authorizes the user to initiate protected functions.

Basics

In the current version of ALPHA-VISION® VISU a simple access control concept is used.


The SIC is designed as an extension to the normal access protection system.


Runtime Structure

At runtime, SIC is realised by the following structure:

Parameterisation

Till VISU2000 is completed, configuration is performed by using the resources provided for user management and by making entries in an INI file.

Configuration with the VISU-Browser
The SIC profiles are entered using the VISU-browser. There is no difference between user profiles and SIC profiles, i.e. a profile with a specified number can be addressed either as a user profile or a SIC profile.
If it is necessary to distinguish between the two, the numbers must not overlap.
The authorization to acquire an SIC is stored as a normal function number in the user profile.

Additional Parameters in the INI File
Settings which cannot be defined by using the browser are entered in the INI file.


[SIC]
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

The individual entries SIC.Entry01, SIC.Entry02,...to SIC.EntryXX contain the most important information about the SICs.
The first number in the entry specifies the logical SIC, the second one specifies an assigned real SIC, and the third one specifies the SIC protection number the user profile must contain in order to acquire the SIC.

2 SICs are defined in the example above. Numbers 1 and 2 as they e.g. may requested via button A and B.
SIC #1 is replaced by SIC profile 1, 11 or 12, depending on which access level the SIC profile matches with the access rights stored in the user profile requesting the SIC.
SIC #2 is replaced by one of the real SIC profiles 2, 21 or 22.
A user with access level 90 will receive profile 11 when requesting profile 1.
If the user has access level 95, (s)he receives real SIC profile 12.

The shareability of a SIC is also controlled by means of entries in the INI file. The entries are stored in the same section [SIC] and appear as follows:


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

The entries in this example stand for 2 sharable SICs.
Logical SIC 1 can only be used on one station at a time;
logical SIC 2 can be used on up to 5 stations at a time.

Entries (see below) can be made to define objects which are set to value 1 if the assigned SIC is withdrawn from the current station due to an emergency takeover. These variables must be available separately for any individual stations.


EmergMsg.1=SICMSG1
EmergMsg.2=SICMSG2

The entries in the above example assign the variable SICMSG1 to SIC 1 and the variable SICMSG2 to SIC 2.

Further entries assign a variable to any combination of SIC and station. These variables can be used by the SIC subsystem to check which SICs are available on which stations. The variables can also be used, for example, in order to visualize the distribution of SICs among individual stations in an overview display. These variables must be synchronized between the stations.


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

In the above example, variable STN101SIC3 indicates whether or not station 101 got SIC 3.

The next category of variables indicates which user is logged in at a particular station. The user number is stored in the relevant object. Data synchronization for these variables is again required between the stations.


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

Online User Administration

Users may make limited modifications to the configuration at runtime.

Note:
Super user privileges are granted to users whose user profile contains the function number equal to that one defined in the “Control Access” tab under “Function Number for Access Admin” of the cfg-file.

Considerations when Configuring

Great care must be taken when allocating function numbers and user groups.
In particular, you need to ensure that:

Actions and Functions for SIC

Sic_Accept()
A release or takeover request of a remote station is accepted.
Used as an action on buttons.
Sets variable $SICREPLY to 1.
(Is executed only if $SICACTIVE is equal to $OSNO.) Can be linked to a special variable by using the enable function: Obj_CmpValues($SICSIC, <const>) on a button.

Sic_Acceptable(<SIC-Nummer>)
Returns a ‘1’ if the currently active SIC transaction is to handover the specified SIC to the current station.
It is used as an enable function on buttons for accepting or denying the transaction currently running.

Sic_AllowedToUsr(<SIC-Nummer>,<PointID>)
Returns a ‘1’ if the user specified by the user-ID (UserID = Value " PointID ") is authorized to acquire the SIC specified in ‘SICNumber’.
Used as an enable function for buttons to release a SIC to an authorized station.

Sic_AllwdUserObj(<SIC-Nummer>, $USR)
Returns a ‘1’ if the user who is currently logged in is authorized to have the SIC specified in the first parameter. The name of the user variable must be specified in the second parameter, i.e. “$USR”.
Used as an enable function for buttons to initiate an emergency takeover of a SIC.

Sic_Clear()
In case the variable $SICREPLY gets value 2 (transaction denied), the Sic_Clear() function is called on all stations.
(It must be configured via a Dataobject-event.)
If the condition $SICACTIVE = $OSNO is true, the function clears all variables, i.e. only the station that originally initiated the transaction is able to perform the clear operation.

Sic_EmergRequest(<SIC-Nummer>, Variablenname)
If this function is called, the desired SIC is added immediately to the requesting station. If another station owns this SIC and the SIC is not enabled for sharing, the SIC is removed from the other station by means of dataobject synchronization. If an SIC transaction is currently in progress elsewhere, the value of the variable designated by the second parameter is set to 2. You can configure an appropriate data object event in order to display a dialog box as a notice.

WARNING
Please use this function at present for non-share SICs only.

Sic_GetUsrProf(UserNumber)
The function returns the number of the User Profile owned by the user specified in the UserNumber.

Sic_HasByUserObj(<SIC-Nummer>, Variablenname)
The function returns a ‘1’ if the “SIC number” is owned by the currently logged in user.
Used as an enable function on the button for releasing the SIC.

Sic_OnStation(<Stations-Nummer>, <SIC-Nummer>)
The function returns a ‘1’ if the station, defined in parameter 1, owns the SIC defined in parameter 2.
Used as an enable function on a button that request a SIC from a station.

Sic_Reject()
A release or takeover request from a remote station is denied.
Used as an action on buttons.

Sic_Release(<SIC-Nummer>,<Objektname>)
Attempts to release the SIC <SIC-Nummer>.
If this is not possible (e.g. a sharable SIC does not exist on at least one other station), the object specified by <Objektname> is set to value 1.
The name may be chosen freely but must refer to a local data object. It is also necessary to configure a dataobject-event that opens a dialog and in reaction to the event also resets the dataobject to zero.

Sic_Request(<SIC-Nummer>,<Objektname>)
Attempts to acquire the SIC <SIC-Nummer>.
If this cannot be performed immediately by filling in the SIC -(e.g. the SIC is not yet available on any station or the SIC is shared and the number of potential simultaneous stations has not yet been exhausted), the object specified by <Objektname> is set to value 1.
The name may be chosen freely but must refer to a local data object. It is also necessary to configure a dataobject-event that opens a dialog and in reaction to the event also resets the dataobject to zero.

Sic_Transaction()
This function executes the changes required on the SIC.
The function must be configured as a response to a dataobject-event, if the value of variable $SICREPLY becomes 1. The transaction affects 2 stations only. The values of the global PVs determine the action to be taken.
The addressed station sets the data-object $SICREPLY. The partner station, it is defined in the data-object $SICACTIVE, resets $SICREPLY to zero to signify the end of the transaction.
In the case that variable $SICREPLY gets value 2, the Sic_Clear() function is called on all stations. If the condition $SICACTIVE = $OSNO is true, the function clears all variables, i.e. only the station that originally initiated the transaction is able to perform the clear operation.

Data Object Events

Dataobject-events are configured in order to respond to specific conditions in the SIC system by displaying a dialog window.

Release or Demand of a SIC by a remote Station
Data object;
Function: Obj_CmpValues($OSNO,$SICPASSIVE)
Action: Wnd_Dialog(SICCHG,0)

If the value of variable $OSNO is equal to the value of $SICPASSIVE the dialog SICCHG is called.
(The name for the “SICCHG” dialog is arbitrary.)
The display of this dialog is the response to releasing or accepting a SIC from another station.
In order to distinguish between a release= or accept request, the dialog must be based on a figure shift by the dynamic function “Obj_ValueInt($SICACTION)”.

Response when the transaction is accepted by the other Station
Data object;
Function: Obj_ValCmp($SICREPLY,1)
Action: Sic_Transaction()

The function ‘Sic_Transaction’ performs the transaction of the SIC and clears all variables concerning the transaction on the station that initiated the transaction.
No other station is affected by that function call.

Response if the other Station denies the transaction.
Data object;
Function: Obj_ValCmp($SICREPLY,2)
Action: Sic_Clear()

The function ‘Sic_Clear’ clears all variables concerning the transaction on the station that initiated the transaction.
No other station is affected by that function call.

Indication when losing a SIC due to an Emergency Takeover
Data object;
Function: Obj_ValCmp(<EmergMsgVar>,1)
Action: Wnd_Dialog(<DialogName>,);Obj_SetVal(<EmergMsgVar>,0)

The variable assigned to the SIC via the INI-File has been set to 1.
This indicates that the relevant SIC on the local station has been withdrawn by another station. On the local station a dialog window should indicate the incident. As a further reaction the variable is reset.
(Individual variables are configured for any SIC, consequently an individual dialog can be configured and assigned to each SIC.)

If Emergency Takeover/Release/Request is not possible at present
Data object;
Function: Obj_ValCmp(<Variablenname>,2)
Action: Wnd_Dialog(<DialogName>,);Obj_SetVal(<Variablenname>,0)

To the functions Sic_EmergRequest(), Sic_Release() and Sic_Request() a parameter containing the name of a variable is handed over. Its value is set to 2, in case the according function cannot be executed due to the variables are currently in use. That allows to create individual variables for all 3 cases. Via dataobject-event the appropriate dialogs can be opened.

Loss of a SIC

Data object;
Function: Obj_ValCmp(<Variablenname>,-1)
Action: Wnd_Dialog(<DialogName>,)

If a station obtains a non-shareable SIC and is subsequently disconnected from the bus, the SIC is withdrawn.
Variables for all combinations of station and SIC are specified in the INI file. The value of the corresponding variable is set to –1. A Dataobject-event can then be used to notify the other stations about the loss of the specific SIC.

Scenarios

Release of a specific SIC

Requesting an SIC

Log-Out

Log-In