Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Impostare Valori Iniziali Db A Partire Da Excel


Messaggi consigliati

Inserito:

Buongiorno a tutti. Seguo da tempo il vostro forum e ne ho tratto numerosi spunti per trovare soluzioni. Tuttavia mi sono bloccato su una questione spinosa, su cui sono state aperte numerose discussioni ma nessuno sembra aver riscontrato il mio problema.

Sto utilizzando una CPU 313 e devo compilare una DB su cui è memorizzata una ricetta ( un array composto di INT;DINT;FLOAT;STRING.)

Il problema sono i FLOAT.

Ho creato un file Excel:

ricetta[0].C016 := "8.000000e+000" // primo parametro FLOAT

ricetta[0]C017 := "1.200000e-001 // secondo parametro FLOAT

.......

eccetera

Che poi vado ad importare con Copia/Incolla direttamente sulla DB

Il problema è che i numeri sono sotto forma di TESTO, e risulta estremamente scomodo compilarli manualmente con questo formato;

NOTA: devo necessariamente scrivere i numeri FLOAT in questo modo altrimenti non riesco a compilare,

Vorrei allegare un file che ho trovato sul web, forse addirittura sul vostro Forum, ormai non so più dove sbattere la testa! Ho cercato ovunque!

Grazie in anticipo!

Si chiama Create S7DB, noterete che le variabili float sono scritte in formato celle TESTO.


Reverendo bit
Inserita:

Ciao,

Allora, io mi sono creato un codice in vba su excel con svariate funzione, tra cui quella di caricare un sorgente .awl di una DB andare a scrivere i valori attuali nei valori iniziali e ricompilare nuovamente un file di testo con estensione .awl pwe poi importarlo su step7 e compilare il db con tutti i valori attuali scolpiti nei valori di ´progetto.

Compilo tutti i tipi di dati, float compresi.

Che poi vado ad importare con Copia/Incolla direttamente sulla DB.

Non capisco cosa intendi.

Riusciresti ad postare il sorgente del tuo DB_

Posso provare con il mio excel e magari giratelo, ancora ´in fase beta, ma piu avanti vorrei condividerlo.

Saluti.

Inserita:

Grazie per l'attenzione e disponibilità. Ho caricato lo zip della sorgente della DB, riesci a inserire i FLOAT e compilare il sorgente? Grazie infinite..

Reverendo bit
Inserita: (modificato)

Domani mattina provo e ti faccio sapere.

Saluti.

Modificato: da Reverendo bit
Inserita:

io avevo scritto in vba per excel delle routines che compilavano direttamente file di testo rinominato .awl , con dichiarazione dei dati , assegnazione ect

Li importavo come sorgente esterna in step7,compilavo e caricavo

Reverendo bit
Inserita:

Buongiorno arioler,

Stamane ho fatto alcune prove sul sorgente da te postato, come pensavo non ho avuto nessun problema ad inserire manualmente dei valori diversi da quelli di progetto ed importarli.

Ora le variabili se le scrivi su excel all'interno delle "" non va bene, perchè il file di testo .awl vuole la sua formattazione, che per un folat è ricetta[0].C006 := 1.200000e+001; e non ricetta[0].C006 := "1.200000e+001"

Se tu generi un sirgente con questa formattazione per un float, non riuscirai mai a compilarlo.

Spero di aver centrato il problema, nel caso contrario fammi sapere.

Saluti.

Inserita:

Innanzitutto grazie a walterword e a Reverendo bit per avermi risposto.

Nonostante tutto non sono ancora riuscito a risolvere.

Non ho idea del perché ma il sorgente che mi ha caricato mi ha riempito il file di virgolette che impediscono una corretta compilazione.

Mi spiego meglio:

