Safety and interlocks

Permissive <smart-permissive>

Permissive displays a list of conditions that a start requires or that a running device depends on, with whether each condition is met.

<smart-permissive> · 8 properties, 2 methods, 3 events · source/modules/smart.permissive.js

Usage in Blazor

The Razor component is <Permissive> in Smart.Blazor.Industrial: every property is a parameter in PascalCase, every event an EventCallback<Event> named On<Event> whose ev["Detail"] is the typed detail class, and the methods are called on the @ref. String choices are enums. In a Blazor Web App (.NET 8 and later) the page needs an interactive render mode, for example @rendermode InteractiveServer; a statically rendered component stays empty.

@using Smart.Blazor.Industrial
@* .NET 8 and later: an interactive render mode, on the page or for the whole app *@
@rendermode InteractiveServer

<Permissive @ref="permissive" Label="P-2101A start permissives" AllowBypass="true"
    OnBypassRequest="OnBypassRequest" />

@code {
    Permissive permissive;

    void OnBypassRequest(Event ev)
    {
        PermissiveBypassRequestEventDetail detail = ev["Detail"];
    }

    // Task<object> Summary()
    void Call() => permissive.Summary();
}

Properties

ParameterType, defaultDescription
Conditions
conditions
IEnumerable<object>Sets or retrieves the conditions as [{ id, label, satisfied, required, bypassed, bypassedBy, tag, value, description, timestamp }]. required defaults to true; an advisory condition is listed but never blocks. timestamp is the time the condition last changed state and is used to determine the first-out condition. Assign a new array to update the component. Flags given as text, as a tag database may hand them over, are read as such: 'false', '0', 'no', 'off' and '' are not set.
Mode
mode
PermissiveMode
permissive
Sets or retrieves the type of the list. A permissive list gates a start, and the verdict reads ready or not permitted. An interlock list trips a running device, the verdict reads healthy or tripped, and the first-out condition is marked.
Label
label
stringSets or retrieves the title of the list, usually the device name and the purpose of the list.
ShowFirstOut
showFirstOut
bool
true
Determines whether the earliest unsatisfied required condition, by timestamp, is marked as first-out. Applies in interlock mode only. Conditions without a timestamp cannot be first-out, and a tie is reported as no first-out.
ShowSatisfied
showSatisfied
bool
true
Determines whether met conditions are listed. When off, a long list shows only the conditions that block; the verdict still counts every condition.
ShowTimestamps
showTimestamps
bool
true
Determines whether each condition shows how long it has been in its state, from its timestamp. The ages tick without the rows being rebuilt.
AllowBypass
allowBypass
bool
false
Determines whether a bypass control is offered on each required condition that blocks, and a removal control on each bypassed one. The control raises bypassRequest and changes nothing itself.
AnnounceChanges
announceChanges
bool
true
Determines whether a change of verdict is read through the live region, assertively for a trip, politely otherwise.

Methods

MethodDescription
Task<object> Summary()Returns a summary of the list as { total, required, satisfied, unsatisfied, bypassed, ready, blocking, firstOut }, where blocking is the ids of the required conditions that are not met and firstOut is an id or null. With no conditions, ready is false: an empty list permits nothing.
Task<object> ConditionById(string id)Returns the condition with the given id, as the application supplied it, or null.
id string The condition's id.

Events

Every event is an EventCallback<Event>; Event is a dictionary and ev["Detail"] converts to the detail class named under the event.

EventDescription and detail
OnReadyChange
readyChange
PermissiveReadyChangeEventDetail
This event is triggered when the verdict changes, a start becomes possible or a device trips, and not on every redraw. It also fires when the list is emptied (ready false, nothing blocking) and when it is filled again.
Ready bool Whether every required condition is met or bypassed.
Blocking dynamic The ids of the required conditions not met.
FirstOut string The id of the first-out condition, or null.
OnBypassRequest
bypassRequest
PermissiveBypassRequestEventDetail
This event is triggered when a bypass control is pressed. The list is not changed; the application applies the bypass, records who applied it, and returns an updated list. It is raised once per press: the control waits for the application's updated list, or five seconds, before it asks again. Each bypass control is named after its condition.
Id string The condition's id.
Bypass bool True to apply a bypass, false to remove one.
Condition object The condition as the application supplied it.
OnConditionClick
conditionClick
PermissiveConditionClickEventDetail
This event is triggered when a condition row is clicked, so that the application can open the faceplate or trend of the tag.
Id string The condition's id.
Condition object The condition as the application supplied it.

Types

enum PermissiveMode

PermissiveMode.Permissive "permissive" PermissiveMode.Interlock "interlock"

CSS variables

The component declares 6 CSS variables; the CSS page shows how to set them.

--smart-permissive-blocked-color --smart-permissive-blocked-fill --smart-permissive-bypass-color --smart-permissive-bypass-fill --smart-permissive-ready-color --smart-permissive-met-color