Pagina 1 di 1

31 - Rocrail: azioni (altri esempi)

Inviato: 6 gennaio 2025, 16:49
da LucioTS
Le azioni possono essere 'specifiche', come ad esempio il fischio della Litra, ma possono anche essere 'generiche', ovvero azioni applicate a tutte le locomotive ad esempio.

Vediamo un esempio. Vogliamo che le luci delle nostre locomotive siano accese quando la locomotiva si muove e siano spente quando la locomotiva si ferma.
Indipendentmente dal blocco, vogliamo fare in modo che se la locmotiva si muove accenda le luci.

Creiamo quindi due nuove azioni, una accenderà le luci ed una le spegnerà.

Apriamo il pannello delle azioni:
Screenshot 2025-01-06 120401.png
Creiamo una nuova azione e diamo come ID 'Luci_on':
Screenshot 2025-01-06 120420.png
Questa azione comanda le luci che sono una funzione quindi scegliamo 'Funzione' come tipo.
Non indichiamo nessuna locomotiva nel campo ID. Lasciamo il campo vuoto.
Nel campo comando mettiamo on, ovvero accendere la funzione.
Come parametro mettiamo la 0 che indica la funzione F0. come detto non deve esser messa la lettera F.
Screenshot 2025-01-06 120458.png

Creiamo una nuva azione con ID 'Luci_off':
Screenshot 2025-01-06 120521.png

Sarà uguale a quella precedente tranne nel comando che sarà 'off', per spegnere la funzione:
Screenshot 2025-01-06 120534.png
Ma dove applichiamo questa azione? In tutti i sensori? In tutti i blocchi?
No, la applichiamo direttamente alle locomotive.

Aprimo le proprieta della Litra ed andiamo nella shceda 'Generale':
Screenshot 2025-01-06 120603.png
In basso troviamo il pulante 'Azioni':
Screenshot 2025-01-06 120615.png
Possiamo assegnare delle azioni direttamente alle nostre locomotive....
Screenshot 2025-01-06 120630.png
Selezioniamo l'azione (nel campo ID) 'Luci_on' e nello stato troviamo tutti i possibili comandi che la locomotiva può assumere:
Screenshot 2025-01-06 120652.png
Scegliamo 'run'. Il comando 'run' identifica una locomotiva con velocità superiore a 0, ovvero si muove:
Screenshot 2025-01-06 120717.png
Aggiungiamo l'azione con il tasto 'Aggiungi'.

Ora selezioniamo l'azione 'Luci_off' come ID e 'stall' come Stato. 'Stall' significa che la locomotiva ha una velocità pari a 0, ovvero è ferma:
Screenshot 2025-01-06 120733.png
Facciamo la stessa operazione per le altre locomotive. La OBB:
Screenshot 2025-01-06 121434.png
Anche ad esempio sulla Er20Tunes:
Screenshot 2025-01-06 121531.png
Ora nel video non è molto chiaro ma le luci delle locomotive si accendono quando si muovono e si spengono quando si fermano:

31 - Rocrail: azioni (altri esempi)

Inviato: 6 gennaio 2025, 17:02
da LucioTS
Come altro esempio facciamo eseguire il rumore di rilascio aria quando la locomotiva si ferma.
Per questo esempio uso la OBB.

La funzione che userò è la F8:
Screenshot 2025-01-02 180935.png
Creiamo una nuova azione con ID 'OBB_sfiato':
Screenshot 2025-01-06 121709.png
E' sempre una funzione, relativa in questo caso solamente alla OBB, con comando 'on' e funzione numero 8 nei parametri:
Screenshot 2025-01-06 121750.png

Spostiamoci nelle proprietà della OBB nella scheda azioni, aggingiamo l'azione 'OBB_sfiato' con stato 'stall':
Screenshot 2025-01-06 121826.png
Dato che abbiamo un pulsante per far sentire o meno i suoni.... aggiungiamolo come condizione:
Screenshot 2025-01-06 122035.png

Vediamo il risultato:


Ogni qualvolta la locomotiva OBB si ferma viene eseguita l'azione. Anche muovendola manualmente. E visto che abbio messo la condizione, se il pulsante è spento il suono non viene eseguito.

31 - Rocrail: azioni (altri esempi)

Inviato: 6 gennaio 2025, 17:31
da LucioTS
Ora che abbiamo visto qualche esempio facciamo una considerazione:
Ma se volessi far suonare tutte le locomotive quando, ad esempio, arrivano in un blocco, come la Litra degli esempi precedenti, devo fare una azine per ogni locomotiva ed applicarla?

Certmente è una soluzione ma esiste una 'scorciatoia' che ci permette di fare una unica azione.
Analizziamo cosa vogliamo fare.
Useremo il blocco 'Sta_B_2' per questo demo.
Vogliamo che la locomotiva che entra nel blocco emetta un fischio o un suono simile. Perchè dico un suono simile? Perchè le locmotive a vapore hanno il classico fischio, ma le locmotive diesel hanno la tromba come segnale.
Usereme la OBB (diesel) e la Litra (vapore) ma ovviamente il concetto vale per poterlo usare con altre locomotive.

