Ben arrivato! Fate login o registratevi per fruire di tutte le funzionalità del forum e del sito.

Sito e forum dedicati al fermodellismo a tre rotaie gestito da appassionati senza fini commerciali. Qui trovate notizie storiche e suggerimenti tecnici per i vostri modelli vintage e moderni. Il nostro hobby viene praticato in molte maniere diverse, tutte ugualmente valide: hai un plastico? oppure sei un collezionista? oppure un semplice appassionato? Non esitare a scrivere nel forum, tutti gli interventi sono benvenuti ... Postate foto e video del vostro plastico e chiedete aiuto per ogni problema o curiosità inerente al nostro hobby.

Macro CS3

Software & Delta - Digital - System mfx

Moderatore: supermoee

Rispondi
Messaggio
Autore
Avatar utente
luferr52
Senior Märklin Supporter
Messaggi: 1033
Iscritto il: 11 gennaio 2016, 17:20
Nome: Luigi Ferraris
Località: Lazio Viterbo Bassano Romano
Stato: Non connesso

Macro CS3

#1 Messaggio da luferr52 » 22 febbraio 2019, 9:33

Ho pensato di aprire un nuovo argomento relativo alle macro dell'ultimo aggiornamento della CS3. L'argomento personalmente mi interessa anche se ritengo che tra chi del Forum usa la CS3, non molti, saremo forse in due o tre a pensare di utilizzare queste nuove funzioni.
Comunque ho provato a realizzare una IF con dentro un AND; considerato che non ho al momento a disposizione le icone delle macro che usa M utilizzo come spiega una personale pseudocodifica che spero chiara; la IF prevede che in base allo stato di due contatti S1 ed S2 venga azionato lo scambio A. Quindi:
IF (S1 on) AND (S2 on)
THEN A -> Sx
END IF
Ho provato e, come deve essere, lo scambio va a sinistra solo se ambedue i contatti sono ad ON.
Ora, altra novità è che nel prendere lo scambio per portarlo nell'itinerario sono comparse, oltre alle due solite icone che rappresentano lo scambio orientato a sinistra ed a destra, altre due nuove icone che contengono un occhio che guarda dall'alto un treno e sulla destra un + in una icona ed una x nell'altra.
Considerato che non ho trovato spiega di M sulle stesse ipotizzo che servano per testare la presenza o meno di un treno sullo scambio; se così fosse si potrebbero utilizzare come un contatto S88 risparmiandosi la preparazione del binario ecc.
A presto luigi

Avatar utente
luferr52
Senior Märklin Supporter
Messaggi: 1033
Iscritto il: 11 gennaio 2016, 17:20
Nome: Luigi Ferraris
Località: Lazio Viterbo Bassano Romano
Stato: Non connesso

Macro CS3

#2 Messaggio da luferr52 » 27 febbraio 2019, 16:37

