Prestazione
La pianificazione dei movimenti viene eseguita in un'attività separata poiché il calcolo richiede un utilizzo intensivo della CPU. Questa attività separata viene definita attività di pianificazione e viene eseguita parallelamente all'attività del bus. Se le prestazioni del PLC non sono sufficienti per pianificare in tempo il percorso nell'attività di pianificazione per l'attività del bus, si tratta di problemi di prestazioni.
I problemi di prestazione nella pianificazione del movimento possono portare a SMC_CP_QUEUE_UNDERRUN
errore, ma possono anche comportare un movimento a scatti o più lento del previsto. Per informazioni su SMC_CP_QUEUE_UNDERRUN
errore, vedere il Errori comuni capitolo. La diagnosi dei problemi legati alle prestazioni con i movimenti è descritta di seguito.
Diagnosi in caso di movimenti lenti o a scatti
Se non ci sono problemi di prestazione, allora ogni movimento è pianificato in modo tale che almeno uno dei limiti effettivi viene raggiunta durante tutto il movimento. Ad esempio, consideriamo un semplice portale bidimensionale con due assi X e Y e un movimento PTP dalla posizione (0,0) a (10,-10). La velocità massima dell'asse è 20, l'accelerazione massima dell'asse è 100 e lo strappo massimo dell'asse è 1000.
Il movimento previsto è simile al seguente:

L'accelerazione viene inizialmente stabilita con uno strappo massimo fino al raggiungimento del valore limite di accelerazione di 100. Dopo una breve fase di accelerazione costante, l'accelerazione viene nuovamente ridotta con uno strappo massimo, in modo che con l'accelerazione 0 venga raggiunto il valore limite di velocità di 20. Dopo una fase di velocità costante avviene una decelerazione in modo che la posizione di destinazione venga raggiunta con velocità e accelerazione 0.
Ci sono due possibili ragioni per cui il movimento reale si discosta da questa curva ideale:
Il movimento pianificato non corrisponde alla curva ideale a causa di problemi di prestazione nell'attività di pianificazione.
Il movimento pianificato corrisponde alla curva ideale, ma il robot non lo esegue come previsto.
Caso 1: problemi di prestazione dell'attività di pianificazione
Se si verificano problemi con le prestazioni durante la pianificazione, il movimento potrebbe invece assomigliare a questo:

