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




Librerie Tia Portal


Messaggi consigliati

Giuseppe Micieli
Inserito:

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. 


Inserita:

Prova a guardare le istruzioni SCATTER e GATHER.

Giuseppe Micieli
Inserita:

Grazie del l'info ci provo 

 

Giuseppe Micieli
Inserita:

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

b & w.JPG

Inserita: (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: da pigroplc
Giuseppe Micieli
Inserita:

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

Inserita:

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;

 

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

Grazie per i consigli 

Pigroplc... Non mi è chiara una cosa... La funzione (AT) che cos'è di preciso? 

 

 

Inserita: (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: da batta
Inserita:
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.... 😁

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

intanto io vi ringrazio

 

 

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

929252117_btow.JPG.1dc70fd4d890927e3d948fe122d33877.JPG

 

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

Inserita:

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:

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. 

 

 

 

 

Inserita:

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:

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

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

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

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

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

 

 

 

Giuseppe Micieli
Inserita:
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 

 

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