Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Script Protool - Fare una script temporizzata


Messaggi consigliati

Inserito:

Ciao a tutti

Sto 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:

piuttosto che uno script non ti conviene utilizzare la funzione di schedulazione?

Inserita:

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: (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: da keosmm
  • 2 weeks later...
Inserita:

Ciao rickystar, se ti può interessare qui c'è uno script che ho scritto

tempo fa per eseguire quello che serve a te, non è proprio immediato

da 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 script

La funzione accetta un parametro in ingresso che si chiama "SecSleep"

_________________________________________________________________

Dim n,s

Sleep = false 'Init return value to FALSE

s = 0 'Init counter variable to 0

n = 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 If

Loop

Sleep = 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 c

c = 0

Do 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 = 0

End If

Loop

_________________________________________________________________

Spero di esserti stato utile, ciao

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...