Event sur changement variable VBScript
Bonjour , je suis entrein de créer un fichier Excel qui permet d'enregistrer les action de l'utilisateur sur écran HMI. Pour l'instant c'est un code test avec seulement 2 BP avant de l'adapter sur une machine. Mon projet est fonctionnel et écrit tout les secondes sur le fichier l'état de mes 2 BP. Seulement j'aimerai qu'il écrive sur le fichier Excel SEULEMENT quand une des variables CHANGE D'ETAT (et non toutes les secondes car le fichier se remplis vite). C'est pour savoir s'il y a une possibilité de le faire avec les "Archives" si pas , un autre moyen ? Merci
PS: je suis sur WinCC
Voici mes 3 scripts ==>
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Sub Continue()
Dim EcritureContinue
Dim FolderWay , ObjectWay , FileName , File , FileExist, header , value , currentTime ' Declaration des variables
FolderWay = "C:\Users\XXXXX\Downloads\STAGE\ExcelExemple" 'Là ou l'on veut enregistrer le fichier Excel sous un nom
Set ObjectWay = CreateObject ("Scripting.FileSystemObject") 'Creation d'un object pour voir si le dossier est créé ou pas
'Si le dossier n'existe pas, on le créer.
If Not ObjectWay.FolderExists(FolderWay) Then
ObjectWay.CreateFolder FolderWay
End If
'FileName = Year(Now()) & "_" & Month(Now()) &"_" & Day(Now()) & "-" & Hour(Time) & "_" & Minute(Time) & "_" & Second(Time) & ".csv"
FileName = "EnregistrementValeur.csv"
Set File = CreateObject ("Scripting.FileSystemObject") ' Creation d'un object pour voir si le fichier est créé ou pas
FileExist = File.FileExists(FolderWay & "\" &FileName) ' On créer une variable qui indique le chemin du fichier
'Si le fichier n'existe pas, on le créer
If FileExist = False Then
'On créer le fichier
File.CreateTextFile(FolderWay & "\" &FileName)
'On créer maintenant les en-têtes du fichier Excel
Set header = File.OpenTextFile(FolderWay & "\" &FileName, 8) ' Le 8 signifie "ouvrir le dossier et écrire à la fin"
header.WriteLine("Temps ; ActionA ; ActionB")
header.Close 'Pas oublier de fermer quand on a fini sinon la suite se fera dans les headers
'On vide l'objet
Set File = Nothing
End If
Do
Call WriteDataToExcel (value, currentTime, File, FolderWay, FileName)
EcritureContinue = SmartTags("BpStopLog") 'J'appel le 1er script
Call Delay
Loop While ( EcritureContinue = False) ' tant que le BPSTOPLOG vaut 0 , on continue d'écrire
End Sub |
Code:
1 2 3 4 5 6 7 8 9
| Sub Delay()
Dim time1, time2
time1= Now
time2= Now + TimeValue ("0:00:01")
Do Until time1>= time2
time1= Now()
Loop
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Sub WriteDataToExcel(ByRef value, ByRef currentTime, ByRef File, ByRef FolderWay, ByRef FileName)
currentTime = Hour(Time) & ":" & Minute(Time) & ":" & Second(Time)
Set File = CreateObject ("Scripting.FileSystemObject")
Set value = File.OpenTextFile(FolderWay & "\" &FileName, 8)
value.WriteLine ( currentTime & ";" & SmartTags("ActionA") & ";" & SmartTags("ResetActionA")) ' ";" sépare les collonnes dans Excel
value.Close
End Sub |
Je ne sais pas si WinCC propose une option sans pour autant créer + de variable pour conserver l'état précédant..