Progettazione e Sviluppo
Quando si programma graficamente nel diagramma di classe, le modifiche apportano automaticamente adattamenti per gli oggetti in POU vista e Dispositivi Visualizza. Nuovi oggetti vengono inseriti nella loro struttura di base e gli oggetti esistenti vengono adattati. Ad esempio, è possibile inserire dichiarazioni nelle POU tramite il diagramma delle classi.
Ciò consente di progettare l'architettura della propria applicazione in un diagramma di classe e ottenere le POU adatte in modo sincrono. Quindi integri le implementazioni nelle POU.
I passaggi seguenti creano un diagramma di classe per un'applicazione.
1. Creazione di un progetto
Aprire CODESYS.
Clic
.Specificare il nome e la posizione e selezionare il Progetto standard modello.
Il Progetto standard si apre la finestra di dialogo.
Per PLC_PRG in, seleziona il Testo strutturato (ST) linguaggio di attuazione.
Il progetto è creato.
Seleziona il Applicazione codice e fare clic .
Il Aggiungi diagramma di classe UML si apre la finestra di dialogo.
Specificare il nome dell'oggetto
CD_Simple
.Seleziona il Importa la struttura del progetto nel diagramma di classe attivo opzione.
Clic Aggiungere.
Salva il progetto come
SimpleMachine.project
.
2. Identificazione delle interfacce
Le interfacce determinano metodi e proprietà pubblicamente visibili per implementare le classi.
Apri l'editor del diagramma di classe
CD_Simple
.Nel Cassetta degli attrezzi visualizzare, selezionare un'interfaccia.
Trascina l'interfaccia nell'editor.
Il Aggiungi interfaccia si apre la finestra di dialogo.
Specificare il nome
IBaseMachine
. Clic Aggiungere per uscire dalla finestra di dialogo.Nel Cassetta degli attrezzi visualizzare, selezionare un metodo.
Trascina il metodo nell'interfaccia.
Il Aggiungi metodo di interfaccia si apre la finestra di dialogo.
Specificare il nome
DoIt
.Specificare il tipo di reso
BOOL
. Clic Aggiungere per uscire dalla finestra di dialogo.Nel Cassetta degli attrezzi visualizzare, selezionare una proprietà.
Trascina la proprietà nell'interfaccia.
Il Aggiungi proprietà interfaccia si apre la finestra di dialogo.
Specificare il nome
StateNumber
.Specificare il tipo di reso
INT
. Clic Aggiungere per uscire dalla finestra di dialogo.
Suggerimento
Per ulteriori informazioni sulle interfacce, vedere: Oggetto: interfaccia e Oggetto: Proprietà interfaccia
3. Identificazione delle classi e implementazione di un'interfaccia
Classi diverse che implementano la stessa interfaccia contengono gli stessi metodi e proprietà. Se l'interfaccia viene modificata o estesa in un secondo momento, ciò influirà su tutte le classi di implementazione.
Apri l'editor del diagramma di classe
CD_Simple
.Nel Cassetta degli attrezzi visualizzare, selezionare una classe.
Trascina la classe nell'editor.
Il Aggiungi POU si apre la finestra di dialogo.
Specificare il nome
FB_Machine
.Seleziona il Blocco funzione opzione.
Per la lingua di implementazione, selezionare Carta di stato UML (SC). Clic Aggiungere per uscire dalla finestra di dialogo.
La classe
FB_Machine
viene aggiunto al diagramma di classe.Seleziona la classe.
Le icone dei comandi vengono visualizzate sopra la classe.
Clicca il
Realizzazione (
IMPLEMENTS
) icona del comando e fare clic suIMachine
interfaccia.Il Seleziona Lingua di implementazione si apre la finestra di dialogo.
Selezionare Testo strutturato (ST).
La classe
FB_Machine
eredita le proprietà ei metodi dell'interfaccia e quindi implementa l'interfacciaIMachine
.
4. Generalizzare
In generale, una classe eredita le proprietà ei metodi di un'altra classe.
Apri l'editor del diagramma di classe
CD_Simple
.Nel Cassetta degli attrezzi visualizzare, selezionare una classe.
Trascina una classe nell'editor.
Il Aggiungi POU si apre la finestra di dialogo.
Specificare il nome
FB_Machine_A
.Seleziona il Si estende opzione e specificare la classe
FB_Machine
nel campo di immissione.Il blocco funzione
FB_Machine
è esteso e quindi è una generalizzazione diFB_Machine_A
.Per la lingua di implementazione, selezionare Carta di stato UML (SC). Clic Aggiungere per uscire dalla finestra di dialogo.
La classe
FB_Machine_A
viene creato nel diagramma di classe. Esiste una generalizzazione tra le classiFB_Machine
eFB_Machine_A
.FB_Machine_A
eredita le sue proprietà e metodi daFB_Machine
.Nel Cassetta degli attrezzi visualizzare, selezionare il Dichiarazione variabile elemento e trascinalo nella classe
FB_Machine_A
.Il Dichiarare la variabile si apre la finestra di dialogo.
Specificare il nome
iCounter
e il tipo di datiINT
. Clic ok per uscire dalla finestra di dialogo.Ora la classe
FB_Machine_A
ha le proprie variabili oltre alle proprietà e ai metodi ereditati.In classe
FBMachine_A
, selezionare il metodoDoIt()
e premere il Del chiave.Il metodo viene rimosso dal diagramma, così come l'oggetto nel file Dispositivi Visualizza. Il blocco funzione ereditario
FBMachine_A
non necessita di una propria implementazione speciale per il metodo. Invece, chiama il metodoDoIt
del blocco funzione di baseFBMachine
quando necessario.Nota
Quando si richiamano metodi assegnati a un blocco funzione di base ed ereditati, utilizzare il puntatore
SUPER
.
Suggerimento
Per ulteriori informazioni, vedere Estensione di un blocco funzione e Puntatore: SUPER.
5. Istanziare
Apri l'editor del diagramma di classe
CD_Simple
.Seleziona il programma
PLC_PRG
.Le icone dei comandi vengono visualizzate sopra il programma.
Clicca il
Composizione (
VAR
) icona del comando e fare clic suFB_Machine_A
classe.Il Dichiarazione variabile si apre la finestra di dialogo.
Specificare il nome
fb_A
.L'oggetto
fb_A
della classeFBMachine_A
è istanziato. Ora, l'istanza della classe nella sua forma concreta viene generata in fase di esecuzione.
Il diagramma di classe mostra tutti gli oggetti rilevanti per la generazione del codice dell'applicazione. Soprattutto, però, il diagramma delle classi visualizza le relazioni tra gli oggetti: chi implementa chi? Chi eredita da chi? Chi istanzia cosa? In caso contrario, queste informazioni sono nascoste nella dichiarazione e ad esempio non possono essere visualizzate nel Dispositivi Visualizza.
6. Implementazione
Aprire il blocco funzione
FBMachine
.Dichiarare le variabili del blocco funzione.
FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine VAR iState: INT; iMachine : INT; END_VAR
Implementare il blocco funzione.
iState := iState + 1; // Dummy for control ID
Implementa il suo metodo
DoIt
.METHOD PUBLIC DoIt : BOOL iMachine := iMachine + 1; // Dummy
Implementare il metodo Get della proprietà
StateNumber
diFBMachine
.StateNumber := iState;
Implementare il metodo Set della proprietà
StateNumber
diFBMachine
.iState := StateNumber;
Aprire il blocco funzione
FBMachine_A
.Dichiarare le variabili del blocco funzione.
FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine VAR iCounter: INT; END_VAR
Implementare il blocco funzione.
iCounter := iCounter + 1;
Implementare il metodo Get della proprietà
StateNumber
diFBMachine_A
.StateNumber := iCounter;
Implementare il metodo Set della proprietà
StateNumber
diFBMachine_A
.iCounter := StateNumber;
Clic
.L'applicazione viene compilata senza errori.
Scarica e avvia l'applicazione.
È possibile monitorare l'istanza del blocco funzione
fb_A
.