Menu principale.
Il blocco (Figura 1) funge da costruttore per la creazione di menu a livello singolo o multilivello in un progetto.

Figura 1
Il blocco viene configurato tramite l'editor di blocchi (Figura 2).

Figura 2
La sezione delle opzioni dell'editor di blocchi contiene quattro schede:
- Menu tree (Albero del menu)
- Control of menu (Controllo menu)
- Control of value (Controllo del valore)
- Outputs

Figura 3
- Sposta voce di menu in alto(1) – viene utilizzato per spostare la voce di menu selezionata verso l'alto, all'interno del suo ramo.
- Sposta voce di menu in basso (2) – serve per spostare la voce di menu selezionata in basso, all'interno del suo ramo.
- Sposta voce di menu (3) - serve per spostare la voce di menu selezionata da un ramo all'altro.

Figura 4
Parametri della voce del menu principale.
- Il campo "Name of the menu" viene utilizzato per immettere un nome per l'intero menu.
- Il pulsante "Add a new menu item" viene utilizzato per creare una nuova voce di menu all'interno del menu principale (Figura 5).

Figura 5
Parametri per le voci di menu.
La parte superiore dei parametri è la stessa per tutti i tipi di voci di menu.
- "Menu item name" - usato per inserire il nome della voce di menu.
- "Additional lines" - creazione di stringe aggiuntive allegate alla voce di menu. Quando si creano tali stringhe, le output vengono visualizzate sul blocco, dove verranno visualizzati i valori di queste stringhe. Se una voce di menu ha un valore di stringa non impostato, quando selezioni questa voce nel menu, verrà visualizzata una stringa vuota sull'output corrispondente. Le stringhe non definite vengono visualizzate con il testo "Not defined" in corsivo.
- "Group of parameters" - quando questa casella di controllo è selezionata, la voce di menu viene convertita in un gruppo. La voce di gruppo non ha importanza, ma puoi aggiungervi altre voci di menu, incluse le voci di gruppo. Quando questa casella di controllo è deselezionata, la voce di menu torna normale.
- "Input for direct going to the menu" - quando questa casella di controllo è selezionata, il blocco dispone di un input sul fronte di salita dell'impulso, sul quale avviene un passaggio diretto a questa voce di menu. Il nome della voce corrisponde all'indice della voce di menu nella struttura del menu.
- "Output activity menu item" - spuntando questa casella il blocco ha un'otput sulla quale, quando questa voce di menu è attiva, compare un livello logico alto. Il nome dell'output corrisponde all'indice della voce di menu nella struttura del menu.
Voce di menu di gruppo (Figura 6).
- "String of output "Val"" - testo della stringa che comparirà all'uscita del blocco "ValStr" quando questa voce di menu è attiva.
- Pulsante "Aggiungi sottomenu" - viene utilizzato per aggiungere una nuova voce di menu a questa voce di gruppo.

Figura 6
La parte inferiore dei parametri varia a seconda del tipo e del tipo di voce di menu.
Voci di menu regolari (con un valore) (Figura 7).

Figura 7
Comune per tutti i tipi di voci di menu (Figura 8).
- "Type of the variable" - selezionare il tipo di dati memorizzati in questo elemento.
- "Save to EEPROM" - quando questa casella di controllo è selezionata, il valore della voce di menu verrà salvato nella memoria non volatile.

Figura 8
Per i tipi di dati Integer, Long integer, Unsigned long integer, Byte (Figura 9).
- "Conversion type" - selezione della forma in cui il valore della voce di menu verrà presentato all'ouput del blocco "ValStr".
- "Max." - impostazione del valore massimo per questa voce di menu. Quando questa casella di controllo è deselezionata, non vi è alcuna restrizione sul valore massimo.
- "Min." - impostazione del valore minimo per questa voce di menu. Quando questa casella di controllo è deselezionata, non vi è alcuna restrizione sul valore minimo.
- "Step" - Impostazione del passo per modificare il valore.

