• Aucun résultat trouvé

CreerDatabases

'Déclarartion des variables

Dim conn, rst, SQL, Message,RuntimeStart

'Preparation pour l'acces à la base de données Set conn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset")

'DSN = Nom de la base de données ODBC configuré conn.Open "Provider=MSDASQL;DSN=WinCCFlexible"

'Message à afficher en cas d'erreur

Message = "La base de donnée existe déjà"

'Gestion d'erreur On Error Resume Next Err.Clear

'Creation de la base de données avec nom associé à l'année et au mois en cours

If Routine = False Then

SQL = "CREATE DATABASE ARCHIVE_" & Month(Now) & "_" & Year(Now) Set rst = conn.execute(SQL)

'Affichage de alarme système si la table de la base existe déjà pour ce mois

If Err.Number <> 0 Then

ShowSystemAlarm Message End If

Routine = True End If

'Liberation de la mémoire Set rst = Nothing

Set conn = Nothing

ArchiverDatabases

'Déclarartion des variables

Dim conn, rst, SQL,Jour, Mois, Annee, Heure, NomTable, i 'Preparation pour l'acces à la base de données

Set conn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset")

'DSN = Nom de la base de données ODBC configuré conn.Open "Provider=MSDASQL;DSN=WinCCFlexible"

'Après changement du mois, une nouvelle base de données sera crée If (Day(Now)=1) = True And (Hour(Now)=0) = True Then

SQL = "CREATE DATABASE ARCHIVE_" & Month(Now) & "_" & Year(Now) Set rst = conn.execute(SQL)

End If

'Après changement de l'heure, On recupère les données de la date passée 'avant de créer une nouvelle table

Date_Passee = DateAdd("h", -1, Now) Jour= Day(Date_Passee)

Mois = Month(Date_Passee) Annee = Year(Date_Passee)

'le dbo est un "Key word"

NomTable = "[ARCHIVE_" & Mois & "_" & Annee & "].dbo."

NomTable = NomTable & "ARCHIVE_" & Jour & "_" & Mois & "_" & Annee & "_" &

Heure

'Copie des valeurs archivées pendant une heure de temps 'vers la table de la base de données

SQL = "SELECT * INTO " & NomTable & " FROM Archive_Variables0 WHERE TimeString >= '"& CDate(Jour & "/" & Mois & "/" & Annee & " " & Heure &

":0:0") & "' And TimeString <= '"& CDate(Jour & "/" & Mois & "/" & Annee &

" " & Heure & ":59:59") & "'"

'Excécution de la requette SQL Set rst = conn.execute(SQL)

'Les données peuvent être effacer de l'archive après un quart SQL = "DELETE FROM Archive_Variables0"

'Excécution de la requette SQL Set rst = conn.execute(SQL)

'Fermeture de la connexion à la base de donnée conn.Close

'Libération de la memoire Set rst = Nothing

Set conn = Nothing

ChargerArchive

Dim conn,rst, SQL, Message, Jour

'Preparation pour l'acces à la base de données Set conn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset")

'DSN = Nom de la base de données ODBC configuré conn.Open "Provider=MSDASQL;DSN=WinCCFlexible"

'Message à afficher en cas d'erreur

Message = "la table de la base demandée n'existe pas"

'Gestion d'erreur On Error Resume Next Err.Clear

'Copie des valeurs archivées pendant une heure de temps 'vers la table de la base de données

SQL = "SELECT * From Archive_Variables0"

Set rst = conn.execute(SQL)

'Affichage de alarme système si la table de la base n'existe pas If Err.Number <> 0 Then

ShowSystemAlarm Message Else

'La table de la courbe archivée est éffacée avant de charger l'archive demandée

SQL = "DELETE FROM Archive_Courbes0"

Set rst = conn.execute(SQL)

SQL = "INSERT INTO Archive_Courbes0 SELECT * FROM Archive_Variables0"

Set rst = conn.execute(SQL) End If

conn.Close

'Libération de la mémoire Set rst = Nothing

Set conn = Nothing

'Régler l'affichage de la courbe SmartTags("Courbe") = 0

'Initialiser les champs entrées sorties Sel_Courbe = 1

'Activer le bouton courbe en temps reel SmartTags("CTR") = 1

'Activer le bouton courbe en temps reel SmartTags("CARCH") = 0

ChargerCourbe

Dim conn, rst, SQL, NomTable, Heure, Dates, Message1, Message2, courb, tps, Fin, regle

'Preparation pour l'acces à la base de données Set conn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset")

'DSN = Nom de la base de données ODBC configuré

