jobbe314 Inserito: 8 settembre 2004 Segnala Share Inserito: 8 settembre 2004 Buongiorno a tutti,dovrei programmare un TSX3710 con PL7PRO per la generazione di un allarme, però in modo del tutto casuale.esiste un modo per generare un numero randomico?grazie. Link al commento Condividi su altri siti More sharing options...
Claudio Monti Inserita: 8 settembre 2004 Segnala Share Inserita: 8 settembre 2004 L'istruzione per creare un numero random non e' presente in PL7... comunque puoi generarlo partendo da un valore che ti cambia in continuazione, come ad esempio l'orario.Devi usare l'ora nel formato TOD (time of day, cercalo nell'.) e lo metti su una %MD (es. 23:12:27), quindi usi la funzione TOD_TO_STRING mettendo il contenuto della MD in una tabella di MB come formato stringa (es. %MB2:9=TOD_TO_STRING(%MD40)).A questo punto puoi eliminare i caratteri ":" ed ottieni un valore numerico che puoi testare es. sulla %MW1, lo puoi manipolare come credi facendo */+- ...Ti consiglio di allacciarti ad un PLC e vedere cosa salta fuori Buon lavoro Link al commento Condividi su altri siti More sharing options...
sdrule Inserita: 8 settembre 2004 Segnala Share Inserita: 8 settembre 2004 Puoi anche utilizzare la %SW18 che è un contatore (un numero "pulito") di tempo assoluto incrementato ogni 1/10 sec. ed azzerato ad ogni riavvio. Forse è più immediato della ripulitura dell' orodatario dai caratteri ascii. Link al commento Condividi su altri siti More sharing options...
Claudio Monti Inserita: 8 settembre 2004 Segnala Share Inserita: 8 settembre 2004 Si', meglio! Ottima idea Link al commento Condividi su altri siti More sharing options...
biros66 Inserita: 7 giugno 2005 Segnala Share Inserita: 7 giugno 2005 ...ma cosa dite fai così:incrementa una qualsiasi %MD:IF NOT %S13 THEN %MD0:=%MD0+1;END_IF;in questa maniera ottieni un numero che cambia valore ogni scansione del PLC.Ciao Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 4 luglio 2005 Segnala Share Inserita: 4 luglio 2005 ma scusate un numero randomico non è un numero che cambia in maniera casuale?A me sembra che tutte le soluzioni proposte riguardano normali progressioni ben conosciute... Link al commento Condividi su altri siti More sharing options...
bigalex Inserita: 5 luglio 2006 Segnala Share Inserita: 5 luglio 2006 Concordo con rddiego , il numero randomico è un'altra cosa .Le proposte suindicate sono un tentativo di emulazione , ma il valore ha sempre una sola direzione rispetto al precedente , mentre un numero randomico ha direzione duplice (> o <) rispetto al precente oltre ad avere un segno ( >0 o <0 ) .Quindi converrebbe creare un algoritmo che preveda almeno queste due componenti .Ciaobigalex Link al commento Condividi su altri siti More sharing options...
Piero Azzoni Inserita: 5 luglio 2006 Segnala Share Inserita: 5 luglio 2006 non conosco lo specifico plc, ma sicuramente la metodologia che si avvicina di piu' al random e' il moduloprendi due registri di controllo di due timer ed esegui il il modulo del maggiore rispetto al minoreottieni un numero sicuramente casualese riduci le cifre significative ad un formato fisso e consideri questo numero tutto decimale ottieno il random canonico che varia da 0 a 1 Link al commento Condividi su altri siti More sharing options...
nibble Inserita: 29 agosto 2006 Segnala Share Inserita: 29 agosto 2006 Salve, un'altra idea potrebbe essere la seguente, che più si avvicina a quanto correttamentescritto da Piero, ovvero una simulazione dell'istruzione RND (Randomize):!%M5:=%S5; ---> creo un'immagine del clock a 100ms!IF %MF0>90.0 AND RE %M5 THEN ---> ogni 100ms incremento di 0.1 un registro a virgola mobile %MF0:=0.0; controllando il range da 0.0 a 90.0 (1° radiante cerchio trigonom.)ELSE %MF0:=%MF0+0.1;END_IF;!%MF2:=COS(DEG_TO_RAD(%MF0)); ---> calcolo il Coseno dell'angolo ed ottengo il famoso RND con valori compresi tra 0 ed 1.ByeNibble"... a volte ritornano!" :ph34r: Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora