marcob1984 Inserito: 20 dicembre 2024 Segnala Inserito: 20 dicembre 2024 Buongiorno a tutti. Scusate se Vi rubo del tempo per questo problema che per alcuni sarà una banalità: in linguaggio AWL su step 7 di simatic manager, se voglio appoggiare alla DB1.DBD0 i primi 4 byte dell'area degli ingressi il codice è il seguente: L PED0 T DB1.DBD0 Indipendentemente se le aree sopracitate sono state dichiarate anche in altri tipi di dato (es: bit, byte, word) il codice funziona. In linguaggio SCL o KOP in step 7 di TIA Portal non riesco a replicarlo. Mi illuminate? Grazie
dina_supertramp Inserita: 20 dicembre 2024 Segnala Inserita: 20 dicembre 2024 (modificato) Il DB è simbolico, per quello non vedi gli indirizzi assoluti. La riga sottolineata in giallo è perché "DB_Appoggio.Word" è dichiarato come intero (INT) e quindi ti avvisa che potresti perdere precisione andando a leggere la IW1 Modificato: 20 dicembre 2024 da dina_supertramp
marcob1984 Inserita: 20 dicembre 2024 Autore Segnala Inserita: 20 dicembre 2024 Ok, ricevuto. Bisogna comunque dichiarare la variabile nella tabella delle variabili nel formato in cui la si vuole trattare. Se io ho già dichiarato tutti gli ingressi I0.0/I0.1/I0.2/etc... per poter copiare l'area dei primi 4 byte in un db devo almeno dichiarare un'altra variabile es:ID0 che comprenda l'area che va da I0.0 fino a I3.7. Questa cosa non occorre farla con il vecchio step 7. Puntando al valore assoluto, in qualsiasi tipo di dato, lo si può trattare. Pensavo si potesse fare anche con TIA Portal Grazie dell'aiuto
dina_supertramp Inserita: 20 dicembre 2024 Segnala Inserita: 20 dicembre 2024 (modificato) 17 minuti fa, marcob1984 ha scritto: Bisogna comunque dichiarare la variabile nella tabella delle variabili nel formato in cui la si vuole trattare. No, puoi lasciare dichiarati i singoli bit nella tabella variabili (I0.0,I0.1, ecc.) e poi interrogare la il byte di ingressi 0 nel codice (IB0) come abbiamo sempre fatto con anche con l'S7. Ti verrà creata automaticamente la tag del byte 0 e inserita nella prima tabella variabili a disposizione. Quando la crea in automatico perché appunto la dichiari al momento della scrittura del codice e non in precedenza in una var table, la infila nella prima tabella variabili che trova, sta a te riordinarla. Non c'è nessuna differenza "in meno" rispetto al S7 del Simatic Manager, le uniche differenze sono "in più" in merito all'accesso alle variabili. Modificato: 20 dicembre 2024 da dina_supertramp
84paolo Inserita: 20 dicembre 2024 Segnala Inserita: 20 dicembre 2024 puoi anche non dichiararla, ma appena tu scrivi ew0 il tia ti crea un tag nella tabella delle variabili con il simbolico con nome tagxxx quindi a questo punto ti conviene dichiararlo
batta Inserita: 20 dicembre 2024 Segnala Inserita: 20 dicembre 2024 5 minuti fa, marcob1984 ha scritto: per poter copiare l'area dei primi 4 byte in un db devo almeno dichiarare un'altra variabile es:ID0 che comprenda l'area che va da I0.0 fino a I3.7. Questa cosa non occorre farla con il vecchio step 7. Puntando al valore assoluto, in qualsiasi tipo di dato, lo si può trattare. Pensavo si potesse fare anche con TIA Portal Mi pare non sia una grande fatica dare il nome anche alla variabile "ID0". Anzi, il TIA, se richiami una variabile con l'indirizzo, assegna automaticamente un nome tipo Tag1, Tag2, ecc. E questa mi pare una buona cosa. Ho sempre odiato lavorare con gli indirizzi. Uno dei vantaggi che salta prima all'occhio lavorando in simbolico? Immagina di dover copiare, per seguire il tuo esempio, quattro byte di ingressi a partire da I0.0, e di farlo accedendo all'indirizzo, come doppia word, "ID0". Poi immagina che questo indirizzo venga cambiato. Il tuo codice non funziona più, lo devi andare a correggere. Immagina invece di avere dato un nome a quella variabile, e di utilizzare il nome nel programma. Ti basta riasseganre l'indirizzo associato a quel nome. Ancore più evidente se fai riferimento a variabili di un DB, e vai ad inserire o a togliere variabili prima di quella che stai usando che, quindi, cambia indirizzo. Devi andare a cercare in giro nel programma tutti i richiami e correggerli. Se lavori con il nome, tutto si sistema da solo. Comunque, lo puoi fare anche con il TIA, solo che, per accedere ad una variabile con l'indirizzo, se è in un DB il DB deve essere "non ottimizzato". E guauarda anche le istruzioni "Scatter" e "Gather". Però il modo giusto di procedere è quello di abbandonare il vecchio modo di lavorare con gli indirizzi, e di strutturare il programma e le variabili, già in origine, per lavorare con il simbolico.
dina_supertramp Inserita: 20 dicembre 2024 Segnala Inserita: 20 dicembre 2024 3 minuti fa, batta ha scritto: Però il modo giusto di procedere è quello di abbandonare il vecchio modo di lavorare con gli indirizzi, e di strutturare il programma e le variabili, già in origine, per lavorare con il simbolico. Condivido. @marcob1984 abituati a lavorare con i simboli (vedi prima risposta --> "DB_Appoggio.Byte") scordati l'accesso assoluto (DBx.DB....) a meno che non ti sia imposto da eventuali device esterni con cui parli.
marcob1984 Inserita: 20 dicembre 2024 Autore Segnala Inserita: 20 dicembre 2024 Grazie mille a tutti. @batta hai perfettamente ragione. E' molto di aiuto il fatto di lavorare con il simbolico, senza ombra di dubbio. Il punto è che fino a stamattina ero "ignorante" sul fatto che bastava dichiarare prima la variabile per poterla utilizzare come volevo. Grazie ancora. Sereno Natale e felice anno nuovo a tutti.
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