Se faccio l'assegnazione dei valori iniziali dei FLOAT con il formato 1.50000e-001 oppure 3.00000e+003 (ad esempio) riesco a compilare con successo e generare il sorgente AWL. Tuttavia vorrei fare l'assegnazione direttamente scrivendo 0.15 oppure 3000 e non nel formato 0.00000e+00 (l'unico supportato da S7 per i FLOAT). Il File Excel sarà consegnato ad un operatore macchina poco avvezzo a questo formato 0.0000e+000, (che è davvero ostico).

Grazie ancora per la vostra attenzione, so perfettamente che il vostro tempo è prezioso e che lo state impiegando pe aiutarmi, ve ne sono grato.

Inserita: (modificato)

Questa immagine è come si presenta il sorgente che riesco a compilare. Io vorrei scrivere 0.12345 e non 1.23450e-001.
Grazie
Modificato: da arioler
Reverendo bit
Inserita: (modificato)

Come già detto, il sorgente per step7 riconosce solo il formato 0.00000e+000 per i float.

Se poi tu vuoi scrivere 0.15 nel file excel, per compilare il sorgente dovrai crearti il codice vba che interpreta il valore e lo trasformi nel formato per step7.

Solo così potrai fare quello che tu chiedi.

Ma poi una domanda, perché l'operatore dovrà lavorare su excel?

Io vorrei scrivere 0.12345 e non 1.23450e-001

Non è possibile :toobad:

Saluti.

Modificato: da Reverendo bit
Inserita:

Ah caspita.. allora mi farò un corso di VB perché proprio non sono in grado di farlo.. Sarei tentato di chiedere il tuo sorgente e quello di walterword, ma molto probabilmente è giusto che ragioni con la mia testa, anche se il tempo che mi rimane è poco.

L'operatore scrive in Excel perché sarebbe meglio se inserisse i valori iniziali da PC, fino ad ora lo faceva da Pannello a mano nel formato 0.0000e+000, sono circa 300 valori. Non oso immaginare quanto ci abbia messo la prima volta (prima del revamping).

Grazie ancora.

Buona giornata

Reverendo bit
Inserita: (modificato)

Sarei tentato di chiedere il tuo sorgente e quello di walterword

Come ti dicevo più avanti magari lo codividerò, per adesso è in fase beta e non è totalmente affidabile, infatti ho trovato un bug propio compilando il tuo di sorgente.

Comunque se l'operatore scrive in excel ci dovrà essere una macro che compila un sorgente, e poi come fa l'operatore a caricare i valori nel DB?

Per un'operatore scrivere 300 valori su excel o scrivere 300 valori dal pannello, forse è meglio la seconda, e comunque se si tratta di un revamping (quindi presumo che già sai quali sono i valori da impostare) potresti impostarli tu stesso.

fino ad ora lo faceva da Pannello a mano nel formato 0.0000e+000

Nel pannello (come anche in una vat) non scrivi 1.5000e+001, ma 15.0 il formato con mantissa ed esponente e quello che vedi solo nel sorgente.

Modificato: da Reverendo bit
Inserita: (modificato)

I valori li conosce l'operatore, sto seguendo altre commesse e non ho tempo di scrivere i valori per lui;

Tuttavia a me è sembrato che lui li inserisse col formato 0.00000e+000, il pannello è un ESAVT585, il programma è WTWIN, molto obsoleto.. non so se centri qualcosa. Grazie ancora..buona giornata!

Modificato: da arioler
Inserita: (modificato)

Buongiorno a tutti.

Premesso che sono un apprendista softwarista alle primissime armi, questa è la soluzione terra terra che ho trovato. Non so perché, ma funziona.

Se dovete digitare i valori iniziali di una DB questa è la procedura:

Create la Vostra DB e assegnatele un nome simbolico.

Create una sorgente AWL con nome a caso.

Aprite il file Excel (notate che ci sono 3 fogli di lavoro).

Compilate il foglio2 con i valori desiderati.

Aprite il foglio1 e fate copia incolla del testo dentro alla sorgente AWL (cambiate il nome della DB in alto col nome simbolico della vostra DB).

Salvate e compilate.

Dovreste aver ottenuto una DB con i valori desiderati.

Modificato: da arioler

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