jobbe314 Inserito: 8 settembre 2004 Segnala 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.
Claudio Monti Inserita: 8 settembre 2004 Segnala 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
sdrule Inserita: 8 settembre 2004 Segnala 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.
biros66 Inserita: 7 giugno 2005 Segnala 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
rddiego Inserita: 4 luglio 2005 Segnala 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...
bigalex Inserita: 5 luglio 2006 Segnala 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
Piero Azzoni Inserita: 5 luglio 2006 Segnala 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
nibble Inserita: 29 agosto 2006 Segnala 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:
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