For performance reasons, the value for the Output Data object shall be transferred on receipt as fast as possible to the object. The speed and the jitters of this action is a performance parameter of an IO device. This parameter determines the synchronization accuracy.
The Isochronous Mode Application model is a superset of the model described in IEC 61158-5-3.
Figure 36 shows the timing relations between different involved ASEs for a particular submodule.
Isochronous Application
ASE
Input Data ASE
Output DataASE T_IO_Output,
T_IO_OutputValid T_IO_Input T_IO_InputValid
SYNCH Event.ind(Global Cycle Counter) 1 ns clock
Life sign monitoring/generation
1)
1 Only if life sign within Input / Output
Set Input.req Get Output.req Time Data Cycle
Figure 36 – ASE relations in an IO device operating in isochronous mode for a submodule
7.3.7.4.2 Basic behavior of input and output data in the isochronous mode An IO system operating in the isochronous mode provides the following features:
– all IO devices taking part in the isochronous mode functionality synchronize their internal clock system with the synchronization message SYNCH Event with the isochronous data cycle;
– all IO devices taking part in the isochronous mode functionality have to be in the same PTCP subdomain and furthermore in the same isochronous real-time domain;
– the jitter of SYNCH Event.ind is less than 1 às (jitters within an IO device is assumed to be zero).
In an IO system with enabled isochronous mode functionality IO devices with basic functionality can be used in conjunction with synchronized IO devices:
– if the SYNCH-Event.ind is issued with the status “REMOTE” then the application is synchronized with other devices;
– if the SYNCH-Event.ind is issued with the status “LOCAL” then the isochronous application shall be informed that the application may be not synchronized with other devices
7.3.7.4.3 State machine description for isochronous mode 7.3.7.4.3.1 General
The behavior of an Output Data object in case of Isochronous Mode is defined by the Isochronous Mode Output Data state machine (ISOM_OUT) state machine.
The ISOM_OUT is triggered by the Isochronous Mode Sync state machine (ISOM_SYNC).
The ISOM_OUT and ISOM_SYNC state machine represents a part of the User functionality and are included to ensure interoperability.
The ISOM_OUT and ISOM_SYNC state machine provides events to other parts of the User functionality. The ISOM_SYNC state machine has interfaces to the Isochronous Mode Input Data state machine (ISOM_IN) and the ISOM_OUT state machine for co-ordination purposes.
The main functionalities of the ISOM_OUT state machine are:
– Check the correct sequence: SYNCH, New Output, read out the Output Data at Time IO Output.
– Transfer the received Output Data to the application on time.
– Check the Controllers Sign of Life (C-LS).
The main functionalities of the ISOM_SYNC state machine are:
– Generate timing signals from the SYNCH-Event.ind – Generation of a pulse scheme for the local application
The synchronization primitive (SYNCH Event) is conveyed by a local PLL.
7.3.7.4.3.2 ISOM_SYNC
7.3.7.4.3.2.1 Primitive definitions
7.3.7.4.3.2.1.1 Primitives exchanged between remote machines
The service primitives including their associated parameters issued or received by ISOM_SYNC state machine are described in the service definition and shown in Table 204.
Table 204 – Remote primitives issued or received by ISOM_SYNC
Primitive Source Destination Associated parameters Functions Local SYNCH Event.ind FAL ISOM_SYNC see 7.3.7.3.3 —
7.3.7.4.3.2.1.2 Primitives exchanged between local machines
The local service primitives including their associated parameters issued or received by ISOM_SYNC state machine are described in the service definition and shown in Table 205.
Table 205 – Local primitives issued or received by ISOM_SYNC
Primitive Source Destination Associated parameters Functions SYNCH_Status_ind ISOM_SYNC ISOM_IN,
ISOM_OUT state —
Start_O_ind ISOM_SYNC ISOM_OUT — —
SYNCH_I_ind ISOM_SYNC ISOM_IN — —
SYNCH_O_ind ISOM_SYNC ISOM_OUT — —
7.3.7.4.3.2.2 State transition diagram
Figure 37 shows the state diagram of the ISOM_SYNC state machine.
Figure 37 – State transition diagram of ISOM_SYNC
States of ISOM_SYNC
LOCAL The clock is driven by the local time system GLOBAL The clock is driven by the global time system,
synchronized for the corresponding devices
7.3.7.4.3.2.3 State machine description
This state machine indicates the ISOM_IN and ISOM_OUT state machines the state of the SYNCH signal (LOCAL or REMOTE) and starts the ISOM_IN and ISOM_OUT state machines.
7.3.7.4.3.2.4 State table
Table 206 shows the states of an ISOM_SYNC state machine.
LOCAL
GLOBAL
Table 206 – State table ISOM_SYNC
# Current
State Event
/Condition =>Action
Next State 1 LOCAL Local SYNCH Event.ind ()
/Status == LOCAL
=>
SYNCH_Status_ind (LOCAL)
LOCAL
2 LOCAL Local SYNCH Event.ind ()
/Status == GLOBAL && (GlobalCycleCounter mod SendClock*ReductionRatio) != 0
=>
ignore
GLOBAL
3 LOCAL Local SYNCH Event.ind ()
/Status == GLOBAL && (GlobalCycleCounter mod SendClock*ReductionRatio)
== 0
=>
Start_I_ind Start_O_ind SYNCH_I_ind SYNCH_O_ind
SYNCH_Status_ind (GLOBAL)
GLOBAL
4 GLOBAL Local SYNCH Event.ind () /Status == LOCAL
=>
ignore
LOCAL
5 GLOBAL Local SYNCH Event.ind ()
/Status == GLOBAL && (GlobalCycleCounter mod SendClock*ReductionRatio) != 0
=>
ignore
GLOBAL
6 GLOBAL Local SYNCH Event.ind ()
/Status == GLOBAL && (GlobalCycleCounter mod SendClock*ReductionRatio)
== 0
=>
Start_I_ind Start_O_ind SYNCH_I_ind SYNCH_O_ind
SYNCH_Status_ind (GLOBAL)
GLOBAL
7.3.7.4.3.2.5 Functions, Macros, Timers and Variables
Table 207 contains the functions, macros, timers and variables used by ISOM_SYNC state machine and their arguments and their descriptions.
Table 207 – Functions, Macros, Timers and Variables used by the ISOM_SYNC
Name Type Function/Meaning
— — —
7.3.7.4.3.3 ISOM_OUT
7.3.7.4.3.3.1 Primitive definitions
7.3.7.4.3.3.1.1 Primitives exchanged between remote machines
The service primitives including their associated parameters issued or received by ISOM_OUT machine are described in the service definition and shown in Table 208.
Table 208 – Remote primitives issued or received for ISOM_OUT
Primitive Source Destination Associated parameters Functions
Alarm.req ISOM_OUT FAL see 7.3.5.3 —
7.3.7.4.3.3.1.2 Primitives exchanged between local machines
The local service primitives including their associated parameters issued or received by ISOM_OUT state machine are described in the service definition and shown in Table 209.
Table 209 – Local primitives issued or received for ISOM_OUT
Primitive Source Destination Associated parameters Functions Local Get Output_cnf FAL ISOM_OUT see 7.3.2.5.12 Confirms Get_Output
request and passes new output data to output state machine Local New Output_ind FAL ISOM_OUT see 7.3.2.5.14 Indicates new output
data has been received Local Get Output_req ISOM_OUT FAL see 7.3.2.5.12
Start_O.ind ISOM_SYNC ISOM_OUT — Start Output Data
processing
Stop_O.ind ISOM_SYNC ISOM_OUT — Stop Output Data
processing
SYNCH_O.ind ISOM_SYNC ISOM_OUT — Trigger Signal for
Output Data Processing
7.3.7.4.3.3.2 State transition diagram
Figure 38 shows the state diagram of the ISOM_OUT state machine.
Figure 38 – State transition diagram ISOM_OUT
States of the ISOM_OUT state machine
Wait_Start Waits for the start of the state machine.
Wait_Sync Waits for the PLL being is sync.
Wait_New_Outp Wait for a new output indication.
Wait_(To_valid) Waits for the expiration of the To_Valid timer.
Wait_To Waits for the expiration of the To timer.
Wait_Outp Waits for the return of the Get:output request.
Check_C-LS Checks the controller life sign.
any_state Any state of the above.
7.3.7.4.3.3.3 State machine description
This state machine drives the output of a particular isochronous submodule according to the SYNCH signal as being provided by the ISOM_SYNC state machine and according to the
Wait_Start
Wait_Sync
Wait_New_Outp
Wait_(To_valid)
Wait_Outp
Check_C-LS
Wait_To
any_state
T_IO_OutputValid and T_IO_Output times as being configured by the Isochronous Mode data record.
The state machine issues alarms, whenever the outputs are not being received in time (e.g.
after T_IO_OutputValid) or else the outputs have not been given to the application in time (e.g. after T_IO_Output).
7.3.7.4.3.3.4 State table
Table 210 shows the states of an ISOM_OUT state machine.
Table 210 – State table ISOM_OUT
# Current State Event
/Condition =>Action
Next State
1 Wait_Start Start_O.ind
=>
O_Buffer:=NIL wrong_output_upd:=0
Wait_Sync
2 Wait_Start OTHERS
=>
ignore
Wait_Start
3 Wait_Sync SYNCH_O.ind
=>
StartTimer (To_valid) StartTimer (To)
Wait_New_Outp
4 Wait_Sync OTHERS
=>
ignore
Wait_Sync
5 Wait_New_Outp Local New Output_ind () /wrong_output_upd != 1
=>
if (wrong_output_upd>0) wrong_output_upd:= wrong_output_upd-1 // NOTE No sequence alarm is outstanding or still in trouble with the outputs
Wait_(To_valid)
6 Wait_New_Outp Local New Output_ind () /wrong_output_upd == 1
=>
wrong_output_upd := 0
// NOTE output sequence trouble is over; take back diagnosis IssueAlarm (IsochroneModeAlarm, OutputTimeFailure, NoFault)
Wait_(To_valid)
7 Wait_New_Outp TimerExpired (To_valid) /wrong_output_upd < limit
=>
wrong_output_upd:= wrong_output_upd+n
// NOTE output sequence error; not issued since below limit
Check_C-LS
8 Wait_New_Outp TimerExpired (To_valid) /wrong_output_upd >= limit
=>
// NOTE Sequence Error is issued, since output sequence errors are above limit
IssueAlarm (IsochroneModeAlarm, OutputTimeFailure, Fault)
Check_C-LS
9 Wait_New_Outp TimerExpired (To) /wrong_output_upd < limit
=>
wrong_output_upd:= wrong_output_upd+n
// NOTE output sequence error; not issued since below limit
Wait_Sync
# Current State Event /Condition
=>Action
Next State
10 Wait_New_Outp TimerExpired (To) /wrong_output_upd >= limit
=>
// NOTE Sequence Error is issued, since output sequence errors are above limit
IssueAlarm (IsochroneModeAlarm, OutputTimeFailure, Fault)
Wait_Sync
11 Wait_New_Outp OTHERS
=>
ignore
Wait_New_Outp
12 Wait_(To_valid) TimerExpired (To_valid)
=>
Local Get Output_req ()
Wait_Outp
13 Wait_(To_valid) TimerExpired (To) /wrong_output_upd < limit
=>
wrong_output_upd:= wrong_output_upd+n
// NOTE output sequence error; not issued since below limit
Wait_Sync
14 Wait_(To_valid) TimerExpired (To)
/wrong_output_upd >= limit && ALARM_PENDING == FALSE
=>
// NOTE Sequence Error is issued, since output sequence errors are above limit
IssueAlarm (IsochroneModeAlarm, OutputTimeFailure, Fault)
Wait_Sync
15 Wait_(To_valid) Local New Output_ind () /wrong_output_upd < limit
=>
wrong_output_upd:= wrong_output_upd+n
// NOTE output sequence error; not issued since below limit
Wait_(To_valid)
16 Wait_(To_valid) Local New Output_ind () /wrong_output_upd >= limit
=>
// NOTE Sequence Error is issued, since output sequence errors are above limit
IssueAlarm (IsochroneModeAlarm, OutputTimeFailure, Fault)
Wait_(To_valid)
17 Wait_(To_valid) OTHERS
=>
ignore
Wait_(To_valid)
18 Wait_Outp Local Get Output_cnf () /New_Flag
=>
O_Buffer := Subslot_Output_Data
Check_C-LS
19 Wait_Outp Local Get Output_cnf () /!New_Flag
=>
ignore
// NOTE old value is kept
Check_C-LS
20 Wait_Outp TimerExpired (To) /wrong_output_upd < limit
=>
wrong_output_upd:= wrong_output_upd+n
// NOTE output sequence error; not issued since below limit
Wait_Sync
21 Wait_Outp TimerExpired (To) /wrong_output_upd >= limit
=>
// NOTE Sequence Error is issued, since output sequence errors are above limit
IssueAlarm (IsochroneModeAlarm, OutputTimeFailure, Fault)
Wait_Sync
22 Wait_Outp OTHERS
=>
ignore
Wait_Outp
# Current State Event /Condition
=>Action
Next State
23 Check_C-LS
/CheckC-LS () == VALID
=>
// NOTE O_Buffer is either new or old (in case of errors)
Wait_To
24 Check_C-LS
/CheckC-LS () == INVALID
=>
O_Buffer := substitute value
IssueAlarm (IsochroneModeAlarm, OutputTimeFailure, Fault)
Wait_To
25 Wait_To TimerExpired (To)
=>
SYNCH_OUT
Wait_Sync
26 Wait_To Local New Output_ind () /wrong_output_upd < limit
=>
wrong_output_upd:= wrong_output_upd+n
// NOTE output sequence error; not issued since below limit
Wait_To
27 Wait_To Local New Output_ind () /wrong_output_upd >= limit
=>
// NOTE Sequence Error is issued, since output sequence errors are above limit
IssueAlarm (IsochroneModeAlarm, OutputTimeFailure, Fault)
Wait_To
28 Wait_To OTHERS
=>
ignore
Wait_To
29 any_state Stop_O.ind
=> Wait_Start
7.3.7.4.3.3.5 Functions, Macros, Timers and Variables
Table 211 contains the functions, macros, timers and variables used by ISOM_OUT state machine and their arguments and their descriptions.
Table 211 – Functions, Macros, Timers and Variables used by the ISOM_OUT
Name Type Function/Meaning
To Timer Timer to control the takeover of the data by the application.
To_valid Timer Timer to control the data being available from the communication.
SYNCH_OUT Function Pass the Output Buffer to the Output User Data
CheckC-LS Function Checks the controller life sign according IEC 61800-7-203:2008 6.3.12
"user data reliability". VALID and INVALID indicates the validness of the life sign according to the rules described there.
If the use of the controller life sign is not intended by the submodule, VALID is returned always.
IssueAlarm Function The local diagnosis is updated to the current state and a change of the state is issued as alarm. The alarm confirmation is handled internally by the function.
If there is a congestion of alarms, alarms may not be send if they nullify each other.
StartTimer Function Starts a timer
TimerExpired Function Indication of a timer's expiration
7.3.7.4.3.4 ISOM_IN
7.3.7.4.3.4.1 Primitive definitions
7.3.7.4.3.4.1.1 Primitives exchanged between remote machines
The service primitives including their associated parameters issued or received by ISOM_IN state machine are described in the service definition and shown in Table 212.
Table 212 – Remote primitives issued or received for ISOM_IN
Primitive Source Destination Associated parameters Functions
— — — — —
7.3.7.4.3.4.1.2 Primitives exchanged between local machines
The local service primitives including their associated parameters issued or received by ISOM_IN state machine are described in the service definition and shown in Table 213.
Table 213 – Local primitives issued or received for ISOM_IN
Primitive Source Destination Associated parameters Functions Local Set Input_cnf () FAL ISOM_IN see 7.3.2.5.1 Confirms Set_Input request Local Set Input_req ISOM_IN FAL
see 7.3.2.5.1 Passes application input data to FAL
Start_I.ind ISOM_SYNC ISOM_IN — Start Input Data processing
Stop_I.ind ISOM_SYNC ISOM_IN — Stop Input Data processing
SYNCH_I.ind ISOM_SYNC ISOM_IN Status Trigger Signal for Input Data Processing
7.3.7.4.3.4.2 State transition diagram
Figure 39 shows the state diagram of the ISOM_IN state machine.
Figure 39 – State transition diagram ISOM_IN
States of the ISOM_IN state machine
Wait_Start Waits for the start of the state machine.
Wait_Sync Waits for the PLL being is sync.
Wait_(Ti) Waits for the expiration of the Ti timer.
Wait_(Ti_valid) Waits for the expiration of the Ti_valid timer.
Wait_Input Waits for the return of the Set_input request.
any_State Any state of the above.
7.3.7.4.3.4.3 State machine description
This state machine drives the input of a particular isochronous submodule according to the SYNCH signal as being provided by the ISOM_SYNC state machine and according to the T_IO_InputValid and T_IO_Input times as being configured by the IsoM data record.
The state machine issues alarms, whenever the inputs are not being ready for transmission in time (i.e. after T_IO_InputValid).
7.3.7.4.3.4.4 State table
Table 214 shows the states of an ISOM_IN state machine.
Wait_Start
Wait_Sync
Wait_(Ti)
Wait_(Ti_valid)
Wait_Input
any_State
Table 214 – State table ISOM_IN
# Current State Event
/Condition =>Action
Next State 1 Wait_Start Start_I.ind
=>
SLS:=0
ALARM_PENDING := FALSE wrong_input_upd:=0
Wait_Sync
2 Wait_Start OTHERS
=>
ignore
Wait_Start
3 Wait_Sync SYNCH_I.ind(Output_State)
=>
StartTimer (Ti) StartTimer (Ti_valid) Store Output_State
Wait_(Ti)
4 Wait_Sync OTHERS
=>
ignore
Wait_Sync
5 Wait_(Ti) TimerExpired (Ti)
=>
SYNCH_IN
// NOTE Fills the I_Buffer from the application
Wait_(Ti_valid)
6 Wait_(Ti) OTHERS
=>
ignore
Wait_(Ti)
7 Wait_(Ti_valid) TimerExpired (Ti_valid) /CheckLS () == VALID &&
I_Buffer != NIL
=>
Input_Data:= I_Buffer inc_LS(SLS)
Input_Data.SLS:= SLS
if (wrong_input_upd>0) wrong_input_upd= wrong_input_upd-1 if (wrong_input_upd==0)
State := NoFault else
State := Fault Local Set Input.req ()
IssueAlarm (IsochroneModeAlarm, InputTimeFailure, State)
Wait_Input
8 Wait_(Ti_valid) TimerExpired (Ti_valid) /CheckLS () == INVALID &&
I_Buffer != NIL
=>
Input_Data:= I_Buffer SLS := 0
Input_Data.SLS:= SLS
if (wrong_input_upd>0) wrong_input_upd= wrong_input_upd-1 if (wrong_input_upd==0)
State := NoFault else
State := Fault Local Set Input.req ()
IssueAlarm (IsochroneModeAlarm, InputTimeFailure, State)
Wait_Input
# Current State Event /Condition
=>Action
Next State
9 Wait_(Ti_valid) TimerExpired (Ti_valid) /CheckLS () == NONE &&
I_Buffer != NIL
=>
Input_Data:= I_Buffer
if (wrong_input_upd>0) wrong_input_upd= wrong_input_upd-1 if (wrong_input_upd==0)
State := NoFault else
State := Fault Local Set Input.req ()
IssueAlarm (IsochroneModeAlarm, InputTimeFailure, State)
Wait_Input
10 Wait_(Ti_valid) TimerExpired (Ti_valid) /I_Buffer == NIL &&
wrong_input_upd >= limit
// NOTE Application didn't return buffer and input sequence errors above limit
=>
IssueAlarm (IsochroneModeAlarm, InputTimeFailure, Fault)
Wait_Sync
11 Wait_(Ti_valid) TimerExpired (Ti_valid) /I_Buffer == NIL &&
wrong_input_upd < limit
=>
wrong_input_upd= wrong_input_upd+n
Wait_Sync
12 Wait_(Ti_valid) OTHERS
=>
ignore
Wait_(Ti_valid)
13 Wait_Input Local Set Input.cnf ()
=> Wait_Sync
14 Wait_Input OTHERS
=>
ignore
Wait_Input
15 any_State Stop_I.ind
=> Wait_Start
7.3.7.4.3.4.5 Functions, Macros, Timers and Variables
Table 215 contains the functions, macros, timers and variables used by ISOM_IN state machine and their arguments and their descriptions.
Table 215 – Functions, Macros, Timers and Variables used by the ISOM_IN
Name Type Function/Meaning
Ti Timer Timer to control the takeover of the data from the application.
Ti_valid Timer Timer to control the data being available for the communication.
SYNCH_IN Function Samples and collects the Values of the Input User Data
IssueAlarm Function The local diagnosis is updated to the current state and a change of the state is issued as alarm. The alarm confirmation is handled internally by the function.
If there is a congestion of alarms, alarms may not be send if they nullify each other.
StartTimer Function Starts a timer
TimerExpired Function Indication of a timer's expiration SLS Variable Submodule Life Sign
Physical Device Management ASE 7.3.8