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




Algoritmo Per Generare Rampe


Messaggi consigliati

Inserito:

Sono ultimamente applicato a far funzionare una funzione per generare rampe su plc della serie 200, ma tra conversioni, spostamenti e tutto il resto ad un certo punto mi pianto e non riesco a tirare fuori l'algoritmo della funzione rampa, che mi potrebbe essere utile per semplificare gli spunti che prendo da una funzione scritta per 300.

Con l'aiuto di Drugo66 ho fatto non poca chiarezza sull'ambiente microWin, l'utilizzo delle variabili, e tutto il resto che riguarda questa famiglia di plc ormai più o meno obsoleta e sostituita dalla famiglia 1200 programmabile in ambiente TIA Portal e comunque Step 7.

Chiedo, e qui mi piacerebbe un intervento di batta :whistling: , e chi magari ha già affrontato il problema, qual è l'algoritmo da utilizzare per implementare una funzione di rampa?

Grazie in anticipo


Inserita: (modificato)
Questo è il più semplice che mi viene in mente:
FUNCTION_BLOCK FB155
TITLE = 'Simple Ramp Gen'
Know_How_Protect
AUTHOR : ST
VAR_INPUT
VRin :REAL; // Riferimento input
Kv :REAL; // Coeff. di regolazione
VRmin :REAL; // Valore output di regolazione minimo
VRmax :REAL; // Valore output di regolazione massimo
bypass :BOOL; // Esclude rampe
END_VAR
VAR
Vclc :REAL; // Valore regolato
END_VAR
VAR_OUTPUT
Vout :REAL;
Yout :INT; // Valore output di regolazione
END_VAR
BEGIN
IF NOT bypass THEN
IF Vclc <> VRin THEN
IF ABS(Vclc-VRin)<=(Kv/10) THEN
Vclc:= VRin;
ELSE
IF (Vclc < VRin)THEN
Vclc:= Vclc+Kv;
END_IF;
IF (Vclc > VRin)THEN
Vclc:= Vclc-Kv;
END_IF;
END_IF;
ELSE Vclc:= VRin;
END_IF;
ELSE Vclc:= VRin;
END_IF;
IF Vclc < VRmin THEN
Vclc:= VRmin;
ELSIF Vclc > VRmax THEN
Vclc:= VRmax;
END_IF;
Vout:=(ROUND(Vclc*1000.0))*0.001;
Yout:= REAL_TO_INT (Vclc * 2764.7);
END_FUNCTION_BLOCK
Modificato: da dott.cicala
Inserita:

Grazie dott.cicala, mi piacerebbe però capire qual è il calcolo applicato, mi fa piacere avere magari la funzione già fatta, mi piacerebbe però anche capire e c'è sempre un punto in comincio da capo e mi blocco...

Adesso sto provando a scrivere io qualcosa di semplice partendo da zero, una rampa che parte da zero all'attivazione di un bit e resta al valore massimo fino a quando il bit è a 1, lo sto scrivendo in KOP in quanto vorrei utilizzare una CPU 214 abbastanza vecchia e limitata per automatizzare una illuminazione a led dimmerabile (ho anche altri semplici automatismi, non uso il plc come dimmer!) e lo sto facendo con l'aiuto di qualche altro membro del forum;

E' da poco che sto cercando di andare oltre la formazione da manutentore e avendo del tempo libero cerco di "guardare" dentro le funzioni, la rampa è quella che spesso trovo nei software per quello di cui mi occupo nel mio lavoro.

Intanto grazie ancora

Inserita: (modificato)

in pratica genera una rampa di salita/discesa con passo pari al valore di Kv, se il valore assoluto della differenza fra VRin e Vclc è maggiore di kv/10.

E' possibile escludere la rampa attivando il bypass e viene controllato che il valore d'uscita non superi i limiti....

Fornisce un'uscita real e una in dec.. il tutto scalato su 27647 punti, nell'ambito dei limiti max- min

Una rampa, non specificando il tipo, si presume lineare e quindi non è altro che incrementare/decrementare, magari nel tempo, un valore di una certa entità definita passo, step ecc ecc.

la puoi fare in awl con ad es:

L mw10

L 1

+i

=mw10

mw10 si incrementerà di 1 ...la velocità di incremento dipenderà da come/dove richiami la funzione....

.

Modificato: da dott.cicala
Inserita:

Chiaro, grazie.

Diventa poi complicato trasformare una rampa lineare in una rampa ad "S"?

Ho già affrontato l'argomento sul forum e stavo guardando anche quello, una volta capito il meccanismo vorrei capire come come modificare la funzione per avere un andamento ad "S".

Bene, intanto grazie ancora

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