Vai al contenuto
PLC Forum


Popolare Campo I\O Simbolico


Messaggi consigliati

lamentechemente
Inserito:

Chiedo per informazione,

è possibile popolare un campo I\O Simbolico non con un elenco testi predefinito in fase di progettazione, ma con, per esempio, file .csv o .txt che scrivo direttamente da pannello operatore?

Grazie


Inserita:

E' possibile:
1) devi mettere una variabile stringa al posto del testo statico 
2) devi prelevare la variabile stringa da un file .txt o .csv tramite script come da esempio:

 

esempio per scrivere il file depurato solamente per i due tag esempio.
Set fs = objFileSystem.OpenTextFile ("C:\Pigro\Progs\" + CStr(SmartTags("DB_HMI_Variabili_Globali.hmi_nomeprogramma")) + ".prg", 2)
fs.WriteLine CStr(SmartTags("DB_HMI_Variabili_Globali.hmi_nomeprogramma"))
fs.WriteLine CStr(SmartTags("DB_HMI_Variabili_Globali.hmi_lunghezzalamiera"))

eccetera ecc 

 

esempio per leggere il file
' Legge il nome del programma selezionato 
strNomeFile = SmartTags("Line_" & SmartTags("Index_program"))
strNomeFile = "C:\Pigro\Progs\" + strNomeFile + ".prg"

'Verifica se il file esiste, altrimenti conclude con un messaggio di errore
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
If objFileSystem.FileExists(strNomeFile) = True Then

' apre il file in lettura
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set fs = objFileSystem.OpenTextFile(strNomeFile, 1, False)

' Legge il contenuto delle variabili NON ARRAY dal file e lo mette nelle variabili di appoggio.
' Il limite superiore del ciclo FOR è pari al numero di variabili NON ARRAY da leggere
' e va quindi aumentato se si aggiungono variabili. Le variabili singole comprendono
' sia dati generici del programma, sia dati relativi alla piega.
For Puntatore_array = 1 To 42            'Numero da cambiare in funzione dei tag "non array" presenti nel programma    
ArrSing(Puntatore_array) = fs.ReadLine
Next

............................

 

' chiude il file in lettura
fs.Close


' copia dalle variabili interne di appoggio a quelle in Simotion
SmartTags("DB_HMI_Variabili_Globali.hmi_nomeprogramma")             = ArrSing(1)
SmartTags("DB_HMI_Variabili_Globali.hmi_lunghezzalamiera")            = ArrSing(2)

 

eccetera eccetera

 

lamentechemente
Inserita:

Forse non mi sono spiegato bene io (a priori ringrazio per la risposta).

Devo creare un dropdown (elenco a discesa)

premetto che già utilizzo i testi dinamici negli elenchi testi.

 

Avrei voluto mettere il campo i\o simbolico(elenco a discesa)

quando clicco sull'oggetto, e quindi compare la lista, questa lista deve essere presa da un file .csv o .txt che il cliente si può modificare a piacimento sia come testo, che come valore in base alla scelta, che quantità di voci che compongono elenco.

 

Se io creo un elenco, anche con testi dinamici, ma di 4 voci, se il cliente vuole modificarlo e metterne 6, devo per forza ricaricare il programma modificato con 6 voci, anche perchè a priori non si può sapere quante voci ci saranno.

 

ESEMPIO

 

File csv:

CELLA_A1

primo

secondo

terzo

quarto

 

Cliccando sull'elenco a discesa visualizzo

 

primo

secondo

terzo

quarto

 

Il cliente vuole modificare il file e cambia i nomi con

 

CELLA_A1

primo

secondo

terzo

quarto

quinto

sesto

 

e visualizzare

 

primo

secondo

terzo

quarto

quinto

sesto

 

e poter assegnare alla scelta, in base quindi all'indice di scelta un valore.

 

Spero di essere stato un pò più chiaro

 

Problemi a leggere e scrivere file in vb non ne ho, già lo faccio per molte funzioni.

Grazie

Inserita:

Beh, 

adesso sei stato chiaro.

 

per quanto ne so io non è possibile dinamizzare il numero di voci nell'elenco testi, né il suo numero corrispondente.

 

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