4. Programmazione del PLC Siemens
Il Function Block avanzato permette, rispetto all'FB base, di controllare tramite fieldbus parametri aggiuntivi quali velocità e accelerazione di Jog, limitazione di corrente e freno. Richiedendo un maggior numero di words Profinet rispetto alla configurazione base, l'applicazione avanzata è compatibile unicamente con PSD1 ad asse singolo. Di seguito la struttura dei dati scambiati tra PSD e PLC:
-
Ouptut PSD --> Input PLC
Nome DataType Contenuto 0x6041.0WORD Status word 0x6064.0LREAL Posizione attuale 0x606C.0LREAL Velocità attuale 0x31C1.1WORD Input digitali Drive 0x603F.0WORD Codice errore Drive 0x3321.2LREAL Corrente attuale -
Output PLC --> Input PSD
Nome DataType Contenuto 0x6040.0WORD Control word 0x6081.0LREAL Posizione target 0x6083.0LREAL Velocità posizionamento 0x6084.0LREAL Accel. posizionamento 0x346A.0LREAL Decel. posizionamento 0x3468.0LREAL Velocità Jog 0x346E.0LREAL Accel. Jog 0x341C.5WORD Decel. Jog 0x3212.1WORD Jerk 0x3212.2WORD Limite corrente positivo 0x3402.0LREAL Limite corrente negativo
Importare il Function Block in TIA Portal:
Per poter utilizzare l'FB in TIA Portal sarà necessario importarne il codice sorgente dal pacchetto FB avanzato per PSD1
- In Project Tree > PLC_1 > External source files selezionare la voce Add new external file e indicare il percorso del file FB_PSD_1_0_2.scl
- Ora è necessario generare l'FB premendo il tasto destro del mouse sul file appena importato e selezionando la voce generate blocks from source
A questo punto sarà possibile richiamare il blocco nella sezione desiserata, assegnargli un'istanza e parametrizzarlo.
Parametrizzazione del Function Block:
-
Input:
Nome Funzione HW_AddressIndirizzo hardware Profinet del PSD1 EnableAbilitazione Drive ResetReset allarmi Drive QuickStopFermata rapida Drive [1] OpenBrakeApertura freno quando Enable = 0StartMoveStart movimento (NON-latching) JogPComando Jog positivo JogNComando Jog negativo HomingAvvio procedura di homing del Drive MovingModeModalità di movimento Limit_RangeFinestra di raggiungimento TargetRefPosCurrentLimitLimite di corrente positivo NegCurrentLimitLimite di corrente negativo JogSpeedVelocità di Jog JogAccelAcccel. Jog JogDecelDecel. Jog SpeedVelocita posizionamento AccelAccel. posizionamento DecelDecel. posizionamento JerkJerk posizionamento TargetRefTarget di posizione/velocità [2] [1] Il drive necessita di essere riabilitato tramite
Enabledopo unQuickStop[2]
TargetRefrappresenta il target di posizione perMovingMode = 0/1oppure di velocità perMovingMode = 2
la variabileHW_Addressidentifica il driver specifico controllato dalla FB e può essere configurato dinamicamente scrivendo al suo interno l'oggetto Profinet corrispondente al Drive desiderato
La variabile
MovingModepuò assumere valori 0-3 corrispondenti alle seguenti modalità di movimento:Valore Funzione 0Controllo assoluto 1Controllo relativo 2Controllo in velocità 3Modalità Jog -
Output:
Nome Funzione EnabledDrive abilitato SafeTorqueOffSTO attivato Errorerrore Drive MovingMotore in movimento HomedHoming eseguito TargetReachedTarget posizione/velocità raggiunto InPosla posizione è in TargetRef ± Limit_RangeActualPosPosizione attuale ActualSpeedVelocità attuale ActualCurrentCorrente attuale CommunicationErrorComunicazione interrotta o configurazione Profinet errata DriveStatusStato del Drive _StatusDescrizione dello stato ErrorCodeCodice di errore Drive (lista allarmi PSD) ErrorQuittableIndica se l'errore è resettabile [3] ErrorDescriptionDescrizione dell'errore [3] Se
ErrorQuittable = Falsesarà necessario riavviare il drive per resettare l'errore
Esempi di modalità di movimento:
-
Modalità di Movimento Assoluto o Relativo (
MovingMode = 0/1) I parametri necessari sono:Nome Valore MovingMode0Speed305000Accel1000000Decel1000000TargetRef2450TargetRefcorrisponde alla quota da raggiungere in modalità assoluta o all'incremento in modalita relativa.
-
Modalità di Movimento in Velocità (
MovingMode = 2) I parametri necessari sono:Nome Valore MovingMode2Accel1000000Decel1000000TargetRef305000TargetRefcorrisponde alla velocità da mantenere e può essere modificato anche in movimento. Il motore può essere fermato conStartMove = 0oppure conTargetRef = 0.
-
Modalità di Movimento Jog (
MovingMode = 3) I parametri necessari sono:Nome Valore MovingMode3JogSpeed20000JogAccel1000000JogDecel1000000Il movimento viene gestito tramite gli ingressi
JogPeJogN.