onire77 Inserita: 1 luglio 2021 Segnala Share Inserita: 1 luglio 2021 (modificato) il 21/3/2021 at 13:09 , walterword scrisse: se vuoi puoi guardare un P.I. che ho scrittoio anni fa. Ho aggiunto anche la parte derivativa che se ti da fastidio la togli. E' previsto un duty cycle, uscita con Relè statico ed analogica. Guardalo e studialo, l'avevo scritto per S7-300, con pochi accorgimenti lo puoi riportare in TIA Portal. FUNCTION_BLOCK FB80 // Digital regulator P.I.D Written by Walter P - Milan - Italy 05/06/2009 VAR_INPUT Set_Point:REAL ; // Set point value Feedback:REAL ; // Feedback value process Kp:REAL; // K Proportional gain Ki:REAL; // K Integral gain Kd:REAL; // K Derivative gain Max_Analog:REAL; // Maximum value for analog output Max_Time_Cycle:REAL; // Maximum time cycle for PWM digital output (milliseconds) Scan_Time:REAL; // Scanning time of the plc Time_Sample:REAL; // Time sample in OB35 Enable:BOOL; // Enable PWM digital P.I.D. Reset:BOOL; // Reset regulator // Call this function in OB35 every 100-150 mS. Temperature regulation is fine. walterword molto interessante il tuo script, la variabile Scan_Time non è utilizzata o sbaglio? Invece Time_Sample è il tempo in cui viene richiamato il blocco espresso in mS? Inoltre perchè sommi 2 volte la componente D, è un errore? IF #Enable = true THEN #Out_Analog_Reg := #D + #I + #D; END_IF; Grazie Modificato: 1 luglio 2021 da onire77 Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 1 luglio 2021 Segnala Share Inserita: 1 luglio 2021 si è un errore di trascrizione la somma è P + I + D Link al commento Condividi su altri siti More sharing options...
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