SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State...

44
SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee Kim ICD Software SLAC National Accelerator Laboratory

Transcript of SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State...

Page 1: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 1

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

State Notation Language (SNL) and Sequencer

April 23, 2012

Kukhee Kim

ICD Software

SLAC National Accelerator Laboratory

Page 2: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 2

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

ContentsState Notation Language / Sequencer

Definition of Terms

State Transition Diagram

Example 1: Simple Switch ON/OFF

SNL General Syntax & Structures

Declaration for Variable, Assigment, and Event Flags

Event

Action

Example 2: Life Game

SNL Variables and its Lifetime and Scopes

Dynamic PV assignment

Building SNL code

Runtime Sequencer

Executing SNL Program

Debugging

Additional Features

Advantage of SNL Program

Page 3: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 3

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

SNL and Sequencer

SNL is “C” like language for programming sequential operations

The sequencer runs program which written in the SNL

Fast execution using compiled code

Common uses automated start-up and sequencing

fault recovery or transition to safe state

automatic calibration

Page 4: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 4

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Sequencer in an IOC

Channel Access

LAN

Device Support

I/O Hardware

IOC

Database Sequencer

Page 5: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 5

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Sequencer at CA Client side

MEDM Client Client Client MEDM

Server IOC IOC

Meter Power Supply Camera

IOC

Tools

Sequencer

LAN

Page 6: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 6

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Definitions

SNL: State Notation Language

SNC: State Notation Compiler

Sequencer: The tool that executes the compiled SNL code

Program: A complete SNL application, consisting declarations and one or more state sets

State Set: A set of states that make a complete finite state machine

State: A particular mode of the state set in which it remains until one of its transition conditions evaluates to TRUE

Page 7: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 7

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

State Transition DiagramSNL- A tool to implement State Transition Diagram

State A

State B

Event

Action

TransitionA to B

Page 8: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 8

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 1 – On/Off switch

time

signal

off off offon on

Thresholdto OFF

Thresholdto ON

State transition to ON

State transition to OFF

No transition

State ON

Initialize

State OFF

Event:

Action: turn off the light

offTsignal

Event:

Action: turn on the light

onTsignal

Page 9: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 9

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 1 – Sneak Look

State ON

Initialize

State OFF

Event:

Action: turn off the light

offTsignal

Event:

Action: turn on the light

onTsignal

Page 10: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 10

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 1 – Sneak Look

Page 11: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 11

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

SNL: General Structure & Syntaxprogram program_namedeclarations

ss state_set_name { state state_name {

entry { entry action statements } when (event) { action statements } state next_state_name when (event) {

... } state next_state_name

exit{ exit action statements }

}state state_name {

...}

}

Page 12: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 12

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

SNL: General Structure & Syntax

program name A program may contain multiple state sets. The program name is used as a handle to the sequencer manager for state programs.

ss name { Each state set becomes a separate task or thread.

state name { A state is somewhere the task waits for events. When an event occurs it checks to see which action it should execute. The first state defined in a state set is the initial state.

option flag; A state-specific option.

when (event) { Define events for which this state waits.

} state next Specifies the state to go to when these actions are complete.

entry {actions} Actions to do on entering this state. With option -e; it will do these actions even if it enters from the same state.

exit {actions} Actions to do on exiting this state. With option -x; it will do these actions even if it exits to the same state.

Page 13: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 13

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Declaration: VariablesAppear before a state set and have a scope of the entire program.

Scalar variablesint var_name;short var_name;long var_name;char var_name;float var_name;double var_name;string var_name; /* 40 characters */

Array variables: 1 or 2 dimensions, no stringsint var_name[num_elements];short var_name[num_elements];long var_name[num_elements];char var_name[num_elements];float var_name[num_elements];double var_name[num_elements];

Page 14: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 14

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Declaration: AssignmentsAssignment connects a variable to a channel access PV namefloat pressure;

assign pressure to "CouplerPressureRB1";

double pressures[3];

assign pressures to {"CouplerPressureRB1", "CouplerPressureRB2", " CouplerPressureRB3"};

To use these channels in when clauses, they must be monitoredmonitor pressure;monitor pressures;

Use preprocessor macros to aid readability:#define varMon(t,n,c) t n; assign n to c; monitor n;

varMon(float, pressure, "PressureRB1")

Page 15: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 15

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Declaration: Event Flags

Event flags are used to communicate events between state sets, or to receive explicit event notifications from Channel Access

Declare them like this:evflag event_flag_name;

An event flag can be synchronized with a monitored variablesync var_name event_flag_name;

The flag will then be set when a monitor notification arrives, e.g.evflag pressure_event;Sync pressure pressure_event;

Page 16: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 16

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Event

Event: A specific condition on which associated actions are run and a state transition is made.

Possible events:

Change in value of a variable that is being monitored:when (achan < 10.0)

A timer event (this is not a task delay!):

when (delay(1.5))The delay time is in seconds and is a double; literal constant arguments to the delay function

must contain a decimal point.

The timer starts when the state containing it was entered.

Use the state specific option -t; to stop it from being reset when transitioning to the same state.

Page 17: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 17

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Event (continued)The state of an event flag:

when (efTestAndClear(myflag))

when (efTest(myflag))

efTest() does not clear the flag. efClear() must be called sometime later to avoid an infinite loop.

If the flag is synced to a monitored variable, it will be set when the channel sends a value update

The event flag can also be set by any state set in the program using efSet(event_flag_name)

Any change in the channel access connection status:

when (pvConnectCount() < pvChannelCount())when (pvConnected(mychan))

Any combination of the above event types

Page 18: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 18

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

ActionBuilt-in action function, e.g. :

pvPut(var_name);

pvGet(var_name);

efSet(event_flag_name);

efClear(event_flag_name);

Almost any valid C statement

switch() is not implemented and code using it must be escaped.

%% escapes one line of C code

%{

escape any number of lines of C code

}%

Page 19: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 19

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2: Life Game

Page 20: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 20

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2: Life Game

Basic Rule of Life Game

Rule 1: Any live cell with fewer than two live neighbors died,

as caused by under population.

Rule 2: Any live cell with two or three live neighbors lives

on to the next generation.

Rule 3: Any live cell with more than three live neighbors died,

as if the overcrowding.

Rule 4: Any dead cell with exactly three live neighbors become

a live cell, as if production

Page 21: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 21

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2 - ContinuedRequirements

20x20 Bo records to represents cells

Adjustable Initial population density (Ao record, operation range [0. to 1.]

If the initial population density is changed, then starts new game

Initialize cells with random number generator + constraint for the initial population density

Evolution to next generation few times in a second

Provides basic statistics: number of live cells and number of dead cells

Additional RequirementMonitor the live cell counter in the statistics

If the system reaches to thermal equilibrium (the counter values is not changed during 5 seconds) then, start new game.

To start new game, apply a slight change on the initial population density (use, random walk, init_pop += small random number();)

Page 22: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 22

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2 – State Diagram

Init

InitArray

Run

Event: if the initial population has been changed

Entry: 1) Initialize work space with random + initial population density

Exit: 1) Copy work space to the PV assigned variables2) Make statistics for the current generation3) Update PVs for display

Event: always

Event: if timer has been expired

Event: if the initial population has been changed

Entry: evolutes cells for next generationExit:1) Copy work space to the PV assigned variables2) Update PV for display

Entry: dynamic assignment for 20x20 PVs

Page 23: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 23

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2: C escapes

Page 24: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 24

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2: C escapes

Page 25: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 25

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2: Declarations

Page 26: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 26

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2: Init State

Page 27: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 27

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2: initArray State

Page 28: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 28

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2: run State

Page 29: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 29

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2: Additional State Set

State Set: main_loop

State Set: new_game

loop

INIT

Event: changed live cell counter

Action: update previous live cell counter to current

Event: expired timer

Action: random walk on the initial population

Live cell counter PV

Initial Population

Page 30: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 30

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Example 2: Additional State Set

Page 31: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 31

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

SNL Variable and ScopeGlobal Variables

lifetime/scope: entire program

Memory allocation by sequencerwith option +r;

Static variable in C with option –r;

Local Variables State Set

Memory allocation by Sequencer

StateMemory allocation by Sequencer

Entry/Exit/Action functionStack variable

program mySNLoption +r;double a;assign a to pvA;monitor a;

ss my_state_set { double b;

state low { int i=0;

when(a>0.5) { int j ; b = a; i++; for(j=-0;j<MAX;j++) {

Page 32: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 32

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Variable Type Lifetime Scope Implementation Access in C escape Initialization

Global static Program Instance malloc pVar->myVariable Yes, G_prog_init

Local in a State Set

static State Set malloc pVar->UserVar_myStateSet.myVariable Yes, G_prog_init

Local in a State static State malloc pVar->UserVar_myStateSet.UserVar_myState.myVariable

Yes, G_prop_init

Local in a When()

Function call

Inside the when statement(action function)

Stack variable myVariable NO

Local in an entry/exit

Function call

Inside entry/exit(entry function/exit function)

Stack variable myVariable NO

SNL Variable’s Scope and Lifetime with Reentrance

Page 33: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 33

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Variable Type Lifetime Scope Implementation Access in C escape Initialization

Global static Program Static variable myVariable Yes, Compiletime

Local in a State Set

static State Set Static structure UserVar_myStateSet.myVariable Yes, Compiletime

Local in a State static State Static structure UserVar_myStateSet.UserVar_myState.myVariable Yes, Compiletime

Local in a When()

Function call

Inside the when statement(action function)

Stack variable myVariable NO

Local in an entry/exit

Function call

Inside entry/exit(entry function/exit function)

Stack variable myVariable NO

SNL Variable’s Scope and Lifetime with Non-Reentrance

Page 34: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 34

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Dynamic PV assignments

To allow PV assignment/re-assignment at runtime

Requires an initial assigment (or NULL assignment) in the Declaration Section

for single variables

for array variables

double myVar;assign myVar to “”;

. . . . . . pvAssign(myVar, “PV_MYVAR”);

double myVar[MAX];assign myVar to { “” };

. . . . . . for(i=0;i<MAX;i++) pvAssign(myVar[i], str_pvName[i]);

Page 35: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 35

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Building an SNL Program

Use editor to build the source file. File name must end with“.st” or “.stt”, e.g. “example.st”

“make” automates these steps:Runs the C preprocessor on “.st” files, but not on “.stt” files.

Compiles the state program with SNC to produce C code:

snc example.st -> example.c

Compiles the resulting C code with the C compiler:

cc example.c -> example.o

The object file example.o becomes part of the application library, ready to be linked into an IOC binary.

The executable file “example” can be created instead.

Page 36: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 36

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

.st vs. .stt

program ex1Option –r;%{#define MAX 20

--- nip --- for(i=0;i<MAX;++) {---}%

double myArray[MAX];

ss myStateSet{ state myState{ when(index>= MAX) {

program ex1option –r;#define MAX 20

double myArray[MAX];

ss myStateSet{ state myState{ when(index>= MAX) {

.stt .stt

Syntax errorin SNL

Define Macro in C escape

OK! to usemacro in the C escapeand the SNL code both

Illegal to usethe macro in the declaration

Page 37: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 37

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

.st vs. .stt - continued

program ex1option –r;#define MAX 20

%{--- nip --- for(i=0;i<MAX;++) {---}%

double myArray[MAX];double my2DArray[MAX*MAX]

ss myStateSet{ state myState{ when(index>= MAX) { double a[MAX*MAX];

.stprogram ex1option –r;/* #define MAX 20 */

%{--- nip --- for(i=0;i<20;++) {---}%

double myArray[20];double my2DArray[20*20]

ss myStateSet{ state myState{ when(index>= 20) {

double a[20*20];

C preprocessing

Illegal, becausethe SNC doesn’thave compile time arithmetic

OK to use in the local variable inaction/entry/exit function.C compiler does the compile time arithmetic

Page 38: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 38

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Runtime Sequencer

The sequencer executes the state program

It is implemented as an event-driven application; no polling is needed

Each state set becomes an operating system thread

The sequencer manages connections to database channels through Channel Access

It provides support for channel access get, put, and monitor operations

It supports asynchronous execution of delays, event flag, pv put and pv get functions

Only one copy of the sequencer code is required to run multiple programs

Commands are provided to display information about the state programs currently executing

Page 39: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 39

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Executing SNL Program

From an IOC console

On vxWorks:seq &vacuum_control

On RTEMS

seq(&vacuum_control)

On other operating systems:seq vacuum_control

To stop the program

seqStop "vacuum_control"

Page 40: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 40

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

DebuggingUse the sequencer's query commands:

seqShow

displays information on all running state programs

seqShow vacuum_control

displays detailed information on program

seqChanShow vacuum_control

displays information on all channels

seqChanShow vacuum_control,"-"

displays information on all disconnected channels

seqcar

displays information on all channel access channels

Page 41: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 41

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Additional FeaturesConnection management:when (pvConnectCount() != pvChannelCount())when (pvConnected(Vin))

Macros:assign Vout to "{unit}:OutputV";

must use the +r compiler options for this if more than one copy of the sequence is running on the same ioc

seq &example, "unit=HV01"

Some common SNC program options:

+r make program reentrant (default is -r)

-c don't wait for all channel connections (default is +c)

+a asynchronous pvGet() (default is -a)

-w don't print compiler warnings (default is +w)

Page 42: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 42

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Additional Features – Cont’d

Access to channel alarm status and severity:pvStatus(var_name)pvSeverity(var_name)

Queued monitors save CA monitor events in a queue in the order they come in, rather than discarding older values when the program is busysyncQ var_name to event_flag_name [queue_length]pvGetQ(var_name)

removes oldest value from variable's monitor queue. Remains true until queue is empty.

pvFreeQ(var_name)

Page 43: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 43

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Advantage of SNL Program

Can implement complicated algorithms

Can stop, reload, restart a sequence program without rebooting

Interact with the operator through string records and mbbo records

C code can be embedded as part of the sequence

All Channel Access details are taken care of for you

File access can be implemented as part of the sequence

Page 44: SNL and Sequencer 1 Controls EPICS Training Class EPICS Collaboration Meeting 2012 @ SLAC State Notation Language (SNL) and Sequencer April 23, 2012 Kukhee.

SNL and Sequencer 44

Controls

EPICS Training ClassEPICS Collaboration Meeting 2012 @ SLAC

Acknowledgements

Andrew Johnson, AES basic EPICS Training – January 2011

Benjamin Franksen, new Seq modules