Message1 = "L'intervalle de temps a été mal choisi"

Message2 = "la table de la base demandée n'existe pas"

'Gestion d'erreur

For tps = SmartTags("Sel_HDebut") To (SmartTags("Sel_HFin")-1) 'Creation du nom de la table par concatenation

'le dbo est un "Key word"

NomTable = "[ARCHIVE_" & SmartTags("Sel_Mois") & "_" &

SmartTags("Sel_Annee") & "].dbo."

NomTable = NomTable & "ARCHIVE_" & SmartTags("Sel_Jour") & "_" &

SmartTags("Sel_Mois") & "_" & SmartTags("Sel_Annee") & "_" & tps 'Copie des valeurs archivées pendant une heure de temps 'vers la table de la base de données

SQL = "SELECT * From" & NomTable Set rst = conn.execute(SQL)

'Affichage de alarme système si la table de la base n'existe pas If Err.Number <> 0 Then

ShowSystemAlarm Message2 regle = 1

Else

courb = CourbeSelec

If (SmartTags("Courbe") = 0 And tps = SmartTags("Sel_HDebut")) Then

'La table de la courbe est éffacée avant de charger l'archive historique

SQL = "DELETE FROM Archive_Courbes0"

Set rst = conn.execute(SQL) End If

'Copie des données de l'archive historique vers l'archive de courbe

SQL = "INSERT INTO Archive_Courbes0 SELECT * FROM " &

NomTable & " WHERE VarName = '" & courb & "'"

Set rst = conn.execute(SQL) End If

Next

Dates = SmartTags("Sel_Jour") & "/" & SmartTags("Sel_Mois") & "/" &

SmartTags("Sel_Annee")

Heure = SmartTags("Sel_HFin")-1 & ":59:55" ' Fin = CDate(Dates & " " & Heure)

SQL = "UPDATE Archive_Courbes0 SET VarValue = 0 WHERE Timestring >= '"

& Fin & "'"

Set rst = conn.execute(SQL) End If

'Fermeture de la connexion à la base de donnée conn.Close

'Libération de la mémoire Set rst = Nothing

Set conn = Nothing If regle <> 1 Then

'Activer le bouton archive SmartTags("CARCH") = 1

'Régler l'affichage de la courbe

Dates = SmartTags("Sel_Jour") & " " & SmartTags("Sel_Mois") & " " &

SmartTags("Sel_Annee")

SmartTags("Courbe") = CDate(Dates & " " & Heure) End If

Dim Obj, StrScreenName Set Obj = HmiRuntime

StrScreenName = Obj.BaseScreenName If StrScreenName="COURBE DEBITS" Then

ActivateScreen "COURBE DEBITS", 0 End If

If StrScreenName="COURBE DEBITS" Then ActivateScreen "COURBE DEBITS", 0

Else If StrScreenName="TEMPERATURES BROYEUR" Then ActivateScreen "TEMPERATURES BROYEUR", 0

Else If StrScreenName="TEMPERATURES MOTEUR Z1M03M1" Then ActivateScreen "TEMPERATURES MOTEUR Z1M03M1", 0 Else If StrScreenName="INTENSITE" Then

ActivateScreen "INTENSITE", 0

Else If StrScreenName="PROCESS" Then ActivateScreen "PROCESS", 0

Else If StrScreenName="C/K JOURNALIER" Then ActivateScreen "C/K JOURNALIER", 0 Else If StrScreenName="COURBE ADJUVANT"

Then

ActivateScreen "COURBE ADJUVANT", 0 End If

Dim conn, rst, SQL,Jour, Mois, Annee, Heure, NomTable, i 'Preparation pour l'acces à la base de données

Set conn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset")

'DSN = Nom de la base de données ODBC configuré conn.Open "Provider=MSDASQL;DSN=WinCCFlexible"

'Après changement du mois, une nouvelle base de données sera crée If (Day(Now)=1) = True And (Hour(Now)=0) = True Then

SQL = "CREATE DATABASE ARCHIVE_" & Month(Now) & "_" & Year(Now) Set rst = conn.execute(SQL)

End If

'Après changement de l'heure, On recupère les données de la date passée 'avant de créer une nouvelle table

Date_Passee = DateAdd("h", -1, Now) Jour= Day(Date_Passee)

Mois = Month(Date_Passee) Annee = Year(Date_Passee) Heure = Hour(Date_Passee)

'le dbo est un "Key word"

NomTable = "[ARCHIVE_" & Mois & "_" & Annee & "].dbo."

