southofsanity Inserito: 12 ore fa Segnala Inserito: 12 ore fa Salve volevo fare uno script che se il tasto rimane premuto per 3 secondi aggiorna una variabile ma se rilascio prima non si aggiorna, ho fatto vari tentativi ma non riesco a trova l'evento che controlla se il tasto e premuto, ho povato con enabled ma niente appena premo il pulsante dopo 3 sec la variabile si aggiorna. qualche idea ? grazie mille di seguito lo script Dim TagApp Dim Tempo, Fine, i Fine= Now+3/24/3600 Do If Now>Tempo + 1/24/3600 Then i = i+1 Tempo= Now End If Loop Until Now>=Fine 'If ScreenItems("Pulsante1").Enabled Then Set TagApp = HMIRuntime.Tags("prova") TagApp.Read TagApp.Value = 365 TagApp.Write 'End If
drn5 Inserita: 12 ore fa Segnala Inserita: 12 ore fa me la giocherei con set e reset del bit a livello premi/rilascia nel pannello e poi i 3" li gestirei a plc.
southofsanity Inserita: 11 ore fa Autore Segnala Inserita: 11 ore fa Ciao, Non volevo farlo gestire dal PLC perche e gia abbastanza carico e i pulsanti sono un centinaio su serie 300. comunque grazie
lucios Inserita: 11 ore fa Segnala Inserita: 11 ore fa (modificato) Quote ho fatto vari tentativi ma non riesco a trova l'evento che controlla se il tasto e premuto Sono piuttosto arrugginito con VB Script ma so che esistono eventi quali keypress, keydown, click, ecc. Questi sono appunto "eventi" che scattano quando avviene qualcosa ("click" quando clicchi sul bottone, keypress quando il bottone è premuto e rilasciato, ecc.). Enabled non serve perchè indica se il bottone è abilitato o meno alle azioni. Il giochino potrebbe essere di far partire un timer di 3 secondi sull'evendo keydown e stopparlo sull'evento keyup. Sull'evento tick del timer attivare la tua variabile. Però in VB script sinceramente non mi ricordo come funzionano i timer, prova a documentarti. Modificato: 11 ore fa da lucios
southofsanity Inserita: 11 ore fa Autore Segnala Inserita: 11 ore fa (modificato) Si volevo fare esattamente questo, ma non trovo la sintassi corretta, e il vb di wincc 8 non e il massimo nel correttore di sintassi, per lui va sempre bene anche se ci scrivi la divina commedia, il timer funziona, funziona tutto , mi manca di trovare la funzione tasto premuto , grazie Modificato: 11 ore fa da southofsanity
drn5 Inserita: 11 ore fa Segnala Inserita: 11 ore fa Poi ci penso come farla a livello hmi..nel frattempo però l'idea di tenere il pannello fermo per 3" in un ciclo DO LOOP è semplicemente sbagliata. Per quello la demanderei al PLC, al di là della quantità di pulsanti presenti che potrebbero tutti quanti condividere la stessa routine perché comunque i pulsanti premuti non possono essere più di uno alla volta.
southofsanity Inserita: 10 ore fa Autore Segnala Inserita: 10 ore fa Fatto, lo posto se sesrvisse, bisogna appoggiare l'elemento ad una variabile, direttamente non lo gestisce... ma va la va la va la nel 2025. Dim TagApp, Button Dim LastTime, StopTime, i Set Button = ScreenItems("Pulsante1") StopTime= Now+3/24/3600 Do If Now>LastTime + 1/24/3600 Then i = i+1 LastTime= Now End If Loop Until Now>=StopTime If Button.Pressed = 1 Then Set TagApp = HMIRuntime.Tags("prova") TagApp.Read TagApp.Value = 0 TagApp.Write End If
Livio Orsini Inserita: 7 ore fa Segnala Inserita: 7 ore fa 3 ore fa, southofsanity ha scritto: Fatto, lo posto se sesrvisse Ottimo, proprio nello spirito del forum che auspica la condivisione delle informazioni e delle conoscenze.
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