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 Enable dopo un QuickStop
^2^ TargetRef rappresenta il target di posizione per MovingMode = 0/1 oppure il target veolcità per MovingMode = 2
la variabile HW_Address identifica il driver specifico controllato dalla FB e può essere configurato dinamicamente scrivendo al suo interno l'oggetto Profinet corrispondente al Drive desiderato

La variabile MovingMode può assumere valori 0-3 corrispondenti alle seguenti modalità di movimento:
|-----|-------------------------|
| 0 | Controllo assoluto |
| 1 | Controllo relativo |
| 2 | Controllo in velocità |
| 3 | Modalità Jog |
- Output:
| Nome | Funzione |
|---|---|
Enabled |
Drive abilitato |
SafeTorqueOff |
STO attivato |
Error |
errore Drive |
Moving |
Motore in movimento |
Homed |
Homing eseguito |
TargetReached |
Target posizione/velocità raggiunto |
InPos |
la posizione è in TargetRef ± Limit_Range |
ActualPos |
Posizione attuale |
ActualSpeed |
Velocità attuale |
ActualCurrent |
Corrente attuale |
CommunicationError |
Comunicazione interrotta o configurazione Profinet errata |
DriveStatus |
Stato del Drive |
_Status |
Descrizione dello stato |
ErrorCode |
Codice di errore Drive (lista allarmi PSD) |
ErrorQuittable |
Indica se l'errore è |
ErrorDescription |
Descrizione dell'errore |
^3^ Se ErrorQuittable = False sarà 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:
|---------------|-----------|
| MovingMode | 0 |
| Speed | 305000 |
| Accel | 1000000 |
| Decel | 1000000 |
| TargetRef | 2450 |
TargetRef corrisponde alla quota da raggiungere in modalità assoluta o all'incremento in modalita relativa
- Modalità di Movimento in Velocità (
MovingMode = 2) I parametri necessari sono:
|---------------|-----------|
| MovingMode | 2 |
| Accel | 1000000 |
| Decel | 1000000 |
| TargetRef | 305000 |
TargetRef corrisponde alla velocità da mantenere e può essere modificato anche in movimento.
Il motore può essere fermato con StartMove = 0 oppure con TargetRef = 0.
- Modalità di Movimento Jog (
MovingMode = 3) I parametri necessari sono:
|---------------|-----------|
| MovingMode | 3 |
| JogSpeed | 20000 |
| JogAccel | 1000000 |
| JogDecel | 1000000 |
Il movimento viene gestito tramite gli ingressi JogP e JogN.