Figura 9
Per il tipo di dati Float (Figura 10).
- "Number of digits after the decimal" - selezionare il numero di posizioni decimali durante l'emissione di un valore nell'output del blocco "ValStr".
- "Max." - impostazione del valore massimo per questa voce di menu. Quando questa casella di controllo è deselezionata, non vi è alcuna restrizione sul valore massimo.
- "Min." - impostazione del valore minimo per questa voce di menu. Quando questa casella di controllo è deselezionata, non vi è alcuna restrizione sul valore minimo.
- "Step" - impostazione del passo per modificare il valore.

Figura 10
Per il tipo di dati Boolean (Figura 11).
- "Conversione type" - selezione della forma in cui il valore della voce di menu verrà presentato all'output del blocco "ValStr".
- "Text for "True"" - testo all'output del blocco "ValStr" con il valore della voce di menu True se è selezionato il formato di conversione "Your text"
- "Text for "False"" - testo all'output del blocco "ValStr" con il valore della voce di menu False se il formato di conversione è "Your text"

Figura 11
Per il tipo di dati Char (Figura 12).
- "Conversione type " - selezione della forma in cui il valore della voce di menu verrà presentato all'output del blocco "ValStr".
- Se vogliamo che il simbolo venga presentato all'uscita "ValStr", dobbiamo selezionare l'opzione "As a symbol".

Figura 12
Scheda "Control of menu" (Figura 13).

Figura 13
- "Input "Reset"" - quando questa casella di controllo è selezionata, il blocco avrà un input "Reset". Sul fronte di salita dell'impulso su questo input il menu salta alla prima voce del menu principale.
- "Input "Menu Up"/"Menu Down" - quando questa casella è selezionata, il blocco avrà gli ininput "MU" e "MD". Sul fronte di salita dell'impulso all'input "MU", il menu salterà alla voce precedente all'interno del suo ramo. Sul fronte di salita dell'impulso all'input "MD", il menu si sposterà alla voce successiva all'interno del suo ramo.
- "Switch the menu items around the ring" - quando questa casella è selezionata, lo spostamento tra le voci di menu verrà eseguito in un anello. Una volta raggiunta la prima voce di menu all'interno del ramo, verrà effettuata una transizione all'ultima. E viceversa. Se questa casella di controllo è deselezionata, quando vengono raggiunte le voci di menu estreme all'interno del relativo ramo, la navigazione attraverso le voci di menu in questa direzione verrà interrotta.
- "Input" Enter to menu "/" Exit from menu "" - quando questa casella è selezionata, il blocco avrà gli input "ETM" e "ExTM". Quando una voce di menu di gruppo è attiva, sul fronte di salita dell'impulso sull'input "ETM", il menu andrà alla prima voce secondaria di questa voce di menu di gruppo. Se la voce di menu del gruppo non ha elementi, non verrà intrapresa alcuna azione. Quando una qualsiasi voce di menu è attiva, sul fronte di salita dell'input "ExTM" verrà effettuata una transizione alla voce principale per la voce di menu attiva. Se l'elemento principale è il menu principale, non verrà intrapresa alcuna azione.
- "Reset the menu on the rising edge at the input "En"" - quando questa casella è selezionata, ogni volta che si accede al menu (fronte di salita all'input "En"), il menu verrà impostato sulla prima voce del menu principale. Se questa casella di controllo non è selezionata, ogni volta che si accede nuovamente al menu, rimarrà nella posizione in cui si trovava l'ultima volta che è stato attivato.
- Writing to EEPROM - qui possiamo scegliere quando salvare i valori su EEPROM, ci sono due opzioni: quando si esce dal menu (When exiting the menu) o quando si modifica il valore (When changing the value).
Scheda "Control of value" (Figura 14).

Figura 14
- "Input "Value+"/"Value -"" - quando questa casella di controllo è impostata, il blocco avrà gli input "V+" e "V-". Sul fronte di salita dell'input "V+" il valore della voce di menu attiva cambia dell'incremento specificato nelle proprietà del menu. Se il valore massimo è impostato nelle proprietà della voce di menu, quando viene raggiunto questo valore, la modifica si interrompe. Sul fronte di salita dell'ingresso "V-" il valore della voce di menu attiva cambia del passo impostato nelle proprietà del menu in direzione decrescente. Se nelle proprietà di una voce di menu è impostato un valore minimo, quando viene raggiunto questo valore, la modifica si interrompe. Se la voce di menu del gruppo è attiva, non viene eseguita alcuna azione. Sono disponibili tre modalità per modificare il valore.
- "Double acceleration" - sul fronte di salita dell'ingresso "V+" o "V-", il valore cambierà di un passo. Ma se mantieni un livello alto in ingresso per il tempo specificato nel campo "Start time acceleration", i valori cambieranno automaticamente nella stessa direzione di un passo con il periodo specificato nel campo "Update period value". Se si continua a mantenere un livello alto, dopo un tempo (contato dal momento del fronte di salita sull'input) specificato nel campo "Start time of the second acceleration", il periodo di modifica del valore cambierà in quello specificato nel campo "Update period value on the second level". I valori cambieranno finché il livello alto non verrà rimosso dall'input.
- "One step at each pulse" - il valore della voce di menu cambierà di un passo su ciascun fronte di salita sugli ingressi "V+" o "V-".
- "With acceleration" – sul fronte di salita dell'input "V+" o "V-", il valore cambierà di un passo. Ma se mantieni un livello alto in ingresso per il tempo specificato nel campo "Start time acceleration", i valori cambieranno automaticamente nella stessa direzione di un passo con il periodo specificato nel campo "Update period value" finché il livello alto non viene rimosso dall'input.
- "Inputs direct input of numbers" - quando questa casella è selezionata, il blocco dispone di input per l'immissione diretta di numeri (B0 ... B9). Quando si passa a una voce di menu non di gruppo, il fronte di salita su uno qualsiasi di questi input mette il valore della voce in modalità modifica e immette immediatamente il carattere corrispondente all'input (0...9). I successivi fronti di salita su questi input aggiungono i caratteri appropriati al valore digitato.
- "Input ","" - quando questa casella è selezionata, oltre agli input numerici, il blocco disporrà di un input "." Un fronte di salita su questo input provoca l'aggiunta del carattere "." al valore impostato. Funziona solo con voci di menu di tipo Float.
- "Input "-"" - quando questa casella è selezionata, oltre agli ingressi numerici, il blocco disporrà di un input "-". Un fronte di salita su questo input fa sì che venga aggiunto un carattere "-" all'inizio del valore selezionato. Se questo carattere era già presente all'inizio del valore, verrà rimosso.
- "Input "Backspace"" - quando questa casella è selezionata, oltre agli input numerici, il blocco disporrà di un input "<". Fronte di salita sull'input eliminerà l'ultimo carattere digitato.
Scheda "Outputs" (Figura 15).