NomTable = NomTable & "ARCHIVE_" & Jour & "_" & Mois & "_" & Annee & "_" &

Heure

'Copie des valeurs archivées pendant une heure de temps 'vers la table de la base de données

SQL = "SELECT * INTO " & NomTable & " FROM Archive_Variables0 WHERE TimeString >= '"& CDate(Jour & "/" & Mois & "/" & Annee & " " & Heure &

":0:0") & "' And TimeString <= '"& CDate(Jour & "/" & Mois & "/" & Annee &

" " & Heure & ":59:59") & "'"

'Excécution de la requette SQL Set rst = conn.execute(SQL)

'Les données peuvent être effacer de l'archive après un quart SQL = "DELETE FROM Archive_Variables0"

'Excécution de la requette SQL Set rst = conn.execute(SQL)

'Fermeture de la connexion à la base de donnée conn.Close

'Libération de la memoire Set rst = Nothing

Set conn = Nothing

ExporterDatabases

'Déclarartion des variables

Dim conn, rst, SQL, fso, Chemin, kette, NomTable, NomTable_CSV ,Message1 ,Message2, courb, tps

'Preparation pour l'acces à la base de données Set conn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset")

'DSN = Nom de la base de données ODBC configuré conn.Open "Provider=MSDASQL;DSN=WinCCFlexible"

'Message à afficher en cas d'erreur

Message1 = "L'intervalle de temps a été mal choisi"

Message2 = "la table de la base demandée n'existe pas"

'Fehlerbehandlung 'Error handling On Error Resume Next Err.Clear

courb = CourbeSelec

If (SmartTags("Sel_HDebut")>=SmartTags("Sel_HFin")) Then ShowSystemAlarm Message1

Else

'La table de la courbe est éffacée avant de charger l'archive historique

SQL = "DELETE FROM Archive_Export0"

conn.Execute(SQL)

For tps = SmartTags("Sel_HDebut") To (SmartTags("Sel_HFin")-1) 'Creation du nom de la table par concatenation

'le dbo est un "Key word"

NomTable = "[ARCHIVE_" & SmartTags("Sel_Mois") & "_" &

SmartTags("Sel_Annee") & "].dbo."

SmartTags("Sel_Mois") & "_" & SmartTags("Sel_Annee") & "_" & tps 'Copie des valeurs archivées pendant une heure de temps 'vers la table de la base de données

SQL = "SELECT * From" & NomTable conn.execute(SQL)

'Affichage de alarme système si la table de la base n'existe pas If Err.Number <> 0 Then

ShowSystemAlarm Message2 Else

'Copie des données de l'archive historique vers l'archive de courbe

SQL = "INSERT INTO Archive_Export0 SELECT * FROM " &

NomTable & " WHERE VarName = '" & courb & "'"

conn.execute(SQL) End If

Next End If

'Creer le nom du fichier .CSV

NomTable_CSV = courb & "_" & SmartTags("Sel_Jour") & "_" &

SmartTags("Sel_Mois") & "_" & SmartTags("Sel_Annee") & "_" &

SmartTags("Sel_HDebut") & "_" & SmartTags("Sel_HFin") 'Lire les valeurs de la table

SQL = "SELECT * FROM Archive_Export0"

'Exécuter la requette SQL Set rst = conn.execute(SQL)

'Affichage de alarme système si la table de la base n'existe pas If Err.Number <> 0 Then

ShowSystemAlarm Message2 Else

