Vai al contenuto
PLC Forum


Media con array


Ricky_motoraro

Messaggi consigliati

Salve, avrei bisogno di una mano.

vorrei creare una media mobile usando un'array con plc s7-300.. so che sul TIA esiste il blocco funzione DEMUX, 

vorrei appunto fare un blocco per poi salvarlo nella mia libreria, non so usare il linguaggio scl...

 

grazie in anticipo..

 

Link al commento
Condividi su altri siti


Ciao,

perdonami ma non riesco a capire cosa intendi per media mobile... comunque la strada più semplice la vedo un ciclo for in scl se vuoi possiamo provare a buttare giù un’esempio semplice (se legge Batta che è un mago in queste cose sarà sicuramente più bravo di me a spiegarti la cosa). Non è poi così difficile l’scl e per queste cose è una goduria... è fattibile anche in kop anche se è abbastanza macchinoso e molto meno leggibile. 

Con il 300 non ho quasi mai lavorato ma la sostanza non cambia

 

buona serata

Link al commento
Condividi su altri siti

FUNCTION_BLOCK "FilterAverageReal"
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
   VAR_INPUT 
      Input : Real;
      SamplesNum : Int;
      InitValueReq : Bool;
      InitValue : Real;
   END_VAR

   VAR_OUTPUT 
      Output : Real;
   END_VAR

   VAR 
      Samples : Array[0..100] of Real;
      Index : Int;
      Summe : Real;
   END_VAR


BEGIN
	#Summe := 0.0;
	
	IF #InitValueReq THEN
	    FOR #Index := 100 TO 0 BY -1 DO
	        #Samples[#Index] := #InitValue;
	    END_FOR;
	END_IF;
	
	FOR #Index := 100 TO 1 BY -1 DO
	    #Samples[#Index] := #Samples[#Index - 1];
	    IF (#Index <= #SamplesNum) THEN
	        #Summe := #Summe + #Samples[#Index];
	    END_IF;
	END_FOR;
	#Samples[0]:=#Input;
	#Output := #Summe / (#SamplesNum);
	
END_FUNCTION_BLOCK

 

Link al commento
Condividi su altri siti

ciao, grazie intanto, faccio una prova, vediamo cosa viene fuori..

per fare una media si possono sommare i vari campioni e dividerli per il numero di campioni..

in teoria  si può anche spalmare i vari campioni di misura sulle variabili di un'array, diciamo di 10 campioni di misura, ora quello che non ho capito, è se il mio risultato finale è il valore più alto registrato nei 10 campionamenti. 

 

ho citato il demux del TIA portal, perchè serve appunto per fare delle medie usando l'array...ma mi sfugge cosa fa il demux...

 

non volevo usare SCL, perchè a volte usiamo anche il GE, e quindi volevo capire come usare gli array..

 

 

Link al commento
Condividi su altri siti

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