Vai al contenuto

Giuseppe Micieli

Librerie Tia Portal

Recommended Posts

Giuseppe Micieli

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

Prova a guardare le istruzioni SCATTER e GATHER.

Condividi questa discussione


Link discussione
Condividi su altri siti
Giuseppe Micieli

Grazie del l'info ci provo 

 

Condividi questa discussione


Link discussione
Condividi su altri siti
Giuseppe Micieli

ciao ho provato , ma non sono quelli , a me servono come quello in foto che ho su step 7

b & w.JPG

Condividi questa discussione


Link discussione
Condividi su altri siti
pigroplc

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 da pigroplc

Condividi questa discussione


Link discussione
Condividi su altri siti
Giuseppe Micieli

grazie pigroplc.....ci prov  vediamo cosa succede

Condividi questa discussione


Link discussione
Condividi su altri siti
batta

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

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
batta
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 da batta

Condividi questa discussione


Link discussione
Condividi su altri siti
pigroplc
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
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

intanto io vi ringrazio

 

 

Condividi questa discussione


Link discussione
Condividi su altri siti
pigroplc
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

929252117_btow.JPG.1dc70fd4d890927e3d948fe122d33877.JPG

 

ma ho provato anche  cosi....sembra funzionare......

Condividi questa discussione


Link discussione
Condividi su altri siti
batta

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

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

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

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 ?

 

client.JPG

scatter.JPG

array.JPG

Condividi questa discussione


Link discussione
Condividi su altri siti
batta
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
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
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

Grazie ragazzi... Piano piano ci arriviamo..... 

 

 

 

Condividi questa discussione


Link discussione
Condividi su altri siti
Giuseppe Micieli
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

Registrati o accedi per inserire messaggi

Devi essere un utente registrato per lasciare un messaggio. La registrazione è GRATUITA.

Crea un account

Iscriviti alla nostra comunità. È facile!

Registra un nuovo account

Connettiti

Hai già un account? Connettiti qui

Connettiti adesso

×