carmen63 Inserito: 2 ottobre 2007 Segnala Inserito: 2 ottobre 2007 Se voglio associare ad un campo di simbolico di I/O più stringhe di testo, se non sbaglio utilizzo l'opzione numeri di bit, ma a che tipo di variabile STEP devo associare tale campo?Come faccio a scorrere tali campi?
Savino Inserita: 2 ottobre 2007 Segnala Inserita: 2 ottobre 2007 Non ho capito molto... comunque una variabile del tipo STRING potrebbe contenere diverse stringhe di testo.. una variabile INT o WORD..etc potrebbe contenere un numero decimale... poi nel HMI, una scripting routine potrebbe assegnare distinti stringhe di messaggi a un box edit, a secondo la corrispondenza numerica di quella variabile.Se ti spieghi meglio, forse con un esempio...
kamikaze Inserita: 3 ottobre 2007 Segnala Inserita: 3 ottobre 2007 Ciao Carmen63,Penso di aver capito a cosa ti riferisca...parli dei "text fields" scusami gli inglesismi, ma sono abituato ad usare i programmi in inglese. Facciamo un'esempio, devi creare una lista di 3 testi corrispondente allo stato della tua macchina, MANUALE-AUTOMATICO-SEMIAUTOMATICO.Prima cosa , devi creare una "lista testi" o TextList, la trovi in una sottocartella del progetto.Nella creazione , gli dai un nome esempio: StatoMacchinaSelezione: hai 3 tipi a disposizione.1-Bit0-1 , ti permette di creare una lista di 2 testi , dove se il bit associato e' 0 o 1 e' la discriminante.2-Bit number 0-31 , ti permette di creare una lista fino a 32 testi , dove la discriminante e' il numero del bit nella word.3-Range...lasciamo stare per ora. Per l'esempio precedente basta il tipo 2 (Bit number 0-31).Nella "lista testi" appena sotto , ad ogni singolo byte associ un testo, quindi:Valore 0 =MANUALEValore 1= AUTOMATICOValore 2= SEMIAUTOMATICOAdesso crei un nuovo TAG , che chiamiamo "MachStato" , sorgente PLC (scusa ma non hai specificato quale), indirizzo , basta un byte per 3 testi, quindi diciamo DBxx.DBB10 (supponendo che usi un S7-3xx)Ora , nella pagina , inserisci un nuovo oggetto , "symbolic I/O field"Nel campo General.....Setting-->Mode: OutputContent-->TextList: StatoMacchinaContent-->Field Lengt: 15 , questa e' la lunghezza max del testo , sempre piu' alto del numero di caratteri della parola piu' lunga della lista , nel nostro caso SEMIAUTOMATICO =14 caratteriProcess-->TAG:MachStatoI campia seguire lasciali stare , e per gli altri dettagli come il colore sfondo, caratteri ecc, ti devi regolare con le proprieta'.Adesso se tu lanci il run time , vedrai che inizialmente apparira' ##### perche' nessun bit nel byte e' VERO.Ma se scrivi nella DBxx.DBB10 , il valore DEC.1 o HEX1 vedrai che appare MANUALE , perche hai messo il bit 0 del byte a VERO.Se scrivi nella DBxx.DBB10 , il valore DEC.2 o HEX2 vedrai che appare AUTOMATICO.Se scrivi nella DBxx.DBB10 , il valore DEC.4 o HEX4 vedrai che appare SEMIAUTOMATICO.Poui anche decidere di settare il singolo BIT 0 o 1 o 2 del byte, ma spesso questo induce errori.CiaoIvan
carmen63 Inserita: 3 ottobre 2007 Autore Segnala Inserita: 3 ottobre 2007 Esattamente questo il problema, io ho creato i testi e vorrei che nel mio programma step7, a seconda dello stato del programma vari la stringa sul pannello.Come faccio nel programma Step a settare che deve essere attivo uno specifico bit di un byte?Mi spiego: se io ho una parola MW5 e tramite l'operazione MOVE trasferisco D#16#1 setto a 1 il bit 0 del merker 5 e di conseguenza sarà visualizzata la stringa corrispondente al campo 0?Grazie
Savino Inserita: 3 ottobre 2007 Segnala Inserita: 3 ottobre 2007 (modificato) Mi spiego: se io ho una parola MW5 e tramite l'operazione MOVE trasferisco D#16#1 setto a 1 il bit 0 del merker 5 e di conseguenza sarà visualizzata la stringa corrispondente al campo 0?Si', esatto! se il campo 0 e' in corrispondenza con il valore della MW5, allora se la fai lavorare in un intervallo tra 0 - 9, vuoldire che puo' fornire 10 messaggi diversi per quel campo .Poi, a ogni valore di MW5 le associ una stringa diversa.. esempio:MW5 = 0 => Nessuna anomaliaMW5 = 1 => Pressione troppo alta..MW5 = 2 => Temperatura troppo bassa..... Modificato: 3 ottobre 2007 da Savino
carmen63 Inserita: 3 ottobre 2007 Autore Segnala Inserita: 3 ottobre 2007 Solo una domanda la variabile nel mio programma step va bene se è una mw?Facendo move i bit non vengono settati e quindi la stringa non viene visualizzata.Questa word deve essere inizializzata?
Savino Inserita: 3 ottobre 2007 Segnala Inserita: 3 ottobre 2007 Potrebbe andare bene una MW o una DBx.DBWx..Facendo move i bit non vengono settati Vedi se la MW 5 la stai gia' sovrascrivendo da qualche altra parte del programma...
carmen63 Inserita: 3 ottobre 2007 Autore Segnala Inserita: 3 ottobre 2007 SE IO HO UNA MW...PER RENDERE VERO IL CAMPO 1 USO W#16#2IL CAMPO 2 W#16#4 E QUESTI DUE ME LI VISUALIZZA, MA PER GLI ALTRI CAMPI?CIOè IL 3 IL 4 E 5?COME HO FATTO IO NON MI FUNZIONA
Savino Inserita: 3 ottobre 2007 Segnala Inserita: 3 ottobre 2007 Dunque, Campo 1 => MW 0Campo 2 => MW 2Campo 3 => Mw 4e cosi' che stai facendo.. altrimenti posta il codiceN.B.: Ti ricordo che nel Forum e' regola scrivere in minusculo, altrimenti si pensarebbe che uno sta propio urlando!
carmen63 Inserita: 3 ottobre 2007 Autore Segnala Inserita: 3 ottobre 2007 Scusate il maiuscolo che ho usato prima , ma ho scritto di fretta e non ci ho fatto caso.Allora io ho 5 stringhe associate ai valori 1,2,3,4,5.Per accedere la prima utilizzo l'operazione Move con ingresso w#16#2 e uscita MW5,per la seconda (valore 2) uso sempre move con ingresso w#16#4 ed uscita MW5per la terza (valore 3) uso move con ingresso w#16#8 ed uscita MW5...queste 3 le visualizzoper la quarta (valore 4) uso move con ingresso w#16#16 ed uscita MW5per la quinta (valore 5) uso move con ingresso w#16#31 ed uscita MW5ma queste due non le visualizzo...........
Savino Inserita: 3 ottobre 2007 Segnala Inserita: 3 ottobre 2007 La MW5 sarebbe composta dalla MB 5 e MB 6... hai controllato se da qualche parte del programma PLC utilizzi delle assegnazioni a bit sulla MB 5...Poi, tiene presente che stai caricando in esadecimale e non in decimale, quindi:Hex Dec ---------------- 02 2 04 4 08 8 16 22 31 49 Il 16 in Dec sarebbe il 10 Hex il 31 in Dec sarebbe il 1F Hex.
carmen63 Inserita: 3 ottobre 2007 Autore Segnala Inserita: 3 ottobre 2007 Sbagliavo proprio lì, davvero grazie mille....
Savino Inserita: 3 ottobre 2007 Segnala Inserita: 3 ottobre 2007 Sbagliavo proprio lì, davvero grazie mille....
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora