aferro Inserito: 22 settembre 2015 Segnala Inserito: 22 settembre 2015 Salve a tutti,sto scrivendo uno script in vbs su WinCC 2008 SP3 per salvare su un file di testo il valore di una variabile stringa (come sapete non si possono usare le funzioni di archiviazione per le variabili di tipo stringa).Lo script è il seguenteDim fs, f, FName, Header, ts FName = "C:\Ark\CP\testUserLog.txt" Header = "Login time;User_Name" Set fs = CreateObject("Scripting.FileSystemObject") fs.CreateTextFile FName 'f.open FName, 8 'Il giro è fatto... sistema lo script e ci siamo If Not fs.FileExists(FName) Then fs.CreateTextFile FName End If Set f = fs.GetFile(FName) Set ts = f.OpenAsTextStream (8,-2) If ts.Size(FName) = 0 Then ts.WriteLine(Header) End If ts.WriteLine(CStr(Now) & ";" & CStr(SmartTags("User_Name"))) ts.Close Set f = Nothing Set fs = Nothing Set ts = NothingLa variabile "User_Name" è quella da salvare nel file di testo (tipo della variabile: stringa) Qualcuno mi può aiutare? Grazie
aferro Inserita: 22 settembre 2015 Autore Segnala Inserita: 22 settembre 2015 Lo script viene richiamato ad ogni cambio del valore della variabile "User_Name"
pigroplc Inserita: 23 settembre 2015 Segnala Inserita: 23 settembre 2015 User_Name è una variabile interna oppure appoggiata al PLC? Se è una variabile interna NON funziona.Io faccio così per tenere traccia dei login:nella schedulazione all'evento cambio utente io lancio un jobnel job faccio girare la funzione leggiNomeUtente in modo da appoggiare il nome ad un tagdopo faccio girare uno script in modo da tenere traccia dell'ultimo accesso con la sintassi: Dim user GetUserName user ' Read User name If user = "" Then ' If no user log on ' then doing nothing Else ' else refresh the username for the production record SmartTags("nome_login_record") = user 'login name for production record purposes End If
aferro Inserita: 23 settembre 2015 Autore Segnala Inserita: 23 settembre 2015 User_Name è una variabile interna oppure appoggiata al PLC? Se è una variabile interna NON funziona.Io faccio così per tenere traccia dei login:nella schedulazione all'evento cambio utente io lancio un jobnel job faccio girare la funzione leggiNomeUtente in modo da appoggiare il nome ad un tagdopo faccio girare uno script in modo da tenere traccia dell'ultimo accesso con la sintassi: è esattamente quello che faccio anche io per tenere traccia dei login. Il problema è il tipo della variabile User_Name, che mi costringe a dover creare uno script che crea un file per dove salvare di volta in volta (ogni cambio valore della variabile) il suo valore.Quindi dici che essendo User_Name una variabile interna non mi richiama lo script quando all'evento "Cambio Valore" lo inserisco?
pigroplc Inserita: 23 settembre 2015 Segnala Inserita: 23 settembre 2015 Esatto. Ti riporto il testo dal sito di mamma Siemens:2. Perché non viene eseguita la funzione di sistema sull’evento "Variazione di valore" su una variabile interna? L’esecuzione di funzioni di sistema che siano progettate sull’evento "Variazione di valore" con variabili interne viene bloccata tramite variazione di valore in uno script (Loop breaker). Eccezione Con variazione di valore di una variabile su un campo di I/O la funzione viene eseguita. Rimedio Eseguire la funzione di sistema direttamente nello script opp. utilizzare una variabile esterna (Power Tag) con collegamento al controllore. Il mio consiglio è quello di collegare un tag del PLC (anche una word per esempio) e forzarlo = 2 con il famoso job. Il tag ovviamente deve essere in lettura continua e deve avere come limiti 0 e 1 (inferiore e superiore). Nelle proprietà del tag metti in esecuzione lo script al superamento del valore superiore.In ultimo, nello script azzeri il famoso tag alla fine esecuzione, in modo da eseguire lo script una volta sola.
aferro Inserita: 23 settembre 2015 Autore Segnala Inserita: 23 settembre 2015 Potresti essere più specifico?Perdonami ma sono un web designer trapiantato nel mondo PLC... Riesci a farmi qualche screenshot con la configurazione che deve avere il tag?
pigroplc Inserita: 23 settembre 2015 Segnala Inserita: 23 settembre 2015 Perdonami ma sono un web designer trapiantato nel mondo PLC....... Ma chi te l'ha fatto fare???? Devi aver fatto qualcosa di male per migrare nella automazione! nello script questo tag poi lo devi mettere = 0 altrimenti continua a ciclare.
aferro Inserita: 23 settembre 2015 Autore Segnala Inserita: 23 settembre 2015 Alla fine ho risolto lo stesso.. Visto che nella mia supervisione avevo diversi plc collegati, ho associato la variabile ad un plc a caso e l'ho puntata su un indirizzo fittizzio.. Funziona ahahaha
pigroplc Inserita: 25 settembre 2015 Segnala Inserita: 25 settembre 2015 Forse non mi sono spiegato bene, ma la necessità di puntare un tag NON INTERNO era già menzionata nella mia risposta al thread n'5.
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