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.0 |
WORD | Status word |
0x6064.0 |
LREAL | Posizione attuale |
0x606C.0 |
LREAL | Velocità attuale |
0x31C1.1 |
WORD | Input digitali Drive |
0x603F.0 |
WORD | Codice errore Drive |
0x3321.2 |
LREAL | Corrente attuale |
- Output PLC --> Input PSD
| Nome | DataType | Contenuto |
|---|---|---|
0x6040.0 |
WORD | Control word |
0x6081.0 |
LREAL | Posizione target |
0x6083.0 |
LREAL | Velocità posizionamento |
0x6084.0 |
LREAL | Accel. posizionamento |
0x346A.0 |
LREAL | Decel. posizionamento |
0x3468.0 |
LREAL | Velocità Jog |
0x346E.0 |
LREAL | Accel. Jog |
0x341C.5 |
WORD | Decel. Jog |
0x3212.1 |
WORD | Jerk |
0x3212.2 |
WORD | Limite corrente positivo |
0x3402.0 |
LREAL | 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_Address | Indirizzo hardware Profinet del PSD1 |
| Enable | Abilitazione Drive |
| Reset | Reset allarmi Drive |
| QuickStop | Fermata rapida Drive^1^ |
| OpenBrake | Apertura freno quando Enable = 0 |
| StartMove | Start movimento (NON-latching) |
| JogP | Comando Jog positivo |
| JogN | Comando Jog negativo |
| Homing | Avvio procedura di homing del Drive |
| MovingMode | Modalità di movimento |
| Limit_Range | Finestra di raggiungimento TargetRef|
| PosCurrentLimit | Limite di corrente positivo |
| NegCurrentLimit | Limite di corrente negativo |
| JogSpeed | Velocità di Jog |
| JogAccel | Acccel. Jog |
| JogDecel | Decel. Jog |
| Speed | Velocita posizionamento |
| Accel | Accel. posizionamento |
| Decel | Decel. posizionamento |
| Jerk | Jerk posizionamento |
| TargetRef | Target 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 è resettabile^3^ |
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.