L'editor Lista di istruzioni (IL) è un editor di tabelle. La struttura di rete dei programmi FBD o LD viene rappresentata anche nei programmi IL. Fondamentalmente, in un programma IL una rete è sufficiente, ma se si pensa di passare alternativamente tra FBD, LD e IL, è possibile utilizzare le reti per strutturare anche un programma IL.
Attivare il linguaggio di implementazione IL per EcoStruxure Machine Expert nella finestra di dialogo Strumenti > Opzioni, categoria Editor FBD, LD e IL, scheda IL.
I suggerimenti contengono informazioni sulle variabili e i parametri dei moduli.
Vedere Uso della vista dell'editor FBD ed LD.
Inserimento e organizzazione degli elementi
oI comandi per l'uso dell'editor sono disponibili nel menu FBD/LD/IL. I comandi di uso più frequente sono disponibili inoltre dal menu contestuale.
oLe unità di programmazione che sono elementi sono inserite ognuna nella posizione corrente del cursore tramite i comandi Inserisci, disponibili nel menu FBD/LD/IL.
oÈ possibile trascinare un elemento di Rete dal ToolBox sulla freccia su o giù nella parte sinistra dell'editor. Viene quindi creata una nuova rete sopra o sotto l'elemento esistente.
oPer organizzare gli elementi, utilizzare i comandi Taglia, Copia, Incolla ed Elimina, disponibili nel menu Modifica .
oVedere anche alcune informazioni sul linguaggio di programmazione Instruction List - IL.
oGli operatori con funzionalità EN/ENO possono essere inseriti solo nell'editor FBD ed LD.
Questo capitolo ilustra come è strutturato l'editor di tabelle, come spostarsi al suo interno e come utilizzare operandi, chiamate e salti complessi.
Struttura dell'editor di tabelle IL
Editor di tabelle IL
Ogni riga di programma viene scritta in una riga della tabella, strutturata in campi in base alle colonne della tabella:
Colonna |
Contiene |
Descrizione |
---|---|---|
1 |
Operatore |
Questo campo contiene l'operatore IL (LD, ST, CAL, AND, OR e così via) o un nome di funzione. In caso di una chiamata a un blocco funzione, qui vengono specificati anche i rispettivi parametri. Immettere il campo del prefisso := o =>. Per ulteriori informazioni, vedere Modificatori e operatori in IL. |
2 |
operando |
Questo campo contiene esattamente un operando o una label di salto. Se sono necessari più operandi (operatori multipli o estensibili AND A, B, C o chiamate di funzione con vari parametri), scriverli nelle righe successive e lasciare vuoto il campo dell'operatore. In questo caso, aggiungere una virgola per separare i vari parametri. In caso di un blocco funzione, un programma o una chiamata di azione, aggiungere le opportune parentesi di apertura e/o chiusura. |
3 |
indirizzo |
Questo campo contiene l'indirizzo dell'operando definito nella parte della dichiarazione. Questo campo non può essere modificato. L'opzione Visualizza indirizzo simbolo permette di attivarlo o disattivarlo. |
4 |
commento del simbolo |
Questo campo contiene il commento definito per l'operando nella parte della dichiarazione. Questo campo non può essere modificato. L'opzione Visualizza indirizzo simbolo permette di attivarlo o disattivarlo. |
5 |
commento dell'operando |
Questo campo contiene il commento per la riga corrente. Si tratta di un campo modificabile e può essere attivato o disattivato tramite l'opzione Visualizza commento operando. |
oTasti freccia SU e GIÙ: spostamento al campo precedente o successivo.
oTAB: spostamento al campo sulla destra della stessa riga.
oMAIUSC + TAB: spostamento al campo sulla sinistra della stessa riga.
oBARRA SPAZIATRICE: apre il campo selezionato per la modifica. In alternativa, fare nuovamente clic con il mouse sul campo. Se disponibile, richiamare l'Accesso facilitato tramite il pulsante .... Per chiudere un campo di modifica aperto, premere INVIO per confermare le voci correnti oppure ESC per annullare l'immissione.
oCTRL + INVIO: aggiunta di una nuova riga sotto quella corrente.
oCANC: eliminazione della riga corrente dove si trova il campo correntemente selezionato.
oTaglia, Copia, Incolla: per copiare una o più righe, selezionare almeno uno dei campi che contengono ed eseguire il comando Copia. Per tagliare una riga, utilizzare il comando Taglia. Il comando Incolla permette di inserire le righe precedentemente copiate o tagliate prima della riga dove si trova il campo correntemente selezionato. Se non è stato selezionato alcun campo, verranno inserite al termine della rete.
oCTRL + HOME scorre all'inizio del documento e contrassegna la prima rete.
oCTRL + END scorre alla fine del documento e contrassegna l'ultima rete.
oPAG SU scorre di una schermata verso l'alto e contrassegna il rettangolo più in alto.
oPAG GIÙ scorre di una schermata verso il basso e contrassegna il rettangolo più in alto.
Operandi multipli (operatori estensibili)
Se si utilizza lo stesso operatore con più operandi, sono possibili due modalità di programmazione:
oGli operandi sono immessi su righe successive, separati da virgole. Ad esempio:
LD 7
ADD 2,
4,
7
ST iVar
oL'istruzione è ripetuta nelle linee seguenti. Ad esempio:
LD 7
ADD 2
ADD 4
ADD 7
ST iVar
Se si utilizza un operando complesso, immettere prima una parentesi di apertura, quindi utilizzare le righe seguenti per i relativi componenti. Sotto a questi, in una riga separata, immettere la parentesi di chiusura.
Esempio: rotazione di una stringa di un carattere a ogni ciclo.
Codice ST corrispondente:
stRotate := CONCAT(RIGHT(stRotate, (LEN(stRotate) - 1)), (LEFT(stRotate, 1)));
LD stRotate
RIGHT( stRotate
LEN
SUB 1
)
CONCAT( stRotate
LEFT 1
)
ST stRotate
Immettere il nome della funzione nel campo dell'operatore. Fornire il primo parametro di ingresso come operando nell'operazione LD che precede. Se vi sono altri parametri, fornire quello successivo nella stessa riga del nome della funzione. È possibile aggiungere altri parametri in questa riga, separandoli con virgole, oppure nelle righe seguenti.
Il valore di ritorno della funzione viene memorizzato nell'accumulatore. Si applica la seguente restrizione, riguardante lo standard IEC.
NOTA: Non è possibile avere una chiamata di funzione con più valori di ritorno. Perché l'operazione vada a buon fine, è necessario utilizzare un solo valore di ritorno.
Esempio: viene chiamata la funzione GeomAverage, che ha tre parametri di ingresso. Il primo parametro viene fornito da X7 nell'operazione precedente. Il secondo, 25, è fornito con il nome della funzione. Il terzo è fornito dalla variabile tvar, nella stessa riga o in quella successiva. Il valore di ritorno è assegnato alla variabile Ave.
Codice ST corrispondente:
Ave := GeomAverage(X7, 25, tvar);
Chiamata di funzione in IL:
LD X7
GeomAverage 25
tvar
ST Ave
Chiamate di blocchi funzione e di programmi
Utilizzare l'operatore CAL- o CALC. Immettere il nome dell'istanza del blocco funzione o il nome del programma nel campo dell'operando (seconda colonna), seguito dalla parentesi di apertura. Immettere i parametri di ingresso in ognuna delle righe seguenti:
Campo operatore: nome parametro
Campo prefisso:
o:= per i parametri di ingresso
o=> per i parametri di uscita
Campo operando: parametro corrente
Campo suffisso:
o, se seguono altri parametri
) dopo l'ultimo parametro
o() in caso di chiamate senza parametro
Esempio: chiamata di POUToCAll con due parametri di ingresso e due di uscita.
Codice ST corrispondente:
POUToCall(Counter := iCounter, iDecrement:=2, bError=>bErr, wError=>wResult);
Chiamata di programma in IL con parametri di ingresso e di uscita:
Non è necessario utilizzare tutti i parametri di un blocco funzione o di un programma.
NOTA: Non è possibile utilizzare espressioni complesse. Le espressioni complesse devono essere assegnate all'ingresso del blocco funzione o del programma, prima dell'istruzione di chiamata.
Perché sia eseguita come la chiamata di un blocco funzione o di un programma, il nome dell'azione deve essere aggiunto al nome dell'istanza o del programma.
Esempio: chiamata dell'azione ResetAction.
Codice ST corrispondente:
Inst.ResetAction();
Chiamata dell'azione in IL:
CAL Inst.ResetAction()
Perché sia eseguita come la chiamata di una funzione, è necessario immettere nella prima colonna (operatore) il nome dell'istanza con aggiunto il nome del metodo.
Esempio: chiamata del metodo Home.
Codice ST corrispondente:
Z := IHome.Home(TRUE, TRUE, TRUE);
Chiamata del metodo in IL:
LD TRUE
IHome.Home TRUE
TRUE
ST Z
Per programmare un salto, immettere JMP nella prima colonna (operatore) e il nome di una label nella seconda colonna (operando). La label deve essere definita nella rete di destinazione, nel campo label.
L'elenco delle istruzioni che precede un salto incondizionato deve terminare con uno dei seguenti comandi: ST, STN, S, R, CAL, RET o un altro JMP.
Ciò non è necessario per un salto condizionato. L'esecuzione del salto dipende dal valore caricato.
Esempio: istruzione di salto condizionato; se bCallRestAction è TRUE, il programma deve saltare alla rete con label Cont.
Istruzione di salto condizionato in IL:
LDN bCallResetAction
JMPC Cont