Vai al contenuto
PLC Forum


Calcolo Valore Minimo Medio Massimo - FC per S7-300/400


batta

Messaggi consigliati

Un utente, in un'altra discussione, ha chiesto come calcolare i valori minimo-medio-massimo di un'area di variabili.

Allego qui un progettino di esempio (per S7-300/400), perché questa mi sembra la sezione più adatta.

Spero che questo possa servire come punto di partenza per comprenderne il funzionamento, e non solo per un utilizzo tipo "pappa pronta".

La funzione non effettua controlli sulla correttezza dei parametri in ingresso e non restituisce nessun codice in caso di errore.

Sarà cura esclusiva del programmatore fare in modo che l'area di variabili indicata esista.

Non mi assumo, ovviamente, nessuna responsabilità in caso di problemi derivanti dall'uso di questa funzione.

Come per altri miei piccoli lavori, potete farne l'uso che meglio credete. Unico piacere che chiedo, non cambiate il nome dell'autore, se non a seguito di rilevanti modifiche.

Grazie.

Clicca qui per scaricare il file

Link al commento
Condividi su altri siti


Bravo Batta, :clap: :clap: Ineccepibile e puntuale come sempre.

Io però del post precedente avevo inteso una cosa diversa , che mi veniva difficile realizzare in AWL , ma più fattibile in SCL o tramite uno script in VB dal pannello, cioè individuare quali siano i valori minimi e massimi in un gruppo di dati , senza specificarne il limite numerico del valore da intendersi come massimo o minimo, come le funzioni dei fogli di calcolo per excel , tanto per capirsi.

Poi per il valore medio non ha specificato se deve essere la media aritmetica o ponderata.

Sei vermente in gamba.

Ivan

Link al commento
Condividi su altri siti

...cioè individuare quali siano i valori minimi e massimi in un gruppo di dati , senza specificarne il limite numerico del valore da intendersi come massimo o minimo, come le funzioni dei fogli di calcolo per excel

Ma è proprio questo che fa la funzione.

Come parametri di ingresso si passa l'indirizzo della prima variabile e il numero di variabili.

In uscita avremo il valore minimo, il valore medio ed il valore massimo di tutte le variabili prese in considerazione.

I valori minimo, medio e massimo non vengono in alcun modo limitati dalla funzione. Unici limiti sono quelli imposti dal formato REAL.

La funzione è costruita per lavorare con variabili in formato REAL, ma con poche e semplici modifiche si può adattare ad altri formati.

Le variabili devono, ovviamente, essere consecutive.

Grazie per i complimenti, sempre graditi :) , ma per così poco...

Non ho impiegato più di 15 minuti, compresi test, archiviazione ed upload

Modificato: da batta
Link al commento
Condividi su altri siti

Non ho impiegato più di 15 minuti, compresi test, archiviazione ed upload

Allora vedi che ho ragione?

I miei complimenti non per "così poco".

Ciao

Ivan

Link al commento
Condividi su altri siti

Scusa Batta, con fadeout non mi apre lo zip, con 7zip lo apre ma mi dà un file senza estensione e con OS destinatario Unix. :huh:

Modificato: da JumpMan
Link al commento
Condividi su altri siti

Scusa Batta, con fadeout non mi apre lo zip, con 7zip lo apre ma mi dà un file senza estensione e con OS destinatario Unix.

Il file è stato creato utilizando direttamente la funzione "Archivia" di Step7, che utilizza "pkzip".

Ho fatto anche il download del file e lo apro tranquillamente sia usando "Estrai tutto" dal menù contestuale di Windows, sia con 7zip.

Comunque, potete provare con il seguente file, ottenuto semplicemente comprimendo la cartella del progetto.

post-205775-0-87541800-1392200843_thumb.

Link al commento
Condividi su altri siti

Salve l'esempio inserito da te devo dire che è molto utile.

Dato che non conosco il mondo Siemens e quindi non riesco ad aprire il file perche non possiedo l'ambiente di sviluppo della Siemens protresti spiegare come ai realizzato la funzione.

Grazie

Link al commento
Condividi su altri siti

Batta e' sempre molto gentile e utilissimo con i sui esempi

ma io resto dell'idea che bisognerebbe farseli , poiche' presi e non capiti puo' essere deleterio

protresti spiegare come ai realizzato la funzione

mettiamo per esempio una db con 10 dbd

faccio un puntatore che va da 0 a 9 e lo incremento di 1 ad ogni passaggio

moltiplico il puntatore per 4 ( indirizzo dbd ) e per 8

poi vado a testare quella dbd , se piu' alta di MD300 ( che all'inizio e' a 0 ) salvo il valore nella MD300 e mi salvo il valore del puntatore nella mw200

quando arrivo a 9 con il puntatore sulla MD300 ho il valore massimo ed in mw 200 ho quale DBD contiene il valore massimo

Ciao

Luca

Link al commento
Condividi su altri siti

Luca Bab ti ringrazzio per la delucidazione,purtroppo come dicevo prima non utilizzo Siemens,utilizzo solo Panasonic.

Premesso questo volevo saprese quando citi db,dbd,MD e mw a cosa ti riferisci,nel senso cosa sono ad sesmpio Word,DWord,ecc

faccio un puntatore che va da 0 a 9

Purtroppo non ho mai trattato l'argomento del puntatore ,quindi sinceramente parlando non so neanche cosa significa,potresti spiegarmi cosè

e come realizzato.

Ho provato a fare una ricerca nel forum ma non ho trovato nulla in merito che spieghi come realizzarlo e soprattutto cosè,in tal caso sapresti indirizzarmi verso una discussione dove si parli del puntatore

Grazie mille

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