Figura 15
- "Output "Active group menu"" - quando questa casella di controllo è selezionata, nel blocco viene visualizzato l'output "AG". Quando la voce di menu gruppo è attiva, questo output è impostato su un livello logico alto.
- "Output "Active main menu"" - quando questa casella è selezionata, il blocco avrà l'output "AMM". Quando una qualsiasi voce di menu che è ramo diretto del menu principale è attiva, questo output è impostato su un livello logico alto.
- "Output "Name of the parent menu"" - quando questa casella è selezionata, il blocco avrà l'output "NPM". Visualizza il nome della voce di menu che è il ramo della voce attualmente attiva.
Input/Output permanenti del blocco.
- Input «En» - input attività del menu. Con un livello logico basso su questo input, il blocco non risponde allo stato degli input, sugli output digitali del blocco viene impostato un livello logico basso e sul output di stringa viene impostata una stringa vuota. Con un livello alto su questo input, il blocco funziona in modalità normale.
- Output "Name" - questo output visualizza il nome della voce di menu attualmente attiva quando il blocco è in esecuzione.
- Output «ValStr» - su questo output, quando il blocco funziona, il valore di una voce di menu non di gruppo viene visualizzato in conformità con le impostazioni di conversione specificate per essa. Se una voce di menu di gruppo è attiva, questa uscita restituirà la stringa scritta nel campo "String of output "Val"" dei parametri di questa voce.