Il primo problema è che i suoni sono su funzioni diverse:
Per la Litra useremo il fischio che è sulla funzione F3:
Screenshot 2025-01-02 180919.png
Per la OBB useremo la tromba che è sulla funzione F7:
Screenshot 2025-01-02 180935.png

Quindi abbiamo i suoni che volgiamo usare ma sono su funzioni differenti. Non possiamo creare una azione che usi la funzione 4 perchè funzionerebbe sulla Litra ma sulla OBB attiverebbe la funzione 'peso' (toglie avvio e frenatura ritardata).

Dobbiamo cercare di 'unire le funzioni. Certamente possiamo intervenire sulla Cs è cambiare le funzioni ma è complicato.
In Rocrail è più semplice, basterà 'nominarle' allo stesso modo. Vediamo come.

Iniziamo dalla Litra. Apriamo le proprietà ed andiamo nella scheda 'Funzioni'. Diamo come 'Descrizione' della funzione F3 il nome 'fischio':
Screenshot 2025-01-06 123906.png

Spostiamoci nelle fuznio0ni della OBB e diamo alla funzione F7 lo stesso nome, ovvero 'fischio':
Screenshot 2025-01-06 123848.png

Ora creiamo una nuova azione nel pannello delle azioni con nome 'fischio_locomotori':
Screenshot 2025-01-06 123946.png

Questa azione è un tipo funzione, non diamo nessuna locmotiva nel campo ID, diamo 'on' come comando e scriviamo, al posto di indicare il numero della funzione, 'fischio':
Screenshot 2025-01-06 124012.png

Abbiamo creato l'azione andiamo ad applicarla al blocco 'Sta_B_2':
Screenshot 2025-01-06 124107.png
Aggiungiamo la condizione per eventuamente spegnere il suono....
Screenshot 2025-01-06 124126.png

Vediamo il risultato:


Quando arriva la Litra viene eseguito l'azione che comanda il 'fischio' (F3) e quando arriva la OBB viene esguita la stessa azione (ma su F7).

Ovviamente vengono eseguite anche tutte le altre azioni.

I più attenti avrannn notato che la Litra non ha 'fischiato' quando è transistata sul sensore 'fb6' come confiurato precedentmente.
Perchè?

La risposta è perchè il sensore non è inserito nell'itinerario... La Litra per andare in 'Sta_B_2' usa un itienrario divero che per andare in 'Sta_B_1'....
Quindi per far suonare l aLitra dobbiamo semplicemente aggiungere il sensore nell'itinerario corretto.

Vediamo il tutto nel video seguente:

31 - Rocrail: azioni (altri esempi)

Inviato: 6 gennaio 2025, 17:46
da LucioTS
Ovviamente con le azioni non si 'pilotano' solo le funzioni dei decoder.

Possiamo usare le azioni per far partire una locomotiva.
Nell'esempio seguente faremo partire la locomotiva OBB quando il blocco 'Sta_B_2' attiverà la funzione.

Pr prima cosa creiamo la nostra azione con ID 'start_OBB':
Screenshot 2025-01-06 124716.png
Il tipo di questa azione è ìLocomotiva', ID è ovviamente la OBB ed i comandi relativi al tipo locomotiva sono numerosi:
Screenshot 2025-01-06 124740.png
Per far paritre una locomotiva il comando è 'go':
Screenshot 2025-01-06 124802.png
N.B. ricordatevi che far partire una locomotiva significa metterla in movimento automatico gestito da Rocrail e non 'muoverla' dando un comando di velocità.

Ora applichiamo l'azione nel blocco:
Screenshot 2025-01-06 124846.png
Però usiamo come comando (Stato) 'occupied'. Questo significa che solo quando il blocco è nello stato occupato eseguirà l'azione.
Lo stato occupato si verifica quando la locmotiva ha azionato il sensore 'in' (o pre2in nel caso, vedere paragrafi relativi).
Screenshot 2025-01-06 124900.png

Vediamo cosa succede:


Quando una locomotiva 'occupa' il blocco 'Sta_B_2' la OBB cambia stato da 'stop' (vedre il pannello locmotive) ad 'auto' è dato che trova un blocco libero si avvia.

31 - Rocrail: azioni (altri esempi)

Inviato: 6 gennaio 2025, 18:07
da LucioTS
Possiamo avviare, tramite le azioni, anche senza usare i sensori....

Nell'esempio seguente facciamo partire la OBB usando una immagine della locomotiva.....



Ma con le azioni possiamo anche operare sui blocchi.
Nel prossimo esempio una azione, associata al sensore 'fb5' chiude (mette fuori srvizio) il blocco 'Est':



E una azione che 'apre' il blocco 'Est' sul sensore 'fb4':



Vediamo ora la procedura per cancellare una azione.
Cancelleremo le ultime azioni, ma è importante, come detto, che prima di eliminare una azione dal pannello delle azioni è necessario (onde evitare malfunzionamenti) cancellare l'azione dagli oggetti dove è applicata.
La scheda 'Utilizzo' del pannello delle azioni indica dove l'azione è applicata.
Quindi prima di elimnare una azione verificare dove è usata, cancellarla dall'oggetto (cancellando prima eventuali condizioni) e solo dopo cancellarla dalle azioni: