rickystar Inserito: 24 agosto 2005 Segnala Inserito: 24 agosto 2005 Ciao a tuttiSto lavorando con Protool e avrei bisogno di una script che si ripeta ogni tot secondi senza appoggiarmi ad una variabile a plc. E' possibile farlo in qualche modo?Grazie Ciao
Matteo Montanari Inserita: 24 agosto 2005 Segnala Inserita: 24 agosto 2005 piuttosto che uno script non ti conviene utilizzare la funzione di schedulazione?
rickystar Inserita: 24 agosto 2005 Autore Segnala Inserita: 24 agosto 2005 Si, hai ragione, posso fare anche così, ma avrei bisogno di un refresh max ogni 10 sec mentre con la schedulazione è minimo ogni minuto. Hai qualche altro spunto?Grazie ciao
Matteo Montanari Inserita: 24 agosto 2005 Segnala Inserita: 24 agosto 2005 (modificato) non ricordo se in protool è possibile creare una nuova varibile di schedulazione, magari anche più bassa del minuto. controllo nei manuali.altre soluzioni non nè ho.gli script funzionano come in VB, magari per il ritardo esiste una funzione (o una struttura già predisposta).devi comunque utilizzare una varibile, interna al pannello e crearti la logica come nel PLC: negato della varibile -> attivazione tempo; tempo raggiunto -> attivazione varibile Modificato: 24 agosto 2005 da keosmm
rickystar Inserita: 25 agosto 2005 Autore Segnala Inserita: 25 agosto 2005 Grazie mille per l'aiuto.Ciao
Val Inserita: 2 settembre 2005 Segnala Inserita: 2 settembre 2005 Ciao rickystar, se ti può interessare qui c'è uno script che ho scrittotempo fa per eseguire quello che serve a te, non è proprio immediatoda utilizzare ma funziona molto bene (facendo attenzione ad alcuni particolari)i commenti sono in inglese perchè era una commessa per gli emirati..spero non sia un problema...Primo - implementare questa funzione scriptLa funzione accetta un parametro in ingresso che si chiama "SecSleep"_________________________________________________________________Dim n,sSleep = false 'Init return value to FALSEs = 0 'Init counter variable to 0n = Second(Time) 'Init compare variable to actual second value (0 to 59)Do While SecSleep >= s 'Wait until Time by parameter is >= of counter If n <> Second(Time) Then 'Each second "n" is reassigned to actual second.. n = Second(Time) 'and the counter inc of 1 s = s + 1 End IfLoopSleep = true 'End of function with TRUE value to use in the calling sub_________________________________________________________________Secondo - in un secondo script crea un loop gestito da un TAG booleano prima o dopo la chiamata a sleep inserisci le tue istruzioni.. nell'esempio seguente ho inserito la logica per eseguire il toggle di un bool, ma ovviamente può essere inserita qualunque operazione la quale verrà eseguita ogni 10 sec. Devi tenere presente che un task come questo gira sempre su pannello quindi inibisce l'arresto del runtime, per questo devi prevedere un TAG interno che sia gestibile da pannello in modo da poterlo arrestare, il lancio di questo script lo puoi legare all'evento di costruzione della pgina definita come main o principale. Ultima considerazione, non eseguire operazioni di stampa report con questo sistema, o avrai prblemi con la stampa su evento degli allarmi per motivi un po' troppo lunghi da spiegare adesso..._________________________________________________________________Dim cc = 0Do While TAG Call Sleep(10) 'SecSleep è impostato a 10 sec If c = 0 Then Call PtFct.Setta_bit(PtVar.TAG2) c = 1 Else Call PtFct.Resetta_bit(PtVar.TAG2) c = 0End IfLoop_________________________________________________________________Spero di esserti stato utile, ciao
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