'Création du fichier .CSV

Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists("C:\ARCHIVES\" & NomTable_CSV & ".csv") Then ShowSystemAlarm NomTable_CSV & ".csv existe déjà!"

Else

'Création du chemin du nouveau fichier

Set Chemin = fso.OpenTextFile("C:\ARCHIVES\Template.csv",8,True) If Not(rst.bof And rst.eof) Then 'S'excécute si on entre dans une table exixtant -> BOF = Begin of File; EOF = End of File

rst.movefirst 'Selection de la première ligne kette = ""

'Creation d'une première ligne

kette = kette & Chr(34) & rst.fields(0).name & Chr(34)

& ";" 'Lecture de la colonne 1 -> VarName

kette = kette & Chr(34) & rst.fields(1).name & Chr(34)

& ";" 'Lecture de la colonne 2 -> TimeString

kette = kette & Chr(34) & rst.fields(2).name & Chr(34)

& ";" 'Lecture de la colonne 3 -> VarValue

kette = kette & Chr(34) & rst.fields(3).name & Chr(34)

& ";" 'Lecture de la colonne 4 -> Validity

kette = kette & Chr(34) & rst.fields(4).name & Chr(34) 'Lecture de la colonne 5 -> Time_ms

Chemin.WriteLine kette While Not rst.eof

'Lire le détail des valeurs de chaque ligne

CDate(rst.fields(1).value) & Chr(34) & ";"

kette = kette & rst.fields(2).value & ";"

kette = kette & rst.fields(3).value & ";"

kette = kette & rst.fields(4).value Chemin.WriteLine kette

rst.movenext 'Aller à la ligne suivante Wend

rst.close End If

End If

Chemin.Close

'Renommé le fichier "Template.csv"

Set Chemin = fso.GetFile("C:\ARCHIVES\Template.csv") Chemin.Name = NomTable_CSV & ".csv"

ShowSystemAlarm NomTable_CSV & ".csv a été bien exporté!"

End If

'Fermeture de la connexion à la base de donnée et libérartion de mémoire conn.Close

Set rst = Nothing Set conn = Nothing

CourbeSelec

Dim Obj, StrScreenName, courb Set Obj = HmiRuntime

StrScreenName = Obj.BaseScreenName Select Case SmartTags("Sel_Courbe")

Case 1

If StrScreenName="COURBE DEBITS" Then courb = "COURBE_TOT"

Else If StrScreenName="TEMPERATURES BROYEUR" Then courb = "Z1M01B1_COURBE"

Else If StrScreenName="TEMPERATURES MOTEUR Z1M03M1"

Then

courb = "Z1M03B1_COURBE"

Else If StrScreenName="INTENSITE" Then courb = "U1U06A1_COURBE"

Else If StrScreenName="PROCESS" Then courb = "Z1B01T1_COURBE"

If StrScreenName="COURBE DEBITS" Then courb = "COURBE_GY"

Else If StrScreenName="TEMPERATURES BROYEUR" Then

Else If StrScreenName="TEMPERATURES MOTEUR Z1M03M1"

Then

courb = "Z1M03B2_COURBE"

Else If StrScreenName="INTENSITE" Then courb = "G1U02A1_COURBE"

Else If StrScreenName="PROCESS" Then courb = "Z1M01T3_COURBE"

If StrScreenName="COURBE DEBITS" Then courb = "COURBE_CK"

Else If StrScreenName="TEMPERATURES BROYEUR" Then courb = "Z1M01B3_COURBE"

Else If StrScreenName="TEMPERATURES MOTEUR Z1M03M1"

Then

courb = "Z1M03B3_COURBE"

Else If StrScreenName="INTENSITE" Then courb = "G1M01A1_COURBE"

Else If StrScreenName="PROCESS" Then courb = "Z1P11T2_COURBE"

If StrScreenName="COURBE DEBITS" Then courb = "COURBE_AJ"

Else If StrScreenName="TEMPERATURES BROYEUR" Then courb = "Z1M01B4_COURBE"

Else If StrScreenName="TEMPERATURES MOTEUR Z1M03M1"

Then

courb = "Z1M03B4_COURBE"

Else If StrScreenName="INTENSITE" Then courb = "Z1P05A1_COURBE"

Else If StrScreenName="PROCESS" Then courb = "Z1P05S1_COURBE"

If StrScreenName="COURBE DEBITS" Then courb = "COURBE_FOLA"

Else If StrScreenName="TEMPERATURES BROYEUR" Then courb = "Z1M02B2_COURBE"

Else If StrScreenName="TEMPERATURES MOTEUR Z1M03M1"

Then

courb = "Z1M03B5_COURBE"

Else If StrScreenName="INTENSITE" Then courb = "Z1P11A1_COURBE"

Else If StrScreenName="PROCESS" Then courb = "Z1M01P2_COURBE"

End If End If

Case 6

If StrScreenName="COURBE DEBITS" Then courb = "Oreille_HASLER_Courbe"

Else If StrScreenName="TEMPERATURES BROYEUR" Then courb = "Z1M02B3_COURBE"

End If End If

End Select

'On recupère la valeur de retour de la fonction CourbeSelec = courb 'Valeur de retour

ExporterVersFiche

'Déclarartion des variables

Dim fso, f, MyFile, Clinker, Gypse, Ajout, Alim, Oreille, Pallier, Symetro Dim Moteur, Temp, Depression, Ventilateur, ElectroFiltre, ProdFini, P1P11 Dim Donnees1, Donnees2, Donnees

'Création de l'objet système

Set fso = CreateObject("Scripting.FileSystemObject") 'Création et ouverture du fichier de données

Set MyFile = fso.OpenTextFile("D:\donnees.txt",2,True) 'Enregistrement des données

Clinker = " ;" & Cpt_CK_J & ";"

Gypse = G1J01V1 & ";" & G1M01A1 & "; ;" & Cpt_GY_J & ";"

Ajout = " ;" & Cpt_AJ_J & ";"

Alim = DB_GEN & "; ;"

Oreille = BruitOreille & ";"

Pallier = Z1M01B1 & ";" & Z1M01B2 & ";" & Z1M01B3 & ";" & Z1M01B4 & ";"

Symetro = Z1M02B2 & ";"

Moteur = " " & ";" & Z1M03B4 & ";" & Z1M03B5 & ";" & Z1M03B1 & ";"

Temp = Z1B01T1 & ";" & Z1M01T3 & ";" & Z1P11T2 & ";"

Depression = Z1M01P1 & ";" & Z1M01P2 & ";"

Ventilateur = Z1P05A1 & ";" & Z1P05S1 & ";"

ElectroFiltre = Z1P11E1 & ";" & Z1P11A1 & ";"

ProdFini = " " & ";" & " " & ";" & " " & ";" & " " & ";" & " " & ";"

P1P11 = "Oui" & ";"

Donnees1 = Clinker & Gypse & Ajout & Alim & Oreille & Pallier & Symetro &

Moteur

Donnees2 = Temp & Depression & Ventilateur & ElectroFiltre & ProdFini &

P1P11

Donnees = " ; ; ; ; ;" & Donnees1 & Donnees2 'Ecriture des données dans le fichier texte MyFile.WriteLine(Donnees)

'Fermeture du fichier MyFile.Close

'Ouverture du fichier servant de passerelle

'pour le transfert des données vers le fichier excèl TRACHING TOOL StartProgram "D:\passerelle.xls", "", hmiShowNormal, hmiNo

Script écrit dans Excel

Public Sub Workbook_Open() 'Déclaration des variables

Dim day, heure, mois, annee, Classeur 'Initialisation

cpt = 0

'Récupération de l'heure du mois et de l'année système heure = Hour(Time)

mois = Month(Date) annee = Year(Date)

'Ouverture du fichier de données

Set Classeur = Workbooks.Open(Filename:="D:\CIMENT_FICHES DE PRODUCTION JOURNALIERE_" & mois & "_" & annee & ".xls", WriteResPassword:="ciment") 'Recherche de la date actuelle dans le fichier Tracking tool

For Each c In Workbooks("CIMENT_FICHES DE PRODUCTION JOURNALIERE_" & mois

& "_" & annee & ".xls").Worksheets(1).Range("D1:D1000") If (c.Value <> Date) Then

'Calcul de la cellule de debut de copie i = (cpt + 1) + (heure - 6)

'Ouverture du fichier de données

Set Classeur = Workbooks.Open(Filename:="D:\donnees.txt", Format:=4) 'Copie des données relevées dans le fichier Tracking tool

Workbooks(Workbooks.Count).Sheets("donnees").Range("G1:I1").Copy

Workbooks("CIMENT_FICHES DE PRODUCTION JOURNALIERE_" & mois & "_" & annee

& ".xls").Worksheets(1).Cells(i, 7).PasteSpecial Paste:=xlPasteValues Workbooks(Workbooks.Count).Sheets("donnees").Range("K1").Copy

Workbooks("CIMENT_FICHES DE PRODUCTION JOURNALIERE_" & mois & "_" & annee

& ".xls").Worksheets(1).Cells(i, 11).PasteSpecial Paste:=xlPasteValues Workbooks(Workbooks.Count).Sheets("donnees").Range("M1:N1").Copy

Workbooks("CIMENT_FICHES DE PRODUCTION JOURNALIERE_" & mois & "_" & annee

& ".xls").Worksheets(1).Cells(i, 13).PasteSpecial Paste:=xlPasteValues Workbooks(Workbooks.Count).Sheets("donnees").Range("P1:AP1").Copy

Workbooks("CIMENT_FICHES DE PRODUCTION JOURNALIERE_" & mois & "_" & annee

& ".xls").Worksheets(1).Cells(i, 16).PasteSpecial Paste:=xlPasteValues 'Fermeture et enregistrement des fichiers ouverts

Workbooks(Workbooks.Count).Close

Workbooks("D:\CIMENT_FICHES DE PRODUCTION JOURNALIERE_" & mois & "_" &

annee & ".xls").Save

Workbooks("D:\CIMENT_FICHES DE PRODUCTION JOURNALIERE_" & mois & "_" &

annee & ".xls").Close Application.Quit End Sub