Questo perché il movimento viene pianificato nell'attività di pianificazione parallelamente all'esecuzione nell'attività bus. In media, l'attività di pianificazione deve fornire tutta la traiettoria richiesta dall'attività dell'autobus. Se le prestazioni non sono sufficienti, il movimento viene rallentato. Ciò porta alla curva di velocità ondulata.
Il primo e più importante strumento per diagnosticare tali problemi è la traccia. In aggiunta a fSetPosition
, fSetVelocity
, E fSetAcceleration
variabili per ciascun asse, il numTimeBudgetExceeded
E numSlowDownLowIpoQueue
uscite del SMC_GroupReadPlanningStatistics
anche il blocco funzione dovrebbe essere registrato. Se questi contatori aumentano continuamente, si è verificato un problema di prestazioni.
Avviso
Allo stesso modo al fSetPosition
, fSetVelocity
, E fSetAcceleration
variabili, c'è anche il fSetJerk
variabile per lo scatto. Va notato che il jerk non è il jerk medio applicato durante il ciclo del task del bus (come spesso previsto), ma piuttosto il jerk istantaneo alla fine del ciclo. Perciò, FSetJerk
ha solo un significato limitato per la diagnosi dei problemi di prestazioni.
Modi per migliorare il movimento
L'elenco seguente contiene i passaggi per gestire i problemi di prestazioni:
Adattamento dei valori limite per velocità, accelerazione e strappo:
Quanto più tempo occorre per decelerare dalla velocità attuale fino all'arresto, tanto maggiore è la potenza di calcolo richiesta
Un valore limite effettivo elevato per la velocità e valori limite effettivi bassi per accelerazione e strappo hanno quindi maggiori probabilità di causare problemi di prestazione.
In particolare i valori limite per l'accelerazione e lo strappo non dovrebbero quindi essere impostati inutilmente bassi
Aumentare la priorità dell'attività di pianificazione o diminuire la priorità delle altre attività se bloccano l'attività di pianificazione. L'attività di pianificazione dovrebbe avere la seconda priorità più alta dopo l'attività del bus.
Assegnare l'attività di pianificazione a un core dedicato se sono disponibili più core CPU (vedereConfigurazione dell'attività di pianificazione).
Utilizzo
SMC_TuneCPKernel
per aumentare il valore delfPlanningInterval
e/ofSyncBufferDuration
parametri di pianificazione.IL
fPlanningInterval
Il parametro specifica l'incremento massimo di pianificazione (in secondi). Il tempo di ciclo dell'attività di pianificazione non deve superare in modo permanente questo valore. Un valore più elevato riduce la potenza di calcolo, ma può anche far sì che i valori limite impostati per velocità, accelerazione e strappo non vengano utilizzati completamente. Da un valore iniziale di 0,016 secondi (il valore predefinito da allora CODESYS SoftMotion versione 4.6.0.0), il valore dovrebbe essere gradualmente aumentato finché le prestazioni non saranno accettabili.IL
fSyncBufferDuration
Il parametro specifica la dimensione del buffer tra la pianificazione e l'attività del bus. I tempi di ciclo di punta dell'attività di pianificazione non devono superare questo valore. Un valore più elevato può compensare i picchi nel tempo di ciclo dell'attività di pianificazione. Allo stesso tempo, però, ciò aumenta anche la latenza per l'esecuzione di interruzioni e movimenti di interruzione.
Caso 2: Il robot non segue il movimento pianificato come previsto
Se il robot non segue il movimento pianificato come previsto, ciò potrebbe essere dovuto ai seguenti motivi:
Capacità in tempo reale insufficiente del controller
Problemi del loop di controllo degli azionamenti
Su un controller non compatibile con il tempo reale come il CODESYS Control Wino un controller basato su Linux senza una patch in tempo reale del sistema Linux sottostante, possono verificarsi movimenti troppo lenti o a scatti anche con prestazioni sufficienti. Ciò accade se l'attività del bus non viene eseguita puntualmente nell'intervallo di tempo configurato.
Modi per migliorare il movimento
Nella scheda "Monitoraggio" della configurazione dell'attività 1, controlla se l'attività è jitter dell'attività del bus 2 è troppo alto. Ciò può verificarsi perché il task del bus viene sostituito da un task con priorità uguale o superiore oppure perché il controller non è sufficientemente in grado di gestire il tempo reale.
Se il jitter è troppo elevato e ci si è già assicurati che il task del bus abbia la massima priorità, la capacità in tempo reale del controller non è sufficiente. In questo caso, utilizzare un controller con migliori proprietà in tempo reale.
Se si verificano problemi nel circuito di controllo nel convertitore, è necessario regolare i parametri del circuito di controllo. Il controllo feed forward della coppia può anche migliorare le prestazioni del circuito di controllo.
Per ulteriori informazioni, vedere: Limitazione della coppia e controllo dell'avanzamento della coppia
1: Si consiglia di reimpostare i valori misurati del monitoraggio dell'attività nel menu contestuale poiché il primo ciclo PLC dopo l'avvio dell'applicazione ha spesso una durata maggiore e un jitter maggiore.
2: Valori di jitter fino a ca. 20 us sono molto buoni e valori fino a ca. 100 noi sono buoni. A seconda degli azionamenti utilizzati, può funzionare anche il funzionamento con valori di jitter più elevati. I valori di jitter che raggiungono l'ordine di grandezza dell'intervallo del task del bus possono provocare il modello di errore sopra descritto.