CS3 Guide - Random makro
: 12 jul 2019, 06:43
På opfordring.
Random
Random betyder tilfældig. CS3s random makro kan aktiviere en tilfældig hændelse ud fra en liste af hændelser.
Hvorfor
Random makroen kan benyttes til mange forskellige opgaver. For eksempel kan du krydre din automatik med tilfældigheder, således at det, der ellers vil fremstå som en planlagt rækkefølge af hændelser, vil være mere overlagt til netop tilfældigheder og dermed skabe mere dynamik i din automatik.
Tidligere kunne det samme opnås med en m84 (strømdekoder) og et tilbagemeldingsmodul. Det er dog en dyr løsning, så random makroen er klart at foretrække.
Hvordan
I dette eksempel tager jeg udgangspunkt i en skyggebanegård, hvor togene skal sendes afsted i tilfældig rækkefølge. Jeg antager at du i forvejen har noget automatik med én hændelse for hvert spor, der kalder sin nabo når et tog er ankommet i sporet. Naboen aktiverer sit tog osv.
Ideen er at du her kalder random funktionen i stedet for naboen, hvorved ansvaret for at vælge tog nu ikke længere er fast defineret men overladt til tilfældighederne. Du indsætter altså et ekstra led.
Du finder random makroen i listen af makroer under den hændelse du har oprettet. Når du tilføjer makroen til hændelsen oprettes en ny hændelse som repræsenterer makroen.
Hændelserne der skal være i spil når makroen afvikles tilføjer du til makroens hændelse.
Du kan så kalde makroens hændelse fra den hændelse der skal aktivere makroen.
Samtidighed
Ovenstående vil virke, men du skal være opmærksom på samtidigheden i din automatik. Når random makroen skal vælge en ny hændelse fra listen vil den ikke køre, med mindre, at alle hændelser i listen er afsluttede. Hændelsen som kalder makroen er ikke afsluttet før makro-hændelsen er kørt. Da hændelsen også selv er blandt de mulige kandidater har vi altså et problem. Kan du se problemet?
Systemet vil gå i stå første gang makro-hændelsen skal køre, fordi makroen vil konstatere at en af hændelserne stadig er i gang og dermed afslutte.
For at komme omkring dette, så opretter du en ekstra hændelse der kalder random-hændelsen.
Bemærk! At hændelsen er sat til manuel drift. Dette er fordi den bliver kaldt af hændelserne fra din skyggebanegård og ikke bliver startet af nogen kontakt.
I den ny hændelse indbygger du et stopcheck. Til dit stopcheck kan du bruge en kontrolkontakt som du opretter i artikellisten. Den trækker du ind i hændelsen foran kaldet til makroen.
Stopchecket tjerner to formål:
1. At kontrollere om automatikken skal fortsætte. Det er rart at have en knap der kan afbryde automatikken som helhed. Du behøver ikke at bruge dette, men det er da meget rart at have.
2. At forsinke afviklingen af random makroen, så den kaldende hændelse når at afslutte inden random makroen afvikles. Dermed undgår du at tingene går i stå.
I stedet for at dine hændelser kalder random makroen direkte, skal du ændre dem til at kalde den ekstra hændelse i stedet. Dermed afgiver de kontrollen til ekstra hændelsen, og da den ikke er i spil når der skal vælges en ny hændelse (da den ikke er i listen af mulige hændelser), så går tingene ikke i stå.
Vigtigt! Du må ikke sætte kryds i "Vent" når du skal kalde den ny hændelse. "Vent" betyder at den kaldende hændelse vil vente på at den kaldte hændelse bliver færdig. Som tidligere nævnt, så vil random-hændelsen ikke starte, hvis en af kandidaterne er aktive. Ved at sætte kryds i "Vent" så vil vores hændelse være aktiv når random-hændelsen kører og derved vil tingene gå i stå. Så det duer ikke.
Nu kan hver hændelse der afvikler skyggebanegårdens tog kalde den ekstra hændelse og tingene kan køre i evigheder.
Vægtning
Du kan påvirke tilfældighederne ved at tilføje vægtning af kandidaterne i random-hændelsen. Alle har som udgangspunkt vægtningen 1. Så længe alle kandidaterne har vægtningen 1, vil de alle have lige stor chance for at blive valgt.
Du kan skrue på vægtningen ved at vælge egenskaberne for kandidaten og justere tallet. F.eks. har jeg gjort det sådan at mit intercity-tog bliver valgt oftere end de andre tog. Dermed kører det mere. Sådan kan du altså påvirke driften af togene, og samtidig bevare tilfældighederne.
Hvor meget du skal skrue på vægtningen afhænger af dig selv. Så du må eksperimentere med det og se hvad du synes virker for dig.
Random
Random betyder tilfældig. CS3s random makro kan aktiviere en tilfældig hændelse ud fra en liste af hændelser.
Hvorfor
Random makroen kan benyttes til mange forskellige opgaver. For eksempel kan du krydre din automatik med tilfældigheder, således at det, der ellers vil fremstå som en planlagt rækkefølge af hændelser, vil være mere overlagt til netop tilfældigheder og dermed skabe mere dynamik i din automatik.
Tidligere kunne det samme opnås med en m84 (strømdekoder) og et tilbagemeldingsmodul. Det er dog en dyr løsning, så random makroen er klart at foretrække.
Hvordan
I dette eksempel tager jeg udgangspunkt i en skyggebanegård, hvor togene skal sendes afsted i tilfældig rækkefølge. Jeg antager at du i forvejen har noget automatik med én hændelse for hvert spor, der kalder sin nabo når et tog er ankommet i sporet. Naboen aktiverer sit tog osv.
Ideen er at du her kalder random funktionen i stedet for naboen, hvorved ansvaret for at vælge tog nu ikke længere er fast defineret men overladt til tilfældighederne. Du indsætter altså et ekstra led.
Du finder random makroen i listen af makroer under den hændelse du har oprettet. Når du tilføjer makroen til hændelsen oprettes en ny hændelse som repræsenterer makroen.
Hændelserne der skal være i spil når makroen afvikles tilføjer du til makroens hændelse.
Du kan så kalde makroens hændelse fra den hændelse der skal aktivere makroen.
Samtidighed
Ovenstående vil virke, men du skal være opmærksom på samtidigheden i din automatik. Når random makroen skal vælge en ny hændelse fra listen vil den ikke køre, med mindre, at alle hændelser i listen er afsluttede. Hændelsen som kalder makroen er ikke afsluttet før makro-hændelsen er kørt. Da hændelsen også selv er blandt de mulige kandidater har vi altså et problem. Kan du se problemet?
Systemet vil gå i stå første gang makro-hændelsen skal køre, fordi makroen vil konstatere at en af hændelserne stadig er i gang og dermed afslutte.
For at komme omkring dette, så opretter du en ekstra hændelse der kalder random-hændelsen.
Bemærk! At hændelsen er sat til manuel drift. Dette er fordi den bliver kaldt af hændelserne fra din skyggebanegård og ikke bliver startet af nogen kontakt.
I den ny hændelse indbygger du et stopcheck. Til dit stopcheck kan du bruge en kontrolkontakt som du opretter i artikellisten. Den trækker du ind i hændelsen foran kaldet til makroen.
Stopchecket tjerner to formål:
1. At kontrollere om automatikken skal fortsætte. Det er rart at have en knap der kan afbryde automatikken som helhed. Du behøver ikke at bruge dette, men det er da meget rart at have.
2. At forsinke afviklingen af random makroen, så den kaldende hændelse når at afslutte inden random makroen afvikles. Dermed undgår du at tingene går i stå.
I stedet for at dine hændelser kalder random makroen direkte, skal du ændre dem til at kalde den ekstra hændelse i stedet. Dermed afgiver de kontrollen til ekstra hændelsen, og da den ikke er i spil når der skal vælges en ny hændelse (da den ikke er i listen af mulige hændelser), så går tingene ikke i stå.
Vigtigt! Du må ikke sætte kryds i "Vent" når du skal kalde den ny hændelse. "Vent" betyder at den kaldende hændelse vil vente på at den kaldte hændelse bliver færdig. Som tidligere nævnt, så vil random-hændelsen ikke starte, hvis en af kandidaterne er aktive. Ved at sætte kryds i "Vent" så vil vores hændelse være aktiv når random-hændelsen kører og derved vil tingene gå i stå. Så det duer ikke.
Nu kan hver hændelse der afvikler skyggebanegårdens tog kalde den ekstra hændelse og tingene kan køre i evigheder.
Vægtning
Du kan påvirke tilfældighederne ved at tilføje vægtning af kandidaterne i random-hændelsen. Alle har som udgangspunkt vægtningen 1. Så længe alle kandidaterne har vægtningen 1, vil de alle have lige stor chance for at blive valgt.
Du kan skrue på vægtningen ved at vælge egenskaberne for kandidaten og justere tallet. F.eks. har jeg gjort det sådan at mit intercity-tog bliver valgt oftere end de andre tog. Dermed kører det mere. Sådan kan du altså påvirke driften af togene, og samtidig bevare tilfældighederne.
Hvor meget du skal skrue på vægtningen afhænger af dig selv. Så du må eksperimentere med det og se hvad du synes virker for dig.