Ho fatto alcune foto della sequenza di creazione di una IF. Ho pensato ad una che abbia una sola condizione ma i due rami THEN ed ELSE.
La condizione è gestita dal contatto virtuale A1 (l'uso del contatto virtuale è solo di comodità) ed i due rami prevedono che lo scambio triplo ST215 venga impostato a Sx oppure a Dx.
Per inserire la IF dentro un itinerario è sufficiente scegliere la macro IF all'interno della casella a discesa che si apre con click su "aggiungere"
IF01.jpg
Tra i vari eventi compare ora una "if container" con nome di default "IF 1"
IF02.jpg
Aprendo IF 1 si può vedere che ci sono tre contenitori vuoti per la condizione e per i due rami; ho modificato il nome in IFprova
IF03.jpg
Per non confondermi tra ProvaIF (l'itinerario) ed IFprova (la macro) ho rinominato l'itinerario Pippo
IF04.jpg
Trascino ora nel contenitore della condizione il contatto virtuale A1
IF05.jpg
e negli altri due la posizione voluta dello scambio
IF06.jpg
Mando ora in esecuzione Pippo con A1 impostato ad On e lo scambio si posiziona verso sinistra
IF07.jpg
Se invece A1 è in Off ed eseguo Pippo lo scambio, come deve, va verso destra
IF08.jpg
Spero che la sequenza delle foto sia chiara; come scrivevo qualche giorno fa non so a quanti possa interessare l'uso delle macro, tuttavia mi sembrava utile fornire qualche indicazione operativa sulla loro sintassi anche perché non ho trovato info esplicative da parte di M.
A presto luigi
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Avatar utente
luferr52
Senior Märklin Supporter
Messaggi: 1033
Iscritto il: 11 gennaio 2016, 17:20
Nome: Luigi Ferraris
Località: Lazio Viterbo Bassano Romano
Stato: Non connesso

Macro CS3

#3 Messaggio da luferr52 » 2 marzo 2019, 18:43

Tra le nuove macro per la CS3 mi ha incuriosito la macro Random. Il significato di random è casuale, a caso; in un linguaggio di programmazione è usuale trovare generatori di numeri random o funzioni random che forniscono un numero a caso in un certo ambito. Quindi, a logica, una macro random permette di scegliere, a caso, fra diverse opzioni.
Penso che questa macro si possa utilizzare in modo soddisfacente nella gestione di una stazione nascosta nella quale la sequenza di uscite dalla stessa è prefissato. Con l'uso della macro Random è invece possibile far partire "a caso" uno qualunque dei treni presenti nella stessa.
Per vedere meglio il comportamento di questa macro l'ho applicata alla partenza di tre convogli presenti nella stazione visibile.
In primo luogo ho preparato tre itinerari: ParteA, ParteB e ParteC in ognuno dei quali il semaforo dummy viene messo a verde, viene data corrente (il treno logicamente ha già una sua velocità impostata) e viene posizionato in modo opportuno lo scambio per ricevere il convoglio al termine del suo percorso; nell'immagine ParteA
DSCN2042.jpg
In modo simmetrico ho preparato tre itinerari: FermaA, FermaB e FermaC, attivati dall'opportuno contatto S88, in ognuno dei quali il semaforo dummy viene messo a rosso, viene tolta corrente al binario controllato dall'M84 e viene eseguita la macro Random 1; nell'immagine FermaB
DSCN2043.jpg
Infine in Random 1 ho messo i tre itinerari: ParteA, ParteB e ParteC che saranno eseguiti in modo casuale
DSCN2044.jpg
Nel video che segue si può vedere come avviene la gestione delle partenze dalla stazione:

In conclusione ritengo questa macro Random semplice da utilizzare nella gestione di una stazione nascosta ed efficace in quanto si vedranno apparire dei convogli in una sequenza non preordinata. Se invece la si volesse utilizzare in una stazione visibile occorrerebbe più lavoro per gestire meglio i singoli convogli sia nella partenza sia nella fermata per evitare blocchi e partenze improvvise. Se poi ci fossero anche annunci di stazione opportuni, per esempio: "Attenzione, treno in transito sul binario due, allontanarsi dalla riga gialla" il risultato sarebbe realistico.
A presto luigi
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Avatar utente
Rearturo
Senior Märklin Supporter
Messaggi: 1179
Iscritto il: 10 gennaio 2007, 20:12
Nome: Arturo Belli
Località: Campania,Napoli
Stato: Non connesso

Macro CS3

#4 Messaggio da Rearturo » 3 marzo 2019, 13:37

Ciao Luigi,
sono interessato alla CS3...e volevo chiederti se nella macro random è possibile anche impostare il tempo di intervento...per evitare la partenza del convoglio immediatamente dopo l'arrivo del precedente....
complimenti per il tuo lavoro e grazie.
Ciao
Arturo :hi:

Avatar utente
luferr52
Senior Märklin Supporter
Messaggi: 1033
Iscritto il: 11 gennaio 2016, 17:20
Nome: Luigi Ferraris
Località: Lazio Viterbo Bassano Romano
Stato: Non connesso

Macro CS3

#5 Messaggio da luferr52 » 4 marzo 2019, 5:59

Certo che si; il tempo di attesa tra un evento e l'altro si inserisce nel singolo evento. In questo caso conviene mettere il tempo desiderato, p. es. 10 sec. in ognuno dei tre Ferma. Quindi nell'evento che precede la chiamata di Random 1, cioè togliere corrente al binario, si imposta un tempo attesa di 10 sec. ed il gioco è fatto.
A presto luigi

Avatar utente
luferr52
Senior Märklin Supporter
Messaggi: 1033
Iscritto il: 11 gennaio 2016, 17:20
Nome: Luigi Ferraris
Località: Lazio Viterbo Bassano Romano
Stato: Non connesso

Macro CS3

#6 Messaggio da luferr52 » 1 maggio 2019, 9:09

Tra le nuove macro è presente il Loop, che è un fondamentale pilastro della programmazione.
Loop, parola inglese, si può tradurre in italiano con ciclo o, meglio ancora con iterazione, vocabolo che deriva dal latino iter, cioè cammino.
Iterazione significa cammino ripetuto, o, con altre parole, una serie di passi o istruzioni che vengono ripetuti più volte. Ora questa iterazione o ciclo o cammino ripetuto che dir si voglia non viene eseguito a caso ma in base a certe condizioni.
Da un punto di vista più ampio, data una sequenza di passi o istruzioni ed una condizione di controllo della sequenza stessa ho due possibilità:
- la condizione o test precede la sequenza
- la condizione o test è posta alla fine della serie di istruzioni.
La differenza tra i due casi consiste nel fatto che nella prima ipotesi la sequenza potrebbe anche non essere mai svolta nel caso la condizione di ingresso non sia soddisfatta, nella seconda ipotesi invece la sequenza di istruzioni verrà eseguita almeno una volta in quanto il test è posto alla fine della sequenza di istruzioni.
Inoltre, poiché l'esito di un test può dare luogo a due risultati: vero e falso i due casi precedenti diventano quattro:
- test in ingresso: vero -> sequenza eseguita; falso -> sequenza saltata
- test in uscita vero -> sequenza ripetuta; falso -> si continua.
Nei vari linguaggi di programmazione tutti o parte di questi casi sono previsti e codificati.
Nel nostro caso concreto il Loop di M prevede il test in uscita e la ripetizione delle istruzioni del ciclo nel caso il test sia vero.
Se volessimo rappresentare a parole questo ciclo potremmo scrivere:
RIPETI
istruzione
istruzione
......
MENTRE condizione vera

Ora mi scuso per tutta questa spiega ma mi sembrava corretto far capire come la Macro Loop introdotta da M nell'ultimo aggiornamento della CS3 si posizioni nell'ambito di un più generale discorso sulla programmazione e permetta, insieme alla Macro IF, di trasformare la gestione di eventi in un concreto linguaggio di programmazione.
Alla prossima per un esempio sul campo luigi

Rispondi