Elaborazione PID con uscita PWM opzionale
L'elaborazione PID viene eseguita per mantenere il valore corrente PV il più possibile vicino al valore target SP. Contrariamente a F355_PID_DUT, questa istruzione abilita un'uscita PWM (uscita on-off). È inoltre disponibile l'autotuning per calcolare automaticamente i dati di controllo PID Kp, Ti e Td.
Ingresso
Condizione di avvio
Dato di controllo
Parametri di controllo PID
Valore manipolato MV, area modalità di controllo aggiuntiva, area relativa all'autotuning e area di lavoro
Quando si esegue l'istruzione per la prima volta, ovvero quando la condizione di esecuzione specificata in Run passa a TRUE, i valori di default vengono scritti sui membri DUT da 1 a 9 della DUT.
Valore corrente (-30000–30000)
Uscita
Uscita modulata a larghezza di impulso (opzionale, al posto dell'uscita valore manipolato)
Anziché utilizzare questa istruzione F, si consiglia di utilizzare l'istruzione FP7 corrispondente: FP_PID
Abbreviazioni utilizzate nella descrizione dell'elaborazione PID
Abbreviazione |
Significato |
Detto anche |
---|---|---|
PV |
Valore corrente | Valore corrente, valore misurato |
SP |
Valore target | Target, valore target |
MV |
Valore manipolato | Valore di uscita, variabile manipolata |
Ts |
Tempo di campionamento | Tempo di scan |
Ti |
Tempo integrale | - |
Td |
Tempo derivativo | - |
Kp |
Guadagno proporzionale | - |
AT |
Autotuning | - |
Prima della seconda esecuzione di FP_PID, è necessario modificare i membri DUT da 1 a 9 della DUT ai valori richiesti.
Quando viene eseguito l'ingresso su Run, i dati nell'argomento ParametersNonHold vengono inizializzati. Se si desidera che un valore nella DUT utilizzi valori non predefiniti, scrivere i valori nella DUT utilizzando un'istruzione MOVE, ad esempio, la quale deve essere attivata continuamente da una condizione TRUE.
F356_PID_PWM deve essere eseguito una sola volta per ogni scansione. Non eseguite quindi F356_PID_PWM nei programmi di interrupt o nei circuiti.
Non impostate la condizione di esecuzione su FALSE durante l'elaborazione PID. Altrimenti l'elaborazione PID viene disabilitata.
Se non desiderate cicli di uscita PWM paralleli, p.es. per abilitare il controllo di più oggetti, ritardate i tempi di avviamento, p.es. utilizzando un'istruzione timer.
Il periodo (ciclo) dell'uscita PWM è il tempo di campionamento Ts (la frequenza dell'uscita PWM è 1/Ts) e la duty ratio è il valore manipolato MV in unità dello 0,01%, p.es. MV = 10000 significa una duty ratio del 100%.
se qualsiasi parametro di F356_Parameters_NonHold_DUT è fuori intervallo
se qualsiasi parametro di F356_Parameters_NonHold_DUT è fuori intervallo
se l'area specificata con UpperLimit o LowerLimit è fuori intervallo
Condizioni di controllo: F356_Parameters_Hold_DUT
Valore target SP e i parametri di controllo: F356_Parameters_Hold_DUT
Note aggiuntive sull'autotuning:
I membri AT_Progress in F356_Parameters_Hold_DUT e b1_AT_Complete in F356_Control_DUT vengono cancellati sul fronte di salita del segnale di autotuning.
Una volta completato correttamente l'autotuning, l'elemento b1_AT_Complete di F356_Control_DUT viene impostato e il codice di autotuning concluso viene memorizzato nell'elemento AT_Progress di F356_Parameters_NonHold_DUT.
Quando l'autotuning viene interrotto, i parametri di Kp, Ti e Td non vengono modificati.
Nella lista variabili globali si definiscono variabili alle quali possono accedere tutti i POU del progetto.
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
_VAR
VAR
bStartAutoTuning: BOOL:=FALSE;
bRunPidControl: BOOL:=FALSE;
ControlData: F356_Control_DUT;
ParametersHold: F356_Parameters_Hold_DUT;
ParametersNonHold: F356_Parameters_NonHold_DUT;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_CONTACT,,bStartAutoTuning,5,1,7,3,R);
B(B_COIL,,ControlData.b0_AT_Request,22,1,24,3,);
L(1,2,5,2);
L(7,2,22,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_F,F356_PID_PWM!,Instance,11,0,22,7,,?DRun?DControl?DParametersHold?DParametersNonHold?DProcessValue?APWM_Output);
B(B_VARIN,,ControlData,9,2,11,4,);
B(B_VARIN,,ParametersHold,9,3,11,5,);
B(B_VARIN,,ParametersNonHold,9,4,11,6,);
B(B_VARIN,,x_iTemperatureInput,9,5,11,7,);
B(B_VAROUT,,y_bPwmOutput,22,1,24,3,);
B(B_CONTACT,,bRunPidControl,4,1,6,3,);
L(1,2,4,2);
L(6,2,11,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
(* Auto Tuning: *)
if DF(bStartAutoTuning) then
ControlData.b0_AT_Request:=TRUE;
end_if;
y_bPwmOutput:=F356_PID_PWM( Run := bRunPidControl,
Control := ControlData,
ParametersHold := ParametersHold,
ParametersNonHold := ParametersNonHold,
ProcessValue := x_iTemperatureInput);