attiliovolpe Inserito: 27 luglio 2014 Segnala Inserito: 27 luglio 2014 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 , e chi magari ha già affrontato il problema, qual è l'algoritmo da utilizzare per implementare una funzione di rampa? Grazie in anticipo
dott.cicala Inserita: 28 luglio 2014 Segnala Inserita: 28 luglio 2014 (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: 28 luglio 2014 da dott.cicala
attiliovolpe Inserita: 28 luglio 2014 Autore Segnala Inserita: 28 luglio 2014 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
dott.cicala Inserita: 28 luglio 2014 Segnala Inserita: 28 luglio 2014 (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: 28 luglio 2014 da dott.cicala
attiliovolpe Inserita: 28 luglio 2014 Autore Segnala Inserita: 28 luglio 2014 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
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora