Giuseppe Micieli Inserito: 1 febbraio 2019 Segnala Inserito: 1 febbraio 2019 Ciao a tutti vi pongo un quesito probabilmente stupido.......ho bisogno di far comunicare du plc con tcp/ip modbus ed fin qua niente di strano , il problema e' che in tia portal non ho tutte le librerie disponibili come su step , ed a me per fare cio'mi servirebbe dei convertitori "bool to word" e vicerversa ma sinceramente li ho aperti tutti ma non li trovo.....quindi qualcuno sa se ci sono delle librerie in giro o se si possono integrare con quelle di step 7.
batta Inserita: 1 febbraio 2019 Segnala Inserita: 1 febbraio 2019 Prova a guardare le istruzioni SCATTER e GATHER.
Giuseppe Micieli Inserita: 1 febbraio 2019 Autore Segnala Inserita: 1 febbraio 2019 Grazie del l'info ci provo
Giuseppe Micieli Inserita: 4 febbraio 2019 Autore Segnala Inserita: 4 febbraio 2019 ciao ho provato , ma non sono quelli , a me servono come quello in foto che ho su step 7
pigroplc Inserita: 4 febbraio 2019 Segnala Inserita: 4 febbraio 2019 (modificato) te la puoi creare facilmente con l'istruzione di overlay chiamata "at". Dammi 5 minuti che te la metto giù ti fai una sorgente scl copy-paste di sotto. L'utilizzo di tale codice implica l'implicita esclusione da qualsiasi responsabilità del sottoscritto nel caoso di danni di qualsiasi tipo o natura FUNCTION "ImpacchettareBit" : Void { S7_Optimized_Access := 'FALSE' } AUTHOR : pigroplc VERSION : 0.1 VAR_INPUT In15 : Bool; In14 : Bool; In13 : Bool; In12 : Bool; In11 : Bool; In10 : Bool; In9 : Bool; In8 : Bool; In7 : Bool; In6 : Bool; In5 : Bool; In4 : Bool; In3 : Bool; In2 : Bool; In1 : Bool; In0 : Bool; END_VAR VAR_OUTPUT MyWordOutput : Word; END_VAR VAR_TEMP MyWordInput_interno : Word; ProvareInput AT MyWordInput_interno : Array[0..15] of Bool; MyWordOutput_interno : Word; ProvareOutput AT MyWordOutput_interno : Array[0..15] of Bool; END_VAR BEGIN (* Impacchetta i bit utilizzando la sovrapposizione variabili con AT La funzione AT è possibile nella FC solamente se non è flaggato l'accesso ottimizzato al blocco *) (* formare la word *) #ProvareInput[0] := #In0; #ProvareInput[1] := #In1; #ProvareInput[2] := #In2; #ProvareInput[3] := #In3; #ProvareInput[4] := #In4; #ProvareInput[5] := #In5; #ProvareInput[6] := #In6; #ProvareInput[7] := #In7; #ProvareInput[8] := #In8; #ProvareInput[9] := #In9; #ProvareInput[10] := #In10; #ProvareInput[11] := #In11; #ProvareInput[12] := #In12; #ProvareInput[13] := #In13; #ProvareInput[14] := #In14; #ProvareInput[15] := #In15; (* copiare la word interna di ingresso nella word interna di uscita. Praticamente questo passaggio potrebbe essere una funzione mask di bit oppure altre operazioni matematiche. Così serve a nulla. *) #MyWordOutput_interno:=#MyWordInput_interno; (* copiare la word interna nel parametro di uscita. *) #MyWordOutput := #MyWordOutput_interno; END_FUNCTION Modificato: 4 febbraio 2019 da pigroplc
Giuseppe Micieli Inserita: 4 febbraio 2019 Autore Segnala Inserita: 4 febbraio 2019 grazie pigroplc.....ci prov vediamo cosa succede
batta Inserita: 4 febbraio 2019 Segnala Inserita: 4 febbraio 2019 Ti puoi creare una funzione come suggerito da "Pigroplc" o, forse ancora più semplice, sfruttando la sintassi "miaWord.%x..." esempio: miaWord.%x0 := In0; miaWord.%x1 := In1; ... ... miaWord.%x15 := In15;
pigroplc Inserita: 4 febbraio 2019 Segnala Inserita: 4 febbraio 2019 3 ore fa, batta scrisse: o, forse ancora più semplice, sfruttando la sintassi "miaWord.%x... .... da quando ho scoperto la funzione AT la metterei anche nel minestrone! 😂
Giuseppe Micieli Inserita: 4 febbraio 2019 Autore Segnala Inserita: 4 febbraio 2019 Grazie per i consigli Pigroplc... Non mi è chiara una cosa... La funzione (AT) che cos'è di preciso?
pigroplc Inserita: 4 febbraio 2019 Segnala Inserita: 4 febbraio 2019 https://support.industry.siemens.com/cs/document/57132240/how-do-you-program-the-overlapping-of-tags-with-the-keyword-at-in-the-step-7-(tia-portal)-?dti=0&lc=en-WW oppure oppure https://support.industry.siemens.com/tf/WW/en/posts/overlaying-structured-tags-with-at/155255?page=0&pageSize=10
batta Inserita: 5 febbraio 2019 Segnala Inserita: 5 febbraio 2019 (modificato) Quote .... da quando ho scoperto la funzione AT la metterei anche nel minestrone! Io la usavo di più in passato. Ho iniziato ad abbandonarla quando ho scoperto Scatter e Gather. La sovrapposizione con AT in realtà è molto più comoda dell'uso di Scatter e Gather: basta dichiarare le variabili, e non si deve scrivere una riga di codice. Mi dà però un po' fastidio il fatto che si possa sfruttare solo nei blocchi "non ottimizzati", oppure nei blocchi ottimizzati ma con "ritenzione impostata nel'IDB" (quindi esclude l'uso nelle FC non ottimizzate e nell'area TEMP anche nelle FB, sempre non ottimizzate). Direi però che questo è uno dei casi più classici in cui non c'è un modo migliore dell'altro, ma è una semplice questione di gusti personali. Modificato: 5 febbraio 2019 da batta
pigroplc Inserita: 5 febbraio 2019 Segnala Inserita: 5 febbraio 2019 12 minuti fa, batta scrisse: quando ho scoperto Scatter e Gather. per ora sto provando un impianto con Simotion e non ho tempo ma il prossimo è col 1500, mi hai messo curiosità. Non so ancora per cosa perché il codice è oramai terminato, ma mi inventerò sicuramente qualcosa per far delle prove.... 😁
batta Inserita: 5 febbraio 2019 Segnala Inserita: 5 febbraio 2019 Quote ma mi inventerò sicuramente qualcosa per far delle prove.... Sei pazzo? 😂 Se funziona, non toccare nulla! Minimo, rischi di trovarti nei casini con lo scambio dei byte. Casomai, ci puoi pensare per il prossimo lavoro. Poi non è detto che la nuova strada ti piaccia più di quella vecchia.
Giuseppe Micieli Inserita: 7 febbraio 2019 Autore Segnala Inserita: 7 febbraio 2019 intanto io vi ringrazio
pigroplc Inserita: 7 febbraio 2019 Segnala Inserita: 7 febbraio 2019 il 5/2/2019 at 13:04 , batta scrisse: Sei pazzo? 😂 Se funziona, non toccare nulla! 😁😁😁 L'esperienza mi ha suggerito di non toccare le cose che funzionano e che il software ben fatto è come il maiale che non si butta via nulla..... Quando marcisco ore dal cliente a verificare che la produzione funziona oppure negli aeroporti in attesa di voli e coincidenze mi invento sempre delle funzioncine che per la maggior parte delle volte servono a poco o niente, altre volte invece "rivendo" nel forum qualora ci siano esplicite richieste, quindi SCATTER e GHATER saranno la mia "settimana enigmistica" qui a Doha.
Giuseppe Micieli Inserita: 7 febbraio 2019 Autore Segnala Inserita: 7 febbraio 2019 ma ho provato anche cosi....sembra funzionare......
batta Inserita: 7 febbraio 2019 Segnala Inserita: 7 febbraio 2019 Non si vede cosa c'è scritto prima, ma c'è qualcosa che non quadra. Prima di tutto, scrivi lo stato del RLC (risultato logico), su ingressi. Ma questo non influenza minimamente il valore che verrà scritto in "OUT", che dipende dal contenuto dell'accumulatore, e che non vediamo dove viene impostato. Mi sa che stai facendo un bel po' di confusione.
Giuseppe Micieli Inserita: 7 febbraio 2019 Autore Segnala Inserita: 7 febbraio 2019 Si..... Sto facendo un po' di tentativi Il problema è che non sono tanto pratico con siemens... Ho usato Schneider.... Ma volevo sperimentare con siemens.. Perché ne ho uno sottomano.
STEU Inserita: 7 febbraio 2019 Segnala Inserita: 7 febbraio 2019 Scusate ragazzi ho provato a mettere AT sul tipo dati ma non sono riuscito a fare come nel video. Io utilizzo 1500 con tia portal 14. Cosa posso fare di sbagliato?
Giuseppe Micieli Inserita: 7 febbraio 2019 Autore Segnala Inserita: 7 febbraio 2019 ciao ho fatto un po' un copia e incolla dei vostri suggerimenti quindi prima creo 1 MB CLIENT per indirizzare, 2 SCATTER per convertire la word in bit (bool) 3 con l'uscita dello SCATTER creo una di db di array (bool) vi convince cosi ?
batta Inserita: 7 febbraio 2019 Segnala Inserita: 7 febbraio 2019 Quote Scusate ragazzi ho provato a mettere AT sul tipo dati ma non sono riuscito a fare come nel video. Io utilizzo 1500 con tia portal 14. Cosa posso fare di sbagliato? Il blocco deve essere "Non Ottimizzato". Nella guida in linea del TIA, ti basta cercare "sovrapposizione con at", e trovi tutte le spiegazioni.
batta Inserita: 7 febbraio 2019 Segnala Inserita: 7 febbraio 2019 Quote con l'uscita dello SCATTER creo una di db di array (bool) Non puoi collegare all'uscita di "Scatter" un bit (infatti te lo segna in rosso). Devi collegare un array di bool (oppure una struttura di bool) della stessa dimensione della variabile in ingresso. Con Siemens abituati a non usare i merker, ma i DB. In un DB ti crei una struttura di bool, e la colleghi all'uscita di Scatter. Se lo vuoi fare con i merker, devi crearti un "Tipo di dati" (sempre del numero corretto di bool) e, nella tabella dei simboli, dichiarare nella colonna "Tipo", al posto di Bool, il tipo di dati da te creato.
pigroplc Inserita: 7 febbraio 2019 Segnala Inserita: 7 febbraio 2019 6 ore fa, STEU scrisse: ho provato a mettere AT sul tipo dati ma non sono riuscito esempio: definisci una variabile word nelle variabili interne e nella riga successiva definisci un'altra variabile dove per default prenderebbe word tu scrivi AT e dai invio. nella colonna del nome prende la dichiarazione AT 'NomeDellaVariabilePrecedente" tipo word. Gli cambi da "word" a "Array[0..15] of Bool" e il gioco è fatto. Era questo il tuo problema????
Giuseppe Micieli Inserita: 8 febbraio 2019 Autore Segnala Inserita: 8 febbraio 2019 Grazie ragazzi... Piano piano ci arriviamo.....
Giuseppe Micieli Inserita: 8 febbraio 2019 Autore Segnala Inserita: 8 febbraio 2019 10 ore fa, batta scrisse: Non puoi collegare all'uscita di "Scatter" un bit (infatti te lo segna in rosso). Devi collegare un array di bool (oppure una struttura di bool) della stessa dimensione della variabile in ingresso. Con Siemens abituati a non usare i merker, ma i DB. In un DB ti crei una struttura di bool, e la colleghi all'uscita di Scatter. Se lo vuoi fare con i merker, devi crearti un "Tipo di dati" (sempre del numero corretto di bool) e, nella tabella dei simboli, dichiarare nella colonna "Tipo", al posto di Bool, il tipo di dati da te creato. Batta si scusami quando ho fatto lo screen non avevo ancora definito.... Ora proverò come dici tu a creare la dB anziché un Merkel..... Mq è proprio vero che cambiando plc cambia il modo di programmare... Probabilmente usando Schneider certi passaggi non mi entrano in testa perché ha un altro concetto
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