Vai al contenuto
PLC Forum


Info Vb script Wincc 8


Messaggi consigliati

southofsanity
Inserito:

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
 


Inserita:

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:

Ciao, Non volevo farlo gestire dal PLC perche e gia abbastanza carico e i pulsanti sono un centinaio su serie 300. comunque grazie

Inserita: (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: da lucios
southofsanity
Inserita: (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: da southofsanity
Inserita:

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:

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

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...