Vai al contenuto
PLC Forum


Script per archiviare tag di processo!


giervolino1

Messaggi consigliati

Salve avrei la necessità di creare uno script che mi salvi variabili di tipo string, real e int su un file txt giornaliero! (datafile.txt)

Ed ogni giorno crearne uno nuovo!

Ho provato ad usare gli archivi ma non mi fa salvare le variabili di tipo string!

Grazie!

Link al commento
Condividi su altri siti


Ciao giuseppe è ottimo ma scusa l'ignoranaza ma nel tuo esempio le variabili che vado a definire in variabili Scada quali sono e che nomi devono avere?

Non so come associare le variabili !

Grazie

 

Link al commento
Condividi su altri siti

Ciao ho abbozzato questo script funziona ma mi crea una sola riga di acquisizione e mi sovrascrive ogni volta che lancio lo script!

Ecco lo script:

Sub FunzioneVB_1()
'Suggerimento:
' 1. Utilizzare la combinazione di tasti <CTRL+SPACE> o<CTRL+I> per aprire l'elenco completo degli oggetti o delle funzioni
' 2. Scrivere il codice con l'oggetto HMI Runtime.
'  Esempio: HmiRuntime.Screens("Screen_1").
' 3. Utilizzare la combinazione di tasti <CTRL+J> per creare un riferimento dell'oggetto.
'Scrivere il codice da questa posizione:
Dim fso, MyFile, today_string
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
today_string = CStr(Year(Now))&"_"& CStr(Month(Now))&"_"& CStr(Day(Now))
Set MyFile = fso.GetFile("C:\Users\GIUSEPPE\Desktop\HOME\production.xls") ' source file
MyFile.Copy ("C:\Users\GIUSEPPE\Desktop\HOME\" & today_string & "_" & "production" & ".xls") 'copy to destination file
MyFile.Delete 'then delete the old one

 


Dim objFileSystem, blank, fs 'dichiara le variabili
Set objFileSystem = CreateObject("Scripting.FileSystemObject")'dichiara le proprietà del file
Set fs = objFileSystem.CreateTextFile ("C:\Users\GIUSEPPE\Desktop\HOME\production.xls",True) 'file create, eventually overwritten and ascii default
blank=" "
'fs.WriteLine("Report day" + ";" + "Report hour" + ";" + "Operator name" + ";" + "Program number" + ";" + "Program description" + ";" + "Quantity set point" + ";" + "Elapsed" + ";" + "Produced" + ";" + "Total Production"):
fs.WriteLine("Report day" + ";" + "Report hour" + ";" + "Operator name" + ";" + "Program number" + ";" + "Program description" + ";" + ";" + "Produced" + ";" + "Total Production"):
fs.Close 'chiudi il file
Dim a, f, objFileSize, operatore, trigger, strNomeFile  'dichiara le variabili

  


    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fs = fso.OpenTextFile ("C:\Users\GIUSEPPE\Desktop\HOME\production.xls",8) 'apre il file e scrive alla fine file (comando=8) ascii default
  blank=" "
  fs.WriteLine ( " "+ CStr (Date)+ ";" + CStr(Time) + ";" + CStr(SmartTags("Codice")) + ";" + CStr(SmartTags("WO")) + ";" + CStr(SmartTags("numero"))+ ";" + CStr(SmartTags("Di")) + ";" + CStr(SmartTags("Colore"))+ " "):
 
  
 
End Sub

 Grazie

Link al commento
Condividi su altri siti

  • 1 month later...

Si Gervolino, prima di eseguire la scrittura devi crearti una funzione che ti sposta in basso tutta la pagina di una riga:

ti copio pari pari la funzione che mi sono creato io:

Nelle proprieta delle script Devi dichiarar due variability d'ingresso: NameTableOnUse ByVal (sarebbe il nome del file),

N_Column ByVal (il número di colonne che vuoi spostare in basso di un rigo); il valore di queste due variabili poi

le devi scrivere quando richiami lo script, immediatamente prima di quando scrivi il nuovo rigo...

In pratica quando richiami lo script (se ad esempio lo chiami "ShiftDown", e vuoi spostare in basso 3 colonne)

...

ShiftDown C:\NomeFile, 3

... Dai il comando di scrittura del primo rigo

 

Questo è quello che devi scrivere nello script per spostare tutta la pagina in basso per un singolo rigo...

Dim PointerLastLine, LineToCopy, LineToWrite, PointerColumn, Table

Set Table = CreateObject ("Excel application")

 

' Detect what is the last line of the table

PointerLastLine=1

Do While Table.ArchiveSheet.Cells(PointerLastLine,1) <> ""

PointerLastLine=PointerLastLine+1

Loop

' #################################################

'Initialize data

LineToCopy=PointerLastLine-1

LineToWrite=PointerLastLine

'I do the shift of the table

Do While LineToCopy <> 0

PointerColumn=1

Do While PointerColumn < N_Column

Table.ActiveSheet.Cells (LineToWrite,PointerColumn).Value = Table.ActiveSheet.Cells (LineToCopy,PointerColumn)

PointerColumn=PointerColumn+1

Loop

LineToCopy=LineToCopy - 1

LineToWrite=LineToWrite - 1

Loop

' ################################################

' Close and save table

Table.DisplayAlerts = False

Table.ActiveWorkbook.Save

Table.ActiveWorkbook.Close

Table.Quit

Table.DisplayAlerts = True

Set Table = Nothing

 

 

Link al commento
Condividi su altri siti

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