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




Campo Simbolico Di I/o


Messaggi consigliati

Inserito:

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?


Inserita:

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

Inserita:

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

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: StatoMacchina

Selezione: 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 =MANUALE

Valore 1= AUTOMATICO

Valore 2= SEMIAUTOMATICO

Adesso 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: Output

Content-->TextList: StatoMacchina

Content-->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 caratteri

Process-->TAG:MachStato

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

Ciao

Ivan

Inserita:

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

Inserita: (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 anomalia

MW5 = 1 => Pressione troppo alta..

MW5 = 2 => Temperatura troppo bassa..

..

.

Modificato: da Savino
Inserita:

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?

Inserita:

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

Inserita:

SE IO HO UNA MW...PER RENDERE VERO IL CAMPO 1 USO W#16#2

IL 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

Inserita:

Dunque,

Campo 1 => MW 0

Campo 2 => MW 2

Campo 3 => Mw 4

e cosi' che stai facendo.. altrimenti posta il codice

N.B.: Ti ricordo che nel Forum e' regola scrivere in minusculo, altrimenti si pensarebbe che uno sta propio urlando!

Inserita:

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 MW5

per la terza (valore 3) uso move con ingresso w#16#8 ed uscita MW5

...queste 3 le visualizzo

per la quarta (valore 4) uso move con ingresso w#16#16 ed uscita MW5

per la quinta (valore 5) uso move con ingresso w#16#31 ed uscita MW5

ma queste due non le visualizzo...........

Inserita:

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.

Inserita:

Sbagliavo proprio lì, davvero grazie mille....

Inserita:
Sbagliavo proprio lì, davvero grazie mille....
;)

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