# Attivatori

> L'editor di attivatore: identità e posizione, la scheda Pianificazione con Natura, Intervallo e Azione, la barra dello stato della pianificazione, il pianificatore a 100 ms con il suo ritardo fisso e i battiti saltati, i comandi e che cosa un attivatore non può fare.

Un attivatore lega una causa a una sola [azione](logic-actions). L'unica natura di causa che esiste oggi è **Intervallo**: il pianificatore fa scattare l'azione collegata a un periodo fisso. Seleziona un attivatore sotto la sezione Triggers della colonna di Logic, oppure premi **Apri** sulla sua riga nella tabella della sua cartella o della radice della sua sezione, per aprirne l'editor (un attivatore creato con Nuovo… > Nuovo attivatore non si apre, ma viene evidenziato in quella tabella, vedi [Creare e copiare](logic#creating-and-copying)); leggere richiede **Visualizzare Logic**, modificare **Configurare Logic**. Su un attivatore non c'è alcun verbo di comando: scatta da solo, e l'esecuzione a mano è l'Esegui dell'azione stessa.

L'intestazione mostra il segno dell'attivatore, il nome, la riga « Una pianificazione che esegue da sola una sola azione, all'intervallo impostato. » e una pillola **Disabilitato** mentre è spento. La colonna del modulo contiene IDENTITÀ e PIANIFICAZIONE; la barra contiene STATO DELLA PIANIFICAZIONE.

## Identità {#identity}

| Campo | Che cos'è | Valori e valore predefinito | Effetto |
| --- | --- | --- | --- |
| Nome | Il nome visualizzato; le esecuzioni che l'attivatore fa scattare vengono registrate sotto di esso. | Testo libero; un attivatore nuovo si chiama `TriggerN`; un nome vuoto si salva come `Trigger`. | Si salva da solo a ogni battuta. Gli attivatori sono referenziati per identità; rinominare non tocca nient'altro. |
| Riga di posizione | Dove l'attivatore è archiviato: `Triggers / <folder> / <name>`. | Sola lettura. | Un attivatore non ha indirizzo. La cartella si cambia con **Sposta in** nell'albero. |
| Descrizione (facoltativa) | Testo libero. | Vuota. | Nessuno. |

## Pianificazione {#schedule}

| Campo | Che cos'è | Valori e valore predefinito | Effetto |
| --- | --- | --- | --- |
| Natura | La causa. | Intervallo, l'unica natura. | Nessuno oggi. |
| Intervallo (ms) | Il periodo di scatto. | Un intero di almeno 100 (la risoluzione di scansione del pianificatore); 1000 all'inizio. | Un valore più piccolo, negativo o non interpretabile mantiene l'intervallo salvato e mostra « L'intervallo deve essere un numero intero di almeno 100 ms (la risoluzione dello scheduler). » Un intervallo cambiato azzera l'orologio: il battito successivo scade un intervallo nuovo intero dopo la scansione successiva. |
| Azione | L'azione che l'attivatore fa scattare. | `(none)` oppure una qualunque azione della stazione; `(none)` all'inizio. | Un attivatore senza azione resta inattivo e dice « Collegare un'azione. Fino ad allora l'attivatore resta inattivo. »; uno la cui azione è stata eliminata dice « L'azione collegata non esiste più. Sceglierne un'altra. »; uno la cui azione è disabilitata dice « L'azione collegata 'X' è disabilitata, quindi l'attivatore resta inattivo. » |

Ogni campo si salva da solo; il messaggio di convalida si rivaluta ogni mezzo secondo sotto la scheda.

## Stato della pianificazione {#scheduling}

Il pianificatore esegue una scansione ogni 100 ms e mette sulla corsia delle azioni ciò che è scaduto, la corsia sequenziale su cui girano gli script delle azioni, distinta dal ciclo da 100 ms delle espressioni e degli allarmi:

- Un attivatore appena creato, appena abilitato o modificato nell'intervallo, nella natura o nell'azione viene inizializzato alla scansione successiva: il suo primo battito scade un intervallo dopo.
- Dopo uno scatto, il battito successivo scade un intervallo intero da **adesso** (ritardo fisso): non c'è mai una raffica di recupero dopo un periodo carico.
- Un battito che scade mentre l'esecuzione precedente di quell'attivatore è ancora in coda o in corso viene **saltato, non messo in coda**; il salto viene contato e il battito successivo ripianificato. Nessun arretrato si può accumulare dietro a un'azione lenta.
- Un attivatore la cui azione manca o è disabilitata resta inattivo: viene ripianificato senza scattare, e restare inattivo non conta mai come un salto.
- L'esecuzione viene registrata sotto il nome dell'attivatore e il suo esito arriva alla barra ULTIMA ESECUZIONE dell'azione. Un attivatore disabilitato non scatta mai.

La barra STATO DELLA PIANIFICAZIONE mostra le diagnostiche in tempo reale: **Ultimo scatto**, **Prossimo scatto** (un trattino finché il pianificatore non ha inizializzato l'orologio), **Scatti saltati** (un conteggio tenuto in memoria, che torna a 0 dopo un riavvio), e la nota « Uno scatto che arriva mentre l'esecuzione precedente è ancora in sospeso viene saltato, non accodato (nessun arretrato). Solo un'esecuzione non riuscita arriva alla console Eventi, sotto il nome di questo attivatore. »

Il pannello della radice Triggers elenca ogni attivatore con il suo stato nella colonna Valore: « Ogni 1000 ms · ultimo `<quando>` · salti N », oppure « Disabilitato ».

## Comandi {#commands}

| Comando | Che cosa fa | Grigio quando | Non disegnato quando |
| --- | --- | --- | --- |
| Abilita / Disabilita | Commuta Abilitato; abilitare reinizializza l'orologio. | La stazione è bloccata o in sola lettura. | Il ruolo non ha Configurare Logic. |
| Copia | Duplica l'attivatore (stessa azione, stesso intervallo) nella radice Triggers con un nome libero e lo evidenzia nella tabella di quella radice invece di aprirlo ([Creare e copiare](logic#creating-and-copying)); la copia parte senza pianificazione. | La stazione è bloccata o in sola lettura. | Il ruolo non ha Configurare Logic. |
| Elimina attivatore | Chiede « Eliminare 'X'? Questo rimuove l'attivatore. L'operazione non è reversibile. » | La stazione è bloccata o in sola lettura. | Il ruolo non ha Configurare Logic. |

Eliminare l'azione collegata lascia l'attivatore senza collegamento, invece di eliminarlo insieme all'azione.

## Che cosa non fanno gli attivatori {#what-triggers-do-not-do}

Non c'è altra natura di causa: niente scatta per un cambio di valore, per una condizione, a un'ora del giorno o all'avvio. Un attivatore fa scattare una sola azione, mai più di una, e non scatta mai a mano: si esegue l'azione stessa. Il pianificatore si ferma con il runtime, e uno scatto rifiutato come « Runtime fermo » mentre la stazione si chiude viene lasciato cadere in silenzio.
