Vai al contenuto
PLC Forum


Funzione Apri E Scrivi File Con Cicode Su Vijeo Citect


tronco10

Messaggi consigliati

ciao a tutti!

sono nuovo del forum e vi scrivo perche' ho bisogno di aiuto da persone molto piu esperte di me con il programma vijeo citect, in particolare con il linguaggio Cicode....io è da poco cho ho iniziato ad usarlo...

sto creando un progetto di supervisione che controlla lo stato di "maturazione" di blocchi di cemento(o pannelli) fino alla loro completa "cottura": ho necessita' di far aprire e scrivere al programma durante il runtime un file di testo (o tipo excel) che chiamero' "STORICO" in cui ci siano le seguenti colonne: "ora", "% gradora", "% KWH", "temperatura"ecc. ecc. .

Tale file dovra' poi rimanere aperto in quanto ogni 15 minuti il programma deve andare a scrivere una nuova riga con i dati aggiornati della maturazione....il file si deve chiudere ala termine della maturazione o allo stop da parte dell'operatore.

al termine del ciclo (o allo stop)il file deve essere copiato in un'altra cartella.

io finora o provato a fare qualche prova ma senza risultati anche perche' non conosco la sintassi del cicode, pertanto chiedo il vostro AIUTO in particolare se potete indicarmi la sintassi da usare con qualche spiegazione dettagliata...

grazie a tutti,

a presto!

Link al commento
Condividi su altri siti


Una via semplice è quella di configurare un "Device" che punti ad un file di testo o dbf, ed utilizzare poi le funzioni di Cicode per la gestione dei "Device", tipo "DevOpen" e "DevAppend" per andare ad aggiungere i record delle tue registrazioni.

Per configurare un "Device" devi andare nel "Project Editor", menu "System" e trovi "Devices"; guarda l'. di linea per capire come funzionanno e come configurare i Devices, poi sempre nell'. vai a guardarti le Cicode Functions per la gestione dei Devices. (dall'indice naviga fino a Cicode Programming Reference->Cicode Function Categories->Device Functions).

Link al commento
Condividi su altri siti

Una via semplice è quella di configurare un "Device" che punti ad un file di testo o dbf, ed utilizzare poi le funzioni di Cicode per la gestione dei "Device", tipo "DevOpen" e "DevAppend" per andare ad aggiungere i record delle tue registrazioni.

Per configurare un "Device" devi andare nel "Project Editor", menu "System" e trovi "Devices"; guarda l'. di linea per capire come funzionanno e come configurare i Devices, poi sempre nell'. vai a guardarti le Cicode Functions per la gestione dei Devices. (dall'indice naviga fino a Cicode Programming Reference->Cicode Function Categories->Device Functions).

ciao...ho provato a seguire le tue indicazioni ma non ho ancora trovato la starda giusta....purtroppo , ripeto,è da poco che ho iniziato ad usare il programma e quindi non lo conosco(io ho la versione vijeo citec 7.10r1 - tradotto in italiano...) ....in piu' il mio inglese è un po' arrugginito...

tu non è che potresti scrivermi qualche esempio??saresti molto gentile....grazie

a presto!

Link al commento
Condividi su altri siti

Cerco di farti un riassunto:

Punto 1) Configurare un Device nel tuo progetto.

Mettiti nella finestra Citect Project Editor e fai System->Devices; si apre la finestra di configurazione dove devi definire le proprietà del Device. In "Name" metti il nome che vuoi dargli, per esempio "MioDev". In "Format" devi definire il formato di un record (riga) del tuo file per esempio scrivi "{DATA,8} {ORA,5} {VALORE,6}"; in pratica ogni colonna è indicata tra {}. In "FileName" metti il percorso dove vuoi salavare il tuo file, se ad esempio scrivi [DATA]:LogFile.txt il file verrà salvato nella directory "Data" dentro VijeoCitect e si chiamerà LogFile.txt. In "Type" selezioni ASCII_DEV. In "No. Files" metti -1 per andare sempre in append. Tutte le altre proprietà le lasci vuote. Alla fine fai "Add" per confermare tutto.

Punto 2) Scrivere una funzione che vada a salvare i dati nel nostro file.

"Create a new Cicode page" ti si apre l'editor.

FUNCTION ScriviDati(INT Valore)

INT hDev;

hDev=DevOpen("MioDev"); // Apertura Device

DevAppend(hDev); // Appendo un nuovo record

DevSetField(hDev, "DATA", Date(2)); // Scrivo la data nel formato dd/mm/yy

DevSetField(hDev, "ORA", Time(0)); // Scrivo l'ora nel formato HH:MM

DevSetField(hDev, "VALORE", Valore); // Scrivo il valore che ho passato come parametro della funzione

DevClose(hDev); // Chiusura Device

END

3) Richiamo della mia funzione, ad esempio in un pulsante, col valore che voglio scrivere. Per esempio se ho una variabile

WORD1 posso fare ScriviDati(INT WORD1) e dovrei registrare una riga con data, ora e valore della variabile WORD1

Questa è proprio una sintesi minimale di come fare per registrare dei dati in un file.

Link al commento
Condividi su altri siti

grazie Marco!

ora provo a fare come mi hai detto e poi ti faccio sapere

sei stato veramente molto gentile....

io avevo provato a fare con il Cicode :

facendo in modo tale che il processo mi andasse a scrivere sul file che avevo aperto ogni 15 min e poi me lo andasse a ricopiare (una volta chiuso) in un'altra cartella;ecco l'esempio:

FUNCTION scrivo_file_bl1();

INT hDev;

INT NoRec;

hDev=DevOpen("Dati_BL1",0);

NoRec=DevSize(hDev);

DevSeek(hDev,NoRec);

IF (indice_archiv_curve_bl1<2) THEN DevWriteLn(hdev,"ORARIO"+";"+"TEMP_EST"+";"+"TEMP_BLOCCO"+";"+"GRADORA"+";"+"kWh"+";"+"GIORNO");//scrivo prima linea con le seguenti variabili a formare le colonne

END

DevWriteLn(hdev,Time(1):#########+";"+tempest:##.##+";"+temp_bl1:##.##+";"+grdh_bl1:#####+";"+kwh_bl1:#####+";"+Date(9));//scrivo i valori delle variabili

DevClose(hDev);

indice_precedente_bl1=indice_archiv_curve_bl1

clock_bl1=0

END

FUNCTION copio_elimino_file_bl1()

STRING giorno,mese,anno,ora,minuti,sec,appo; //dichiara variabili stringa

giorno=DateDay(TimeCurrent()); //rilevamento del solo giorno

mese=DateMonth(TimeCurrent()); //rilevamento del solo mese

anno=DateYear(TimeCurrent(),1); //rilevamento del solo anno

ora=TimeHour(TimeCurrent()); //rilevamento della sola ora

minuti=TimeMin(TimeCurrent()); //rilevamento dei soli minuti

sec=TimeSec(TimeCurrent()); //rilevamento dei soli secondi

appo="c:\baraclit\storico\dati_bl1"+"-"+giorno+"-"+mese+"-"+anno+"-"+ora+"-"+minuti+"-"+sec+".csv"

FileCopy("c:\baraclit\dati_bl1.txt",appo,0);

Sleep(5)

FileDelete("c:\baraclit\dati_bl1.txt");

END

secondo te è corretto?(la funzione viene eseguita dal cicode ed io riesco ad avere il file che mi interessa...)

con il metodo che mi hai indicato tu posso fargli fare le stesse cose?

grazie ancora, sei stato gentilissimo!

a presto!

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