Giuseppe Micieli Segnala abuso Inserito il: Febbraio 1 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. Condividi questa discussione Link discussione Condividi su altri siti
batta Segnala abuso Inserito il: Febbraio 1 Prova a guardare le istruzioni SCATTER e GATHER. Condividi questa discussione Link discussione Condividi su altri siti
Giuseppe Micieli Segnala abuso Inserito il: Febbraio 1 Grazie del l'info ci provo Condividi questa discussione Link discussione Condividi su altri siti
Giuseppe Micieli Segnala abuso Inserito il: Febbraio 4 ciao ho provato , ma non sono quelli , a me servono come quello in foto che ho su step 7 Condividi questa discussione Link discussione Condividi su altri siti
pigroplc Segnala abuso Inserito il: Febbraio 4 (editato) 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 Messaggio editato Febbraio 4 da pigroplc Condividi questa discussione Link discussione Condividi su altri siti
Giuseppe Micieli Segnala abuso Inserito il: Febbraio 4 grazie pigroplc.....ci prov vediamo cosa succede Condividi questa discussione Link discussione Condividi su altri siti
batta Segnala abuso Inserito il: Febbraio 4 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; Condividi questa discussione Link discussione Condividi su altri siti
pigroplc Segnala abuso Inserito il: Febbraio 4 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! 😂 Condividi questa discussione Link discussione Condividi su altri siti
Giuseppe Micieli Segnala abuso Inserito il: Febbraio 4 Grazie per i consigli Pigroplc... Non mi è chiara una cosa... La funzione (AT) che cos'è di preciso? Condividi questa discussione Link discussione Condividi su altri siti
pigroplc Segnala abuso Inserito il: Febbraio 4 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 Condividi questa discussione Link discussione Condividi su altri siti
batta Segnala abuso Inserito il: Febbraio 5 (editato) 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. Messaggio editato Febbraio 5 da batta Condividi questa discussione Link discussione Condividi su altri siti
pigroplc Segnala abuso Inserito il: Febbraio 5 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.... 😁 Condividi questa discussione Link discussione Condividi su altri siti
batta Segnala abuso Inserito il: Febbraio 5 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. Condividi questa discussione Link discussione Condividi su altri siti
Giuseppe Micieli Segnala abuso Inserito il: Febbraio 7 intanto io vi ringrazio Condividi questa discussione Link discussione Condividi su altri siti
pigroplc Segnala abuso Inserito il: Febbraio 7 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. Condividi questa discussione Link discussione Condividi su altri siti
Giuseppe Micieli Segnala abuso Inserito il: Febbraio 7 ma ho provato anche cosi....sembra funzionare...... Condividi questa discussione Link discussione Condividi su altri siti
batta Segnala abuso Inserito il: Febbraio 7 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. Condividi questa discussione Link discussione Condividi su altri siti
Giuseppe Micieli Segnala abuso Inserito il: Febbraio 7 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. Condividi questa discussione Link discussione Condividi su altri siti
STEU Segnala abuso Inserito il: Febbraio 7 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? Condividi questa discussione Link discussione Condividi su altri siti
Giuseppe Micieli Segnala abuso Inserito il: Febbraio 7 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 ? Condividi questa discussione Link discussione Condividi su altri siti
batta Segnala abuso Inserito il: Febbraio 7 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. Condividi questa discussione Link discussione Condividi su altri siti
batta Segnala abuso Inserito il: Febbraio 7 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. Condividi questa discussione Link discussione Condividi su altri siti
pigroplc Segnala abuso Inserito il: Febbraio 7 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???? Condividi questa discussione Link discussione Condividi su altri siti
Giuseppe Micieli Segnala abuso Inserito il: Febbraio 8 Grazie ragazzi... Piano piano ci arriviamo..... Condividi questa discussione Link discussione Condividi su altri siti
Giuseppe Micieli Segnala abuso Inserito il: Febbraio 8 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 Condividi questa discussione Link discussione Condividi su altri siti