+ All Categories
Home > Documents > 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica...

1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica...

Date post: 16-Jul-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
694
Manuale di Riferimento Numeri di catalogo 1756-L1x, 1756-L5x, 1756-L6x, 1768-L4x, 1769-L30, 1769-L31, 1769-L32C, 1769-L32E, 1769-L35CR, 1769-L35E, 1789-L60, 1794-L34, 20D Istruzioni generali per controllori Logix5000
Transcript
Page 1: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Manuale di Riferimento

Numeri di catalogo 1756-L1x,1756-L5x, 1756-L6x, 1768-L4x,

1769-L30, 1769-L31, 1769-L32C,1769-L32E, 1769-L35CR, 1769-L35E,

1789-L60, 1794-L34, 20D

Istruzioni generali per controllori Logix5000

Page 2: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Informazioni importanti per l’utenteLe apparecchiature a stato solido hanno caratteristiche di funzionamento diverse da quelle delle apparecchiature elettromeccaniche. Nel manuale Safety Guidelines for the Application, Installation and Maintenance of Solid State Controls (pubblicazione SGI-1.1 disponibile presso l’ufficio vendite locale di Rockwell Automation oppure online all’indirizzo http://literature.rockwellautomation.com) sono descritte alcune differenze importanti tra le apparecchiature a stato solido e i dispositivi elettromeccanici cablati. A causa di questa differenza e della grande varietà di utilizzo delle apparecchiature a stato solido, tutte le persone responsabili dell’applicazione di questa apparecchiatura devono assicurarsi che ogni applicazione di questa apparecchiatura sia accettabile.

In nessun caso Rockwell Automation, Inc. sarà responsabile per danni indiretti derivanti dall’utilizzo o dall’applicazione di questa apparecchiatura.

Gli esempi gli schemi contenuti nel presente manuale sono inclusi esclusivamente a scopo illustrativo. Poiché le variabili e i requisiti associati alle installazioni specifiche sono innumerevoli, Rockwell Automation, Inc. non può essere ritenuta responsabile per l’utilizzo effettivo basato sugli esempi e sui diagrammi qui riportati.

Rockwell Automation, Inc. declina qualsiasi responsabilità brevettuale in relazione all’utilizzo di informazioni, circuiti, apparecchiatura o software descritti nel presente manuale.

La riproduzione totale o parziale del contenuto del presente manuale è vietata senza il consenso scritto di Rockwell Automation, Inc.

Nel presente manuale si è fatto ricorso all’uso di note per illustrare all’utente le considerazioni in materia di sicurezza.

Allen-Bradley, Rockwell Automation e TechConnect sono marchi commerciali di Rockwell Automation, Inc.

I marchi commerciali non di proprietà di Rockwell Automation sono di proprietà delle rispettive aziende titolari.

AVVISOIdentifica informazioni sulle pratiche o le circostanze che possono causare un’esplosione in un ambiente pericoloso, generando infortuni al personale o decesso, danni alle proprietà o perdite economiche.

IMPORTANTEIdentifica informazioni importanti per la buona applicazione e comprensione del prodotto.

ATTENZIONEIdentifica informazioni sulle pratiche o le circostanze che possono causare lesioni al personale o decesso, danni alle cose o perdite economiche. Le indicazioni aiuteranno l’utente ad individuare i rischi, evitarli e prevederne le conseguenze.

PERICOLO DI SCOSSE ELETTRICHE

Potranno essere collocate delle etichette sull’apparecchiatura o al suo interno, per esempio su azionamento o motore, per attirare l’attenzione dell’utente sulla tensione potenzialmente pericolosa presente.

PERICOLO DI USTIONI

Potranno essere collocate delle etichette sull’apparecchiatura o al suo interno, per esempio su azionamento o motore, per attirare l’attenzione dell’utente sulle superfici che potrebbero raggiungere temperature potenzialmente pericolose.

Page 3: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice

Prefazione

Istruzioni generali dei controllori Logix5000

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23A chi è rivolto questo manuale . . . . . . . . . . . . . . . . . . . . . . 23Scopo di questo manuale . . . . . . . . . . . . . . . . . . . . . . . . . . 24Informazioni comuni per tutte le istruzioni. . . . . . . . . . . . . . 25Convenzioni e termini correlati . . . . . . . . . . . . . . . . . . . . . . 25

Impostato e azzerato . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Condizione del ramo in logica ladder . . . . . . . . . . . . . . . 26Stati dei blocchi funzione . . . . . . . . . . . . . . . . . . . . . . . . 27

Capitolo 1Istruzioni di allarmi ed eventi FactoryTalk basati su Logix(ALMD, ALMA)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Digital Alarm (ALMD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Diagrammi di stato quando è richiesta la conferma di ricezione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Diagrammi di stato quando la conferma della ricezione non è richiesta . . . . . . . . . . . . . . . . . . . . . . . . 37Allarme ALMD, conferma di ricezione richiesta e agganciato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Allarme ALMD, conferma di ricezione richiesta e non agganciato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Allarme ALMD, conferma di ricezione non richiesta e agganciato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Allarme ALMD, conferma di ricezione non richiesta e non agganciato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Analog Alarm (ALMA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Diagrammi di stato quando è richiesta la conferma di ricezione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Diagrammi di stato quando non è richiesta la conferma di ricezione . . . . . . . . . . . . . . . . . . . . . . . . . . 55Condizione livello ALMA – Conferma di ricezione richiesta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Condizione livello ALMA – Conferma di ricezione non richiesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Tasso di variazione ALMA – Conferma di ricezione richiesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Tasso di variazione ALMA – Conferma di ricezione non richiesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Configurazione di un’istruzione di allarme . . . . . . . . . . . . . . 61Immissione del testo di un messaggio di allarme . . . . . . . . . 64

Variabili della stringa del messaggio . . . . . . . . . . . . . . . . 65Versioni in più lingue dei messaggi di allarme . . . . . . . . 66

Monitoraggio dello stato degli allarmi . . . . . . . . . . . . . . . . . 67Bufferizzazione degli allarmi . . . . . . . . . . . . . . . . . . . . . . . . 67Accesso via programma alle informazioni di allarme. . . . . . . 68Soppressione o disabilitazione degli allarmi . . . . . . . . . . . . . 70Esecuzione degli allarmi del controllore . . . . . . . . . . . . . . . . 71

Utilizzo della memoria del controllore . . . . . . . . . . . . . . 72Tempo di scansione. . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 3

Page 4: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice

Capitolo 2Istruzioni di bit(XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Examine If Closed (XIC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 76Examine If Open (XIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Output Energize (OTE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Output Latch (OTL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Output Unlatch (OTU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84One Shot (ONS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86One Shot Rising (OSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89One Shot Falling (OSF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92One Shot Rising with Input (OSRI) . . . . . . . . . . . . . . . . . . . 94One Shot Falling with Input (OSFI) . . . . . . . . . . . . . . . . . . . 97

Capitolo 3Istruzioni di timer e contatori(TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101Timer On Delay (TON) . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Timer Off Delay (TOF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Retentive Timer On (RTO). . . . . . . . . . . . . . . . . . . . . . . . . 110Timer On Delay with Reset (TONR). . . . . . . . . . . . . . . . . . 114Timer Off Delay with Reset (TOFR) . . . . . . . . . . . . . . . . . . 118Retentive Timer On with Reset (RTOR) . . . . . . . . . . . . . . . 122Count Up (CTU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126Count Down (CTD). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130Count Up/Down (CTUD) . . . . . . . . . . . . . . . . . . . . . . . . . 134Reset (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

Capitolo 4Istruzioni di I/O(MSG, GSV, SSV, IOT)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141Message (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Codici di errore MSG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

Codici di errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150Codici di errore estesi . . . . . . . . . . . . . . . . . . . . . . . . . 151Codici di errore di PLC e SLC (.ERR) . . . . . . . . . . . . . . . 153Codici di errore dei trasferimenti a blocchi . . . . . . . . . . 155

Specificare i dettagli di configurazione . . . . . . . . . . . . . . . . 156Specificare la Tabella dati CIP per messaggi di lettura e scrittura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157Riconfigurare un modulo di I/O . . . . . . . . . . . . . . . . . . 158Specificare messaggi CIP generici . . . . . . . . . . . . . . . . . 159Specificare messaggi per PLC-5. . . . . . . . . . . . . . . . . . . 160Specificare messaggi per SLC . . . . . . . . . . . . . . . . . . . . 162Specificare messaggi di trasferimento a blocchi . . . . . . . 162Specificare messaggi per PLC-3. . . . . . . . . . . . . . . . . . . 163Specificare messaggi per PLC-2. . . . . . . . . . . . . . . . . . . 164

4 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 5: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice

Esempi di configurazione MSG . . . . . . . . . . . . . . . . . . . . . 165Specificare i dettagli di comunicazione. . . . . . . . . . . . . . . . 166

Specificare un percorso . . . . . . . . . . . . . . . . . . . . . . . . 166Per trasferimenti a blocchi . . . . . . . . . . . . . . . . . . . . . . 169Specificare un metodo di comunicazione o l’indirizzo di un modulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Scegliere un’opzione cache . . . . . . . . . . . . . . . . . . . . . 170Regole generali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

Get System Value (GSV) and Set System Value (SSV) . . . . . 173Oggetti GSV/SSV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

Accesso all’oggetto CONTROLLER . . . . . . . . . . . . . . . . 177Accesso all’oggetto CONTROLLERDEVICE . . . . . . . . . . 178Accesso all’oggetto CST . . . . . . . . . . . . . . . . . . . . . . . . 179Accesso all’oggetto DF1 . . . . . . . . . . . . . . . . . . . . . . . . 181Accesso all’oggetto FAULTLOG. . . . . . . . . . . . . . . . . . . 184Accesso all’oggetto MESSAGE. . . . . . . . . . . . . . . . . . . . 185Accesso all’oggetto MODULE . . . . . . . . . . . . . . . . . . . . 187Accesso all’oggetto MOTIONGROUP . . . . . . . . . . . . . . 188Accesso all’oggetto PROGRAM . . . . . . . . . . . . . . . . . . . 189Accesso all’oggetto Routine . . . . . . . . . . . . . . . . . . . . . 190Accesso all’oggetto SERIALPORT . . . . . . . . . . . . . . . . . 190Accesso all’oggetto TASK . . . . . . . . . . . . . . . . . . . . . . . 192Accesso all’oggetto WALLCLOCKTIME . . . . . . . . . . . . . 194

Esempio di programmazione GSV/SSV. . . . . . . . . . . . . . . . 195Get Fault Information. . . . . . . . . . . . . . . . . . . . . . . . . . 195Impostazione degli indicatori di abilitazione e disabilitazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

Immediate Output (IOT) . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Capitolo 5Istruzioni di confronto(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Compare (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

Espressioni CMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206Operatori validi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206Formattazione delle espressioni . . . . . . . . . . . . . . . . . . 206Determinazione dell’ordine delle operazioni . . . . . . . . . 207Uso di stringhe in un’espressione . . . . . . . . . . . . . . . . . 208

Equal to (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209Greater than or Equal to (GEQ) . . . . . . . . . . . . . . . . . . . . . 213Greater Than (GRT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217Less Than or Equal to (LEQ) . . . . . . . . . . . . . . . . . . . . . . . 221Less Than (LES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Limit (LIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229Mask Equal to (MEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

Immissione di un valore maschera immediato . . . . . . . . 236Not Equal to (NEQ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 5

Page 6: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice

Capitolo 6Istruzioni di calcolo/matematiche(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245Compute (CPT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

Operatori validi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248Formattazione delle espressioni . . . . . . . . . . . . . . . . . . 248Determinazione dell’ordine delle operazioni . . . . . . . . . 249

Add (ADD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250Subtract (SUB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Multiply (MUL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Divide (DIV). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Modulo (MOD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264Square Root (SQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268Negate (NEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272Absolute Value (ABS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

Capitolo 7Istruzioni di spostamento/logiche(MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279Move (MOV). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Masked Move (MVM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

Immissione di un valore di maschera immediato . . . . . . 284Masked Move with Target (MVMT) . . . . . . . . . . . . . . . . . . 286Bit Field Distribute (BTD) . . . . . . . . . . . . . . . . . . . . . . . . . 290Bit Field Distribute with Target (BTDT) . . . . . . . . . . . . . . . 293Clear (CLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296Swap Byte (SWPB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298Bitwise AND (AND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302Bitwise OR (OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305Bitwise Exclusive OR (XOR) . . . . . . . . . . . . . . . . . . . . . . . 308Bitwise NOT (NOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311Boolean AND (BAND) . . . . . . . . . . . . . . . . . . . . . . . . . . . 314Boolean OR (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317Boolean Exclusive OR (BXOR) . . . . . . . . . . . . . . . . . . . . . 320Boolean NOT (BNOT). . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

Capitolo 8Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Scelta della modalità operativa. . . . . . . . . . . . . . . . . . . . . . 326

Modalità Continua . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326Modalità discreta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327Modalità incrementale . . . . . . . . . . . . . . . . . . . . . . . . . 329

File Arithmetic and Logic (FAL) . . . . . . . . . . . . . . . . . . . . . 331Espressioni FAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340Operatori validi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340Formattazione delle espressioni . . . . . . . . . . . . . . . . . . 341Determinazione dell’ordine delle operazioni . . . . . . . . . 341

6 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 7: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice

File Search and Compare (FSC) . . . . . . . . . . . . . . . . . . . . . 342Espressioni FSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346Operatori validi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347Formattazione delle espressioni . . . . . . . . . . . . . . . . . . 347Determinazione dell’ordine delle operazioni . . . . . . . . . 348Uso di stringhe in un’espressione . . . . . . . . . . . . . . . . . 349

Copy File (COP) Synchronous Copy File (CPS). . . . . . . . . . 350File Fill (FLL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356File Average (AVE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360File Sort (SRT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365File Standard Deviation (STD) . . . . . . . . . . . . . . . . . . . . . 370Size In Elements (SIZE) . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

Capitolo 9Istruzioni di matrici (File)/Scorrimento(BSL, BSR, FFL, FFU, LFL, LFU)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379Bit Shift Left (BSL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380Bit Shift Right (BSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384FIFO Load (FFL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388FIFO Unload (FFU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394LIFO Load (LFL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400LIFO Unload (LFU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406

Capitolo 10Istruzioni sequenziatore (SQI, SQO, SQL)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413Sequencer Input (SQI). . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

Immissione di un valore di maschera immediato . . . . . . 415Uso di SQI senza SQO . . . . . . . . . . . . . . . . . . . . . . . . . 417

Sequencer Output (SQO) . . . . . . . . . . . . . . . . . . . . . . . . . 418Immissione di un valore di maschera immediato . . . . . . 419Uso di SQI con SQO . . . . . . . . . . . . . . . . . . . . . . . . . . 421Ripristino della posizione dell’istruzione SQO . . . . . . . . 421

Sequencer Load (SQL). . . . . . . . . . . . . . . . . . . . . . . . . . . . 422

Capitolo 11Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427Jump to Label (JMP) Label (LBL) . . . . . . . . . . . . . . . . . . . . 428Jump to Subroutine (JSR) Subroutine (SBR) Return (RET). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430Jump to External Routine (JXR) . . . . . . . . . . . . . . . . . . . . . 441Temporary End (TND) . . . . . . . . . . . . . . . . . . . . . . . . . . . 444Master Control Reset (MCR). . . . . . . . . . . . . . . . . . . . . . . . 446User Interrupt Disable (UID) User Interrupt Enable (UIE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 7

Page 8: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice

Always False Instruction (AFI) . . . . . . . . . . . . . . . . . . . . . . 450No Operation (NOP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451End of Transition (EOT) . . . . . . . . . . . . . . . . . . . . . . . . . . 452SFC Pause (SFP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454SFC Reset (SFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456Trigger Event Task (EVENT) . . . . . . . . . . . . . . . . . . . . . . . 458

Determinare via programma se un’istruzione EVENT ha azionato un task . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

Capitolo 12Istruzioni For/Break(FOR, FOR...DO, BRK, EXIT, RET)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463For (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464Break (BRK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467Return (RET). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

Capitolo 13Istruzioni speciali(FBC, DDT, DTR, PID)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471File Bit Comparison (FBC). . . . . . . . . . . . . . . . . . . . . . . . . 472

Scelta della modalità di ricerca . . . . . . . . . . . . . . . . . . . 474Diagnostic Detect (DDT) . . . . . . . . . . . . . . . . . . . . . . . . . . 479

Scelta della modalità di ricerca . . . . . . . . . . . . . . . . . . . 481Data Transitional (DTR). . . . . . . . . . . . . . . . . . . . . . . . . . . 486

Immissione di un valore di maschera immediato . . . . . . 487Proportional Integral Derivative (PID) . . . . . . . . . . . . . . . . 489Configurazione di un’istruzione PID. . . . . . . . . . . . . . . . . . 494

Messa a punto (Tuning) . . . . . . . . . . . . . . . . . . . . . . . . 495Configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495Allarmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496Conversione in scala . . . . . . . . . . . . . . . . . . . . . . . . . . 497

Uso delle istruzioni PID. . . . . . . . . . . . . . . . . . . . . . . . . . . 497Antiaccumulo dell’integrale e trasferimento bumpless da manuale ad automatico . . . . . . . . . . . . . . . . . . . . . . 499Temporizzazione dell’istruzione PID . . . . . . . . . . . . . . . 500Riavviamento bumpless . . . . . . . . . . . . . . . . . . . . . . . . 504Attenuazione derivata. . . . . . . . . . . . . . . . . . . . . . . . . . 505Impostazione della banda morta. . . . . . . . . . . . . . . . . . 506Uso del limite dell’uscita . . . . . . . . . . . . . . . . . . . . . . . 506Compensazione anticipata o bias dell’uscita . . . . . . . . . 507Anelli in cascata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507Controllo di un rapporto . . . . . . . . . . . . . . . . . . . . . . . 508

Teoria PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509Processo PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509Processo PID con anelli master/slave . . . . . . . . . . . . . . 509

8 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 9: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice

Capitolo 14Istruzioni trigonometriche(SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511Sine (SIN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512Cosine (COS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515Tangent (TAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518Arc Sine (ASN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521Arc Cosine (ACS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524Arc Tangent (ATN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527

Capitolo 15Istruzioni di matematica avanzata (LN, LOG, XPY)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531Natural Log (LN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532Log Base 10 (LOG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535X to the Power of Y (XPY) . . . . . . . . . . . . . . . . . . . . . . . . 538

Capitolo 16Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541Degrees (DEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542Radians (RAD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545Convert to BCD (TOD) . . . . . . . . . . . . . . . . . . . . . . . . . . . 548Convert to Integer (FRD) . . . . . . . . . . . . . . . . . . . . . . . . . . 551Truncate (TRN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553

Capitolo 17Istruzioni Porta Seriale ASCII(ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557Esecuzione delle istruzioni . . . . . . . . . . . . . . . . . . . . . . 558Codici di errore ASCII . . . . . . . . . . . . . . . . . . . . . . . . . 560Tipi di dati stringa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560

ASCII Test For Buffer Line (ABL) . . . . . . . . . . . . . . . . . . . . 562ASCII Chars in Buffer (ACB) . . . . . . . . . . . . . . . . . . . . . . . 565ASCII Clear Buffer (ACL) . . . . . . . . . . . . . . . . . . . . . . . . . . 567ASCII Handshake Lines (AHL) . . . . . . . . . . . . . . . . . . . . . . 569ASCII Read (ARD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573ASCII Read Line (ARL). . . . . . . . . . . . . . . . . . . . . . . . . . . . 577ASCII Write Append (AWA). . . . . . . . . . . . . . . . . . . . . . . . 581ASCII Write (AWT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586

Capitolo 18Istruzioni di stringhe ASCII(CONCAT, DELETE, FIND, INSERT, MID)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591Tipi di dati stringa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592

String Concatenate (CONCAT) . . . . . . . . . . . . . . . . . . . . . . 593String Delete (DELETE) . . . . . . . . . . . . . . . . . . . . . . . . . . . 595Find String (FIND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597Insert String (INSERT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599Middle String (MID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 9

Page 10: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice

Capitolo 19Istruzioni di conversione ASCII(STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603Tipi di dati stringa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605

String To DINT (STOD). . . . . . . . . . . . . . . . . . . . . . . . . . . 606String To REAL (STOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 608DINT to String (DTOS) . . . . . . . . . . . . . . . . . . . . . . . . . . . 611REAL to String (RTOS). . . . . . . . . . . . . . . . . . . . . . . . . . . . 613Upper Case (UPPER). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615Lower Case (LOWER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617

Capitolo 20Istruzioni di debug(BPT, TPT)

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619Breakpoints (BPT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619

Stringa Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620Tracepoints (TPT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623

Stringa Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623

Appendice AAttributi comuni Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627

Valori immediati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627Conversioni di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627

Da SINT o INT a DINT. . . . . . . . . . . . . . . . . . . . . . . . . 629Da intero a REAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631Da DINT a SINT o INT. . . . . . . . . . . . . . . . . . . . . . . . . 631Da REAL a intero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632

Appendice BAttributi di un blocco funzione Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633

Selezione degli elementi del blocco funzione . . . . . . . . . . . 633Aggancio dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634Ordine di esecuzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636

Risoluzione di un loop . . . . . . . . . . . . . . . . . . . . . . . . . 637Risoluzione del flusso di dati tra due blocchi . . . . . . . . 638Creazione di un ritardo di una scansione . . . . . . . . . . . 639Riepilogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639

Risposte dei blocchi funzione a condizioni di overflow. . . . 640Modalità di temporizzazione . . . . . . . . . . . . . . . . . . . . . . . 641

Parametri di istruzione comuni per le modalità di temporizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643Prospetto delle modalità di temporizzazione . . . . . . . . . 645

Controllo Programma/Operatore . . . . . . . . . . . . . . . . . . . . 646

10 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 11: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice

Appendice CProgrammazione in testo strutturato

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651Sintassi del testo strutturato . . . . . . . . . . . . . . . . . . . . . . . . 651Assegnazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

Specificare un’assegnazione non ritentiva . . . . . . . . . . . 654Assegnare un carattere ASCII a una stringa . . . . . . . . . . 655

Espressioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655Usare funzioni e operatori aritmetici . . . . . . . . . . . . . . . 657Usare operatori relazionali . . . . . . . . . . . . . . . . . . . . . . 658Usare operatori logici. . . . . . . . . . . . . . . . . . . . . . . . . . 660Utilizzo di operatori bit per bit . . . . . . . . . . . . . . . . . . . 661Determinare l’ordine di esecuzione. . . . . . . . . . . . . . . . 661

Istruzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662Costrutti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663

Alcune parole chiave sono riservate all’uso futuro . . . . . 663IF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664CASE...OF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667FOR…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670WHILE…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673REPEAT…UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676Commenti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679

Indice analitico Codici dei caratteri ASCII . . . . . . . . . . . . . . . . . . . . . . . 691

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 11

Page 12: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice

12 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 13: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Sommario delle modifiche

Introduzione La presente versione del documento contiene informazioni nuove e aggiornate.

Informazioni aggiornate Questo documento contiene le seguenti modifiche:

Modifica Pagina

Capitolo 1 – Istruzioni Allarme digitale (Digital Alarm) (ALMD) e Allarme analogico (Analog Alarm) (ALMA) in un unico capitolo. Aggiunte informazioni su configurazione, stringhe di messaggio e stato.

29

Capitolo 4 – Aggiunti nuovi attributi dell’oggetto controllore GSV/SSV.

177

Capitolo 20 – Aggiunte informazioni per il debug (PPT, TPT). 619

13 Pubblicazione 1756-RM003K-IT-P – Luglio 2008 Anno

Page 14: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Sommario delle modifiche 14

Note:

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 Anno

Page 15: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice delle istruzioni

Dove trovare un’istruzioneQuesto indice serve per trovare informazioni di riferimento sulle istruzioni Logix (le istruzioni con sfondo grigio sono disponibili in altri manuali). Vengono riportati anche i linguaggi di programmazione delle istruzioni.

Se viene riportato L’istruzione viene descritta in

un numero di pagina questo manuale

movimento Logix5000 Set di istruzioni di movimento per controllori Logix5000 – Manuale di riferimento, pubblicazione 1756-RM007

PhaseManager Manuale per l’utente di PhaseManager, pubblicazione LOGIX-UM001

controllo di processo Manuale di riferimento delle istruzioni per controllo di processo ed azionamenti per controllori Logix5000, pubblicazione 1756-RM006

15Pubblicazione 1756-RM003K-IT-P – Luglio 15

Page 16: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice delle istruzioni

Istruzione Riferimento Linguaggi

ABLASCII Test For Buffer Line

562 laddertesto strutturato

ABSAbsolute Value

275 laddertesto strutturatoblocco funzione

ACBASCII Chars in Buffer

565 laddertesto strutturato

ACLASCII Clear Buffer

567 laddertesto strutturato

ACSArc Cosine

524 laddertesto strutturatoblocco funzione

ADDAdd

250 laddertesto strutturatoblocco funzione

AFIAlways False Instruction

450 ladder

AHLASCII Handshake Lines

569 laddertesto strutturato

ALMAlarm

controllo di processo

testo strutturatoblocco funzione

ALMAAnalog Alarm

42 laddertesto strutturatoblocco funzione

ALMDDigital Alarm

30 laddertesto strutturatoblocco funzione

ANDBitwise AND

302 laddertesto strutturatoblocco funzione

ARDASCII Read

573 laddertesto strutturato

ARLASCII Read Line

577 logica laddertesto strutturato

ASNArc Sine

521 laddertesto strutturatoblocco funzione

ATNArc Tangent

527 laddertesto strutturatoblocco funzione

AVEFile Average

360 ladder

AWAASCII Write Append

581 laddertesto strutturato

AWTASCII Write

586 laddertesto strutturato

BANDBoolean AND

314 testo strutturatoblocco funzione

BNOTBoolean NOT

323 testo strutturatoblocco funzione

BORBoolean OR

317 testo strutturatoblocco funzione

BPTBreakpoints

619 ladder

BRKBreak

467 ladder

BSLBit Shift Left

380 ladder

BSRBit Shift Right

384 ladder

BTDBit Field Distribute

290 ladder

BTDTBit Field Distribute with Target

293 testo strutturatoblocco funzione

BTRMessage

142 laddertesto strutturato

BTWMessage

142 laddertesto strutturato

BXORBoolean Exclusive OR

320 testo strutturatoblocco funzione

CCCoordinated Control

controllo di processo

testo strutturatoblocco funzione

CLRClear

296 laddertesto strutturato

CMPCompare

204 ladder

CONCATString Concatenate

593 laddertesto strutturato

COPCopy File

350 laddertesto strutturato

COSCosine

515 laddertesto strutturatoblocco funzione

CPSSynchronous Copy File

350 laddertesto strutturato

CPTCompute

246 ladder

CTDCount Down

130 ladder

CTUCount Up

126 ladder

CTUDCount Up/Down

134 testo strutturatoblocco funzione

D2SDDiscrete 2-State Device

controllo di processo

testo strutturatoblocco funzione

D3SDDiscrete 3-State Device

controllo di processo

testo strutturatoblocco funzione

DDTDiagnostic Detect

479 ladder

Istruzione Riferimento Linguaggi

16 Pubblicazione 1756-RM003K-IT-P – Luglio

Page 17: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice delle istruzioni

DEDTDeadtime

controllo di processo

testo strutturatoblocco funzione

DEGDegrees

542 laddertesto strutturatoblocco funzione

DELETEString Delete

595 laddertesto strutturato

DERVDerivative

controllo di processo

testo strutturatoblocco funzione

DFFD Flip-Flop

controllo di processo

testo strutturatoblocco funzione

DIVDivide

259 laddertesto strutturatoblocco funzione

DTOSDINT to String

611 laddertesto strutturato

DTRData Transitional

486 ladder

EOTEnd of Transition

452 laddertesto strutturato

EQUEqual to

209 laddertesto strutturatoblocco funzione

ESELEnhanced Select

controllo di processo

testo strutturatoblocco funzione

EVENTTrigger Event Task

458 laddertesto strutturato

FALFile Arithmetic and Logic

331 ladder

FBCFile Bit Comparison

472 ladder

FFLFIFO Load

388 ladder

FFUFIFO Unload

394 ladder

FGENFunction Generator

controllo di processo

testo strutturatoblocco funzione

FINDFind String

597 laddertesto strutturato

FLLFile Fill

356 ladder

FORFOR

464 ladder

FRDConvert to Integer

551 ladderblocco funzione

FSCFile Search and Compare

342 ladder

GEQGreater than or Equal to

213 laddertesto strutturatoblocco funzione

Istruzione Riferimento Linguaggi

GRTGreater Than

217 laddertesto strutturatoblocco funzione

GSVGet System Value

173 laddertesto strutturato

HLLHigh/Low Limit

controllo di processo

testo strutturatoblocco funzione

HPFHigh Pass Filter

controllo di processo

testo strutturatoblocco funzione

ICONInput Wire Connector

633 blocco funzione

IMCInternal Model Control

controllo di processo

testo strutturatoblocco funzione

INSERTInsert String

599 laddertesto strutturato

INTGIntegrator

controllo di processo

testo strutturatoblocco funzione

IOTImmediate Output

198 laddertesto strutturato

IREFInput Reference

633 blocco funzione

JKFFJK Flip-Flop

controllo di processo

testo strutturatoblocco funzione

JMPJump to Label

428 ladder

JSRJump to Subroutine

430 laddertesto strutturatoblocco funzione

JXRJump to External Routine

441 ladder

LBLLabel

428 ladder

LDL2Second-Order Lead Lag

controllo di processo

testo strutturatoblocco funzione

LDLGLead-Lag

controllo di processo

testo strutturatoblocco funzione

LEQLess Than or Equal to

221 laddertesto strutturatoblocco funzione

LESLess Than

225 laddertesto strutturatoblocco funzione

LFLLIFO Load

400 ladder

LFULIFO Unload

406 ladder

LIMLimit

229 ladderblocco funzione

Istruzione Riferimento Linguaggi

Pubblicazione 1756-RM003K-IT-P – Luglio 17

Page 18: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice delle istruzioni

LNNatural Log

532 laddertesto strutturatoblocco funzione

LOGLog Base 10

(1) laddertesto strutturatoblocco funzione

LOWERLower Case

617 laddertesto strutturato

LPFLow Pass Filter

controllo di processo

testo strutturatoblocco funzione

MAATMotion Apply Axis Tuning

movimento laddertesto strutturato

MAFRMotion Axis Fault Reset

movimento laddertesto strutturato

MAGMotion Axis Gear

movimento laddertesto strutturato

MAHDMotion Apply Hookup Diagnostics

movimento laddertesto strutturato

MAHMotion Axis Home

movimento laddertesto strutturato

MAJMotion Axis Jog

movimento laddertesto strutturato

MAMMotion Axis Move

movimento laddertesto strutturato

MAOCMotion Arm Output Cam

movimento laddertesto strutturato

MAPCMotion Axis Position Cam

movimento laddertesto strutturato

MARMotion Arm Registration

movimento laddertesto strutturato

MASDMotion Axis Shutdown

movimento laddertesto strutturato

MASMotion Axis Stop

movimento laddertesto strutturato

MASRMotion Axis Shutdown Reset

movimento laddertesto strutturato

MATCMotion Axis Time Cam

movimento laddertesto strutturato

MAVEMoving Average

controllo di processo

testo strutturatoblocco funzione

MAWMotion Arm Watch

movimento laddertesto strutturato

MAXCMaximum Capture

controllo di processo

testo strutturatoblocco funzione

MCCDMotion Coordinated Change Dynamics

movimento laddertesto strutturato

Istruzione Riferimento Linguaggi

MCCMMotion Coordinated Circular Move

movimento laddertesto strutturato

MCCPMotion Calculate Cam Profile

movimento laddertesto strutturato

MCDMotion Change Dynamics

movimento laddertesto strutturato

MCLMMotion Coordinated Linear Move

movimento laddertesto strutturato

MCRMaster Control Reset

446 ladder

MCSDMotion Coordinated Shutdown

movimento laddertesto strutturato

MCSMotion Coordinated Stop

movimento laddertesto strutturato

MCSRMotion Coordinated Shutdown Reset

movimento laddertesto strutturato

MCTMotion Coordinated Transform

movimento laddertesto strutturato

MCTPMotion Calculate Transform Position

movimento laddertesto strutturato

MDFMotion Direct Drive Off

movimento laddertesto strutturato

MDOCMotion Disarm Output Cam

movimento laddertesto strutturato

MDOMotion Direct Drive On

movimento laddertesto strutturato

MDRMotion Disarm Registration

movimento laddertesto strutturato

MDWMotion Disarm Watch

movimento laddertesto strutturato

MEQMask Equal to

235 laddertesto strutturatoblocco funzione

MGSDMotion Group Shutdown

movimento laddertesto strutturato

MGSMotion Group Stop

movimento laddertesto strutturato

MGSPMotion Group Strobe Position

movimento laddertesto strutturato

MGSRMotion Group Shutdown Reset

movimento laddertesto strutturato

MIDMiddle String

601 laddertesto strutturato

Istruzione Riferimento Linguaggi

18 Pubblicazione 1756-RM003K-IT-P – Luglio

Page 19: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice delle istruzioni

MINCMinimum Capture

controllo di processo

testo strutturatoblocco funzione

IMMCModular Multivariable Control

controllo di processo

testo strutturatoblocco funzione

MODModulo

264 laddertesto strutturatoblocco funzione

MOVMove

281 ladder

MRATMotion Run Axis Tuning

movimento laddertesto strutturato

MRHDMotion Run Hookup Diagnostics

movimento laddertesto strutturato

MRPMotion Redefine Position

movimento laddertesto strutturato

MSFMotion Servo Off

movimento laddertesto strutturato

MSGMessage

142 laddertesto strutturato

MSOMotion Servo On

movimento laddertesto strutturato

MSTDMoving Standard Deviation

controllo di processo

testo strutturatoblocco funzione

MULMultiply

256 laddertesto strutturatoblocco funzione

MUXMultiplexer

controllo di processo

blocco funzione

MVMMasked Move

283 ladder

MVMTMasked Move with Target

286 testo strutturatoblocco funzione

NEGNegate

272 laddertesto strutturatoblocco funzione

NEQNot Equal to

240 laddertesto strutturatoblocco funzione

NOPNo Operation

451 ladder

NOTBitwise NOT

311 laddertesto strutturatoblocco funzione

NTCHNotch Filter

controllo di processo

testo strutturatoblocco funzione

OCONOutput Wire Connector

633 blocco funzione

ONSOne Shot

86 ladder

Istruzione Riferimento Linguaggi

ORBitwise OR

305 laddertesto strutturatoblocco funzione

OREFOutput Reference

633 blocco funzione

OSFIOne Shot Falling with Input

97 testo strutturatoblocco funzione

OSFOne Shot Falling

92 ladder

OSRIOne Shot Rising with Input

94 testo strutturatoblocco funzione

OSROne Shot Rising

89 ladder

OTEOutput Energize

80 ladder

OTLOutput Latch

82 ladder

OTUOutput Unlatch

84 ladder

PATTAttach to Equipment Phase

PhaseManager laddertesto strutturato

PCLFEquipment Phase Clear Failure

PhaseManager laddertesto strutturato

PCMDEquipment Phase Command

PhaseManager laddertesto strutturato

PDETDetach from Equipment Phase

PhaseManager laddertesto strutturato

PFLEquipment Phase Failure

PhaseManager laddertesto strutturato

PIDEEnhanced PID

controllo di processo

testo strutturatoblocco funzione

PIDProportional Integral Derivative

489 laddertesto strutturato

PIProportional + Integral

controllo di processo

testo strutturatoblocco funzione

PMULPulse Multiplier

controllo di processo

testo strutturatoblocco funzione

POSPPosition Proportional

controllo di processo

testo strutturatoblocco funzione

POVREquipment Phase Override Command

PhaseManager laddertesto strutturato

PPDEquipment Phase Paused

PhaseManager laddertesto strutturato

PRNPEquipment Phase New Parameters

PhaseManager laddertesto strutturato

Istruzione Riferimento Linguaggi

Pubblicazione 1756-RM003K-IT-P – Luglio 19

Page 20: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice delle istruzioni

PSCPhase State Complete

PhaseManager laddertesto strutturato

PXRQEquipment Phase External Request

PhaseManager laddertesto strutturato

RADRadians

545 laddertesto strutturatoblocco funzione

RESDReset Dominant

controllo di processo

testo strutturatoblocco funzione

RESReset

139 ladder

RETReturn

430 e 468 laddertesto strutturatoblocco funzione

RLIMRate Limiter

controllo di processo

testo strutturatoblocco funzione

RMPSRamp/Soak

controllo di processo

testo strutturatoblocco funzione

RTORetentive Timer On

110 ladder

RTORRetentive Timer On with Reset

122 testo strutturatoblocco funzione

RTOSREAL to String

613 laddertesto strutturato

SBRSubroutine

430 laddertesto strutturatoblocco funzione

SCLScale

controllo di processo

testo strutturatoblocco funzione

SCRVS-Curve

controllo di processo

testo strutturatoblocco funzione

SELSelect

controllo di processo

blocco funzione

SETDSet Dominant

controllo di processo

testo strutturatoblocco funzione

SFPSFC Pause

454 laddertesto strutturato

SFRSFC Reset

456 laddertesto strutturato

SINSine

512 laddertesto strutturatoblocco funzione

SIZESize In Elements

375 laddertesto strutturato

SNEGSelected Negate

controllo di processo

testo strutturatoblocco funzione

SOCSecond-Order Controller

controllo di processo

testo strutturatoblocco funzione

Istruzione Riferimento Linguaggi

SQISequencer Input

414 ladder

SQLSequencer Load

422 ladder

SQOSequencer Output

418 ladder

SQRSquare Root

268 ladderblocco funzione

SQRTSquare Root

268 testo strutturato

SRTFile Sort

365 laddertesto strutturato

SRTPSplit Range Time Proportional

controllo di processo

testo strutturatoblocco funzione

SSUMSelected Summer

controllo di processo

testo strutturatoblocco funzione

SSVSet System Value

173 laddertesto strutturato

STDFile Standard Deviation

370 ladder

STODString To DINT

606 laddertesto strutturato

STORString To REAL

608 laddertesto strutturato

SUBSubtract

253 laddertesto strutturatoblocco funzione

SWPBSwap Byte

298 laddertesto strutturato

TANTangent

518 laddertesto strutturatoblocco funzione

TNDTemporary End

444 ladder

TODConvert to BCD

548 ladderblocco funzione

TOFRTimer Off Delay with Reset

118 testo strutturatoblocco funzione

TOFTimer Off Delay

106 ladder

TONRTimer On Delay with Reset

114 testo strutturatoblocco funzione

TONTimer on Delay

102 ladder

TOTTotalizer

controllo di processo

testo strutturatoblocco funzione

TPTTracepoints

623 ladder

Istruzione Riferimento Linguaggi

20 Pubblicazione 1756-RM003K-IT-P – Luglio

Page 21: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice delle istruzioni

TRNTruncate

553 ladderblocco funzione

TRUNCTruncate

553 testo strutturato

UIDUser Interrupt Disable

448 laddertesto strutturato

UIEUser Interrupt Enable

448 laddertesto strutturato

UPDNUp/Down Accumulator

controllo di processo

testo strutturatoblocco funzione

UPPERUpper Case

615 laddertesto strutturato

XICExamine If Closed

76 ladder

XIOExamine if Open

78 ladder

XORBitwise Exclusive OR

308 laddertesto strutturatoblocco funzione

XPYX to the Power of Y

538 laddertesto strutturatoblocco funzione

(1)

Istruzione Riferimento Linguaggi

Pubblicazione 1756-RM003K-IT-P – Luglio 21

Page 22: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice delle istruzioni

Notizen:

22 Pubblicazione 1756-RM003K-IT-P – Luglio

Page 23: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Prefazione

Istruzioni generali dei controllori Logix5000

Introduzione Questo manuale è solo uno dei vari documenti contenenti istruzioni relative ai controllori Logix5000.

A chi è rivolto questo manuale

Questo documento si rivolge ai programmatori per fornire loro dettagliate informazioni riguardo le istruzioni disponibili con i controllori Logix. È necessario essere già a conoscenza delle modalità di archiviazione ed elaborazione dati dei controllori Logix.

Si consiglia ai programmatori non esperti di leggere tutte le informazioni riguardanti un’istruzione prima di utilizzare la stessa. I programmatori esperti possono fare riferimento alle informazioni sulle istruzioni per verificare eventuali dettagli.

Obiettivo/scopo Documenti

Programmazione del controllore per applicazioni sequenziali

Controllori Logix5000 Set di istruzioni generali – Manuale di riferimento, pubblicazione 1756-RM003

Programmazione del controllore per applicazioni di processo o azionamenti

Manuale di riferimento con istruzioni per controllo di processo ed azionamenti per controllori Logix5000, pubblicazione 1756-RM006

Programmazione del controllore per applicazioni di movimento

Logix5000 Set di istruzioni di movimento per controllori Logix5000 – Manuale di riferimento, pubblicazione 1756-RM007

Programmazione del controllore per usare le fasi dell’attrezzatura

Manuale per l’utente di PhaseManager, pubblicazione LOGIX-UM001

Importazione di un file di testo o di tag in un progetto

Importazione/esportazione con il Controllore Logix5000 – Manuale di riferimento , pubblicazione 1756-RM084

Esportazione di un progetto o di tag in un file di testo

Conversione di un’applicazione PLC-5 o SLC 500 in un’applicazione Logix5000

Conversione dalla logica PLC-5 o SLC 500 alla logica Logix5550 – Manuale di riferimento, pubblicazione 1756-6.8.5

Voi siete qui

23Pubblicazione 1756-RM003K-IT-P – Luglio 2008 23

Page 24: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

5 Istruzioni generali dei controllori Logix5000

Scopo di questo manuale Ogni descrizione è riportata nel seguente formato.

Le icone seguenti facilitano l’identificazione delle informazioni specifiche per i singoli linguaggi:

Questa sezione: Fornisce questo tipo di informazioni:

Nome dell’istruzione identifica l’istruzione

specifica se si tratta di un’istruzione di ingresso o di uscita

Operandi elenca tutti gli operandi dell’istruzione

Struttura dell’istruzione elenca i bit e i valori di stato del controllo dell’istruzione, se presenti

Descrizione descrive l’uso dell’istruzione

definisce le differenze tra quando un’istruzione è abilitata e quando è disabilitata

Indicatori di stato aritmetico

indica se l’istruzione influenza gli indicatori di stato aritmetico o meno

vedere appendice Attributi comuni

Condizioni di errore indica se l’istruzione genera errori gravi o minori

in caso affermativo, viene indicato il tipo ed il codice di errore

Esecuzione indica in che modo funziona l’istruzione

Esempio fornisce almeno un esempio di programmazione

comprende un descrizione esplicativa per ogni esempio

se disponibile in ladder, descrive gli operandi

se disponibile in blocco funzione, descrive gli operandi

I pin indicati in un blocco funzione di default sono gli unici pin di default. Nella tabella degli operandi vengono elencati tutti i possibili pin relativi a un blocco funzione.

se disponibile in testo strutturato, descrive gli operandi

Questa icona: Indica il seguente linguaggio di programmazione

ladder

testo strutturato

blocco funzione

24 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 25: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni generali dei controllori Logix5000 5

Informazioni comuni per tutte le istruzioni

Il set di istruzioni del Logix5000 presenta degli attributi comuni:

Convenzioni e termini correlati

Impostato e azzerato

In questo manuale si utilizzano i termini “impostato” ed “azzerato” per indicare lo stato dei bit (booleani) e dei valori (non booleani):

Nella sezione relativa agli operandi, i tipi di dati in grassetto indicano i tipi di dati ottimali. Un’istruzione viene eseguita più velocemente e richiede meno memoria se tutti gli operandi dell’istruzione utilizzano il medesimo tipo di dati ottimale, in genere DINT o REAL.

Per queste informazioni: Vedere questa appendice:

attributi comuni l’appendice Attributi comuni definisce:

• indicatori di stato aritmetico

• tipi di dati

• parole chiave

attributi di un blocco funzione

l’appendice Attributi di un blocco funzione definisce:

• istruzioni di controllo programma

• modalità di temporizzazione

Questo termine: Significa:

impostato il bit è impostato a 1 (ON)

un valore è impostato su un numero diverso da zero

azzerato il bit è a 0 (OFF)

tutti i bit di un valore sono a 0

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 25

Page 26: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

5 Istruzioni generali dei controllori Logix5000

Condizione del ramo in logica ladder

Il controllore valuta le istruzioni ladder in base alla condizione del ramo precedente l’istruzione (condizione del ramo di ingresso). In base alla condizione di ingresso del ramo e all’istruzione, il controllore imposta la condizione del ramo seguente l’istruzione (condizione del ramo di uscita) che, a sua volta, determina la successiva istruzione.

Se la condizione di ingresso del ramo per un’istruzione di ingresso è vera, il controllore valuta l’istruzione ed imposta la condizione del ramo di uscita in base ai risultati dell’istruzione. Se l’istruzione è vera, la condizione del ramo di uscita è vera; se l’istruzione è falsa la condizione del ramo di uscita è falsa.

Il controllore esegue anche una prescansione delle istruzioni. La prescansione è una speciale scansione di tutte le routine di un controllore. Durante la prescansione, il controllore esegue una scansione di tutte le routine e subroutine, ma ignora i salti che potrebbero far sì che alcune istruzioni non vengano eseguite. Il controllore esegue tutti gli anelli FOR e le chiamate alle subroutine. Se una subroutine viene chiamata più di una volta, viene rieseguita ad ogni chiamata. Il controllore utilizza la prescansione delle istruzioni ladder per ripristinare valori di I/O non ritentivi e interni.

Durante la prescansione, i valori di ingresso non vengono applicati e i risultati non vengono scritti. La prescansione può essere generata nelle seguenti condizioni:

• Passaggio da modalità Programmazione a modalità di Esecuzione

• Attivazione automatica della modalità di esecuzione da una condizione di accensione.

La prescansione non viene eseguita quando:

• Il programma viene schedulato mentre il controllore è in esecuzione.

• Il programma viene cancellato mentre il controllore è in esecuzione.

istruzione di ingresso

condizione ramo di ingresso

istruzione di uscita

condizione ramo di uscita

26 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 27: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni generali dei controllori Logix5000 5

Stati dei blocchi funzione

Il controllore valuta le istruzioni in blocco funzione sulla base dello stato delle varie condizioni.

Ogni istruzione di blocco funzione comprende anche i parametri EnableIn e EnableOut:

• le istruzioni di blocco funzione vengono eseguite normalmente quando viene impostato EnableIn.

• quando EnableIn viene azzerato, l’istruzione di blocco funzione esegue la logica prescansione, logica post-scansione, oppure salta l’esecuzione normale dell’algoritmo.

• EnableOut corrisponde a EnableIn, tuttavia, se durante l’esecuzione del blocco funzione viene rilevata una condizione di overflow anche EnableOut è azzerato.

• ogni volta che EnableIn passa da azzerato a impostato e viceversa l’esecuzione del blocco funzione viene ripresa dal punto in cui era stata interrotta. Tuttavia, esistono delle istruzioni di blocco funzione che determinano funzionalità speciali, come la ripetizione della inizializzazione, che si verifica quando EnableIn passa da azzerato a impostato. Per quanto riguarda le istruzioni di blocco funzione con parametri a base tempo, ogni volta che si imposta la modalità di temporizzazione Oversample, l’esecuzione dell’istruzione riprende sempre dal punto in cui è stata interrotta quando EnableIn passa da azzerato a impostato.

Se il parametro EnableIn non è cablato, l’istruzione viene sempre eseguita in modo normale e EnableIn rimane impostato. Se si azzera EnableIn, quest’ultimo verrà impostato all’esecuzione successiva dell’istruzione.

IMPORTANTE Quando si programma con blocchi funzione, limitare l’intervallo di unità ingegneristiche a +/–10+/–15, dato che i calcoli interni a virgola mobile vengono eseguiti usando la virgola mobile a singola precisione. Le unità ingegneristiche che non rientrano in questo intervallo possono compromettere la precisione, se i risultati si avvicinano ai limiti della virgola mobile a singola precisione (+/–10+/–38).

Condizione possibile: Descrizione

durante la prescansione La prescansione nel caso delle routine in blocco funzione avviene con le stesse modalità delle routine in ladder. L’unica differenza sta nel fatto che il parametro EnableIn relativo a ciascuna istruzione di blocco funzione viene azzerato durante la prescansione.

prima scansione dell’istruzione

Questa dicitura si riferisce alla prima volta in cui l’istruzione viene eseguita dopo la prescansione. Il controllore la usa per leggere gli ingressi e stabilire in quale stato devono essere impostati.

durante la prima esecuzione dell’istruzione

Questa dicitura si riferisce alla prima volta in cui l’istruzione viene eseguita durante una nuova istanza di una struttura dati. Il controllore la utilizza per generare dei coefficienti e altri dati memorizzati che non vengono modificati relativamente a un blocco funzione in seguito al download iniziale.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 27

Page 28: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

5 Istruzioni generali dei controllori Logix5000

Notizen:

28 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 29: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix(ALMD, ALMA)

Introduzione Queste istruzioni di allarme basate su Logix sono disponibili in ladder, testo strutturato e diagramma a blocchi funzione. Quando vengono utilizzate con il software FactoryTalk View SE, versione 5.0 e successive, tali istruzioni creano un sistema di allarme insieme al pacchetto di visualizzazione posseduto. Il controllore rileva le condizioni di allarme e registra gli eventi nei server di allarmi ed eventi di FactoryTalk View, che inviano gli allarmi ai client di Factory Talk View SE registrati per ricevere notifiche.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

rilevare allarmi in base a condizioni booleane (vero/falso)

ALMD ladder

testo strutturato

blocco funzione

30

rilevare allarmi in base al livello o al tasso di variazione di un allarme

ALMA ladder

testo strutturato

blocco funzione

42

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 29

Page 30: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Digital Alarm (ALMD) L’istruzione ALMD rileva gli allarmi in base a condizioni booleane (vero/falso). I parametri di controllo di programma (Prog) e operatore (Oper) forniscono un’interfaccia per i comandi di allarme.

Operandi:

Ladder

In logica ladder, l’ingresso della condizione di allarme (In) si ottiene dalla condizione del ramo.

Testo strutturato

Gli operandi sono gli stessi dell’istruzione di logica ladder ALMD, con alcune eccezioni, come sopra indicato.

Operando Tipo Formato Descrizione

Tag ALMD ALARM_DIGITAL Struttura Struttura ALMD.

In BOOL Tagimmediato

Solo testo strutturato.

Il valore viene copiato in In quando l’istruzione viene eseguita. Il valore di ingresso dell’allarme viene confrontato per determinare se esiste un allarme.

ProgAck BOOL Tagimmediato

Il valore viene copiato in ProgAck quando l’istruzione viene eseguita. Nella transizione da azzerato a impostato, viene confermata la ricezione dell’allarme (se la conferma è richiesta).

ProgReset BOOL Tagimmediato

Il valore viene copiato in ProgReset quando l’istruzione viene eseguita. Nella transizione da azzerato a impostato, viene azzerato l’allarme (se richiesto).

ProgDisable BOOL Tagimmediato

Il valore viene copiato in ProgDisable quando l’istruzione viene eseguita. Quando è impostato, disattiva l’allarme (non annulla il comando di attivazione comandi).

ProgEnable BOOL Tagimmediato

Il valore viene copiato in ProgEnable quando l’istruzione viene eseguita. Quando è impostato, attiva l’allarme (ha la precedenza sul comando di disattivazione comandi).

MinDurationPRE DINT immediato Solo logica ladder.

Specifica per quanto tempo la condizione di allarme deve essere presente prima che sia segnalata (millisecondi).

MinDurationACC DINT immediato Solo logica ladder.

Indica il numero di millisecondi che sono trascorsi da quando si è verificata la condizione di allarme.

ALMD(ALMD, In, ProgAck, ProgReset, ProgDisable, ProgEnable);

30 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 31: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Blocco funzione

Struttura ALARM_DIGITAL

Operando Tipo Formato Descrizione

Tag ALMD ALARM_DIGITAL Struttura Struttura ALMD.

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Logica ladder:

Corrisponde allo stato del ramo. Non incide sull’elaborazione.

Blocco funzione:

Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se è impostato, l’istruzione viene eseguita.

Il valore di default è impostato.

Testo strutturato:

Nessun effetto. L’istruzione viene sempre eseguita.

In BOOL Ingresso del segnale digitale nell’istruzione.

Il valore di default è azzerato.

Logica ladder:

Segue la condizione del ramo. Impostato se la condizione del ramo è vera. Azzerato se la condizione del ramo è falsa.

Testo strutturato:

Copiato dall’operando dell’istruzione.

InFault BOOL Indicatore di stato generale danneggiato per l’ingresso. L’applicazione utente può impostatare InFault per indicare che il segnale di ingresso presenta un errore. Quando è impostato, l’istruzione passa a InFaulted (Status.1). Quando è azzerato, l’istruzione azzera InFaulted (Status.1). In entrambi i casi, l’istruzione continua a valutare In per le condizioni di allarme.

Il valore di default è azzerato (stato generale corretto).

Condition BOOL Specifica in che modo l’allarme viene attivato. Quando Condition è impostato, la condizione di allarme viene attivata quando In è impostato. Quando Condition è azzerato, la condizione di allarme viene attivata quando In è azzerato.

Il valore di default è impostato.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 31

Page 32: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

AckRequired BOOL Specifica se è richiesta la conferma di ricezione dell’allarme. Se è impostato, è richiesta la conferma di ricezione dell’allarme. Se è azzerato, la conferma di ricezione dell’allarme non è richiesta e Acked è sempre impostato.

Il valore di default è impostato.

Latched BOOL Specifica se l’allarme è agganciato. Gli allarmi agganciati restano nello stato InAlarm quando la condizione di allarme diventa falsa, finché non viene ricevuto un comando Reset di azzeramento. Quando è impostato, l’allarme è agganciato. Quando è azzerato, l’allarme è sganciato.

Un allarme agganciato può essere azzerato solo quando la condizione di allarme è falsa.

Il valore di default è azzerato.

ProgAck BOOL Impostato dal programma utente per confermare la ricezione dell’allarme. Richiede una transizione da azzerato a impostato mentre l’allarme non ha ancora ricevuto conferma di ricevimento.

Il valore di default è azzerato.

Logica ladder:

Copiato dall’operando dell’istruzione.

Testo strutturato:

Copiato dall’operando dell’istruzione.

OperAck BOOL Impostato dall’interfaccia operatore per confermare la ricezione dell’allarme. Richiede una transizione da azzerato a impostato mentre l’allarme non ha ancora ricevuto conferma di ricevimento. L’istruzione azzera questo parametro.

Il valore di default è azzerato.

ProgReset BOOL Impostato dal programma utente per azzerare l’allarme. Richiede una transizione da azzerato a impostato mentre l’allarme è in stato InAlarm e la condizione In non è in allarme.

Il valore di default è azzerato.

Logica ladder:

Copiato dall’operando dell’istruzione.

Testo strutturato:

Copiato dall’operando dell’istruzione.

OperReset BOOL Impostato dall’interfaccia operatore per azzerare l’allarme. Richiede una transizione da azzerato a impostato mentre l’allarme è in stato InAlarm e la condizione In non è in allarme. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

ProgSuppress BOOL Impostato dal programma utente per sopprimere l’allarme.

Il valore di default è azzerato.

OperSuppress BOOL Impostato dall’interfaccia operatore per sopprimere l’allarme. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

Parametro di ingresso

Tipo di dati Descrizione

32 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 33: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

ProgUnsuppress BOOL Impostato dal programma utente per annullare la soppressione dell’allarme. Ha la precedenza sui comandi di soppressione.

Il valore di default è azzerato.

OperUnsuppress BOOL Impostato dall’interfaccia operatore per annullare la soppressione dell’allarme. Ha la precedenza sui comandi di soppressione. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

ProgDisable BOOL Impostato dal programma utente per disattivare l’allarme.

Il valore di default è azzerato.

Logica ladder:

Copiato dall’operando dell’istruzione.

Testo strutturato:

Copiato dall’operando dell’istruzione.

OperDisable BOOL Impostato dall’interfaccia operatore per disabilitare l’allarme. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

ProgEnable BOOL Impostato dal programma utente per abilitare l’allarme. Ha la precedenza sul comando di disabilitazione.

Il valore di default è azzerato.

Logica ladder:

Copiato dall’operando dell’istruzione.

Testo strutturato:

Copiato dall’operando dell’istruzione.

OperEnable BOOL Impostato dall’interfaccia operatore per abilitare l’allarme. Ha la precedenza sul comando di disabilitazione. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

AlarmCountReset BOOL Impostato dal programma utente per azzerare il conteggio dell’allarme. Una transizione da azzerato a impostato azzera il conteggio dell’allarme.

Il valore di default è azzerato.

UseProgTime BOOL Specifica se utilizzare l’orologio del controllore o il valore ProgTime per la registrazione cronologica degli eventi di cambiamento dello stato dell’allarme. Quando è impostato, il valore ProgTime esegue la registrazione cronologica. Quando è azzerato, l’orologio del controllore esegue la registrazione cronologica.

Il valore di default è azzerato.

Parametro di ingresso

Tipo di dati Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 33

Page 34: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

ProgTime LINT Se UseProgTime è impostato, questo valore è utilizzato per fornire il valore di registrazione cronologica per tutti gli eventi. Questo consente all’applicazione di applicare le registrazioni cronologiche ottenute dalla sorgente dell’allarme, ad esempio un modulo d’ingresso di una sequenza di eventi.

Severity DINT Gravità dell’allarme. Questo non influenza l’elaborazione degli allarmi da parte del controllore, ma può essere utilizzato per ordinare e filtrare le funzioni di chi riceve l’allarme.

Valori validi = 1...1000 (1000 = più grave; 1 = meno grave).

Valore predefinito = 500.

MinDurationPRE DINT Valore preimpostato della durata minima (in millisecondi) per cui la condizione di allarme resta vera prima che l’allarme sia contrassegnato come InAlarm e una notifica di allarme sia inviata ai client. Il controllore raccoglie i dati dell’allarme non appena la condizione di allarme viene rilevata, pertanto non vi è alcuna perdita di dati mentre si attende la durata minima.

Valori validi = 0...2.147.483.647.

Valore predefinito = 0.

Parametro di ingresso

Tipo di dati Descrizione

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL Abilita l’uscita.

InAlarm BOOL Stato di allarme attivo. Impostato quando l’allarme è attivo. Azzerato quando l’allarme non è attivo (stato normale).

Acked BOOL Stato di conferma di ricezione dell’allarme. Impostato quando è stata data conferma di ricezione dell’allarme. Azzerato quando non è stata data conferma di ricezione dell’allarme.

Acked è sempre impostato quando AckRequired è azzerato.

InAlarmUnack BOOL Combinazione di allarme attivo e stato di conferma ricezione. Impostato quando l’allarme è attivo (InAlarm è impostato) e non è stata data conferma di ricevimento dell’allarme (Acked è azzerato). Azzerato quando l’allarme è normale (inattivo), è stata data conferma di ricezione dell’allarme o entrambi gli stati sono presenti.

Suppressed BOOL Stato di allarme soppresso. Impostato quando l’allarme è soppresso. Azzerato quando l’allarme non è soppresso.

Disabled BOOL Stato di allarme disabilitato. Impostato quando l’allarme è disabilitato. Azzerato quando l’allarme è abilitato.

MinDurationACC DINT Tempo trascorso dal rilevamento dell’allarme. Quando il valore raggiunge MinDurationPRE, l’allarme diventa attivo (InAlarm è impostato) e una notifica viene inviata ai client.

AlarmCount DINT Numero di attivazioni dell’allarme (InAlarm impostato). Se viene raggiunto il valore massimo, il contatore lascia il valore al valore di conteggio massimo.

InAlarmTime LINT Registrazione cronologica del rilevamento dell’allarme.

AckTime LINT Registrazione cronologica della conferma dell’allarme. Se l’allarme non richiede conferma, questa registrazione cronologica è uguale all’ora dell’allarme.

RetToNormalTime LINT Registrazione cronologica del ritorno dell’allarme allo stato normale.

AlarmCountResetTime LINT Registrazione cronologica che indica quando è stato azzerato il conteggio dell’allarme.

DeliveryER BOOL Errore di consegna del messaggio di notifica dell’allarme. Impostato in caso di errore di consegna: non è registrato alcun ricevente degli allarmi o almeno un ricevente registrato non ha ricevuto l’ultimo messaggio di modifica dello stato dell’allarme. Azzerato quando la consegna è avvenuta con successo o è in corso.

34 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 35: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Descrizione L’istruzione ALMD rileva gli allarmi in base a condizioni booleane (vero/falso).

L’istruzione ALMD offre funzioni aggiuntive quando è utilizzata con i software RSLinx Enterprise e FactoryTalk View SE. È possibile visualizzare allarmi nelle visualizzazioni Alarm Summary, Alarm Banner, Alarm Status Explorer e Alarm Log Viewer del software FactoryTalk View SE.

DeliveryDN BOOL Completamento della consegna del messaggio di notifica dell’allarme. Impostato quando la consegna riesce correttamente: esiste almeno un ricevente registrato e tutti i riceventi registrati hanno ricevuto correttamente l’ultimo messaggio di cambiamento di stato dell’allarme. Azzerato quando la consegna non viene portata a termine correttamente o è in corso.

DeliveryEN BOOL Stato di consegna del messaggio di notifica dell’allarme. Impostato quando la consegna è in corso. Azzerato quando la consegna non è in corso.

NoSubscriber BOOL L’allarme non aveva riceventi registrati quando ha tentato di consegnare il messaggio più recente. Impostato quando non vi sono riceventi registrati. Azzerato quando esiste almeno un ricevente registrato.

NoConnection BOOL I riceventi registrati dell’allarme non erano collegati durante il tentativo di consegnare il messaggio più recente. Impostato quando tutti i riceventi registrati sono scollegati. Azzerato quando almeno un ricevente è collegato o non vi sono riceventi registrati.

CommError BOOL Errore di comunicazione nella consegna di un messaggio di allarme. Impostato quando vi sono errori di comunicazione e vengono utilizzati tutti i tentativi. Questo significa che esiste un ricevente registrato con una connessione, ma il controllore non ha ricevuto la conferma della consegna del messaggio. Azzerato quando tutti i riceventi registrati collegati confermano la ricezione del messaggio di allarme.

AlarmBuffered BOOL Messaggio di allarme bufferizzato a causa di un errore di comunicazione (CommError è impostato) o connessione interrotta (NoConnection è impostato). Impostato quando il messaggio di allarme è bufferizzato per almeno un ricevente registrato. Azzerato quando il messaggio di allarme non è bufferizzato.

Subscribers DINT Numero di riceventi registrati per l’allarme.

SubscNotified DINT Numero di riceventi registrati notificati correttamente del cambiamento di stato dell’allarme più recente.

Status DINT Indicatori di stato combinati:

Status.0 = InstructFault.

Status.1 = InFaulted.

Status.2 = SeverityInv.

InstructFault (Status.0) BOOL Esistono condizioni di errore dell’istruzione. Non si tratta di un errore minore o grave del controllore. Verificare gli altri bit di stato per stabilire cosa è accaduto.

InFaulted (Status.1) BOOL Il programma utente ha impostato InFault per indicare dati in ingresso di cattiva qualità. L’allarme continua a valutare In per la condizione di allarme.

SeverityInv (Status.2) BOOL La configurazione della gravità dell’allarme non è valida.

Se la gravità è <1, l’istruzione usa Severity = 1.

Se la gravità è >1000, l’istruzione usa Severity = 1000.

Parametro di uscita Tipo di dati Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 35

Page 36: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

36

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Il software RSLinx Enterprise è ricevente registrato degli allarmi nel controllore. Usare i parametri di uscita per monitorare l’istruzione, vedere lo stato dei riceventi registrati dell’allarme e visualizzare i cambiamenti di stato dell’allarme. Se la connessione al software RSLinx Enterprise si interrompe, il controllore può brevemente bufferizzare i dati di allarme finché la connessione viene ripristinata.

Diagrammi di stato quando è richiesta la conferma di ricezione

Latched = True

InAlarm = FalseAcked = True

InAlarm = TrueAcked = False

In = Condition, MinDurationACC >= MinDurationPRE

InAlarm = TrueAcked = True

In != Condition, Reset 2

Ack1

In != Condition, Reset2

Latched = False

InAlarm = FalseAcked = True

InAlarm = TrueAcked = False

In = Condition, MinDurationACC >= MinDurationPRE

In != Condition

InAlarm = FalseAcked = False

InAlarm = TrueAcked = True

In != Condition

Ack1Ack1

In = Condition, MinDurationACC >= MinDurationPRE

1 Alarm can be acked by several different ways: ProgAck, OperAck, clients (RSLogix 5000software, RSView software).

2 Alarm can be reset by several different ways: ProgReset, OperReset, clients (RSLogix 5000software, RSView software).

InAlarm = falsoAcked = vero

InAlarm = veroAcked = falso

InAlarm = falsoAcked = falso

InAlarm = veroAcked = vero

In = Condition, MinDurationACC >= MinDurationPRE

In != Condition

In = Condition, MinDurationACC >= MinDurationPRE

In != Condition

Ack1 Ack1

Latched = falso

Latched = vero

InAlarm = falsoAcked = vero

InAlarm = veroAcked = falso

In = Condition, MinDurationACC >= MinDurationPRE

In != Condition, Reset2

In != Condition, Reset 2

Ack1

InAlarm = veroAcked = vero

1 La ricezione dell’allarme può essere confermata in diversi modi: ProgAck, OperAck, client (software RSLogix 5000, software RSView).

2 L’allarme può essere azzerato in diversi modi: ProgReset, OperReset, client (software RSLogix 5000, software RSView).

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 37: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Diagrammi di stato quando la conferma della ricezione non è richiesta

Indicatori di stato aritmetico: nessuno

Condizioni di errore: nessuna

Esecuzione:

InAlarm = False InAlarm = True

In = Condition, MinDurationACC >= MinDurationPRE

In != Condition

Acked = True

Latched = False

InAlarm = False InAlarm = True

In = Condition, MinDurationACC >= MinDurationPRE

In != Condition, Reset1

Acked = True

Latched = True

1 Alarm can be reset by several different ways: ProgReset, OperReset, clients (RSLogix 5000software, RSView software)

Latched = falso

Latched = vero

In = Condition, MinDurationACC >= MinDurationPRE

In = Condition, MinDurationACC >= MinDurationPRE

InAlarm = falso InAlarm = vero Acked = vero

Acked = veroInAlarm = veroInAlarm = falso

In != Condition

In != Condition, Reset1

1 L’allarme può essere azzerato in diversi modi: ProgReset, OperReset, client (software RSLogix 5000, software RSView)

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

InAlarm viene azzerato and Acked viene impostato.

Tutte le richieste operatore, le registrazioni cronologiche e gli indicatori di consegna vengono azzerati.

la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

EnableIn e EnableOut vengono azzerati.

Il parametro In viene azzerato e l’istruzione esegue una valutazione per determinare lo stato dell’allarme.

la condizione del ramo di ingresso è vera

La condizione del ramo di uscita viene impostata su vero.

EnableIn e EnableOut vengono impostati.

Il parametro In viene impostato e l’istruzione esegue una valutazione per determinare lo stato dell’allarme.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 37

Page 38: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Allarme ALMD, conferma di ricezione richiesta e agganciato

Condizione Azione blocco funzione Azione testo strutturato

durante la prescansione Tutte le richieste operatore, le registrazioni cronologiche e gli indicatori di consegna vengono azzerati.

InAlarm viene azzerato and Acked viene impostato.

Tutte le richieste operatore, le registrazioni cronologiche e gli indicatori di consegna vengono azzerati.

InAlarm viene azzerato and Acked viene impostato.

prima scansione dell’istruzione

Nessuna. Nessuna.

durante la prima esecuzione dell’istruzione

Nessuna. Nessuna.

EnableIn viene azzerato L’istruzione non viene eseguita.

EnableOut viene azzerato.

L’istruzione viene eseguita.

EnableOut viene sempre impostato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

L’istruzione viene eseguita.

EnableOut viene sempre impostato.

post-scansione Nessuna. Nessuna.

38 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 39: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Allarme ALMD, conferma di ricezione richiesta e non agganciato

Allarme ALMD, conferma di ricezione non richiesta e agganciato

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 39

Page 40: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Allarme ALMD, conferma di ricezione non richiesta e non agganciato

Esempio: due segnali di errore del motore sono combinati in modo tale che, nel caso in cui uno dei due si verifichi, viene attivato un allarme motore. Confermare via programma la ricezione di tutte le condizioni di allarme con una transizione da azzerato a impostato del valore del tag Motor101Ack. La logica applicativa deve azzerare Motor101Ack.

Logica ladder

40 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 41: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Testo strutturato

Motor101FaultConditions := Motor101Overtemp OR Motor101FailToStart;

ALMD(Motor101Fault,Motor101FaultConditions,Motor101Ack,0,0,0 );

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 41

Page 42: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Analog Alarm (ALMA) L’istruzione ALMA rileva gli allarmi in base al livello o al tasso di variazione di un valore analogico. I parametri di controllo di programma (Prog) e operatore (Oper) forniscono un’interfaccia per i comandi di allarme.

Operandi:

Ladder

Operando Tipo Formato Descrizione

tag ALMA ALARM_ANALOG Struttura Struttura ALMA.

In REALDINTINTSINT

Tagimmediato

Il valore viene copiato in In quando l’istruzione viene eseguita. Valore dell’ingresso dell’allarme, confrontato con i limiti di allarme per rilevare le condizioni di allarme.

ProgAckAll BOOL Tagimmediato

Il valore viene copiato in ProgAckAll quando l’istruzione viene eseguita. Nella transizione da azzerato a impostato, conferma la ricezione di tutte le condizioni di allarme che richiedono conferma.

ProgDisable BOOL Tagimmediato

Il valore viene copiato in ProgDisable quando l’istruzione viene eseguita. Quando è impostato, disattiva l’allarme (non annulla il comando di attivazione comandi).

ProgEnable BOOL Tagimmediato

Il valore viene copiato in ProgEnable quando l’istruzione viene eseguita. Quando è impostato, attiva l’allarme (ha la precedenza sul comando di disattivazione comandi).

HHlimit REAL immediato Solo logica ladder.

Limite di allarme massimo.

HLimit REAL immediato Solo logica ladder.

Limite di allarme alto.

LLimit REAL immediato Solo logica ladder.

Limite di allarme basso.

LLLimit REAL immediato Solo logica ladder.

Limite di allarme minimo.

42 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 43: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Testo strutturato

Gli operandi sono gli stessi dell’istruzione di logica ladder ALMD, con alcune eccezioni, come sopra indicato.

Blocco funzione

Operando Tipo Formato Descrizione

Tag ALMA ALARM_ANALOG Struttura Struttura ALMA

ALMA(ALMA, In, ProgAckAll, ProgDisable, ProgEnable);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 43

Page 44: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Struttura ALARM_ANALOG

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Logica ladder:

Corrisponde allo stato del ramo. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Testo strutturato:

Nessun effetto. L’istruzione viene sempre eseguita.

Blocco funzione:

Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

In REAL Il valore dell’ingresso dell’allarme, confrontato con i limiti di allarme per rilevare le condizioni di allarme.

Valore predefinito = 0.0.

Logica ladder:

Copiato dall’operando dell’istruzione.

Testo strutturato:

Copiato dall’operando dell’istruzione.

InFault BOOL Indicatore di stato danneggiato per l’ingresso. L’applicazione utente può impostare InFault per indicare che il segnale di ingresso presenta un errore. Quando è impostato, l’istruzione passa a InFaulted (stato.1). Quando è azzerato, l’istruzione azzera InFaulted (stato .1). In entrambi i casi, l’istruzione continua a valutare In per le condizioni di allarme.

Il valore di default è azzerato (stato generale corretto).

HHEnabled BOOL Rilevamento condizione di allarme massimo. Impostare per abilitare il rilevamento della condizione di allarme massimo. Azzerare per disabilitare il rilevamento della condizione di allarme massimo.

Il valore di default è impostato.

HEnabled BOOL Rilevamento condizione di allarme alto. Impostare per abilitare il rilevamento della condizione di allarme alto. Azzerare per disabilitare il rilevamento della condizione di allarme alto.

Il valore di default è impostato.

LEnabled BOOL Rilevamento condizione di allarme basso. Impostare per abilitare il rilevamento della condizione di allarme basso. Azzerare per disabilitare il rilevamento della condizione di allarme basso.

Il valore di default è impostato.

LLEnabled BOOL Rilevamento condizione di allarme minimo. Impostare per abilitare il rilevamento della condizione di allarme minimo. Azzerare per disabilitare il rilevamento della condizione di allarme minimo.

Il valore di default è impostato.

44 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 45: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

AckRequired BOOL Specifica se è richiesta la conferma di ricezione dell’allarme. Se è impostato, è richiesta la conferma di ricezione dell’allarme. Quando viene azzerato, non è richiesta la conferma di ricezione e HHAcked, HAcked, LAcked, LLAcked, ROCPosAcked e ROCNegAcked sono sempre impostati.

Il valore di default è impostato.

ProgAckAll BOOL Impostato dal programma utente per confermare tutte le condizioni dell’allarme. Richiede una transizione da azzerato a impostato mentre le condizioni dell’allarme non sono confermate.

Il valore di default è azzerato.

Logica ladder:

Copiato dall’operando dell’istruzione.

Testo strutturato:

Copiato dall’operando dell’istruzione.

OperAckAll BOOL Impostato dall’interfaccia operatore per confermare tutte le condizioni dell’allarme. Richiede una transizione da azzerato a impostato mentre le condizioni dell’allarme non sono confermate. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

HHProgAck BOOL Conferma programma massimo. Impostato dal programma utente per confermare una condizione massima. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento.

Il valore di default è azzerato.

HHOperAck BOOL Conferma operatore massimo. Impostato dall’interfaccia operatore per confermare una condizione massima. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

HProgAck BOOL Conferma programma alto. Impostato dal programma utente per confermare una condizione alta. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento.

Il valore di default è azzerato.

HOperAck BOOL Conferma operatore alto. Impostato dall’interfaccia operatore per confermare una condizione alta. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

LProgAck BOOL Conferma programma basso. Impostato dal programma utente per confermare una condizione bassa. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento.

Il valore di default è azzerato.

LOperAck BOOL Conferma operatore basso. Impostato dall’interfaccia operatore per confermare una condizione bassa. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

Parametro di ingresso

Tipo di dati Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 45

Page 46: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

LLProgAck BOOL Conferma programma minimo. Impostato dal programma utente per confermare una condizione minima. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento.

Il valore di default è azzerato.

LLOperAck BOOL Conferma operatore minimo. Impostato dall’interfaccia operatore per confermare una condizione minima. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

ROCPosProgAck BOOL Conferma del programma di tasso di variazione positiva. Impostato dal programma utente per confermare una condizione di tasso di variazione positiva. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento.

Il valore di default è azzerato.

ROCPosOperAck BOOL Conferma dell’operatore di tasso di variazione positiva. Impostato dall’interfaccia operatore per confermare una condizione di tasso di variazione positiva. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

ROCNegProgAck BOOL Conferma del programma di tasso di variazione negativa. Impostato dal programma utente per confermare una condizione di tasso di variazione negativa. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento.

Il valore di default è azzerato.

ROCNegOperAck BOOL Conferma dell’operatore di tasso di variazione negativa. Impostato dall’interfaccia operatore per confermare una condizione di tasso di variazione negativa. Richiede una transizione da azzerato a impostato mentre la condizione di allarme non ha ancora ricevuto conferma di ricevimento. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

ProgSuppress BOOL Impostato dal programma utente per sopprimere l’allarme.

Il valore di default è azzerato.

OperSuppress BOOL Impostato dall’interfaccia utente per sopprimere l’allarme. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

ProgUnsuppress BOOL Impostato dal programma utente per annullare la soppressione dell’allarme. Ha la precedenza sui comandi di soppressione.

Il valore di default è azzerato.

OperUnsuppress BOOL Impostato dall’interfaccia utente per annullare la soppressione dell’allarme. Ha la precedenza sui comandi di soppressione. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

Parametro di ingresso

Tipo di dati Descrizione

46 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 47: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

ProgDisable BOOL Impostato dal programma utente per disattivare l’allarme.

Il valore di default è azzerato.

Logica ladder:

Copiato dall’operando dell’istruzione.

Testo strutturato:

Copiato dall’operando dell’istruzione.

OperDisable BOOL Impostato dall’interfaccia operatore per disabilitare l’allarme. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

ProgEnable BOOL Impostato dal programma utente per abilitare l’allarme. Ha la precedenza sul comando di disabilitazione.

Il valore di default è azzerato.

Logica ladder:

Copiato dall’operando dell’istruzione.

Testo strutturato:

Copiato dall’operando dell’istruzione.

OperEnable BOOL Impostato dall’interfaccia operatore per abilitare l’allarme. Ha la precedenza sul comando di disabilitazione. L’istruzione di allarme azzera questo parametro.

Il valore di default è azzerato.

AlarmCountReset BOOL Impostato dal programma utente per azzerare i conteggi dell’allarme per tutte le condizioni. Una transizione da azzerato a impostato azzera i conteggi dell’allarme.

Il valore di default è azzerato.

HHlimit REAL Limite di allarme massimo.

Valori validi = HLimit < HHLimit < valore a virgola mobile positivo massimo.

Valore predefinito = 0.0.

HHSeverity DINT Gravità della condizione di allarme massimo. Questo non influenza l’elaborazione degli allarmi da parte del controllore, ma può essere utilizzato per ordinare e filtrare le funzioni di chi riceve l’allarme.

Valori validi = 1...1000 (1000 = più grave; 1 = meno grave).

Valore predefinito = 500.

HLimit REAL Limite di allarme alto.

Valori validi = LLimit < HLimit < HHLimit.

Valore predefinito = 0.0.

Parametro di ingresso

Tipo di dati Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 47

Page 48: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

HSeverity DINT Gravità della condizione di allarme alto. Questo non influenza l’elaborazione degli allarmi da parte del controllore, ma può essere utilizzato per ordinare e filtrare le funzioni di chi riceve l’allarme.

Valori validi = 1...1000 (1000 = più grave; 1 = meno grave).

Valore predefinito = 500.

LLimit REAL Limite di allarme basso.

Valori validi = LLLimit < LLimit < HLimit.

Valore predefinito = 0.0.

LSeverity DINT Gravità della condizione di allarme basso. Questo non influenza l’elaborazione degli allarmi da parte del controllore, ma può essere utilizzato per ordinare e filtrare le funzioni di chi riceve l’allarme.

Valori validi = 1...1000 (1000 = più grave; 1 = meno grave).

Valore predefinito = 500.

LLLimit REAL Limite di allarme minimo.

Valori validi = valore a virgola mobile negativo massimo < LLLimit < LLimit.

Valore predefinito = 0.0.

LLSeverity DINT Gravità della condizione di allarme minimo. Questo non influenza l’elaborazione degli allarmi da parte del controllore, ma può essere utilizzato per ordinare e filtrare le funzioni di chi riceve l’allarme.

Valori validi = 1...1000 (1000 = più grave; 1 = meno grave).

Valore predefinito = 500.

MinDurationPRE DINT Valore preimpostato di durata minima (millisecondi) per cui una condizione di livello di allarme deve rimanere vera prima che la condizione sia contrassegnata come InAlarm e sia inviata una notifica di allarme ai client. Il controllore raccoglie i dati dell’allarme non appena la condizione di allarme viene rilevata, pertanto non vi è alcuna perdita di dati mentre si attende la durata minima. Non si applica alle condizioni che riguardano il tasso di variazione.

MinDurationPRE si applica solo al primo discostamento dal normale in entrambe le direzioni. Ad esempio, una volta che si verifica il timeout della condizione alta, la condizione massima diventa immediatamente attiva, mentre una condizione bassa aspetta il periodo di timeout.

Valori validi = 0...2.147.483.647.

Valore predefinito = 0.

Parametro di ingresso

Tipo di dati Descrizione

48 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 49: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Deadband REAL Banda morta per il rilevamento del ritorno allo stato normale dei livelli di allarme massimo, alto, basso e minimo.

Una banda morta diversa da zero può ridurre il chattering della condizione di allarme se il valore In cambia continuamente ma rimane vicino alla soglia della condizione del livello. Il valore della banda morta non incide sulla transizione allo stato InAlarm (attivo). Una volta che una condizione di livello è attiva, prima che la condizione torni allo stato inattivo (normale), il valore In deve:

• scende al di sotto della soglia meno la banda morta (per le condizioni alta e massima)

o• sale al di sopra della soglia più la banda morta (per le condizioni bassa e minima).

La banda morta non è utilizzata per condizionare la misura del tempo di durata minima.

Valori validi = 0 ≤ banda morta < intervallo dal primo allarme basso abilitato al primo allarme alto abilitato.

Valore predefinito = 0.0.

ROCPosLimit REAL Limite per un tasso di variazione crescente espresso in unità al secondo. Il rilevamento è abilitato per qualsiasi valore > 0.0 se ROCPeriod è anche > 0.0.

Valori validi = 0.0...valore a virgola mobile massimo possibile.

Valore predefinito = 0.0.

ROCPosSeverity DINT Gravità della condizione del tasso di variazione crescente. Questo non influenza l’elaborazione degli allarmi da parte del controllore, ma può essere utilizzato per ordinare e filtrare le funzioni di chi riceve l’allarme.

Valori validi = 1...1000 (1000 = più grave; 1 = meno grave).

Valore predefinito = 500.

ROCNegLimit REAL Limite per un tasso di variazione decrescente espresso in unità al secondo. Il rilevamento è abilitato per qualsiasi valore > 0.0 se ROCPeriod è anche > 0.0.

Valori validi = 0.0...valore a virgola mobile massimo possibile.

Valore predefinito = 0.0.

ROCNegSeverity DINT Gravità della condizione del tasso di variazione decrescente. Questo non influenza l’elaborazione degli allarmi da parte del controllore, ma può essere utilizzato per ordinare e filtrare le funzioni di chi riceve l’allarme.

Valori validi = 1...1000 (1000 = più grave; 1 = meno grave).

Valore predefinito = 500.

ROCPeriod REAL Periodo di tempo in secondi per il calcolo (intervallo di campionamento) del valore del tasso di variazione. Ogni volta che l’intervallo di campionamento termina, viene memorizzato un nuovo campione di In e ROC viene ricalcolato.

Il rilevamento del tasso di variazione è abilitato per qualsiasi valore > 0.0.

Valori validi = 0.0...valore a virgola mobile massimo possibile.

Valore predefinito = 0.0.

Parametro di ingresso

Tipo di dati Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 49

Page 50: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL Abilita l’uscita.

InAlarm BOOL Stato di allarme attivo. Impostato quando qualsiasi condizione di allarme è attiva. Azzerato quando tutte le condizioni di allarme non sono attive (stato normale).

AnyInAlarmUnack BOOL Combinazione di allarme attivo e stato di conferma ricezione. Impostato quando viene rilevata e confermata una qualsiasi condizione di allarme. Azzerato quando tutte le condizioni di allarme sono normali (inattive), confermate o entrambi gli stati sono presenti.

HHInAlarm BOOL Stato condizione di allarme massima. Impostato quando esiste una condizione massima. Azzerato quando non esiste una condizione massima.

HInAlarm BOOL Stato condizione di allarme alta. Impostato quando esiste una condizione alta. Azzerato quando non esiste una condizione alta.

LInAlarm BOOL Stato condizione di allarme bassa. Impostato quando esiste una condizione bassa. Azzerato quando non esiste una condizione bassa.

LLInAlarm BOOL Stato condizione di allarme minima. Impostato quando esiste una condizione minima. Azzerato quando non esiste una condizione minima.

ROCPosInAlarm BOOL Stato condizione di allarme tasso di variazione positiva. Impostato quando esiste una condizione di tasso di variazione positiva. Azzerato quando non esiste una condizione di tasso di variazione positiva.

ROCNegInAlarm BOOL Stato condizione di allarme tasso di variazione negativa. Impostato quando esiste una condizione di tasso di variazione negativa. Azzerato quando non esiste una condizione di tasso di variazione negativa.

ROC REAL Tasso di variazione calcolato del valore In. Questo valore viene aggiornato quando l’istruzione è sottoposta a scansione dopo ogni ROCPeriod trascorso. Il valore ROC è utilizzato per valutare le condizioni ROCPosInAlarm e ROCNegInAlarm.

ROC = (campione corrente di In – campione precedente di In)/ROCPeriod

HHAcked BOOL Stato confermato condizione massima. Impostato quando una condizione massima è confermata. Sempre impostato quando AckRequired è azzerato. Azzerato quando una condizione massima non è confermata.

HAcked BOOL Stato condizione alta confermata. Impostato quando una condizione alta è confermata. Sempre impostato quando AckRequired è azzerato. Azzerato quando una condizione alta non è confermata.

LAcked BOOL Stato condizione bassa confermata. Impostato quando una condizione bassa è confermata. Sempre impostato quando AckRequired è azzerato. Azzerato quando una condizione bassa non è confermata.

LLAcked BOOL Stato condizione minima confermata. Impostato quando una condizione minima è confermata. Sempre impostato quando AckRequired è azzerato. Azzerato quando una condizione minima non è confermata.

ROCPosAcked BOOL Stato condizione tasso di variazione positiva confermata. Impostato quando una condizione di tasso di variazione positiva è confermata. Sempre impostato quando AckRequired è azzerato. Azzerato quando una condizione di tasso di variazione positiva non è confermata.

ROCNegAcked BOOL Stato condizione tasso di variazione negativa confermata. Impostato quando una condizione di tasso di variazione negativa è confermata. Sempre impostato quando AckRequired è azzerato. Azzerato quando una condizione di tasso di variazione negativa non è confermata.

HHInAlarmUnack BOOL Combinazione di condizione massima attiva e non confermata. Impostato quando la condizione massima è attiva (HHInAlarm è impostato) e non confermata. Azzerato quando la condizione massima è normale (inattiva), confermata o entrambe le cose.

HInAlarmUnack BOOL Combinazione di condizione alta attiva e non confermata. Impostato quando la condizione alta è attiva (HInAlarm è impostato) e non confermata. Azzerato quando la condizione alta è normale (inattiva), confermata o entrambe le cose.

50 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 51: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

LInAlarmUnack BOOL Combinazione di condizione bassa attiva e non confermata. Impostato quando la condizione bassa è attiva (LInAlarm è impostato) e non confermata. Azzerato quando la condizione bassa è normale (inattiva), confermata o entrambe le cose.

LLInAlarmUnack BOOL Combinazione di condizione minima attiva e non confermata. Impostato quando la condizione minima è attiva (LLInAlarm è impostato) e non confermata. Azzerato quando la condizione minima è normale (inattiva), confermata o entrambe le cose.

ROCPosInAlarmUnack BOOL Combinazione di condizione di tasso di variazione positiva attiva e non confermata. Impostato quando la condizione di tasso di variazione positiva è attiva (ROCPosInAlarm è impostato) e non confermata. Azzerato quando la condizione di tasso di variazione positiva è normale (inattiva), confermata o entrambe le cose.

ROCNegInAlarmUnack BOOL Combinazione di condizione di tasso di variazione negativa attiva e non confermata. Impostato quando la condizione di tasso di variazione negativa è attiva (ROCNegInAlarm è impostato) e non confermata. Azzerato quando la condizione di tasso di variazione negativa è normale (inattiva), confermata o entrambe le cose.

Suppressed BOOL Stato di allarme soppresso. Impostato quando l’allarme è soppresso. Azzerato quando l’allarme non è soppresso.

Disabled BOOL Stato di allarme disabilitato. Impostato quando l’allarme è disabilitato. Azzerato quando l’allarme è abilitato.

MinDurationACC DINT Tempo trascorso dal rilevamento di una condizione di allarme. Quando questo valore raggiunge MinDurationPRE, tutte le condizioni di livello allarme rilevate diventano attive (xInAlarm è impostato) e una notifica viene inviata ai client.

HHInAlarmTime LINT Registrazione cronologica del momento in cui l’istruzione ALMA ha rilevato che il valore In ha superato il limite della condizione massima per la transizione più recente allo stato attivo.

HHAlarmCount DINT Il numero di volte in cui la condizione massima è stata attivata. Se viene raggiunto il valore massimo, il contatore lascia il valore al valore di conteggio massimo.

HInAlarmTime LINT Registrazione cronologica del momento in cui l’istruzione ALMA ha rilevato che il valore In ha superato il limite della condizione alta per la transizione più recente allo stato attivo.

HAlarmCount DINT Il numero di volte in cui la condizione alta è stata attivata. Se viene raggiunto il valore massimo, il contatore lascia il valore al valore di conteggio massimo.

LInAlarmTime LINT Registrazione cronologica del momento in cui l’istruzione ALMA ha rilevato che il valore In ha superato il limite della condizione bassa per la transizione più recente allo stato attivo.

LAlarmCount DINT Il numero di volte in cui la condizione bassa è stata attivata. Se viene raggiunto il valore massimo, il contatore lascia il valore al valore di conteggio massimo.

LLInAlarmTime LINT Registrazione cronologica del momento in cui l’istruzione ALMA ha rilevato che il valore In ha superato il limite della condizione minima per la transizione più recente allo stato attivo.

LLAlarmCount DINT Il numero di volte in cui la condizione minima è stata attivata. Se viene raggiunto il valore massimo, il contatore lascia il valore al valore di conteggio massimo.

ROCPosInAlarmTime LINT Registrazione cronologica de momento in cui l’istruzione ALMA ha rilevato che il valore In ha superato il limite della condizione d tasso di variazione positiva per la transizione più recente allo stato attivo.

ROCPosInAlarmCount DINT Il numero di volte in cui la condizione di tasso di variazione positiva è stata attivata. Se viene raggiunto il valore massimo, il contatore lascia il valore al valore di conteggio massimo.

ROCNegInAlarmTime LINT Registrazione cronologica de momento in cui l’istruzione ALMA ha rilevato che il valore In ha superato il limite della condizione d tasso di variazione negativa per la transizione più recente allo stato attivo.

ROCNegAlarmCount DINT Il numero di volte in cui la condizione di tasso di variazione negativa è stata attivata. Se viene raggiunto il valore massimo, il contatore lascia il valore al valore di conteggio massimo.

Parametro di uscita Tipo di dati Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 51

Page 52: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

AckTime LINT Registrazione cronologica della più recente conferma di condizione. Se l’allarme non richiede conferma, questa registrazione cronologica è uguale all’ora dell’allarme di condizione più recente.

RetToNormalTime LINT Registrazione cronologica del ritorno dell’allarme allo stato normale.

AlarmCountResetTime LINT Registrazione cronologica che indica quando è stato azzerato il conteggio dell’allarme.

DeliveryER BOOL Errore di consegna del messaggio di notifica dell’allarme. Impostato in caso di errore di consegna: non è registrato alcun ricevente degli allarmi o almeno un ricevente registrato non ha ricevuto l’ultimo messaggio di modifica dello stato dell’allarme. Azzerato quando la consegna è avvenuta con successo o è in corso.

DeliveryDN BOOL Completamento della consegna del messaggio di notifica dell’allarme. Impostato quando la consegna riesce correttamente: esiste almeno un ricevente registrato e tutti i riceventi registrati hanno ricevuto correttamente l’ultimo messaggio di cambiamento di stato dell’allarme. Azzerato quando la consegna non viene portata a termine correttamente o è in corso.

DeliveryEN BOOL Stato di consegna del messaggio di notifica dell’allarme. Impostato quando la consegna è in corso. Azzerato quando la consegna non è in corso.

NoSubscriber BOOL L’allarme non aveva riceventi registrati quando ha tentato di consegnare il messaggio più recente. Impostato quando non vi sono riceventi registrati. Azzerato quando esiste almeno un ricevente registrato.

NoConnection BOOL I riceventi registrati dell’allarme non erano collegati durante il tentativo di consegnare il messaggio più recente. Impostato quando tutti i riceventi registrati sono scollegati. Azzerato quando almeno un ricevente è collegato o non vi sono riceventi registrati.

CommError BOOL Errore di comunicazione nella consegna di un messaggio di allarme. Impostato quando vi sono errori di comunicazione e vengono utilizzati tutti i tentativi. Questo significa che esiste un ricevente registrato con una connessione, ma il controllore non ha ricevuto la conferma della consegna del messaggio. Azzerato quando tutti i riceventi registrati collegati confermano la ricezione del messaggio di allarme.

AlarmBuffered BOOL Messaggio di allarme bufferizzato a causa di un errore di comunicazione (CommError è impostato) o connessione interrotta (NoConnection è impostato). Impostato quando il messaggio di allarme è bufferizzato per almeno un ricevente registrato. Azzerato quando il messaggio di allarme non è bufferizzato.

Subscribers DINT Numero di riceventi registrati per l’allarme.

SubscNotified DINT Numero di riceventi registrati notificati correttamente del cambiamento di stato dell’allarme più recente.

Status DINT Indicatori di stato combinati:

Status.0 = InstructFault.

Status.1 = InFaulted.

Status.2 = SeverityInv.

Status.3 = AlarmLimitsInv.

Status.4 = DeadbandInv.

Status.5 = ROCPosLimitInv.

Status.6 = ROCNegLimitInv.

Status.7 = ROCPeriodInv.

Parametro di uscita Tipo di dati Descrizione

52 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 53: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Descrizione L’istruzione ALMA rileva gli allarmi in base al livello o al tasso di variazione di un valore.

L’istruzione ALMA offre funzioni aggiuntive quando è utilizzata con i software RSLinx Enterprise e FactoryTalk View SE. È possibile visualizzare allarmi nelle visualizzazioni Alarm Summary, Alarm Banner, Alarm Status Explorer e Alarm Log Viewer del software FactoryTalk View SE.

Il software RSLinx Enterprise è ricevente registrato degli allarmi nel controllore. Usare i parametri di uscita per monitorare l’istruzione, vedere lo stato dei riceventi registrati dell’allarme e visualizzare i cambiamenti di stato dell’allarme. Se la connessione al software RSLinx Enterprise si interrompe, il controllore può brevemente bufferizzare i dati di allarme finché la connessione viene ripristinata.

InstructFault (Status.0) BOOL Esistono condizioni di errore dell’istruzione. Non si tratta di un errore minore o grave del controllore. Verificare gli altri bit di stato per stabilire cosa è accaduto.

InFaulted (Status.1) BOOL Il programma utente ha impostato InFault per indicare dati in ingresso di cattiva qualità. L’allarme continua a valutare In per le condizioni di allarme.

SeverityInv (Status.2) BOOL La configurazione della gravità dell’allarme non è valida.

Se la gravità è <1, l’istruzione usa Severity = 1.

Se la gravità è >1000, l’istruzione usa Severity = 1000.

AlarmLimitsInv (Status.3)

BOOL La configurazione del limite di allarme non è valida (ad esempio, LLimit < LLLimit). Se non è valida, l’istruzione azzera tutti i bit attivi delle condizioni di livello. Finché l’errore non viene azzerato, non è possibile rilevare ulteriori condizioni di livello.

DeadbandInv (Status.4) BOOL La configurazione della banda morta non è valida. Se non è valida, l’istruzione usa Deadband = 0.0.

Valori validi = 0 ≤ banda morta < intervallo dal primo allarme basso abilitato al primo allarme alto abilitato.

ROCPosLimitInv (Status.5)

BOOL Limite del tasso di variazione positivo non valido. Se non è valido, l’istruzione usa ROCPosLimit = 0.0, che disabilita il rilevamento del tasso di variazione positivo.

ROCNegLimitInv (Status.6)

BOOL Limite del tasso di variazione negativo non valido. Se non è valido, l’istruzione usa ROCNegLimit = 0.0, che disabilita il rilevamento del tasso di variazione negativo.

ROCPeriodInv (Status.7) BOOL Periodo del tasso di variazione non valido. Se non è valido, l’istruzione usa ROCPeriod = 0.0, che disabilita il rilevamento del tasso di variazione.

Parametro di uscita Tipo di dati Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 53

Page 54: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Diagrammi di stato quando è richiesta la conferma di ricezione

HInAlarm = FalseHAcked = True

HInAlarm = TrueHAcked = False

In >= HLimit, MinDurationACC >= MinDurationPRE

In < (Hlimit - Deadband)

HInAlarm = FalseHAcked = False

HInAlarm = TrueHAcked = True

In < (HLimit - Deadband) Ack1Ack1

HHInAlarm = FalseHHAcked = True

HHInAlarm = TrueHHAcked = False

In >= HHLimit, MinDurationACC >= MinDurationPRE

In < (HHLimit - Deadband)

HHInAlarm = FalseHHAcked = False

HHInAlarm = TrueHHAcked = True

In < (HHLimit - Deadband)Ack1Ack1

LInAlarm = FalseLAcked = True

LInAlarm = TrueLAcked = False

In <= LLimit, MinDurationACC >= MinDurationPRE

In > (Llimit + Deadband)

LInAlarm = FalseLAcked = False

LInAlarm = TrueLAcked = True

In > (LLimit + Deadband)Ack1Ack1

LLInAlarm = FalseLLAcked = True

LLInAlarm = TrueLLAcked = False

In <= LLLimit, MinDurationACC >= MinDurationPRE

In > (LLLimit + Deadband)

LLInAlarm = FalseLLAcked = False

LLInAlarm = TrueLLAcked = True

In > (LLLimit + Deadband)Ack1

RocPosInAlarm = FalseRocPosAcked = True

RocPosInAlarm = TrueRocPosAcked = False

ROC >= RocPosLimit

ROC < RocPosLimit

RocPosInAlarm = FalseRocPosAcked = False

RocPosInAlarm = TrueRocPosAcked = True

ROC < RocPosLimit Ack1Ack1

l,

RocNegInAlarm = FalseRocNegAcked = True

RocNegInAlarm = TrueRocNegAcked = False

ROC <= -RocNegLimit

ROC > -RocNegLimit

RocNegInAlarm = FalseRocNegAcked = False

RocNegInAlarm = TrueRocNegAcked = True

ROC > -RocNegLimit Ack1Ack1

,

Ack1

In >= HLimit, MinDurationACC >= MinDurationPRE

In >= HHLimit, MinDurationACC >= MinDurationPRE

In <= LLimit, MinDurationACC >= MinDurationPRE

In <= LLLimit, MinDurationACC >= MinDurationPRE

ROC >= RocPosLimit

ROC <= -RocNegLimit

ROCPeriodsSample)In(Previou-Sample)In(CurrentROC =

Where a new sample is collected on thenext scan after the ROCPeriod has elapsed.

1 H alarm condition can be acked by several different ways: HProgAck, HOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).

1 HH alarm condition can be acked by several different ways: HHProgAck, HHOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).

1 L alarm condition can be acked by several different ways: LProgAck, LOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).

1 LL alarm condition can be acked by several different ways: LLProgAck, LLOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).

1 ROCNeg alarm condition can be acked by several different ways: RocNegProgAck, RocNegOperAck, ProgAckAll, OperAckAll, clients (RSLogix 5000 software, RSView software).

1 ROCPos alarm condition can be acked by several different ways: RocPosProgAck, RocPosOperAck, ProgAckAll, OperAckAll, clients (RSLogix 5000 software, RSView software).

HinAlarm = falsoHAcked = vero

HinAlarm = veroHAcked = falso

LinAlarm = falsoLAcked = vero

HinAlarm = falsoHAcked = falso

HinAlarm = veroHAcked = vero

LinAlarm = veroLAcked = falso

LinAlarm = falsoLAcked = falso

LinAlarm = veroLAcked = vero

HHinAlarm = falsoHHAcked = vero

HHinAlarm = falsoHHAcked = falso

HHinAlarm = veroHHAcked = falso

HHinAlarm = veroHHAcked = vero

LLinAlarm = falsoLAcked = vero

LLinAlarm = veroLAcked = falso

LLinAlarm = falsoLAcked = falso

LLinAlarm = veroLAcked = vero

RocNegInAlarm = falsoRocNegAcked = vero

RocNegInAlarm = falsoRocNegAcked = falso

RocNegInAlarm = veroRocNegAcked = falso

RocNegInAlarm = veroRocNegAcked = vero

RocPosInAlarm = veroRocPosAcked = falso

RocPosInAlarm = veroRocPosAcked = vero

RocPosInAlarm = falsoRocPosAcked = vero

RocPosInAlarm = falsoRocPosAcked = falso

In < (HLimit – Deadband)

In < (HLimit – Deadband)

In < (HHLimit – Deadband)

In < (HHLimit – Deadband)

In < (LLLimit – Deadband)In < (LLLimit – Deadband)

In < (LLimit – Deadband)In < (LLimit – Deadband)

ROC < RocPosLimitROC < RocPosLimit

ROC <= RocPosLimit

ROC < -RocNegLimitROC < -RocNegLimit

ROC <= -RocNegLimit

ROC <= -RocNegLimitROC <= RocPosLimit

Ack1 Ack1

Ack1Ack1

Ack1

Ack1Ack1 Ack1 Ack1

Ack1Ack1

Ack1

In >= HLimit, MinDurationACC >= MinDurationPRE

In >= HLimit, MinDurationACC >= MinDurationPRE

In >= HHLimit, MinDurationACC >= MinDurationPRE

In >= HHLimit, MinDurationACC >= MinDurationPRE

1 La condizione di allarme alta può essere confermata in numerosi modi diversi: HProgAck, HOperAck, ProgAckAll, OperAckAll, client (RSLogix 5000, software RSView).

1 La condizione di allarme massima può essere confermata in numerosi modi diversi: HHProgAck, HHOperAck, ProgAckAll, OperAckAll, client (software RSLogix 5000, software RSView).

In >= LLLimit, MinDurationACC >= MinDurationPREIn >= LLimit, MinDurationACC >= MinDurationPRE

In >= LLimit, MinDurationACC >= MinDurationPRE

In >= LLLimit, MinDurationACC >= MinDurationPRE

1 La condizione di allarme minima può essere confermata in numerosi modi diversi: LLProgAck, LLOperAck, ProgAckAll, OperAckAll, client (software RSLogix 5000, software RSView).

1 La condizione di allarme alta può essere confermata in numerosi modi diversi: LProgAck, LOperAck, ProgAckAll, OperAckAll, client (software RSLogix 5000, software RSView).

1 La condizione di allarme ROCPos può essere confermata in numerosi modi diversi: RocPosProgAck, RocPosOperAck, ProgAckAll, OperAckAll, client (software RSLogix 5000, software RSView).

1 La condizione di allarme ROCNeg può essere confermata in numerosi modi diversi: RocNegProgAck, RocNegOperAck, ProgAkkAll, OperAckAll, client (software RSLogix 5000, software RSView).

Dove un nuovo campione viene raccolto nella scan-sione successiva, dopo che ROCPeriod è trascorso.ROC = In(CurrentSample) – In(PreviousSample)

ROCPeriod

54 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 55: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Diagrammi di stato quando non è richiesta la conferma di ricezione

Indicatori di stato aritmetico: Per l’uscita ROC vengono impostati gli indicatori di stato aritmetico.

Condizioni di errore:

Esecuzione:

HInAlarm = False HInAlarm = True

In >= HLimit, MinDurationACC >= MinDurationPRE

In < (HLimit - Deadband)

HAcked = True

LInAlarm = False LInAlarm = True

In <= LLimit, MinDurationACC >= MinDurationPRE

In > (LLimit + Deadband)

LAcked = True

HHInAlarm = False HHInAlarm = True

In >= HHLimit, MinDurationACC >= MinDurationPRE

In < (HHLimit - Deadband)

HHAcked = True

LLInAlarm = False LLInAlarm = True

In <= LLLimit, MinDurationACC >= MinDurationPRE

In > (LLLimit + Deadband)

LLAcked = True

RocPosInAlarm = False RocPosInAlarm = True

ROC >= ROCPosLimit

ROC < ROCPosLimit

RocPosAcked = True

ROCPeriodsSample)In(Previou-Sample)In(CurrentROC =

RocNegInAlarm = False RocNegInAlarm = True

ROC <= -ROCNegLimit

ROC > -ROCNegLimit

RocNegAcked = True

Where a new sample is collected on thenext scan after the ROCPeriod has elapsed.

HinAlarm = falso

LinAlarm = falso

HHinAlarm = falso

LLinAlarm = falso

HinAlarm = vero

LinAlarm = vero

HHinAlarm = vero

LLinAlarm = vero

LAcked = vero

HHAcked = vero

HAcked = vero

LLAcked = vero

In >= HLimit, MinDurationACC >= MinDurationPRE

In >= LLLimit, MinDurationACC >= MinDurationPRE

In >= HHLimit, MinDurationACC >= MinDurationPRE

In >= LLLimit, MinDurationACC >= MinDurationPRE

In < (HLimit – Deadband)

In < (LLimit – Deadband)

In < (HHLimit – Deadband)

In < (LLLimit – Deadband)

RocPosInAlarm = falso RocPosInAlarm = vero

RocNegInAlarm = falso RocNegInAlarm = vero

RocPosAcked = vero

RocNegAcked = vero

ROC >= ROCPosLimit

ROC > ROCPosLimit

ROC >= -ROCNegLimit

ROC > -ROCNegLimit

Dove un nuovo campione viene raccolto nella scansione successiva, dopo che ROCPeriod è trascorso.

In(CurrentSample) – In(PreviousSample)

ROCPeriodROC =

In >= LLLimit, MinDurationACC >= MinDurationPRE

Errore minore: Tipo errore Codice errore

Overflow ROC 4 4

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Tutti i parametri xInAlarm vengono azzerati e tutte le condizioni di allarme vengono confermate.

Tutte le richieste operatore, le registrazioni cronologiche e gli indicatori di consegna vengono azzerati.

la condizione del ramo di ingresso è falsa

L’istruzione non viene eseguita.

EnableOut viene azzerato.

la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 55

Page 56: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Condizione Azione blocco funzione Azione testo strutturato

durante la prescansione Tutte le richieste operatore, le registrazioni cronologiche e gli indicatori di consegna vengono azzerati.

Tutti i parametri xInAlarm vengono azzerati e tutte le condizioni di allarme vengono confermate.

Tutte le richieste operatore, le registrazioni cronologiche e gli indicatori di consegna vengono azzerati.

Tutti i parametri xInAlarm vengono azzerati e tutte le condizioni di allarme vengono confermate.

prima scansione dell’istruzione

Nessuna. Nessuna.

durante la prima esecuzione dell’istruzione

Nessuna. Nessuna.

EnableIn viene azzerato L’istruzione non viene eseguita.

EnableOut viene azzerato.

L’istruzione viene eseguita.

EnableOut viene sempre impostato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

L’istruzione viene eseguita.

EnableOut viene sempre impostato.

post-scansione Nessuna. Nessuna.

56 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 57: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Condizione livello ALMA – Conferma di ricezione richiesta

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 57

Page 58: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Condizione livello ALMA – Conferma di ricezione non richiesta

58 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 59: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Tasso di variazione ALMA – Conferma di ricezione richiesta

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 59

Page 60: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Tasso di variazione ALMA – Conferma di ricezione non richiesta

Esempio: Viene attivato un allarme serbatoio se il livello del serbatoio supera un limite alto o un limite massimo. Confermare via programma la ricezione di tutte le condizioni di allarme con una transizione da azzerato a impostato del valore del tag Tank32LevelAck. La logica applicativa deve azzerare Tank32LevelAck.

Ladder

60 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 61: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Testo strutturato

ALMA(Tank32Level,Tank32LT,Tank32LevelAck,0, 0);

Blocco funzione

Configurazione di un’istruzione di allarme

Dopo avere immesso l’istruzione ALMD o ALMA e specificato il nome del tag di allarme, utilizzare la finestra di dialogo Alarm Configuration per specificare i dettagli del messaggio.

Fare clic qui per configurare l’istruzione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 61

Page 62: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

La finestra di dialogo Properties per l’istruzione di allarme comprende una scheda Configuration.

Per ogni istruzione di allarme, eseguire la configurazione.

Opzione Descrizione

Condition – ALMD instruction Condizione per attivare l’allarme.

Selezionare Input=1 per un allarme attivo quando In=1. Selezionare Input=0 per un allarme attivo quando In=0.

Input Level – ALMA instruction

Input Rate of Change – ALMA instruction

Livello dell’ingresso (massimo, alto, basso o minimo) o tasso di variazione dell’ingresso (positivo o negativo) per attivare l’allarme.

Selezionare le condizioni di allarme e immettere i limiti per tali condizioni. Disabilitare le condizioni del tasso di variazione immettendo 0 per il periodo o il limite.

Severity Selezionare un intervallo di gravità tra 1 e 1000 per indicare l’importanza della condizione di allarme. Una gravità pari a 1 si applica ad allarmi di bassa priorità, una gravità di 1000 indica una condizione di emergenza.

Per impostazione predefinita, nel sistema di allarmi ed eventi di FactoryTalk, gli intervalli di gravità sono mappati rispetto alle priorità nel modo seguente:

• 1...250 sono priorità basse.

• 251...500 sono priorità medie.

• 501...750 sono priorità alte.

• 751...1000 sono priorità urgenti.

È possibile configurare la mappatura gravità-priorità nel sistema di allarmi ed eventi FactoryTalk. Per informazioni dettagliati, consultare la guida di FactoryTalk.

Minimum Duration Immettere il periodo di tempo minimo in millisecondi per il quale una condizione deve essere attiva prima che sia generato un report dell’allarme.

Latched – ALMD instruction Selezionare Latched se si desidera che l’allarme resti attivo (InAlarm) dopo che la condizione di allarme torna inattiva (normale). Gli allarmi agganciati richiedono che un comando di azzeramento passi allo stato normale. Il comando di azzeramento deve essere ricevuto dopo che la condizione è tornata normale.

I comandi di conferma di ricezione non azzerano un allarme agganciato.

62 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 63: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

È possibile modificare tutti gli aspetti della configurazione dell’allarme offline e online. Le modifiche online degli allarmi nuovi ed esistenti vengono immediatamente inviate ai riceventi registrati di FactoryTalk (i terminali di pannelli operatori precedenti che stanno semplicemente

Deadband – ALMA instruction Specificare un valore di banda morta per ridurre il chattering della condizione di allarme causato da piccole fluttuazioni nel valore In.

Il valore della banda morta non influenza li limite di allarme per la transizione nello stato attivo, inoltre non è utilizzato durante l’intervallo di durata minima.

Una volta che una condizione del livello diventa attiva (InAlarm), rimane tale finché il valore In supera il limite della banda morta specificata. As esempio, se il limite alto è pari a 80, il limite basso è 20 e la banda morta è 5, la condizione alta sarà attiva a ≥ 80 e tornerà in condizione normale a ≤ 75; la condizione bassa sarà attiva a ≤ 20 e tornerà in condizione normale a ≥ ≤ 25.

La banda morta non ha alcun effetto sulle condizioni di allarme relative al tasso di variazione.

Acknowledgement Required Gli allarmi sono configurati per richiedere la conferma di ricezione per impostazione predefinita. La conferma di ricezione indica che un operatore è consapevole della condizione di allarme, a prescindere dal fatto che le condizioni siano tornate allo stato normale.

Azzerare l’impostazione Acknowledgement Required quando si desidera che l’allarme compaia e scompaia dal riepilogo degli allarmi sul pannello operatore, senza interazione dell’operatore.

Gli allarmi che non richiedono conferma di ricezione hanno sempre lo stato Acked impostato.

Se un allarme analogico è configurato come agganciato, anche il comando di azzeramento conferma la ricezione dell’allarme.

Alarm class Utilizzare la classe dell’allarme per raggruppare allarmi correlati. Specificare esattamente la classe dell’allarme per ciascun allarme che si desidera inserire nella stessa classe. La classe dell’allarme distingue tra caratteri maiuscoli e minuscoli.

Ad esempio, specificare Tank Farm A per raggruppare tutti gli allarmi serbatoio per un’area specifica. Oppure, specificare Control Loop per raggruppare tutti gli allarmi degli anelli PID.

Sarà quindi possibile visualizzare e filtrare gli allarmi sul pannello operatore in base alla classe a cui appartengono. Ad esempio, un operatore può visualizzare tutti gli allarmi serbatoio o degli anelli PID.

La classe dell’allarme non limita gli allarmi per cui un oggetto Alarm Summary si registra per la ricezione. Utilizzare la classe dell’allarme per filtrare gli allarmi visualizzati a un operatore una volta che sono stati ricevuti dall’oggetto Alarm Summary. Il software FactoryTalk View è in grado di filtrare la classe dell’allarme sostituendo i caratteri con caratteri jolly.

View command Consente di eseguire un comando sulla stazione dell’operatore quando viene richiesto da un operatore per un allarme specifico. Questo permette all’operatore di eseguire qualsiasi comando standard di FactoryTalk, ad esempio richiamare maschere e visualizzazioni specifiche, eseguire macro, accedere a file della guida e lanciare applicazioni esterne. Quando la condizione di allarme si verifica e viene visualizzata all’operatore, un pulsante nelle visualizzazioni del riepilogo e nell’indicatore consente all’operatore di eseguire un comando di visualizzazione associato.

Fare attenzione a immettere la sintassi del comando corretta e testare il comando in runtime poiché non viene eseguito alcun controllo per verificare la presenza di errori nel momento in cui il comando viene immesso.

Opzione Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 63

Page 64: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

interrogando i tag non vengono aggiornati automaticamente). I riceventi registrati di FactoryTalk non devono registrarsi nuovamente per ricevere gli aggiornamenti. Le modifiche online vengono inviate automaticamente dalla struttura di allarme del controllore al resto dell’architettura.

Immissione del testo di un messaggio di allarme

Immettere un testo appropriato per il messaggio da visualizzare quando è attiva una condizione di allarme (InAlarm). Per un’istruzione ALMD, immettere le informazioni sul messaggionella scheda Configuration. Per un’istruzione ALMA, immettere le informazioni sul messaggio nella scheda Message.

Per definire un messaggio di allarme, specificare queste informazioni.

Opzione Descrizione

Message La stringa del messaggio contiene le informazioni da visualizzare all’operatore in merito all’allarme. Oltre a immettere del testo, è anche possibile inserire delle variabili. Nell’editor del messaggio, selezionare la variabile desiderata e aggiungerla in qualsiasi punto della stringa del messaggio.

La stringa del messaggio può contenere un massimo di 255 caratteri, compresi i caratteri che specificano le variabili integrate (non il numero di caratteri nei valori effettivi delle variabili integrate). Ad esempio, /*S:0 %Tag1*/ specifica un tag di una stringa e aggiunge 13 caratteri alla lunghezza della stringa, ma il valore effettivo del tag della stringa potrebbe contenere 82 caratteri.

Non è possibile accedere via programma alla stringa del messaggio di allarme per il tag di allarme. Per modificare il messaggio di allarme in base a eventi specifici, configurare uno dei tag associati come tipo di dati stringa e integrare il tag associato nel messaggio.

È possibile avere più versioni dei messaggi in diverse lingue. La lingua diversa può essere immessa con l’utility di importazione/esportazione. Per ulteriori informazioni, consultare pagina 66.

64 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 65: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Variabili della stringa del messaggio

All’interno della stringa di un messaggio è possibile integrare le seguenti informazioni variabili.

Associated tags È possibile selezionare fino a quattro tag aggiuntivi dal progetto del controllore per associarli all’allarme. I valori di tali tag sono inviati con un messaggio di allarme al server degli allarmi. Ad esempio, un allarme digitale per una valvola regolatrice di pressione può anche comprendere informazioni come la velocità della pompa e la temperatura del serbatoio.

I tag associati possono essere tipi di dati di tipo elementare (BOOL, DINT, INT, SINT o REAL) o una stringa. Gli elementi possono essere in un UDT o in un array. Non sono consentiti riferimenti di array di variabili. Se l’allarme è nell’ambito del controllore, anche i tag associati devono essere nell’ambito del controllore.

Opzionalmente, integrare i tag associati nella stringa del testo del messaggio.

I valori dei tag associati sono sempre inviati con l’allarme, visibile dall’operatore, e immessi nel log cronologico, a prescindere dal fatto che siano integrati nella stringa del messaggio.

Opzione Descrizione

Variabile Integra nella stringa del messaggio Codice predefinito aggiunto alla stringa del messaggio

Alarm name Il nome dell’allarme, composto da nome del controllore, nome del programma e nome del tag. Ad esempio, [Zone1Controller]Program:Main.MyAlarmTagName.

/*S:0 %AlarmName*/

Condition name La condizione che attiva l’allarme:

• l’allarme digitale visualizza l’intervento

• l’allarme analogico visualizza HiHi, Hi, Lo, LoLo, ROC_POS o ROC_NEG.

/*S:0 %ConditionName*/

Input value Il valore di ingresso nell’allarme:

• l’allarme digitale visualizza 0 o 1

• l’allarme analogico visualizza il valore della variabile di ingresso monitorata dall’allarme.

/*N:5 %InputValue NOFILL DP:0*/

Limit value La soglia dell’allarme:

• l’allarme digitale visualizza 0 o 1

• l’allarme analogico visualizza il controllo dell’intervallo effettivamente configurato per la condizione dell’allarme analogico.

/*N:5 %LimitValue NOFILL DP:0*/

Severity La gravità configurata della condizione di allarme. /*N:5 %Severity NOFILL DP:0*/

Values of associated tags Il valore di un tag configurato da includere nell’evento allarme.

/*N:5 %Tag1 NOFILL DP:0*/

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 65

Page 66: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Il codice dipende dal tipo di tag selezionato, dal numero di cifre o caratteri contenuti nel valore di un tag e dal fatto che si desideri riempire a sinistra i bit vuoti con spazi o zeri. Ad esempio:

Tutte queste informazioni variabili sono comprese nei dati dell’allarme, visibili dall’operatore, e immesse nel registro cronologico, a prescindere dal fatto che siano integrate nel testo del messaggio.

Versioni in più lingue dei messaggi di allarme

È possibile mantenere i messaggi di allarme in più lingue. Immettere le diverse lingue nelle versioni in lingua associate del software di programmazione RSLogix 5000 o in un file di importazione/esportazione (.CSV o .TXT).

È possibile accedere al testo dei messaggi di allarme da un file di importazione/esportazione (.CSV o .TXT). e aggiungere righe ulteriori per le versioni tradotte della stringa di messaggio originale. I messaggi in più lingue usano i codici linguistici ISO nella colonna TYPE. Il testo del messaggio di allarme, compresi i codici delle variabili integrate, per l’operatore si trova nella colonna DESCRIPTION. SPECIFIER identifica la condizione di allarme.

Usare l’utility di importazione/esportazione per creare e tradurre stringhe di messaggi in più lingue. Il formato di importazione/esportazione .TXT supporta i caratteri a doppio byte, pertanto è possibile utilizzare questo formato per tutte le lingue, comprese

Tag Codice

Valore BOOL /*N:1 %Tag1 NOFILL DP:0*/

Valore DINT, 9 cifre, riempimento a sinistra con spazi /*N:9 %Tag2 SPACEFILL DP:0*/

Valore di ingresso REAL, 9 cifre (compreso il decimale), 3 cifre decimali, riempimento a sinistra con zeri

/*N:9 %InputValue NOFILL DP:3*/

Valore REAL, 8 cifre (compreso il decimale), 4 cifre decimali, riempimento a sinistra con zeri

/*N:8 %Tag3 ZEROFILL DP:4*/

Valore stringa, nessuna larghezza fissa /*S:0 %Tag4*/

Valore stringa, 26 caratteri, larghezza fissa /*S:26 %Tag4*/

66 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 67: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

cinese, giapponese e coreano. Il formato di importazione/esportazione .CSV non supporta i caratteri a doppio byte.

L’importazione ed esportazione di messaggi esegue sempre un’unione. Se si cancella un messaggio in un file .CSV o .TXT, il messaggio non viene cancellato dal file .ACD. Per cancellare un messaggio, importare il file .CSV o .TXT con i campi Type, Name e Specifier compilati ma senza alcuna descrizione.

Monitoraggio dello stato degli allarmi

Nella scheda Status della finestra di dialogo dell’allarme, è possibile monitorare la condizione di allarme, confermare la ricezione di un allarme, disabilitare, sopprimere o azzerare un allarme. Usare le selezioni della finestra di dialogo per vedere come si comporta un allarme, senza che occorra un pannello operatore operativo.

Bufferizzazione degli allarmi

Per ricevere messaggi di allarme basati sul controllore, i client degli allarmi (come un server RSLinx Enterprise) devono registrarsi come riceventi degli allarmi nel controllore Logix. Il controllore mantiene una connessione con ciascun ricevente registrato e monitora lo stato di tale connessione.

Quando si verifica un cambiamento dello stato di un allarme, le istruzioni di allarme nel controllore mettono in cache le informazioni necessarie (come le registrazioni cronologiche e i valori dei tag associati) e richiedono la trasmissione di un messaggio di allarme a tutti i riceventi registrati. Il meccanismo di pubblicazione invia i messaggi di allarme a ogni ricevente registrato il prima possibile.

Se un ricevente registrato non conferma la ricezione del messaggio di allarme o se la connessione a un ricevente registrato non funziona, il

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 67

Page 68: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

meccanismo di pubblicazione memorizza i messaggi di allarme non consegnati in un buffer di 100 KB. Ogni ricevente registrato ha il proprio buffer, quindi eventuali problemi di comunicazione con un ricevente registrato non interferiscono con l’invio ad altri riceventi. Quando il buffer è pieno, i messaggi di allarme più recenti vengono ignorati. Il buffer viene creato quando il ricevente registrato stabilisce una connessione iniziale, mantenuta per un periodo di tempo configurabile (da 0 a 120 minuti, l’impostazione predefinita è 20 minuti) dopo che il ricevente registrato perde la connessione.

Quando il ricevente registrato stabilisce nuovamente una connessione nell’intervallo di timeout del buffer, riceve lo stato corrente di tutti gli allarmi, inizia a ricevere i messaggi di allarme correnti e carica eventuali messaggi bufferizzati accumulati. Anche nel caso in cui il buffer fosse pieno e siano stati ignorati dei messaggi, il ricevente registrato sincronizza accuratamente lo stato corrente degli allarmi (comprese le registrazioni cronologiche più recenti InAlarmTime, RetToNormalTime e AckTime).

Il buffer continua finché è pieno. Una volta riempito, il buffer smette di aggiungere transizioni di allarme finché il ricevente registrato non libera dello spazio del buffer.

Accesso via programma alle informazioni di allarme

Ogni istruzione di allarme ha una struttura di allarme che memorizza le informazioni su configurazione ed esecuzione dell’allarme. La struttura dell’allarme comprende elementi di controllo sia del programma sia dell’operatore. Le istruzioni di allarme non usano le impostazioni di modalità per determinare se è attivo l’accesso programma o l’accesso operatore, pertanto tali elementi sono sempre attivi.

Esistono tre modi per eseguire le azioni su un’istruzione di allarme.

Accesso Elementi della struttura di allarme

Considerazioni

Programma utente • ProgAck

• ProgReset

• ProgSuppress

• ProgDisable

• ProgEnable

Usare la logica del controllore per accedere via programma agli elementi del sistema di allarme. Ad esempio, il programma di controllo può determinare se disabilitare una serie di allarmi correlati a un’unica causa radice. Il programma di controllo potrebbe, ad esempio, disabilitare un’istruzione di allarme (MyDigitalAlarm del tipo di dati ALARM_DIGITAL) accedendo al membro del tag MyDigitalAlarm.ProgDisable.

68 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 69: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Quando si crea un’istruzione di allarme, occorre creare e assegnare un tag del tipo di dati corretto per quell’allarme. Ad esempio, creare MyDigitalAlarm con il tipo di dati ALARM_DIGITAL. Nella logica ladder questi parametri di istruzione devono essere immessi nell’istruzione:

• ProgAck

• ProgReset

• ProgDisable

• ProgEnable

In logica ladder e in testo strutturato, il valore o il tag assegnato a un parametro di istruzione (come ProgAck) viene automaticamente scritto nel membro del tag di allarme (come MyAnalogAlarm.ProgAck) ogni volta che l’istruzione viene scansionata.

In logica ladder e in testo strutturato, se si desidera accedere programmaticamente alla struttura di allarme, assegnare il tag di struttura al parametro nell’istruzione. Ad esempio, per usare MyAnalogAlarm.ProgAck nella logica, assegnare il tag MyAnalogAlarm.ProgAck al parametro ProgAck.

Pannello operatore personalizzato

• OperAck

• OperReset

• OperSuppress

• OperDisable

• OperEnable

Creare una maschera del pannello operatore per accedere agli elementi del sistema di allarme. Ad esempio, se l’operatore deve rimuovere uno strumento, invece di disabilitare o sopprimere manualmente e singolarmente gli allarmi nella schermata degli allarmi, l’operatore può premere un tasto di disabilitazione che accede al tag MyDigitalAlarm.OperDisable.

I parametri operatore funzionano con qualsiasi interfaccia di Rockwell Automation o di terze parti per consentire il controllo degli stati di allarme.

Quando un parametro operatore è impostato, l’istruzione valuta se è in grado di rispondere alla richiesta, quindi azzera sempre il parametro.

Oggetto pannello operatore standard

Non accessibile La normale interazione con l’operatore avviene attraverso il riepilogo degli allarmi, l’indicatore di allarme e il navigatore degli stati di allarme nell’applicazione FactoryTalk View. Questa interazione è simile all’opzione di pannello operatore sopra descritta, ma non vi è alcuna visibilità o interazione programmatica.

Accesso Elementi della struttura di allarme

Considerazioni

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 69

Page 70: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Soppressione o disabilitazione degli allarmi

Sopprimere gli allarmi per rimuovere dal pannello operatore gli allarmi di cui si conosce l’esistenza, pur mantenendoli. Questo consente di svuotare il riepilogo allarmi mentre si sta risolvendo un allarme noto senza continuare a vedere le informazioni sugli allarmi. Un allarme soppresso non compare nel riepilogo allarmi dell’operatore o nelle schermate degli indicatori, ma continua a essere inviato ai riceventi registrati, registrato nel database storico, è ancora in grado di cambiare stato di allarme, riceve una registrazione cronologica e reagisce ad altre interazioni programmatiche o con l’operatore.

• Quando un allarme è soppresso continua a funzionare normalmente, monitorare il parametro In per informazioni sulle condizioni di allarme e a rispondere alle richieste di conferma. Tutti i riceventi registrati vengono informati di questo evento ed eventuali messaggi di allarme generati mentre l’allarme è in stato soppresso comprendono lo stato soppresso. I client degli allarmi possono rispondere in modo diverso agli allarmi soppressi. Ad esempio, gli allarmi soppressi possono essere registrati nel database storico ma non annunciati all’operatore.

• Quando la soppressione di un allarme viene eliminata, ne vengono notificati tutti i riceventi registrati e i messaggi che vengono loro inviati non contengono più lo stato soppresso.

Disabilitare un allarme per trattare l’allarme come se non esistesse nel programma di controllo. Un allarme disabilitato non cambia stato di allarme né viene registrato nel database storico. Viene comunque tenuta traccia di un allarme disabilitato, che può essere nuovamente abilitato in Alarm Status Explorer nel software FactoryTalk View SE.

• Quando un allarme è disabilitato, tutte le condizioni sono impostate nello stato iniziale (InAlarm è azzerato e Acked è impostato). Il parametro In non è monitorato per quanto riguarda le condizioni di allarme. Tutti i riceventi registrati vengono notificati di questo evento.

• Quando un allarme è abilitato inizia a monitorare il parametro In per verificare eventuali condizioni di allarme. Tutti i riceventi registrati vengono notificati di questo evento.

70 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 71: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Esecuzione degli allarmi del controllore

Gli allarmi del controllore elaborano gli ingressi da due sorgenti.

Prestare attenzione quando si decide dove inserire le istruzioni di allarme nell’applicazione. La precisione delle registrazioni cronologiche dipende dalla velocità con cui l’istruzione viene scansionata dopo che la condizione di allarme cambia stato. L’accumulo di tempo MinDuration e i calcoli del tasso di variazione richiedono scansioni ripetute entro intervalli temporali definiti dall’applicazione dell’utente. Le istruzioni di allarme devono continuare a essere scansionate dopo che la condizione di allarme diventa falsa, in modo che possa essere rilevata la transizione ReturnToNormal. Ad esempio, se si desidera una precisione di 10 ms sulle registrazioni cronologiche, è possibile inserire le istruzioni di allarme che hanno bisogno di quella risoluzione in un task periodico di 10 ms.

Sorgente Descrizione

Membri del tag di allarme I membri del tag di allarme sono elaborati, per la maggior parte, quando l’applicazione utente scansiona l’istruzione di allarme. Questo comprende:

• elaborazione delle modifiche ai parametri di configurazione.

• valutazione della condizione di allarme.

• misurazione del tempo trascorso per MinDuration.

• rilevamento delle registrazioni cronologiche InAlarmTime e RetToNormalTime.

• rilevamento dei valori di tag associati.

• elaborazione dei comandi Prog e Oper.

Inoltre, questi membri di stato del tag di allarme vengono aggiornati man mano che i messaggi di allarme vengono consegnati a ciascun ricevente registrato, in modo asincrono rispetto alla scansione del programma:

• DeliveryEN, DeliveryER, DeliveryDN

• NoSubscriber, NoConnection, CommError, AlarmBuffered, SubscNotified

Messaggi client I messaggi del client vengono elaborati man mano che vengono ricevuti, in modo asincrono rispetto alla scansione del programma.

• Comandi Reset, Acknowledge, Disable/Enablee Suppress/Unsuppress da un terminale RSLogix 5000.

• Comandi Reset, Acknowledge, Disable/Enable e Suppress/Unsuppress da un ricevente registrato di allarmi FactoryTalk View SE

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 71

Page 72: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Utilizzo della memoria del controllore

Come linea guida, usare le seguenti dimensioni degli allarmi per calcolare grossolanamente l’utilizzo della memoria del controllore:

• tipicamente 1 KB per allarme digitale senza tag associati

• tipicamente 2.2 KB per allarme analogico senza tag associati

Esempio di allarme digitale Dimensione approssimativa

Allarme digitale senza tag associati e questa configurazione:

• Messaggio di allarme: Contactor Fault

• Classe allarme: Tank Farm A

1012 byte

Allarme digitale con due tag associati e questa configurazione:

• Messaggio di allarme: Contactor Fault

• Classe allarme: Tank Farm A

• Tag associato 1 = tipo di dati DINT

• Tag associato 2 = tipo di dati DINT

1100 byte

Allarme digitale con due tag associati e questa configurazione:

• Messaggio di allarme: Contactor Fault

• Classe allarme: Tank Farm A

• Tag associato 1 = tipo di dati DINT

• Tag associato 2 = tipo di dati STRING

1522 byte

Esempio di allarme analogico Dimensione approssimativa

Allarme analogico senza tag associati e questa configurazione:

• Messaggio di allarme massimo: Level Alarm

• Messaggio di allarme alto: Level Alarm

• Messaggio di allarme basso: Level Alarm

• Messaggio di allarme minimo: Level Alarm

• Messaggio tasso di variazione positivo: Fill Too Fast

• Messaggio tasso di variazione negativo: Empty Too Fast

• Classe allarme: Tank Farm A

2228 byte

Allarme analogico con due tag associati e questa configurazione:

• Messaggio di allarme massimo: Level Alarm

• Messaggio di allarme alto: Level Alarm

• Messaggio di allarme basso: Level Alarm

• Messaggio di allarme minimo: Level Alarm

• Messaggio tasso di variazione positivo: Fill Too Fast

• Messaggio tasso di variazione negativo: Empty Too Fast

• Classe allarme: Tank Farm A

• Tag associato 1 = tipo di dati DINT

• Tag associato 2 = tipo di dati DINT

2604 byte

72 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 73: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA) Capitolo 1

Stringhe di messaggio più lunghe, così come stringhe di messaggio in più lingue, consumano ulteriore memoria del controllore.

L’effettivo utilizzo della memoria dipende dal modo in cui l’allarme è configurato, dalla lunghezza del messaggio e da eventuali tag associati passati con l’allarme.

Tempo di scansione

Questi tempi d’esecuzione mostrano in che modo le istruzioni ALMD e ALMA incidono sul tempo di scansione totale.

Un cambiamento di stato dell’allarme è un evento che cambia la condizione dell’allarme, ad esempio la conferma di ricezione o la soppressione dell’allarme. Ridurre al minimo il potenziale di cambiamento di stato contemporaneo di molti allarmi creando dipendenze tra gli allarmi correlati. Cambiamenti contemporanei eccessivi possono incidere significativamente sul tempo di scansione del codice dell’applicazione.

Allarme analogico con due tag associati e questa configurazione:

• Messaggio di allarme massimo: Level Alarm

• Messaggio di allarme alto: Level Alarm

• Messaggio di allarme basso: Level Alarm

• Messaggio di allarme minimo: Level Alarm

• Messaggio tasso di variazione positivo: Fill Too Fast

• Messaggio tasso di variazione negativo: Empty Too Fast

• Classe allarme: Tank Farm A

• Tag associato 1 = tipo di dati DINT

• Tag associato 2 = tipo di dati STRING

4536 byte

Esempio di allarme analogico Dimensione approssimativa

Stato del ramo Tempo d’esecuzione

Digital Alarm (ALMD) Analog Alarm (ALMA)

Nessun cambiamento dello stato dell’allarme

Ramo falso 8 μs 17 μs

Ramo vero 8 μs 60 μs

Cambiamento dello stato dell’allarme

Ramo falso 35 μs 17 μs

Ramo vero 35 μs 126 μs

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 73

Page 74: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 1 Istruzioni di allarmi ed eventi FactoryTalk basati su Logix (ALMD, ALMA)

Note:

74 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 75: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2

Istruzioni di bit(XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Introduzione Usare le istruzioni di bit (tipo relè) per monitorare e controllare lo stato dei bit.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

abilitare le uscite quando un bit viene impostato

XIC ladder

testo strutturato(1)

76

abilitare le uscite quando un bit viene azzerato XIO ladder

testo strutturato(1)

78

impostare un bit OTE ladder

testo strutturato(1)

80

impostare un bit (ritentivo) OTL ladder

testo strutturato(1)

82

azzerare un bit (ritentivo) OTU ladder

testo strutturato(1)

84

abilitare le uscite per una scansione ogni volta che un ramo diventa vero

ONS ladder

testo strutturato(1)

86

impostare un bit per una scansione ogni volta che un ramo diventa vero

OSR ladder 89

impostare un bit per una scansione ogni volta che un ramo diventa falso

OSF ladder 92

impostare un bit per una scansione ogni volta che il bit di ingresso viene impostato nel blocco funzione

OSRI testo strutturatoblocco funzione

94

impostare un bit per una scansione ogni volta che il bit di ingresso viene azzerato nel blocco funzione

OSFI testo strutturatoblocco funzione

97

(1) Non esiste un’istruzione equivalente in testo strutturato. Utilizzare un altro tipo di programmazione in testo strutturato per ottenere lo stesso risultato. Vedere la descrizione dell’istruzione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 75

Page 76: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Examine If Closed (XIC) L’istruzione XIC esamina il bit di dati per verificare se è impostato.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non ha un’istruzione XIC, ma è possibile ottenere gli stessi risultati usando un costrutto IF...THEN.

IF bit_dati THEN

<istruzione>;

END_IF;

Consultare l’Appendice B, Attributi di un blocco funzione per informazioni sulla sintassi dei costrutti nel testo strutturato.

Descrizione: L’istruzione XIC esamina il bit di dati per verificare se è impostato.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio 1: Se limit_switch_1 è impostato, viene abilitata l’istruzione successiva (la condizione del ramo di uscita è vera).

Operando Tipo Formato Descrizione

bit di dati BOOL tag bit da testare

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

esamina bit datibit dati = 0

bit dati = 1

La condizione del ramo di uscita viene impostata su falso.

La condizione del ramo di uscita viene impostata su vero.

se la condizione del ramo di ingresso è vera

fine

76 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 77: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

Ladder

Testo strutturato

IF limit_switch THEN

<istruzione>;

END_IF;

Esempio 2: Se S:V è impostato (a indicare che si è verificato un overflow), viene abilitata l’istruzione successiva (la condizione del ramo di uscita è vera).

Ladder

Testo strutturato

IF S:V THEN

<istruzione>;

END_IF;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 77

Page 78: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Examine If Open (XIO) L’istruzione XIO esamina il bit di dati per verificare se è azzerato.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non ha un’istruzione XIO, ma è possibile ottenere gli stessi risultati usando un costrutto IF...THEN.

IF NOT bit_dati THEN

<istruzione>;

END_IF;

Consultare l’Appendice B, Attributi di un blocco funzione per informazioni sulla sintassi dei costrutti nel testo strutturato.

Descrizione: L’istruzione XIO esamina il bit di dati per verificare se è azzerato.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Operando Tipo Formato Descrizione

bit di dati BOOL tag bit da testare

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

esamina bit datibit dati = 0

bit dati = 1

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

78 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 79: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

Esempio 1: Se limit_switch_2 è azzerato, viene abilitata l’istruzione successiva (la condizione del ramo di uscita è vera).

Ladder

Testo strutturato

IF NOT limit_switch_2 THEN

<istruzione>;

END_IF;

Esempio 2: Se S:V è azzerato (a indicare che non si è verificato alcun overflow), viene abilitata l’istruzione successiva (la condizione del ramo di uscita è vera).

Ladder

Testo strutturato

IF NOT S:V THEN

<istruzione>;

END_IF;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 79

Page 80: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Output Energize (OTE) L’istruzione OTE imposta o azzera il bit di dati.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non ha un’istruzione OTE, ma è possibile ottenere gli stessi risultati usando un’assegnazione non ritentiva.

bit_dati [:=] espressione_booleana;

Consultare l’Appendice B, Attributi di un blocco funzione per informazioni sulla sintassi di assegnazioni ed espressioni nel testo strutturato.

Descrizione: Quando l’istruzione OTE è abilitata, il controllore imposta il bit di dati. Quando l’istruzione OTE è disabilitata, il controllore azzera il bit di dati.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Operando Tipo Formato Descrizione

bit di dati BOOL tag bit da impostare o azzerare

Condizione Azione ladder

durante la prescansione Il bit di dati viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit di dati viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il bit di dati viene impostato.

La condizione del ramo di uscita viene impostata su vero.

post-scansione Il bit di dati viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

80 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 81: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

Esempio: Quando switch è impostato, l’istruzione OTE imposta (accende) light_1. Quando switch è azzerato, l’istruzione OTE azzera (spegne) light_1.

Ladder

Testo strutturato

light_1 [:=] switch;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 81

Page 82: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Output Latch (OTL) L’istruzione OTL imposta (aggancia) il bit di dati.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non ha un’istruzione OTL, ma è possibile ottenere gli stessi risultati usando un costrutto IF...THEN e un’assegnazione.

IF espressione_booleana THEN

bit_dati := 1;

END_IF;

Consultare l’Appendice B, Attributi di un blocco funzione per informazioni sulla sintassi di costrutti, espressioni e assegnazioni nel testo strutturato.

Descrizione: Quando è abilitata, l’istruzione OTL imposta il bit di dati. Il bit di dati rimane impostato finché non viene azzerato, di norma da un’istruzione OTU. Quando è disabilitata, l’istruzione OTL non modifica lo stato del bit di dati.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Operando Tipo Formato Descrizione

bit di dati BOOL tag bit da impostare

Condizione Azione ladder

durante la prescansione Il bit di dati non viene modificato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit di dati non viene modificato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il bit di dati viene impostato.

La condizione del ramo di uscita viene impostata su vero.

post-scansione Il bit di dati non viene modificato.

La condizione del ramo di uscita viene impostata su falso.

82 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 83: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

Esempio: Quando è abilitata, l’istruzione OTL imposta light_2. Il bit di dati rimane impostato finché non viene azzerato, di norma da un’istruzione OTU.

Ladder

Testo strutturato

IF espressione_booleana THEN

light_2 := 1;

END_IF;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 83

Page 84: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Output Unlatch (OTU) L’istruzione OTU azzera (sgancia) il bit di dati.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non ha un’istruzione OTU, ma è possibile ottenere gli stessi risultati usando un costrutto IF...THEN e un’assegnazione.

IF espressione_booleana THEN

bit_dati := 0;

END_IF;

Consultare l’Appendice B, Attributi di un blocco funzione per informazioni sulla sintassi di costrutti, espressioni e assegnazioni nel testo strutturato.

Descrizione: Quando è abilitata, l’istruzione OTU azzera il bit di dati. Quando è disabilitata, l’istruzione OTU non modifica lo stato del bit di dati.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Operando Tipo Formato Descrizione

bit di dati BOOL tag bit da azzerare

Condizione Azione ladder

durante la prescansione Il bit di dati non viene modificato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit di dati non viene modificato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il bit di dati viene azzerato.

La condizione del ramo di uscita viene impostata su vero.

post-scansione Il bit di dati non viene modificato.

La condizione del ramo di uscita viene impostata su falso.

84 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 85: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

Esempio: Quando è abilitata, l’istruzione OTU azzera light_2.

Ladder

Testo strutturato

IF espressione_booleana THEN

light_2 := 0;

END_IF;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 85

Page 86: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

One Shot (ONS) L’istruzione ONS abilita o disabilita il resto del ramo, a seconda dello stato del bit di memoria.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non ha un’istruzione ONS, ma è possibile ottenere gli stessi risultati usando un costrutto IF...THEN.

IF espressione_booleana AND NOT bit_memoria THEN

<istruzione>;

END_IF;

bit_memoria := espressione_booleana;

Consultare l’Appendice B, Attributi di un blocco funzione per informazioni sulla sintassi di costrutti, espressioni e assegnazioni nel testo strutturato.

Descrizione: Quando è abilitata e il bit di memoria è azzerato, l’istruzione ONS abilita il resto del ramo. Quando è disabilitata o il bit di memoria è impostato, l’istruzione ONS disabilita il resto del ramo.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

bit di memoria

BOOL tag bit di memoria interna

memorizza la condizione del ramo di ingresso dell’ultima esecuzione dell’istruzione

86 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 87: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

Esecuzione:

Esempio: Di norma, si fa precedere l’istruzione ONS da un’istruzione di ingresso, dato che per un corretto funzionamento la scansione dell’istruzione ONS viene eseguita quando l’istruzione è abilitata e quando è disabilitata. Una volta che l’istruzione ONS è abilitata, la condizione del ramo di ingresso deve essere azzerata, oppure è necessario azzerare il bit di memoria per far sì che l’istruzione ONS venga abilitata di nuovo.

Condizione Azione ladder

durante la prescansione Il bit di memoria viene impostato per evitare un trigger non valido durante la prima scansione.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit di memoria viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

post-scansione Il bit di memoria viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

esamina bit di memoria

bit di memoria = 0

bit di memoria = 1

il bit di memoria viene impostato

La condizione del ramo di uscita viene impostata su vero.

il bit di memoria rimane impostato

La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 87

Page 88: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

In qualunque scansione per la quale limit_switch_1 viene azzerato o storage_1 viene impostato, questo ramo non ha alcun effetto. In qualunque scansione per la quale limit_switch_1 viene impostato e storage_1 é azzerato, l’istruzione ONS imposta storage_1 e l’istruzione ADD aumenta sum di 1. Finché limit_switch_1 rimane impostato, sum conserva lo stesso valore. limit_switch_1 deve passare di nuovo da azzerato a impostato per far sì che sum torni ad essere aumentato.

Ladder

Testo strutturato

IF limit_switch_1 AND NOT storage_1 THEN

sum := sum + 1;

END_IF;

storage_1 := limit_switch_1;

88 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 89: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

One Shot Rising (OSR) L’istruzione OSR imposta o azzera il bit di uscita, a seconda dello stato del bit di memoria.

L’istruzione è disponibile in testo strutturato e blocco funzione comeOSRI, vedere pagina 94.

Operandi:

Ladder

Descrizione: Quando è abilitata e il bit di memoria è azzerato, l’istruzione OSR imposta il bit di uscita. Quando è abilitata e il bit di memoria è impostato o quando è disabilitata, l’istruzione OSR azzera il bit di uscita

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Operando Tipo Formato Descrizione

bit di memoria

BOOL tag bit di memoria interna

memorizza la condizione del ramo di ingresso dell’ultima esecuzione dell’istruzione

bit di uscita BOOL tag bit da impostare

condizione ramo di ingresso

bit di memoria

Bit di uscita

l’istruzione vieneeseguita

l’istruzione viene reimpostata durante la scansione successiva

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 89

Page 90: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Condizione Azione ladder

durante la prescansione Il bit di memoria viene impostato per evitare un trigger non valido durante la prima scansione.

Il bit di uscita viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit di memoria viene azzerato.

Il bit di uscita non viene modificato.

La condizione del ramo di uscita viene impostata su falso.

post-scansione Il bit di memoria viene azzerato.

Il bit di uscita non viene modificato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

esamina bit di memoria

bit di memoria = 0

bit di memoria = 1

Il bit di memoria viene impostato.

La condizione del ramo di uscita viene impostata su vero.

Il bit di memoria rimane impostato.

Il bit di uscita viene azzerato. La condizione del ramo di uscita viene impostata su vero.

90 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 91: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

Esempio: Ogni volta che limit_switch_1 passa da azzerato a impostato, l’istruzione OSR imposta output_bit_1 e l’istruzione ADD aumenta sum di 5. Finché limit_switch_1 rimane impostato, sum conserva lo stesso valore. limit_switch_1 deve passare di nuovo da azzerato a impostato per far sì che sum torni ad essere aumentato. È possibile utilizzare output_bit_1 su più rami per attivare altre operazioni

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 91

Page 92: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

One Shot Falling (OSF) L’istruzione OSF imposta o azzera il bit di uscita a seconda dello stato del bit di memoria.

L’istruzione è disponibile in testo strutturato e blocco funzione come OSFI, vedere pagina 97.

Operandi:

Operandi ladder

Descrizione: Quando è disabilitata e il bit di memoria è impostato, l’istruzione OSF imposta il bit di uscita. Quando è disabilitata e il bit di memoria è azzerato o quando è abilitata, l’istruzione OSF azzera il bit di uscita.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

bit di memoria

BOOL tag bit di memoria interna

memorizza la condizione del ramo di ingresso dell’ultima esecuzione dell’istruzione

Bit di uscita BOOL tag bit da impostare

condizione ramo di ingresso

bit di memoria

bit di uscita

l’istruzione vieneeseguita

l’istruzione viene reimpostata durante la scansione successiva

92 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 93: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

Esecuzione:

Esempio: Ogni volta che limit_switch_1 passa da impostato ad azzerato, l’istruzione OSF imposta output_bit_2 e l’istruzione ADD aumenta sum di 5. Finché limit_switch_1 rimane azzerato, sum conserva lo stesso valore. limit_switch_1 deve passare di nuovo da impostato ad azzerato per far sì che sum torni ad essere aumentato. È possibile utilizzare output_bit_2 su più rami per attivare altre operazioni

Condizione Azione ladder

durante la prescansione Il bit di memoria viene azzerato per evitare un trigger non valido durante la prima scansione.

Il bit di uscita viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il bit di memoria viene impostato.

Il bit di uscita viene azzerato.

La condizione del ramo di uscita viene impostata su vero.

post-scansione Vedere sopra, “Se la condizione del ramo di ingresso è falsa”.

se la condizione del ramo di ingresso è falsa

fine

esamina bit di memoria

bit di memoria = 0

bit di memoria = 1

Il bit di memoria rimane azzerato.

Il bit di uscita viene azzerato. La condizione del ramo di uscita viene impostata su falso.

Il bit di memoria viene azzerato.

Il bit di uscita viene impostato. La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 93

Page 94: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

One Shot Rising with Input (OSRI)

L’istruzione OSRI imposta il bit di uscita per un ciclo di esecuzione quando il bit di ingresso passa da azzerato a impostato.

Questa istruzione è disponibile in ladder come OSR, vedere pagina 89.

Operandi:

Testo strutturato

Blocco funzione

Struttura FBD_ONESHOT

Operando Tipo Formato Descrizione

tag OSRI FBD_ONESHOT struttura struttura OSRI

Operando Tipo Formato Descrizione

tag OSRI FBD_ONESHOT struttura struttura OSRI

OSRI(OSRI_tag);

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Blocco funzione:

Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se è impostato, l’istruzione viene eseguita.

Il valore di default è impostato.

Testo strutturato:

Nessun effetto. L’istruzione viene eseguita.

InputBit BOOL Bit di ingresso. Equivale alla condizione del ramo dell’istruzione ladder OSR.

Il valore di default è azzerato.

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

OutputBit BOOL Bit di uscita

94 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 95: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

Descrizione: Quando InputBit è impostato e InputBitn-1 è azzerato, l’istruzione

OSRI imposta OutputBit. Quando InputBitn-1 è impostato o quando

InputBit è azzerato, l’istruzione OSRI azzera OutputBit.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

InputBit

OutputBit

40048l’istruzione viene

eseguital’istruzione viene reimpostata durante la scansione successiva

InputBitn-1

Condizione Azione blocco funzione Azione testo strutturato

durante la prescansione Nessuna. Nessuna.

prima scansione dell’istruzione

InputBitn-1 viene impostato. InputBitn-1 viene impostato.

durante la prima esecuzione dell’istruzione

InputBitn-1 viene impostato. InputBitn-1 viene impostato.

EnableIn viene azzerato EnableOut viene azzerato, l’istruzione non esegue alcuna azione e le uscite non vengono aggiornate.

na

EnableIn viene impostato Nella transizione da azzerato a impostato di InputBit, l’istruzione imposta InputBitn-1.

L’istruzione viene eseguita.

EnableOut viene impostato.

Nella transizione da azzerato a impostato di InputBit, l’istruzione imposta InputBitn-1.

EnableIn viene sempre impostato.

L’istruzione viene eseguita.

post-scansione Nessuna. Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 95

Page 96: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Esempio: Quando limit_switch1 passa da azzerato a impostato, l’istruzione OSRI imposta OutputBit per una scansione.

Testo strutturato

OSRI_01.InputBit := limit_switch1;

OSRI(OSRI_01);

state := OSRI_01.OutputBit;

Blocco funzione

96 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 97: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

One Shot Falling with Input (OSFI)

L’istruzione OSFI imposta OutputBit per un ciclo di esecuzione quando InputBit passa da impostato ad azzerato.

Questa istruzione è disponibile in ladder come OSF, vedere pagina 92.

Operandi:

Testo strutturato

Blocco funzione

Struttura FBD_ONESHOT

Operando Tipo Formato Descrizione

tag OSFI FBD_ONESHOT struttura struttura OSFI

Operando Tipo Formato Descrizione

tag OSFI FBD_ONESHOT struttura struttura OSFI

OSFI(OSFI_tag);

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Blocco funzione:

Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se è impostato, l’istruzione viene eseguita.

Il valore di default è impostato.

Testo strutturato:

Nessun effetto. L’istruzione viene eseguita.

InputBit BOOL Bit di ingresso. Equivale alla condizione del ramo dell’istruzione ladder OSF

Il valore di default è azzerato.

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

OutputBit BOOL Bit di uscita

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 97

Page 98: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Descrizione: Quando InputBit è azzerato e InputBitn-1 è impostato, l’istruzione

OSFI imposta OutputBit. Quando InputBitn-1 è azzerato o quando

InputBit è impostato, l’istruzione OSFI azzera OutputBit.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

InputBit

OutputBit

l’istruzione vieneeseguita

l’istruzione viene reimpostata durante la scansione successiva

InputBit n-1

40047

Condizione Azione blocco funzione Azione testo strutturato

durante la prescansione Nessuna. Nessuna.

prima scansione dell’istruzione

InputBitn-1 viene azzerato. InputBitn-1 viene azzerato.

durante la prima esecuzione dell’istruzione

InputBitn-1 viene azzerato. InputBitn-1 viene azzerato.

EnableIn é azzerato EnableOut viene azzerato, l’istruzione non esegue alcuna azione e le uscite non vengono aggiornate.

na

EnableIn é impostato Nella transizione da azzerato a impostato di InputBit, l’istruzione azzera InputBitn-1.

L’istruzione viene eseguita.

EnableOut viene impostato.

Nella transizione da azzerato a impostato di InputBit, l’istruzione azzera InputBitn-1.

EnableIn viene sempre impostato.

L’istruzione viene eseguita.

post-scansione Nessuna. Nessuna.

98 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 99: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capitolo 2

Esempio: Quando limit_switch1 passa da impostato ad azzerato, l’istruzione OSFI imposta OutputBit per una scansione.

Testo strutturato

OSFI_01.InputBit := limit_switch1;

OSFI(OSFI_01);

Output_state := OSFI_01.OutputBit;

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 99

Page 100: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 2 Istruzioni di bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Note:

100 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 101: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3

Istruzioni di timer e contatori(TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Introduzione I timer e i contatori controllano le operazioni in base al tempo o al numero di eventi.

La base tempo di tutti i timer è 1 msec.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

calcolare per quanto tempo un timer è abilitato TON ladder 102

calcolare per quanto tempo un timer è disabilitato

TOF ladder 106

accumulare il tempo RTO ladder 110

calcolare per quanto tempo un timer è abilitato con reset incorporato nel blocco funzione

TONR testo strutturato

blocco funzione

114

calcolare per quanto tempo un timer è disabilitato con reset incorporato nel blocco funzione

TOFR testo strutturato

blocco funzione

118

accumulare il tempo con reset incorporato nel blocco funzione

RTOR testo strutturato

blocco funzione

122

contare in modo incrementale CTU ladder 126

contare in modo decrementale CTD ladder 130

contare in modo incrementale e decrementale nel blocco funzione

CTUD testo strutturato

blocco funzione

134

azzerare un timer o un contatore RES ladder 139

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 101

Page 102: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Timer On Delay (TON) L’istruzione TON è un timer non ritentivo che calcola il tempo quando l’istruzione è abilitata (la condizione del ramo di ingresso è vera).

L’istruzione è disponibile in testo strutturato e blocco funzione come TONR, vedere pagina 114.

Operandi:

Ladder

Struttura TIMER

Descrizione: L’istruzione TON calcola il tempo finché:

• l’istruzione TON non viene disabilitata

• .ACC ≥ .PRE

La base tempo è sempre 1 msec. Ad esempio, per un timer da 2 secondi, immettere 2000 per il valore .PRE.

Quando l’istruzione TON è disabilitata, il valore .ACC viene azzerato.

Operando Tipo Formato Descrizione

Timer TIMER tag struttura TIMER

Preset DINT immediato quanto ritardare (tempo accumulato)

Accum DINT immediato msec. totali calcolati dal timer

il valore iniziale generalmente è 0

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione TON è abilitata.

.TT BOOL Il bit di temporizzazione indica che è in corso un’operazione di temporizzazione

.DN BOOL Il bit di fine viene impostato quando .ACC ≥ .PRE.

.PRE DINT Il valore preimpostato specifica il valore (unità di 1 msec) che il valore accumulato deve raggiungere prima che l’istruzione imposti il bit .DN.

.ACC DINT Il valore accumulato specifica il numero di millisecondi trascorsi dall’abilitazione dell’istruzione TON.

condizione ramo di ingresso

bit di abilitazione timer (.EN)

bit di fine timer (.DN)

valore accumulato timer (.ACC)

bit di temporizzazione timer (.TT)

preset

0 16649

il timer non ha raggiunto il valore .PRE

ON delay

102 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 103: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Un timer funziona sottraendo il tempo dell’ultima scansione dal tempo corrente:

ACC = ACC + (tempo_corrente – tempo_ultima_scansione)

Una volta aggiornato il valore ACC, il timer imposta tempo_ultima_scansione = tempo_corrente. In questo modo il timer è pronto per la scansione successiva.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

IMPORTANTE Accertarsi di scansionare il timer almeno ogni 69 minuti quando è in funzione. Diversamente, il valore ACC non sarà corretto.

Il valore tempo_ultima_scansione ha un intervallo massimo di 69 minuti. Il calcolo del timer ricomincia daccapo se non viene effettuata la scansione entro i 69 minuti. In questo caso, il valore ACC non sarà corretto.

Mentre un timer è in esecuzione, eseguire la scansione entro 69 minuti se lo si colloca all’interno di:

• una subroutine• una sezione di codice compresa tra le istruzioni JMP e LBL• un diagramma funzionale sequenziale (SFC)• un evento o task periodico• una routine di stato di una fase

Si verifica un errore grave se Tipo errore Codice errore

.PRE < 0 4 34

.ACC < 0 4 34

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 103

Page 104: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Esecuzione:

Condizione Azione ladder

durante la prescansione I bit .EN, .TT e .DN vengono azzerati.

Il valore .ACC viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa I bit .EN, .TT e .DN vengono azzerati.

Il valore .ACC viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

esamina il bit .DN bit .DN = 1

bit .DN = 0

bit .EN viene impostatobit .TT viene impostatotempo_precedente = tempo_corrente

se la condizione del ramo di ingresso è vera

esamina .ACC .ACC ≥ .PRE

.ACC < .PRE

bit .TT viene impostato.ACC = .ACC + (tempo_corrente – tempo_precedente)tempo_precedente = tempo_corrente

valore .ACC superiore al

limite

no

.ACC = 2 147 483 647

esamina bit .EN bit .EN = 0

bit .EN = 1

La condizione del ramo di uscita viene impostata su vero.

fine

.DN viene impostatobit .TT viene azzeratobit .EN viene impostato

104 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 105: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Esempio: Quando limit_switch_1 è impostato, light_2 è accesa per 180 msec (timer_1 è in fase di conteggio). Quando timer_1.acc raggiunge 180, light_2 si spegne e light_3 si accende. Light_3 rimane accesa finché l’istruzione TON non viene disabilitata. Se limit_switch_1 viene azzerato mentre timer_1 è in fase di conteggio, light_2 si spegne.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 105

Page 106: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Timer Off Delay (TOF) L’istruzione TOF è un timer non ritentivo che calcola il tempo quando l’istruzione è abilitata (la condizione del ramo di ingresso è falsa).

Questa istruzione è disponibile in testo strutturato e blocco funzione come TOFR, vedere pagina 118.

Operandi:

Ladder

Struttura TIMER

Descrizione: L’istruzione TOF calcola il tempo finché:

• l’istruzione TOF non viene disabilitata

• .ACC ≥ .PRE

La base tempo è sempre 1 msec. Ad esempio, per un timer da 2 secondi, immettere 2000 per il valore .PRE.

Operando Tipo Formato Descrizione

Timer TIMER tag struttura TIMER

Preset DINT immediato quanto ritardare (tempo accumulato)

Accum DINT immediato msec. totali calcolati dal timer

il valore iniziale generalmente è 0

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione TOF è abilitata.

.TT BOOL Il bit di temporizzazione indica che è in corso un’operazione di temporizzazione

.DN BOOL Il bit di fine viene azzerato quando .ACC ≥ .PRE.

.PRE DINT Il valore preimpostato specifica il valore (unità di 1 msec) che il valore accumulato deve raggiungere prima che l’istruzione azzeri il bit .DN.

.ACC DINT Il valore accumulato specifica il numero di millisecondi trascorsi dall’abilitazione dell’istruzione TOF.

106 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 107: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Quando l’istruzione TOF è disabilitata, il valore .ACC viene azzerato.

Un timer funziona sottraendo il tempo dell’ultima scansione dal tempo corrente:

ACC = ACC + (tempo_corrente – tempo_ultima_scansione)

Una volta aggiornato il valore ACC, il timer imposta tempo_ultima_scansione = tempo_corrente. In questo modo il timer è pronto per la scansione successiva.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esecuzione:

condizione ramo di ingresso

bit di abilitazione timer (.EN)

bit di fine timer (.DN)

valore accumulato timer (.ACC)

bit di temporizzazione timer (.TT)

0 16650

il timer non ha raggiunto il valore .PRE

presetOFF delay

IMPORTANTE Accertarsi di scansionare il timer almeno ogni 69 minuti quando è in funzione. Diversamente, il valore ACC non sarà corretto.

Il valore tempo_ultima_scansione ha un intervallo massimo di 69 minuti. Il calcolo del timer ricomincia daccapo se non viene effettuata la scansione entro i 69 minuti. In questo caso, il valore ACC non sarà corretto.

Mentre un timer è in esecuzione, eseguire la scansione entro 69 minuti se lo si colloca all’interno di:

• subroutine• una sezione di codice compresa tra le istruzioni JMP e LBL• un diagramma funzionale sequenziale (SFC)• un evento o task periodico• una routine di stato di una fase

Si verifica un errore grave se Tipo errore Codice errore

.PRE < 0 4 34

.ACC < 0 4 34

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 107

Page 108: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Condizione Azione ladder

durante la prescansione I bit .EN, .TT e .DN vengono azzerati.

Il valore .ACC viene impostato uguale al valore .PRE.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera I bit .EN, .TT e .DN vengono impostati.

Il valore .ACC viene azzerato.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

esamina il bit .DN bit .DN = 0

bit .DN = 1

bit .EN viene azzeratobit .TT viene impostatotempo_precedente = tempo_corrente

se la condizione del ramo di ingresso è falsa

esamina .ACC .ACC ≥ .PRE

.ACC < .PRE

bit .TT viene impostato.ACC = .ACC + (tempo_corrente – tempo_precedente)tempo_precedente = tempo_corrente

valore .ACC superiore al

limite

no

.ACC = 2 147 483 647

esamina bit .EN bit .EN = 1

bit .EN = 0

La condizione del ramo di uscita viene impostata su falso.

fine

bit .DN viene azzeratobit .TT viene azzeratobit .EN viene azzerato

108 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 109: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Esempio: Quando limit_switch_2 viene azzerato, light_2 è accesa per 180 msec (timer_2 è in fase di conteggio). Quando timer_2.acc raggiunge 180, light_2 si spegne e light_3 si accende. Light_3 rimane accesa finché l’istruzione TOF non viene abilitata. Se limit_switch_2 viene impostato mentre timer_2 è in fase di conteggio, light_2 si spegne.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 109

Page 110: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Retentive Timer On (RTO) L’istruzione RTO è un timer ritentivo che calcola il tempo quando l’istruzione è abilitata.

L’istruzione è disponibile in testo strutturato e blocco funzione come RTOR, vedere pagina 122.

Operandi:

Ladder

Struttura TIMER

Descrizione: L’istruzione RTO calcola il tempo finché non viene disabilitata. Quando è disabilitata, l’istruzione RTO conserva il proprio valore .ACC. È necessario azzerare il valore .ACC, di norma con un’istruzione RES che faccia riferimento alla stessa struttura TIMER.

Operando Tipo Formato Descrizione

Timer TIMER tag struttura TIMER

Preset DINT immediato quanto ritardare (tempo accumulato)

Accum DINT immediato numero di msec calcolati dal timer

il valore iniziale generalmente è 0

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione RTO è abilitata.

.TT BOOL Il bit di temporizzazione indica che è in corso un’operazione di temporizzazione

.DN BOOL Il bit di fine indica che .ACC ≥ .PRE.

.PRE DINT Il valore preimpostato specifica il valore (unità di 1 msec) che il valore accumulato deve raggiungere prima che l’istruzione imposti il bit .DN.

.ACC DINT Il valore accumulato specifica il numero di millisecondi trascorsi dall’abilitazione dell’istruzione RTO.

110 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 111: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

La base tempo è sempre 1 msec. Ad esempio, per un timer da 2 secondi, immettere 2000 per il valore .PRE.

Un timer funziona sottraendo il tempo dell’ultima scansione dal tempo corrente:

ACC = ACC + (tempo_corrente – tempo_ultima_scansione)

Una volta aggiornato il valore ACC, il timer imposta tempo_ultima_scansione = tempo_corrente. In questo modo il timer è pronto per la scansione successiva.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

condizione ramo di ingresso

bit di abilitazione timer (.EN)

bit di fine timer (.DN)

valore accumulato timer (.ACC)

bit di temporizzazione timer (.TT)

preset

0

16651

condizione del ramo che controlla l’istruzione RES

il timer non ha raggiunto il valore .PRE

IMPORTANTE Accertarsi di scansionare il timer almeno ogni 69 minuti quando è in funzione. Diversamente, il valore ACC non sarà corretto.

Il valore tempo_ultima_scansione ha un intervallo massimo di 69 minuti. Il calcolo del timer ricomincia daccapo se non viene effettuata la scansione entro i 69 minuti. In questo caso, il valore ACC non sarà corretto.

Mentre un timer è in esecuzione, eseguire la scansione entro 69 minuti se lo si colloca all’interno di:

• subroutine• una sezione di codice compresa tra le istruzioni JMP e LBL• un diagramma funzionale sequenziale (SFC)• un evento o task periodico• una routine di stato di una fase

Si verifica un errore grave se Tipo errore Codice errore

.PRE < 0 4 34

.ACC < 0 4 34

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 111

Page 112: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Esecuzione:

Condizione Azione ladder

durante la prescansione I bit .EN, .TT e .DN vengono azzerati.

Il valore .ACC non viene modificato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa I bit .EN e .TT vengono azzerati.

Il bit .DN non viene modificato.

Il valore .ACC non viene modificato.

La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

esamina il bit .DN bit .DN = 1

bit .DN = 0

bit .EN viene impostatobit .TT viene impostatotempo_precedente = tempo_corrente

se la condizione del ramo di ingresso è vera

esamina .ACC .ACC ≥ .PRE

.ACC < .PRE

bit .TT viene impostato.ACC = .ACC + (tempo_corrente – tempo_precedente)tempo_precedente = tempo_corrente

valore .ACC superiore al

limite

no

.ACC = 2 147 483 647

esamina bit .EN bit .EN = 0

bit .EN = 1

La condizione del ramo di uscita viene impostata su vero.

fine

.DN viene impostatobit .TT viene azzeratobit .EN viene impostato

112 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 113: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Esempio: Quando limit_switch_1 è impostato, light_1 è accesa per 180 msec (timer_2 è in fase di conteggio). Quando timer_3.acc raggiunge 180, light_1 si spegne e light_2 si accende. Light_2 rimane accesa finché timer_3 non viene reimpostato. Se limit_switch_2 viene azzerato mentre timer_3 è in fase di conteggio, light_1 rimane accesa. Quando limit_switch_2 viene impostato, l’istruzione RES reimposta timer_3 (azzera i bit di stato e il valore .ACC).

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 113

Page 114: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Timer On Delay with Reset (TONR)

L’istruzione TONR è un timer non ritentivo che conteggia il tempo quando TimerEnable è impostato.

Questa istruzione è disponibile in ladder sotto forma di due istruzioni separate: TON (vedere pagina 102) e RES (vedere pagina 139).

Operandi:

Testo strutturato

Blocco funzione

Struttura FBD_TIMER

Variabile Tipo Formato Descrizione

tag TONR FBD_TIMER struttura struttura TONR

Operando Tipo Formato Descrizione

tag TONR FBD_TIMER struttura struttura TONR

TONR(TONR_tag);

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Blocco funzione:

Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se è impostato, l’istruzione viene eseguita.

Il valore di default è impostato.

Testo strutturato:

nessun effetto. L’istruzione viene eseguita.

TimerEnable BOOL Se è impostato, il timer viene eseguito e conteggia il tempo.

Il valore di default è azzerato.

PRE DINT Valore preimpostato del timer. Si tratta del valore, in unità di 1msec, che ACC deve raggiungere prima che il rilevamento del tempo venga terminato. Se non è valido, l’istruzione imposta il bit adeguato in Status e il timer non viene eseguito.

Valido = da 0 al massimo intero positivo

reset BOOL Richiesta di reimpostazione del timer. Quando è impostato, il timer viene reimpostato.

Il valore di default è azzerato.

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

ACC BOOL Tempo accumulato in millisecondi.

EN BOOL Uscita di abilitazione timer. Indica che l’istruzione timer è abilitata.

TT BOOL Uscita di esecuzione timer. Quando è impostato, è in corso un’operazione di rilevamento del tempo.

DN BOOL Uscita di fine rilevazione tempo. Indica quando il tempo accumulato è maggiore di o uguale al valore preimpostato.

114 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 115: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Descrizione: L’istruzione TONR calcola il tempo finché:

• l’istruzione TONR non viene disabilitata

• ACC ≥ PRE

La base tempo è sempre 1 msec. Ad esempio, per un timer da 2 secondi, immettere 2000 per il valore .PRE.

Impostare il parametro di ingresso Reset per reimpostare l’istruzione. Se TimerEnable è impostato quando Reset viene impostato, l’istruzione TONR inizia a rilevare di nuovo il tempo quando Reset viene azzerato.

Un timer funziona sottraendo il tempo dell’ultima scansione dal tempo corrente:

ACC = ACC + (tempo_corrente – tempo_ultima_scansione)

Status DINT Stato del blocco funzione.

InstructFault (Status.0) BOOL L’istruzione ha rilevato uno dei seguenti errori di esecuzione. Non si tratta di un errore minore o grave del controllore. Verificare gli altri bit di stato per stabilire cosa è accaduto.

PresetInv (Status.1) BOOL Il valore preimpostato non è valido.

Parametro di ingresso

Tipo di dati Descrizione

TimerEnable

bit di abilitazione (EN)

bit di fine timer (DN)

valore accumulato timer (ACC)

bit di temporizzazione timer (TT)

preset

0

16649

ON delay

il timer non ha raggiunto il valore PRE

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 115

Page 116: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Una volta aggiornato il valore ACC, il timer imposta tempo_ultima_scansione = tempo_corrente. In questo modo il timer è pronto per la scansione successiva.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

IMPORTANTE Accertarsi di scansionare il timer almeno ogni 69 minuti quando è in funzione. Diversamente, il valore ACC non sarà corretto.

Il valore tempo_ultima_scansione ha un intervallo massimo di 69 minuti. Il calcolo del timer ricomincia daccapo se non viene effettuata la scansione entro i 69 minuti. In questo caso, il valore ACC non sarà corretto.

Mentre un timer è in esecuzione, eseguire la scansione entro 69 minuti se lo si colloca all’interno di:

• subroutine• una sezione di codice compresa tra le istruzioni JMP e LBL• un diagramma funzionale sequenziale (SFC)• un evento o task periodico• una routine di stato di una fase

Condizione Azione blocco funzione Azione testo strutturato

durante la prescansione Nessuna. Nessuna.

prima scansione dell’istruzione

EN, TT e DN vengono azzerati.

Il valore ACC viene impostato a 0.

EN, TT e DN vengono azzerati.

Il valore ACC viene impostato a 0.

durante la prima esecuzione dell’istruzione

EN, TT e DN vengono azzerati.

Il valore ACC viene impostato a 0.

EN, TT e DN vengono azzerati.

Il valore ACC viene impostato a 0.

EnableIn viene azzerato EnableOut viene azzerato, l’istruzione non esegue alcuna azione e le uscite non vengono aggiornate.

na

EnableIn viene impostato Quando EnableIn passa da azzerato a impostato, l’istruzione viene inizializzata come descritto per la prima scansione dell’istruzione.

L’istruzione viene eseguita.

EnableOut viene impostato.

EnableIn viene sempre impostato.

L’istruzione viene eseguita.

reset Quando il parametro di ingresso Reset viene impostato, l’istruzione azzera EN, TT e DN e impostaACC = zero.

Quando il parametro di ingresso Reset viene impostato, l’istruzione azzera EN, TT e DN e impostaACC = zero.

post-scansione Nessuna. Nessuna.

116 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 117: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Esempio: A ogni scansione in cui limit_switch1 è impostato, l’istruzione TONR incrementa il valore ACC con il tempo trascorso finché il valore ACC non raggiunge il valore PRE. Quando ACC ≥ PRE, il parametro DN e timer_state vengono impostati.

Testo strutturato

TONR_01.Preset := 500;

TONR_01.Reset : = reset;

TONR_O1.TimerEnable := limit_switch1;

TONR(TONR_01);

timer_state := TONR_01.DN;

Esempio di blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 117

Page 118: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Timer Off Delay with Reset (TOFR)

L’istruzione TOFR è un timer non ritentivo che calcola il tempo quando TimerEnable è azzerato.

Questa istruzione è disponibile in ladder sotto forma di due istruzioni separate: TOF (vedere pagina 106) e RES (vedere pagina 139).

Operandi:

Testo strutturato

Operandi blocco funzione

Struttura FBD_TIMER

Variabile Tipo Formato Descrizione

tag TOFR FBD_TIMER struttura struttura TOFR

Operando Tipo Formato Descrizione

tag TOFR FBD_TIMER struttura struttura TOFR

TOFR(TOFR_tag);

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Blocco funzione:

Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se è impostato, l’istruzione viene eseguita.

Il valore di default è impostato.

Testo strutturato:

nessun effetto. L’istruzione viene eseguita.

TimerEnable BOOL Se azzerato, il timer viene eseguito e calcola il tempo.

Il valore di default è azzerato.

PRE DINT Valore preimpostato del timer. Si tratta del valore, in unità di 1 msec, che ACC deve raggiungere prima che il rilevamento del tempo venga terminato. Se non è valido, l’istruzione imposta il bit adeguato in Status e il timer non viene eseguito.

Valido = da 0 al massimo intero positivo

reset BOOL Richiesta di reimpostazione del timer. Quando è impostato, il timer viene reimpostato.

Il valore di default è azzerato.

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

ACC BOOL Tempo accumulato in millisecondi.

EN BOOL Uscita di abilitazione timer. Indica che l’istruzione timer è abilitata.

TT BOOL Uscita di esecuzione timer. Quando è impostato, è in corso un’operazione di rilevamento del tempo.

118 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 119: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Descrizione: L’istruzione TOFR calcola il tempo finché:

• l’istruzione TOFR non viene disabilitata

• ACC ≥ PRE

La base tempo è sempre 1 msec. Ad esempio, per un timer da 2 secondi, immettere 2000 per il valore .PRE.

Impostare il parametro di ingresso Reset per reimpostare l’istruzione. Se TimerEnable è azzerato quando Reset viene impostato, l’istruzione TOFR non riavvia il rilevamento del tempo quando Reset viene azzerato.

Un timer funziona sottraendo il tempo dell’ultima scansione dal tempo corrente:

ACC = ACC + (tempo_corrente – tempo_ultima_scansione)

DN BOOL Uscita di fine rilevazione tempo. Indica quando il tempo accumulato è maggiore di o uguale al valore preimpostato.

Status DINT Stato del blocco funzione.

InstructFault (Status.0) BOOL L’istruzione ha rilevato uno dei seguenti errori di esecuzione. Non si tratta di un errore minore o grave del controllore. Verificare gli altri bit di stato per stabilire cosa è accaduto.

PresetInv (Status.1) BOOL Il valore preimpostato non è valido.

Parametro di ingresso

Tipo di dati Descrizione

TimerEnable

bit di abilitazione (EN)

bit di fine timer (DN)

valore accumulato timer (ACC)

bit di temporizzazione timer (TT)

0

OFF delay

16650

il timer non ha raggiunto il valore PRE

preset

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 119

Page 120: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Una volta aggiornato il valore ACC, il timer imposta tempo_ultima_scansione = tempo_corrente. In questo modo il timer è pronto per la scansione successiva.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio: A ogni scansione dopo che limit_switch1 è stato azzerato, l’istruzione TOFR incrementa il valore ACC con il tempo trascorso finché il valore ACC non raggiunge il valore PRE. Quando ACC ≥ PRE, il parametro DN viene azzerato e timer_state2 viene impostato.

IMPORTANTE Accertarsi di scansionare il timer almeno ogni 69 minuti quando è in funzione. Diversamente, il valore ACC non sarà corretto.

Il valore tempo_ultima_scansione ha un intervallo massimo di 69 minuti. Il calcolo del timer ricomincia daccapo se non viene effettuata la scansione entro i 69 minuti. In questo caso, il valore ACC non sarà corretto.

Mentre un timer è in esecuzione, eseguire la scansione entro 69 minuti se lo si colloca all’interno di:

• subroutine• una sezione di codice compresa tra le istruzioni JMP e LBL• un diagramma funzionale sequenziale (SFC)• un evento o task periodico• una routine di stato di una fase

Condizione Azione blocco funzione Azione testo strutturato

durante la prescansione Nessuna. Nessuna.

prima scansione dell’istruzione

EN, TT e DN vengono azzerati.

Il valore ACC viene impostato a PRE.

EN, TT e DN vengono azzerati.

Il valore ACC viene impostato a PRE.

durante la prima esecuzione dell’istruzione

EN, TT e DN vengono azzerati.

Il valore ACC viene impostato a PRE.

EN, TT e DN vengono azzerati.

Il valore ACC viene impostato a PRE.

EnableIn viene azzerato EnableOut viene azzerato, l’istruzione non esegue alcuna azione e le uscite non vengono aggiornate.

na

EnableIn viene impostato Quando EnableIn passa da azzerato a impostato, l’istruzione viene inizializzata come descritto per la prima scansione dell’istruzione.

L’istruzione viene eseguita.

EnableOut viene impostato.

EnableIn viene sempre impostato.

L’istruzione viene eseguita.

reset Quando il parametro di ingresso Reset viene impostato, l’istruzione azzera EN, TT e DN e impostaACC = PRE. Si noti che questo è diverso dall’uso di un’istruzione RES su un’istruzione TOF.

Quando il parametro di ingresso Reset viene impostato, l’istruzione azzera EN, TT e DN e impostaACC = PRE. Si noti che questo è diverso dall’uso di un’istruzione RES su un’istruzione TOF.

post-scansione Nessuna. Nessuna.

120 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 121: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Testo strutturato

TOFR_01.Preset := 500

TOFR_01.Reset := reset;

TOFR_O1.TimerEnable := limit_switch1;

TOFR(TOFR_01);

timer_state2 := TOFR_01.DN;

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 121

Page 122: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Retentive Timer On with Reset (RTOR)

L’istruzione RTOR è un timer ritentivo che calcola il tempo quando TimerEnable è impostato.

Questa istruzione è disponibile in ladder sotto forma di due istruzioni separate: RTO (vedere pagina 110) e RES (vedere pagina 139).

Operandi:

Testo strutturato

Operandi blocco funzione

Struttura FBD_TIMER

Variabile Tipo Formato Descrizione

tag RTOR FBD_TIMER struttura struttura RTOR

Operando Tipo Formato Descrizione

tag RTOR FBD_TIMER struttura struttura RTOR

RTOR(RTOR_tag);

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Blocco funzione:

Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se è impostato, l’istruzione viene eseguita.

Il valore di default è impostato.

Testo strutturato:

nessun effetto. L’istruzione viene eseguita.

TimerEnable BOOL Se è impostato, il timer viene eseguito e conteggia il tempo.

Il valore di default è azzerato.

PRE DINT Valore preimpostato del timer. Si tratta del valore, in unità di 1 msec, che ACC deve raggiungere prima che il rilevamento del tempo venga terminato. Se non è valido, l’istruzione imposta il bit adeguato in Status e il timer non viene eseguito.

Valido = da 0 al massimo intero positivo

reset BOOL Richiesta di reimpostazione del timer. Quando è impostato, il timer viene reimpostato.

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

ACC DINT Tempo accumulato in millisecondi. Questo valore viene mantenuto anche mentre l’ingresso TimerEnable è azzerato. Ciò rende il comportamento di questo blocco diverso da quello del blocco TONR.

EN BOOL Uscita di abilitazione timer. Indica che l’istruzione timer è abilitata.

TT BOOL Uscita di esecuzione timer. Quando è impostato, è in corso un’operazione di rilevamento del tempo.

122 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 123: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Descrizione: L’istruzione RTOR calcola il tempo finché non viene disabilitata. Quando è disabilitata, l’istruzione RTOR conserva il proprio valore ACC. È necessario azzerare il valore .ACC utilizzando l’ingresso Reset.

La base tempo è sempre 1 msec. Ad esempio, per un timer da 2 secondi, immettere 2000 per il valore .PRE.

Impostare il parametro di ingresso Reset per reimpostare l’istruzione. Se TimerEnable è impostato quando Reset viene impostato, l’istruzione RTOR inizia a rilevare di nuovo il tempo quando Reset viene azzerato.

Un timer funziona sottraendo il tempo dell’ultima scansione dal tempo corrente:

ACC = ACC + (tempo_corrente – tempo_ultima_scansione)

DN BOOL Uscita di fine rilevazione tempo. Indica quando il tempo accumulato è maggiore di o uguale al valore preimpostato.

Status DINT Stato del blocco funzione.

InstructFault (Status.0) BOOL L’istruzione ha rilevato uno dei seguenti errori di esecuzione. Non si tratta di un errore minore o grave del controllore. Verificare gli altri bit di stato per stabilire cosa è accaduto.

PresetInv (Status.1) BOOL Il valore preimpostato non è valido.

Parametro di ingresso

Tipo di dati Descrizione

TimerEnable

bit di abilitazione (EN)

bit di fine timer (DN)

valore accumulato timer (ACC)

bit di temporizzazione timer (TT)

preset

0

16651

reset

il timer non ha raggiunto il valore PRE

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 123

Page 124: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Una volta aggiornato il valore ACC, il timer imposta tempo_ultima_scansione = tempo_corrente. In questo modo il timer è pronto per la scansione successiva.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio: A ogni scansione in cui limit_switch1 è impostato, l’istruzione RTOR incrementa il valore ACC con il tempo trascorso finché il valore ACC non raggiunge il valore PRE. Quando ACC ≥ PRE, il parametro DN e timer_state3 vengono impostati.

IMPORTANTE Accertarsi di scansionare il timer almeno ogni 69 minuti quando è in funzione. Diversamente, il valore ACC non sarà corretto.

Il valore tempo_ultima_scansione ha un intervallo massimo di 69 minuti. Il calcolo del timer ricomincia daccapo se non viene effettuata la scansione entro i 69 minuti. In questo caso, il valore ACC non sarà corretto.

Mentre un timer è in esecuzione, eseguire la scansione entro 69 minuti se lo si colloca all’interno di:

• subroutine• una sezione di codice compresa tra le istruzioni JMP e LBL• un diagramma funzionale sequenziale (SFC)• un evento o task periodico• una routine di stato di una fase

Condizione Azione blocco funzione Azione testo strutturato

durante la prescansione Nessuna. Nessuna.

prima scansione dell’istruzione

EN, TT e DN vengono azzerati

Il valore ACC non viene modificato

EN, TT e DN vengono azzerati

Il valore ACC non viene modificato

durante la prima esecuzione dell’istruzione

EN, TT e DN vengono azzerati

Il valore ACC non viene modificato

EN, TT e DN vengono azzerati

Il valore ACC non viene modificato

EnableIn viene azzerato EnableOut viene azzerato, l’istruzione non esegue alcuna azione e le uscite non vengono aggiornate.

na

EnableIn viene impostato Blocco funzione:

Quando EnableIn passa da azzerato a impostato, l’istruzione viene inizializzata come descritto per la prima scansione dell’istruzione.

L’istruzione viene eseguita.

EnableOut viene impostato.

EnableIn viene sempre impostato.

L’istruzione viene eseguita.

reset Quando il parametro di ingresso Reset viene impostato, l’istruzione azzera EN, TT e DN e impostaACC = zero.

Quando il parametro di ingresso Reset viene impostato, l’istruzione azzera EN, TT e DN e impostaACC = zero.

post-scansione Nessuna. Nessuna.

124 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 125: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Testo strutturato

RTOR_01.Preset := 500

RTOR_01.Reset := reset;

RTOR_O1.TimerEnable := limit_switch1;

RTOR(RTOR_01);

timer_state3 := RTOR_01.DN;

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 125

Page 126: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Count Up (CTU) L’istruzione CTU conteggia in modo incrementale.

L’istruzione è disponibile in testo strutturato e blocco funzione come CTUD, vedere pagina 134.

Operandi:

Ladder

Struttura COUNTER

Descrizione: Quando è abilitata e il bit .CU è azzerato, l’istruzione CTU incrementa il contatore di uno. Quando è abilitata e il bit .CU è impostato, o quanto è disabilitata, l’istruzione CTU conserva il proprio valore .ACC.

Operando Tipo Formato Descrizione

Counter COUNTER tag struttura COUNTER

Preset DINT immediato limite massimo del conteggio

Accum DINT immediato numero di volte calcolate dal contatore

il valore iniziale generalmente è 0

Mnemonico Tipo di dati Descrizione

.CU BOOL Il bit di abilitazione del conteggio incrementale indica che l’istruzione CTU è abilitata.

.DN BOOL Il bit di fine indica che .ACC ≥ .PRE.

.OV BOOL Il bit di overflow indica che il contatore ha superato il limite massimo di 2 147 483 647. Il contatore continua quindi a contare in modo incrementale a partire da –2 147 483 648.

.UN BOOL Il bit di underflow indica che il contatore ha superato il limite inferiore di –2 147 483 648. Il contatore continua quindi a contare in modo decrementale a partire da 2 147 483 647.

.PRE DINT Il valore preimpostato specifica il valore che il valore accumulato deve raggiungere prima che l’istruzione imposti il bit .DN.

.ACC DINT Il valore accumulato indica il numero di transizioni contate dall’istruzione.

condizione ramo di ingresso

bit di abilitazione conteggio incrementale (.CU)

bit di fine conteggio incrementale (.DN)

valore accumulato contatore (.ACC)

preset

16636

126 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 127: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Il valore accumulato continua ad aumentare, anche dopo l’impostazione del bit .DN. Per azzerare il valore accumulato, utilizzare un’istruzione RES che faccia riferimento alla struttura del contatore o scriva 0 sul valore accumulato.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 127

Page 128: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Esecuzione:

Condizione Azione ladder

durante la prescansione Il bit .CU viene impostato per evitare incrementi non validi durante la prima scansione del programma.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit .CU viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

esamina bit .CUbit .CU = 0

bit .CU = 1

se la condizione del ramo di ingresso è vera

valore .ACC superiore al limite

no

esamina bit .UN bit .UN = 0

bit .UN = 1

bit .CU viene impostato

.ACC = .ACC + 1

esamina bit .OVbit .OV = 0

esamina bit .UNbit .UN = 1

bit .UN = 0

bit .UN viene azzeratobit .DN viene azzeratobit .OV viene azzerato

bit .OV viene impostato

esamina .ACC .ACC ≥ .PRE

.ACC < .PRE

bit .DN viene impostato

La condizione del ramo di uscita viene impostata su vero.

fine

bit .OV = 1

bit .DN viene azzerato.

128 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 129: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Esempio: Dopo che limit_switch_1 è passato da disabilitato ad abilitato 10 volte, il bit .DN viene impostato e light_1 si accende. Se limit_switch_1 continua a passare da disabilitato ad abilitato, counter_1 continua ad incrementare il proprio conteggio e il bit .DN rimane impostato. Quando limit_switch_2 è abilitato, l’istruzione RES reimposta counter_1 (azzera i bit di stato e il valore .ACC ) e light_1 si spegne.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 129

Page 130: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Count Down (CTD) L’istruzione CTD conta in modo decrementale.

L’istruzione è disponibile in testo strutturato e blocco funzione come CTUD, vedere pagina 134.

Operandi:

Ladder

Struttura COUNTER

Operando Tipo Formato Descrizione

Counter COUNTER tag struttura COUNTER

Preset DINT immediato limite minimo del conteggio

Accum DINT immediato numero di volte calcolate dal contatore

il valore iniziale generalmente è 0

Mnemonico Tipo di dati Descrizione

.CD BOOL Il bit di abilitazione del conteggio decrementale indica che l’istruzione CTD è abilitata.

.DN BOOL Il bit di fine indica che .ACC ≥ .PRE.

.OV BOOL Il bit di overflow indica che il contatore ha superato il limite massimo di 2 147 483 647. Il contatore continua quindi a contare in modo incrementale a partire da –2 147 483 648.

.UN BOOL Il bit di underflow indica che il contatore ha superato il limite inferiore di –2 147 483 648. Il contatore continua quindi a contare in modo decrementale a partire da 2 147 483 647.

.PRE DINT Il valore preimpostato specifica il valore che il valore accumulato deve raggiungere prima che l’istruzione imposti il bit .DN.

.ACC DINT Il valore accumulato indica il numero di transizioni contate dall’istruzione.

130 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 131: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Descrizione: L’istruzione CTD viene di norma usata con un’istruzione CTU che fa riferimento alla stessa struttura COUNTER.

Quando è abilitata e il bit .CD è azzerato, l’istruzione CTD decrementa il contatore di uno. Quando è abilitata e il bit .CD è impostato, o quanto è disabilitata, l’istruzione CTD conserva il proprio valore .ACC.

Il valore accumulato continua a diminuire, anche dopo l’impostazione del bit .DN. Per azzerare il valore accumulato, utilizzare un’istruzione RES che faccia riferimento alla struttura del contatore o scriva 0 sul valore accumulato.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

condizione ramo di ingresso

bit di abilitazione conteggio decrementale (.CD)

bit di fine conteggio decrementale (.DN)

valore accumulato contatore (.ACC)

preset

16637

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 131

Page 132: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Esecuzione:

Condizione Azione ladder

durante la prescansione Il bit .CD viene impostato per evitare decrementi non validi durante la prima scansione del programma.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit .CD viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

esamina bit .CDbit .CD = 0

bit .CD = 1

se la condizione del ramo di ingresso è vera

valore .ACC superiore al

limite

no

esamina bit .UN bit .UN = 0

bit .UN = 1

bit .CD viene impostato

.ACC = .ACC – 1

esamina bit .OV bit .OV = 0

esamina bit .OVbit .OV = 1

bit .OV = 0

bit .OV viene azzeratobit .DN viene azzeratobit .UN viene azzerato

bit .UN viene impostato

esamina .ACC .ACC ≥ .PRE

bit .DN viene impostato

La condizione del ramo di uscita viene impostata su vero.

fine

bit .OV = 1

.ACC < .PRE

bit .DN viene azzerato.

132 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 133: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Esempio: Un nastro trasportatore porta componenti in una zona di stoccaggio. Ogni volta che viene immesso un componente, limit_switch_1 viene abilitato e counter_1 viene incrementato di 1. Ogni volta che un componente esce dal nastro trasportatore, limit_switch_2 viene abilitato e counter_1 viene decrementato di 1. Se nella zona di stoccaggio vi sono 100 componenti (counter_1.dn è impostato), conveyor_a viene attivato e impedisce al nastro trasportatore di portare altri componenti finché la zona di stoccaggio non ha altro spazio.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 133

Page 134: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Count Up/Down (CTUD) L’istruzione CTUD conta a incrementi di 1 quando CUEnable passa da azzerato a impostato. L’istruzione conta a decrementi di 1 quando CDEnable passa da azzerato a impostato.

Questa istruzione è disponibile in ladder sotto forma di tre istruzioni separate: CTU (vedere pagina 126), CTD (vedere pagina 130) e RES (vedere pagina 139).

Operandi:

Testo strutturato

Blocco funzione

Struttura FBD_COUNTER

Variabile Tipo Formato Descrizione

tag CTUD FBD_COUNTER struttura struttura CTUD

Operando Tipo Formato Descrizione

tag CTUD FBD_COUNTER struttura struttura CTUD

CTUD(CTUD_tag);

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Blocco funzione:

Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se è impostato, l’istruzione viene eseguita.

Il valore di default è impostato.

Testo strutturato:

Nessun effetto. L’istruzione viene eseguita.

CUEnable BOOL Abilita il conteggio incrementale. Quando l’ingresso passa da azzerato a impostato, il contatore conta a incrementi di 1.

Il valore di default è azzerato.

134 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 135: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Descrizione Quando è abilitata e CUEnable è impostato, l’istruzione CTUD incrementa il contatore di uno. Quando è abilitata e CDEnable è impostato, l’istruzione CTUD decrementa il contatore di uno.

I parametri di ingresso CUEnable e CDEnable possono entrambi passare da uno stato all’altro durante la stessa scansione. L’istruzione esegue il conteggio incrementale prima del conteggio decrementale.

CDEnable BOOL Abilita il conteggio decrementale. Quando l’ingresso passa da azzerato a impostato, il contatore conta a decrementi di 1.

Il valore di default è azzerato.

PRE DINT Valore preimpostato del contatore. Si tratta del valore che il valore accumulato deve raggiungere prima che venga impostato DN.

Valori validi = qualsiasi numero intero

Il valore di default è 0.

Reset BOOL Richiesta di reimpostazione del timer. Quando impostato, il contatore viene reimpostato.

Il valore di default è azzerato.

Parametro di ingresso

Tipo di dati Descrizione

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

ACC DINT Valore accumulato.

CU BOOL Conteggio incrementale abilitato.

CD BOOL Conteggio decrementale abilitato.

DN BOOL Conteggio terminato. Impostato quando il valore accumulato è maggiore di o uguale al valore preimpostato.

OV BOOL Overflow contatore. Indica che il contatore ha superato il limite massimo di 2 147 483 647.

Il contatore continua quindi a contare in modo decrementale a partire da −2 147 483 648.

UN BOOL Underflow contatore. Indica che il contatore ha superato il limite minimo di −2 147 483 648.

Il contatore continua quindi a contare in modo decrementale a partire da 2 147 483 647.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 135

Page 136: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Conteggio incrementale

Conteggio decrementale

Quando è disabilitata, l’istruzione CTUD conserva il proprio valore accumulato. Impostare il parametro di ingresso Reset della struttura FBD_COUNTER per reimpostare l’istruzione.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

CUEnable

bit di abilitazione conteggio incrementale (CU)

bit di fine conteggio incrementale (DN)

valore accumulato contatore (ACC)

preset

16636

CDEnable

bit di abilitazione conteggio decrementale (CD)

bit di fine conteggio decrementale (DN)

valore accumulato contatore (ACC)

preset

16637

136 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 137: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Esecuzione:

Esempio: Quando limit_switch1 passa da azzerato a impostato, CUEnable viene impostato per una scansione e l’istruzione CTUD incrementa il valore ACC di 1. Quando ACC ≥ PRE, il parametro DN viene impostato, abilitando l’istruzione di blocco funzione che segue l’istruzione CTUD.

Testo strutturato

CTUD_01.Preset := 500;

CTUD_01.Reset := Restart;

CTUD_O1.CUEnable := limit_switch1;

CTUD(CTUD_01);

counter_state := CTUD_01.DN;

Blocco funzione

Condizione Azione blocco funzione Azione testo strutturato

durante la prescansione Nessuna inizializzazione necessaria. Nessuna inizializzazione necessaria.

prima scansione dell’istruzione

CUEnablen-1 e CDEnablen-1 vengono impostati. CUEnablen-1 e CDEnablen-1 vengono impostati.

durante la prima esecuzione dell’istruzione

CUEnablen-1 e CDEnablen-1 vengono impostati. CUEnablen-1 e CDEnablen-1 vengono impostati.

EnableIn viene azzerato EnableOut viene azzerato, l’istruzione non esegue alcuna azione e le uscite non vengono aggiornate.

na

EnableIn viene impostato L’istruzione imposta CUEnablen-1 e CDEnablen-1.

In una transizione azzerato-impostato di EnableIn:

• L’istruzione viene eseguita.

• EnableOut viene impostato.

L’istruzione imposta CUEnablen-1 e CDEnablen-1.

EnableIn viene sempre impostato.

L’istruzione viene eseguita.

reset Quando impostato, l’istruzione azzera CUEnablen-1, CDEnablen-1, CU, CD, DN, OV e UN e impostaACC = zero.

Quando impostato, l’istruzione azzera CUEnablen-1, CDEnablen-1, CU, CD, DN, OV e UN e impostaACC = zero.

post-scansione Nessuna. Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 137

Page 138: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

138 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 139: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capitolo 3

Reset (RES) L’istruzione RES reimposta una struttura TIMER, COUNTER o CONTROL

Operandi:

Ladder

Descrizione: Quando è abilitata, l’istruzione RES azzera i seguenti elementi:

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Operando Tipo Formato Descrizione

struttura TIMER

CONTROL

COUNTER

tag struttura da reimpostare

Quando si utilizza un’istruzione RES per

L’istruzione azzera

TIMER valore .ACC

i bit di stato di controllo

COUNTER valore .ACC

i bit di stato di controllo

CONTROL valore .POS

i bit di stato di controllo

ATTENZIONE Dato che l’istruzione RES azzera il valore .ACC, il bit .DN e il bit .TT, non utilizzare l’istruzione RES per reimpostare un timer TOF.

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione RES azzera la struttura specificata.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 139

Page 140: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 3 Istruzioni di timer e contatori (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

140 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 141: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4

Istruzioni di I/O(MSG, GSV, SSV, IOT)

Introduzione Le istruzioni di input/output leggono o scrivono dati sul/dal controllore o blocchi di dati a/da un altro modulo su un’altra rete.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

inviare/ricevere dati a/da un altro modulo MSG ladder

testo strutturato

142

ottenere informazioni sullo stato del controllore GSV ladder

testo strutturato

173

impostare informazioni sullo stato del controllore

SSV ladder

testo strutturato

173

• inviare valori di uscita a un modulo I/O o al controllore consumatore in un punto specifico della logica

IOT ladder

testo strutturato

198

• attivare un task evento in un altro controllore

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 141

Page 142: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Message (MSG) L’istruzione MSG legge o scrive un blocco di dati ad un altro modulo di una rete in modo asincrono.

Operandi:

Ladder

Testo strutturato

Gli operandi sono uguali a quelli utilizzati per l’istruzione MSG ladder.

Struttura MESSAGE

Operando Tipo Formato Descrizione

Message control

MESSAGE tag struttura messaggio

MSG(MessageControl);

ATTENZIONE Se i bit di stato vengono controllati più di una volta

Il controllore modifica i bit DN, ER, EW e ST in maniera asincrona nella scansione della logica. Usare una copia dei bit se questi vengono controllati in più punti all’interno della logica. Diversamente, i bit potrebbero essere modificati durante la scansione e la logica non funzionerà nel modo previsto.

Un modo per creare una copia dei bit è utilizzare la parola FLAGS. Copiare la parola FLAGS in un altro tag e verificare i bit della copia.

IMPORTANTE Non modificare i seguenti bit di stato di un’istruzione MSG:

• DN• EN• ER• EW• ST

Non modificare tali bit né da soli né all’interno di una parola FLAGS. In tal caso, il controllore potrebbe subire un errore irreversibile. In caso di errore irreversibile, il controllore elimina il progetto dalla memoria.

142 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 143: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Mnemonico Tipo di dati

Descrizione

.FLAGS INT Il membro .FLAGS permette di accedere ai membri di stato (bit) in una parola a 16 bit.

Il bit: È il membro:

2 .EW

4 .ER

5 .DN

6 .ST

7 .EN

8 .TO

9 .EN_CC

Importante: non modificare i bit EW, ER, DN o ST del membro FLAGS. Ad esempio, non azzerare l’intera parola FLAGS. Il controllore ignora la modifica e utilizza i valori dei bit memorizzati internamente.

.ERR INT Se il bit .ER è impostato, la parola codice di errore segnala i codici di errore dell’istruzione MSG.

.EXERR INT La parola codice di errore esteso segnala informazioni aggiuntive per alcuni codici di errore.

.REQ_LEN INT La lunghezza richiesta indica quante parole l’istruzione di messaggio tenterà di trasferire.

.DN_LEN INT La lunghezza completata indica quante parole sono state effettivamente trasferite.

.EW BOOL Il bit di abilitazione attesa viene impostato quando il controllore rileva che è stata messa in coda una richiesta di messaggio. Il controllore azzera il bit .EW quando viene impostato il bit .ST.

Importante: non modificare il bit EW. Il controllore ignora la modifica e utilizza i valori del bit memorizzati internamente.

.ER BOOL Il bit di errore viene impostato quando il controllore rileva un trasferimento errato. Il bit .ER viene azzerato la volta successiva che la condizione del ramo di ingresso passa da falsa a vera.

Importante: non modificare il bit ER.

.DN BOOL Il bit di fine viene impostato quando l’ultimo pacchetto del messaggio viene trasferito senza errori. Il bit .DN viene azzerato la volta successiva che la condizione del ramo di ingresso passa da falsa a vera.

Importante: non modificare il bit DN.

.ST BOOL Il bit di inizio viene impostato quando il controllore inizia ad eseguire l’istruzione MSG. Il bit .ST viene azzerato quando viene impostato il bit .DN o il bit .ER.

Importante: non modificare il bit ST. Il controllore ignora la modifica e utilizza i valori del bit memorizzati internamente.

.EN BOOL Il bit di abilitazione viene impostato quando la condizione del ramo di ingresso diventa vera e rimane impostato fino a quando non viene impostato il bit .DN o il bit .ER e la condizione del ramo di ingresso è falsa. Se la condizione del ramo di ingresso diventa falsa ma il bit .DN ed il bit .ER sono azzerati, il bit .EN rimane impostato.

Importante: non modificare il bit EN.

.TO BOOL Se si imposta manualmente il bit .TO, il controllore smette di elaborare il messaggio ed imposta il bit .ER.

.EN_CC BOOL Il bit di abilitazione cache stabilisce come gestire la connessione MSG. Vedere Scegliere un’opzione cache a pagina 4-170. Le connessioni delle istruzioni MSG in uscita dalla porta seriale sono senza cache, anche se il bit .EN_CC è impostato.

.ERR_SRC SINT Utilizzato dal software RSLogix 5000 per mostrare il percorso di errore nella finestra di dialogo Message Configuration

.DestinationLink INT Per modificare il Collegamento di destinazione di un DH+ o CIP con messaggio di ID origine, impostare questo membro al valore richiesto.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 143

Page 144: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

.DestinationNode INT Per modificare il Nodo di destinazione di un DH+ o CIP con messaggio di ID origine, impostare questo membro al valore richiesto.

.SourceLink INT Per modificare il Collegamento di origine di un DH+ o CIP con messaggio di ID origine, impostare questo membro al valore richiesto.

.Class INT Per modificare il parametro Class di un messaggio CIP generico, impostare questo membro al valore richiesto.

.Attribute INT Per modificare il parametro Attribute di un messaggio CIP generico, impostare questo membro al valore richiesto.

.Instance DINT Per modificare il parametro Instance di un messaggio CIP generico, impostare questo membro al valore richiesto.

.LocalIndex DINT Se si usa un asterisco [*] per indicare il numero di elemento della matrice locale, LocalIndex fornisce il numero di elemento. Per modificare il numero di elemento, impostare questo membro al valore richiesto.

Se il messaggio: La matrice locale è:

legge dati elemento di destinazione

scrive dati elemento di origine

.Channel SINT Per inviare il messaggio da un canale diverso del modulo 1756-DHRIO, impostare questo membro al valore richiesto. Utilizzare il carattere ASCII A o B.

.Rack SINT Per modificare il numero di rack di un messaggio di trasferimento a blocchi, impostare questo membro al numero di rack richiesto (ottale).

.Group SINT Per modificare il numero di gruppo di un messaggio di trasferimento a blocchi, impostare questo membro al numero di gruppo richiesto (ottale).

.Slot SINT Per modificare il numero di slot di un messaggio di trasferimento a blocchi, impostare questo membro al numero di slot richiesto.

Se il messaggio è su una rete:

Specificare il numero di slot in:

universal remote I/O Ottale

ControlNet Decimale (0–15)

.Path STRING Per inviare il messaggio a un controllore diverso, impostare questo membro al nuovo percorso.

• Immettere il percorso in valori esadecimali.

• Omettere le virgole [,]

Ad esempio, per un percorso di 1, 0, 2, 42, 1, 3, immettere $01$00$02$2A$01$03.

Per passare a un dispositivo e creare automaticamente la nuova stringa o parte di essa, fare clic con il pulsante destro del mouse su un tag stringa, quindi scegliere Go to Message Path Editor.

.RemoteIndex DINT Se si usa un asterisco [*] per indicare il numero di elemento della matrice remota, RemoteIndex fornisce il numero di elemento. Per modificare il numero di elemento, impostare questo membro al valore richiesto.

Se il messaggio: La matrice remota è:

legge dati elemento di origine

scrive dati elemento di destinazione

Mnemonico Tipo di dati

Descrizione

144 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 145: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Descrizione L’istruzione MSG trasferisce elementi di dati.

Si tratta di un’istruzione di transizione:

• In ladder, cambiare la condizione del ramo di ingresso da azzerata a impostata per ogni esecuzione dell’istruzione richiesta.

• In testo strutturato, condizionare l’istruzione in modo che venga eseguita solo in caso di transizione. Vedere l’Appendice B.

.RemoteElement STRING Per specificare un tag o un indirizzo diverso nel controllore al quale il messaggio viene inviato, impostare questo membro al valore richiesto. Immettere il tag o l’indirizzo in caratteri ASCII.

Se il messaggio: La matrice remota è:

legge dati elemento di origine

scrive dati elemento di destinazione

.UnconnnectedTimeout DINT Timeout per assenza di connessione per i messaggi. Il valore predefinito è 30 secondi.

Se il messaggio è: Allora:

non connesso Il bit ER si attiva se il controllore non riceve una risposta entro il tempo UnconnectedTimeout.

connesso Il bit ER si attiva se il controllore non riceve una risposta per la realizzazione della connessione entro il tempo UnconnectedTimeout.

.ConnectionRate DINT Timeout per un messaggio connesso una volta che ha una connessione. Questo timeout è per la risposta proveniente dall’altro dispositivo in merito all’invio dei dati.

• Questo timeout si applica solo una volta eseguita la connessione.

• Timeout = ConnectionRate x TimeoutMultiplier.

• Il valore predefinito di ConnectionRate è 7,5 secondi.

• Il valore predefinito di TimeoutMultiplier è 0 (equivalente a un fattore di moltiplicazione di 4).

• Il time out predefinito per la connessione per i messaggi è 30 secondi (7,5 secondi x 4 = 30 secondi).

• Per modificare il time out, modificare ConnectionRate e lasciare TimeoutMultiplier al valore predefinito.

.TimeoutMultiplier SINT

Mnemonico Tipo di dati

Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 145

Page 146: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

La dimensione di ciascun elemento dipende dal tipo di dati specificato e dal tipo di comando di messaggio utilizzato.

connessione con .EN_CC = 1

condizione ramo di ingresso

bit .EW

connessione con .EN_CC = 0

41382

bit .ST

bit .DN o bit .ER

bit .EN

1 2 3 4 5 6 7

Dove Descrizione Dove Descrizione

1 se la condizione del ramo di ingresso è vera

.EN viene impostato

.EW viene impostato

la connessione è aperta*

5 il messaggio è inviato

.ST viene impostato

.EW viene azzerato

2 il messaggio è inviato

.ST viene impostato

.EW viene azzerato

6 messaggio terminato o con errori

la condizione del ramo di ingresso è ancora vera

.DN o .ER viene impostato

.ST è azzerato

la connessione viene chiusa (se .EN_CC = 0)

3 messaggio terminato o con errori

se la condizione del ramo di ingresso è falsa

.DN o .ER viene impostato

.ST è azzerato

la connessione viene chiusa (se .EN_CC = 0)

.EN viene azzerato (condizione del ramo di ingresso falsa)

7 la condizione del ramo di ingresso diventa falsa e .DN o .ER è impostato

.EN viene azzerato.

146 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 147: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Esecuzione:

4 se la condizione del ramo di ingresso è vera

.DN o .ER è stato impostato precedentemente

.EN viene impostato

.EW viene impostato

la connessione è aperta*

.DN o .ER viene azzerato

Dove Descrizione Dove Descrizione

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 147

Page 148: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

Condizione Azione ladder Azione testo strutturato

se la condizione del ramo di ingresso è falsa

(non applicabile al testo strutturato)

fine

La condizione del ramo di uscita viene impostata su falso.

esamina bit .ENbit .EN = 1

bit .EN = 0

esamina il bit .EWbit .EW = 1

bit .EW = 0

esamina il bit .STbit .ST = 1

bit .ST = 0

esamina il bit .DNbit .DN =

bit .DN = 0

esamina il bit .DNbit .DN = 1

bit .DN = 0

esamina il bit .ERbit .ER = 1

bit .ER = 0

bit .EN viene azzerato.

esamina il bit .ERbit .ER = 1 bit .ER = 0 comando di

trasferimento a blocchi

percorso modulo valido

sì no

no

esecuzione richiesta messaggio

bit .EW viene impostato

connessione modulo in corso

no

bit .ER viene impostato

Condizione Azione ladder Azione testo strutturato

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

148 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 149: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Condizione Azione ladder Azione testo strutturato

esecuzione istruzioni

fine

La condizione del ramo di uscita viene impostata su falso.

bit .EN = 0

esamina il bit .EWbit .EW = 1

bit .EW = 0

esamina il bit .STbit .ST = 1

bit .ST = 0

esamina il bit .DNbit .DN = 1

bit .DN = 0

esamina il bit .ERbit .ER = 1 bit .ER = 0 comando di

trasferimento a blocchi

percorso modulo valido

sì no

no

i bit .EW, .ST, .TO, .DN e .ER vengono azzeratibit .EN viene impostatoesecuzione richiesta messaggiobit .EW viene impostato

connessione modulo in corso

no

bit .ER viene impostato

esamina bit .ENbit .EN = 1

esamina il bit .EW

bit .EW = 0

esamina il bit .ST

bit .ST = 0

I bit .EW, .ST, .TO, .DN e .ER vengono azzeratiIl bit .EN viene impostato

bit .EN viene impostato

bit .EW = 1

bit .ST = 1

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 149

Page 150: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Codici di errore MSG I codici di errore dipendono dal tipo di istruzione MSG.

Codici di errore

Il software RSLogix 5000 non sempre visualizza l’intera descrizione.

Codice di errore (esad.)

Descrizione Visualizzazione nel software

0001 Collegamento interrotto (vedere codici di errore estesi) come nella descrizione

0002 Risorse insufficienti come nella descrizione

0003 Valore non valido come nella descrizione

0004 Errore di sintassi IOI (vedere codici di errore estesi) come nella descrizione

0005 Destinazione sconosciuta, classe non supportata, istanza non definita o elemento struttura non definito (vedere codici di errore estesi)

come nella descrizione

0006 Spazio pacchetto insufficiente come nella descrizione

0007 Connessione interrotta come nella descrizione

0008 Servizio non supportato come nella descrizione

0009 Errore nel segmento dati o valore attributo non valido come nella descrizione

000A Errore elenco attributi come nella descrizione

000B Stato già esistente come nella descrizione

000C Conflitto modello oggetto come nella descrizione

000D Oggetto già esistente come nella descrizione

000E Impossibile impostare l’attributo come nella descrizione

000F Permesso negato come nella descrizione

0010 Conflitto di stato dispositivo come nella descrizione

0011 Risposta non adatta come nella descrizione

0012 Frammento primario come nella descrizione

0013 Dati di comando insufficienti come nella descrizione

0014 Attributo non supportato come nella descrizione

0015 Troppi dati come nella descrizione

001A Richiesta ponte troppo grande come nella descrizione

001B Risposta ponte troppo grande come nella descrizione

001C Elenco attributi vuoto come nella descrizione

001D Elenco attributi non valido come nella descrizione

001E Errore di servizio integrato come nella descrizione

001F Errore di connessione correlata (vedere codici di errore estesi) come nella descrizione

0022 È stata ricevuta una risposta non valida come nella descrizione

0025 Errore segmento chiave come nella descrizione

0026 Errore di IOI non valido come nella descrizione

0027 Attributo non previsto in elenco come nella descrizione

0028 Errore DeviceNet – ID membro non valida come nella descrizione

150 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 151: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Codici di errore estesi

Il software RSLogix 5000 non visualizza testo per i codici di errore estesi.

Questi sono i codici di errore estesi per il codice di errore 0001.

0029 Errore DeviceNet – impossibile impostare il membro come nella descrizione

00D1 Il modulo non è in stato di esecuzione Errore sconosciuto

00FB Porta messaggi non supportata Errore sconosciuto

00FC Il messaggio non supporta il tipo di dati Errore sconosciuto

00FD Messaggio non inizializzato Errore sconosciuto

00FE Timeout del messaggio Errore sconosciuto

00FF Errore generale (vedere codici di errore estesi) Errore sconosciuto

Codice di errore (esad.)

Descrizione Visualizzazione nel software

Codice di errore esteso (esad.)

Descrizione

0100 Connessione in uso

0103 Trasporto non supportato

0106 Conflitto di proprietà

0107 Connessione non trovata

0108 Tipo di connessione non valida

0109 Dimensione connessione non valida

0110 Modulo non configurato

0111 EPR non supportato

0114 Modulo errato

0115 Tipo di dispositivo errato

0116 Revisione errata

0118 Formato di configurazione non valido

011A Connessioni non disponibili per l’applicazione

0203 Timeout connessione

0204 Timeout di messaggio non connesso

0205 Errore parametro di invio non connesso

0206 Messaggio troppo grande

0301 Memoria buffer insufficiente

0302 Larghezza di banda non disponibile

0303 Nessun filtro disponibile

0305 Corrispondenza firma

0311 Porta non disponibile

0312 Indirizzo connessione non disponibile

0315 Tipo di segmento non valido

0317 Connessione non pianificata

Codice di errore esteso (esad.)

Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 151

Page 152: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Questi sono i codici di errore estesi per il codice di errore 001F.

Questi sono i codici di errore estesi per i codici di errore 0004 e 0005.

Questi sono i codici di errore estesi per il codice di errore 00FF.

Codice di errore esteso (esad.)

Descrizione

0203 Timeout connessione

Codice di errore esteso (esad.)

Descrizione

0000 Memoria insufficiente per lo stato esteso

0001 Istanze insufficienti per lo stato esteso

Codice di errore esteso (esad.)

Descrizione

2001 IOI eccessivo

2002 Valore parametro errato

2018 Rifiuto semaforo

201B Dimensioni troppo piccole

201C Dimensione non valida

2100 Errore di privilegio

2101 Posizione del selettore a chiave non valida

2102 Password non valida

2103 Nessuna password configurata

2104 Indirizzo fuori gamma

2105 Indirizzo e quantità fuori gamma

2106 Dati in uso

2107 Tipo non valido o non supportato

2108 Controllore in modalità di caricamento o di scaricamento

2109 Si è tentato di modificare il numero di dimensioni della matrice

210A Nome simbolo non valido

210B Il simbolo non esiste

210E Ricerca nulla

210F La task non può iniziare

2110 Impossibile scrivere

2111 Impossibile leggere

2112 Routine condivisa non modificabile

2113 Controllore in modalità di errore

2114 Modalità di esecuzione inibita

Codice di errore esteso (esad.)

Descrizione

1

52 Pubblicazione 1756-RM003K-IT-P – Luglio 2008
Page 153: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Codici di errore di PLC e SLC (.ERR)

La versione firmware di Logix 10.x e successive forniscono nuovi codici di errore per gli errori associati ai tipo di messaggio PLC e SLC (messaggi PCCC).

• Questa modifica consente al software RSLogix 5000 di visualizzare una descrizione più significativa di molti tra gli errori. In passato il software non forniva alcuna descrizione per gli errori associati al codice di errore 00F0.

• Questa modifica rende inoltre i codici di errore più coerenti con gli errori indicati da altri controllori, quali i PLC-5.

La tabella seguente mostra le modifiche nei codici di errore dalla versione R9.x e precedenti rispetto alla R10.x e successive. In conseguenza di tale modifica, il membro .ERR restituisce un unico valore per ogni errore PCCC. .EXERR non è più necessario per tali errori.

Codici di errore di PLC e SLC (esad.)

Versione R9.x e precedenti

Versione R10.x e successive

Descrizione

.ERR .EXERR .ERR .EXERR

0010 1000 Comando o formato non valido dal processore locale

0020 2000 Il modulo di comunicazione non funziona

0030 3000 Nodo remoto mancante, scollegato o spento

0040 4000 Processore collegato ma in errore (hardware)

0050 5000 Numero di stazione errato

0060 6000 La funzione richiesta non è disponibile

0070 7000 Processore in modalità Programmazione

0080 8000 Il file di compatibilità del processore non esiste

0090 9000 Il nodo remoto non può inserire in memoria il comando

00B0 B000 Il processore sta eseguendo uno scaricamento e non è accessibile

00F0 0001 F001 Il processore ha convertito l’indirizzo in modo errato

00F0 0002 F002 Indirizzo incompleto

00F0 0003 F003 Indirizzo errato

00F0 0004 F004 Formato indirizzo non valido – simbolo non trovato

00F0 0005 F005 Formato indirizzo non valido – il simbolo non riporta alcun carattere o riporta un numero di caratteri superiore a quello massimo supportato dal dispositivo

00F0 0006 F006 Il file di indirizzo non esiste nel processore di destinazione

00F0 0007 F007 Il file di destinazione è troppo piccolo per il numero di parole richiesto

00F0 0008 F008 Impossibile completare la richiesta

La situazione è cambiata durante il funzionamento multipacchetto

00F0 0009 F009 Dati o file troppo grandi

Memoria non disponibile

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 153

Page 154: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

00F0 000A F00A Il processore di destinazione non può inserire le informazioni richieste in pacchetti

00F0 000B F00B Errore di privilegio; accesso negato

00F0 000C F00C La funzione richiesta non è disponibile

00F0 000D F00D La richiesta è ridondante

00F0 000E F00E Il comando non può essere eseguito

00F0 000F F00F Overflow; overflow istogramma

00F0 0010 F010 Nessun accesso

00F0 0011 F011 Il tipo di dati richiesto non corrisponde ai dati disponibili

00F0 0012 F012 Parametri di comando non corretti

00F0 0013 F013 Riferimento di indirizzo presente nell’area cancellata

00F0 0014 F014 Errore di esecuzione del comando per cause sconosciute

Overflow istogramma del PLC-3

00F0 0015 F015 Errore di conversione dati

00F0 0016 F016 Lo scanner non è disponibile per comunicare con un adattatore rack 1771

00F0 0017 F017 La scheda non è disponibile per comunicare con il modulo

00F0 0018 F018 La risposta del modulo 1771 non era valida

00F0 0019 F019 Etichetta duplicata

00F0 001A F01A Proprietario file attivo – il file è in uso

00F0 001B F01B Proprietario programma attivo – qualcuno sta eseguendo uno scaricamento o delle modifiche online

00F0 001C F01C Il file del disco è protetto contro la scrittura o non è accessibile (solo offline)

00F0 001D F01D Il file del disco è utilizzato da un’altra applicazione

Aggiornamento non eseguito (solo offline)

Codici di errore di PLC e SLC (esad.) (Continua)

Versione R9.x e precedenti

Versione R10.x e successive

Descrizione

.ERR .EXERR .ERR .EXERR

154 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 155: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Codici di errore dei trasferimenti a blocchi

Questi sono i codici di errore specifici per i trasferimenti a blocchi in Logix5000.

Codice di errore (esad.)

Descrizione Visualizzazione nel software

00D0 Lo scanner non ha ricevuto una risposta di trasferimento a blocchi dal modulo a trasferimenti a blocchi entro 3,5 secondi dalla richiesta

Errore sconosciuto

00D1 Il checksum dalla risposta di lettura non corrisponde con il checksum del flusso dati Errore sconosciuto

00D2 Lo scanner ha richiesto una lettura o una scrittura ma il modulo di trasferimento a blocchi ha risposto con l’opposto

Errore sconosciuto

00D3 Lo scanner ha richiesto una lunghezza ed il modulo di trasferimento a blocchi ha risposto con una lunghezza diversa

Errore sconosciuto

00D6 Lo scanner ha ricevuto una risposta dal modulo di trasferimento a blocchi indicante un errore nella richiesta di scrittura

Errore sconosciuto

00EA Lo scanner non è stato configurato per comunicare con il rack contenente questo modulo di trasferimento a blocchi

Errore sconosciuto

00EB Lo slot logico specificato non è disponibile per la dimensione del rack Errore sconosciuto

00EC Esiste una richiesta di trasferimento a blocchi in corso che richiede una risposta prima che possa avere inizio un’altra richiesta

Errore sconosciuto

00ED La dimensione della richiesta di trasferimento a blocchi non è compatibile con le richieste di trasferimenti a blocchi di dimensioni valide

Errore sconosciuto

00EE Il tipo di richiesta di trasferimento a blocchi non è compatibile con il previsto BT_READ o BT_WRITE

Errore sconosciuto

00EF Lo scanner non è riuscito a trovare nella tabella dei trasferimenti a blocchi uno slot disponibile per la richiesta di trasferimento a blocchi

Errore sconosciuto

00F0 Lo scanner ha ricevuto la richiesta di ripristinare i canali I/O remoti in presenza di trasferimenti a blocchi in sospeso

Errore sconosciuto

00F3 Le code per i trasferimenti a blocchi remoti sono piene Errore sconosciuto

00F5 Nessun canale di comunicazione configurato per il rack o lo slot richiesto Errore sconosciuto

00F6 Nessun canale di comunicazione configurato per I/O remoto Errore sconosciuto

00F7 Il timeout del trasferimento a blocchi, impostato nell’istruzione, è scaduto prima del completamento

Errore sconosciuto

00F8 Errore nel protocollo del trasferimento a blocchi – trasferimento a blocchi non richiesto Errore sconosciuto

00F9 I dati del trasferimento a blocchi sono andati persi a causa di un canale di comunicazione guasto

Errore sconosciuto

00FA Il modulo di trasferimento a blocchi ha richiesto una lunghezza diversa da quella associata all’istruzione di trasferimento a blocchi

Errore sconosciuto

00FB Il checksum dei dati di trasferimento a blocchi di lettura era errato Errore sconosciuto

00FC Trasferimento non valido dei dati di trasferimento a blocchi di scrittura tra l’adattatore e il modulo a trasferimento a blocchi

Errore sconosciuto

00FD La dimensione del trasferimento a blocchi più la dimensione dell’indice nella tabella dati dei trasferimenti a blocchi è maggiore della dimensione del file della tabella dati dei trasferimenti a blocchi

Errore sconosciuto

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 155

Page 156: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Specificare i dettagli di configurazione

Dopo avere immesso l’istruzione MSG e specificato la struttura MESSAGE, utilizzare la finestra di dialogo Message Configuration per specificare i dettagli del messaggio.

Le informazioni da configurare dipendono dal tipo di messaggio selezionato.

Fare clic qui per configurare l’istruzione MSG

42976

Se il dispositivo di destinazione è un Selezionare uno di questi tipi di messaggio

Vedere pagina

Controllore Logix5000 Tabella dati CIP di lettura 157

Tabella dati CIP di scrittura

Modulo di I/O configurato con il software RSLogix 5000

Riconfigurazione modulo 158

CIP generico 159

Controllore PLC-5 Lettura per PLC5 160

Scrittura per PLC5

Lettura a parole per PLC5

Scrittura a parole per PLC5

Controllore SLC

Controllore MicroLogix

Lettura per SLC 162

Scrittura per SLC

Modulo di trasferimento a blocchi Trasferimento a blocchi di lettura 162

Trasferimento a blocchi di scrittura

Processore PLC-3 Lettura per PLC3 163

Scrittura per PLC3

Lettura a parole per PLC3

Scrittura a parole per PLC3

Processore PLC-2 Lettura non protetta per PLC2 164

Scrittura non protetta per PLC2

156 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 157: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

È necessario specificare le seguenti informazioni di configurazione:

Specificare la Tabella dati CIP per messaggi di lettura e scrittura

I tipi di messaggio Tabella dati CIP di lettura e scrittura trasferiscono dati tra controllori Logix5000.

Per questa proprietà Specificare

Source Element • Se si seleziona un tipo di messaggio di lettura, l’elemento di origine è l’indirizzo dei dati che si desidera leggere nel dispositivo di destinazione. Utilizzare la sintassi di indirizzamento del dispositivo di destinazione.

• Se si seleziona un tipo di messaggio di scrittura, il tag di origine è il primo elemento del tag che si desidera inviare al dispositivo di destinazione.

Number of Elements Il numero di elementi che si leggono/scrivono dipende dal tipo di dati utilizzati. Un elemento si riferisce ad un “gruppo” di dati correlati. Ad esempio, il tag timer1 è un elemento costituito da una struttura di controllo timer .

Destination Element • Se si seleziona un tipo di messaggio di lettura, l’elemento di destinazione è il primo elemento del tag del controllore Logix5550 in cui si desidera memorizzare i dati letti dal dispositivo di destinazione.

• Se si seleziona un tipo di messaggio di scrittura, l’elemento di destinazione è l’indirizzo del luogo del dispositivo di destinazione in cui si desidera scrivere i dati.

Selezionare questo comando Se si desidera

Tabella dati CIP di lettura leggere dati da un altro controllore.

I tipi di Source e di Destination devono corrispondere.

Tabella dati CIP di scrittura scrivere dati in un altro controllore.

I tipi di Source e di Destination devono corrispondere.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 157

Page 158: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Riconfigurare un modulo di I/O

Utilizzare il messaggio Riconfigurazione modulo per inviare nuove informazioni di configurazione a un modulo di I/O. Durante la riconfigurazione:

• I moduli di ingresso continuano a inviare dati di ingresso al controllore.

• I moduli di uscita continuano a controllare i propri dispositivi di uscita.

Un messaggio di Riconfigurazione modulo richiede le seguenti proprietà di configurazione:

Esempio: Per riconfigurare un modulo di I/O:

1. Impostare il relativo membro del tag di configurazione del modulo al nuovo valore.

2. Inviare un messaggio di Riconfigurazione modulo al modulo.

Quando reconfigure[5] viene impostato, impostare l’allarme di livello massimo a 60 per il modulo locale nello slot 4. Il messaggio di Riconfigurazione modulo invierà il nuovo valore di allarme al modulo. L’istruzione one shot impedisce al ramo di inviare più messaggi al modulo mentre reconfigure[5] è attivo.

Ladder

Testo strutturato

IF reconfigure[5] AND NOT reconfigure[6]THEN

Local:4:C.Ch0Config.HAlarmLimit := 60;

IF NOT change_Halarm.EN THEN

MSG(change_Halarm);

END_IF;

END_IF;

reconfigure[6] := reconfigure[5];

In questa proprietà Selezionare

Message Type Module Reconfigure

158 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 159: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Specificare messaggi CIP generici

Un messaggio CIP generico esegue un’azione specifica su un modulo I/O.

Se si desidera In questa proprietà Digitare o selezionare

Eseguire una prova a impulsi su un modulo di uscita digitale

Message Type CIP generico

Service Type Pulse Test

Source nome_tag di tipo INT [5]

Questa matrice contiene:

nome_tag[0] maschera a bit dei punti da testare (testare solo un punto alla volta)

nome_tag[1] riservato, lasciare 0

nome_tag[2] ampiezza di impulso (in centinaia di μsec, generalmente 20)

nome_tag[3] ritardo dell’attraversamento dello zero per l’I/O ControlLogix (in centinaia di μsec, generalmente 40)

nome_tag[4] verifica ritardo

Destination lasciare vuoto

Ripristinare i fusibili elettronici di un modulo di uscita digitale

Message Type CIP generico

Service Type Reset Electronic Fuse

Source nome tag di tipo DINT

Questo tag rappresenta una maschera a bit dei punti su cui ripristinare i fusibili.

Destination lasciare vuoto

Azzerare la diagnostica agganciata di un modulo di ingresso digitale

Message Type CIP generico

Service Type Reset Latched Diagnostics (I)

Source nome_tag di tipo DINT

Questo tag rappresenta una maschera a bit dei punti su cui ripristinare la diagnostica.

Azzerare la diagnostica agganciata di un modulo di uscita digitale

Message Type CIP generico

Service Type Reset Latched Diagnostics (O)

Source nome_tag di tipo DINT

Questo tag rappresenta una maschera a bit dei punti su cui ripristinare la diagnostica.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 159

Page 160: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Specificare messaggi per PLC-5

Usare i tipi di messaggio PLC-5 per comunicare con controllori PLC-5.

Sganciare l’allarme di un modulo di ingresso analogico

Message Type CIP generico

Service Type Selezionare l’allarme da sganciare:

• Unlatch All Alarms (I)

• Unlatch Analog High Alarm (I)

• Unlatch Analog High High Alarm (I)

• Unlatch Analog Low Alarm (I)

• Unlatch Analog Low Low Alarm (I)

• Unlatch Rate Alarm (I)

Instance Canale dell’allarme da sganciare

Sganciare l’allarme di un modulo di uscita analogico

Message Type CIP generico

Service Type Selezionare l’allarme da sganciare:

• Unlatch All Alarms (O)

• Unlatch High Alarm (O)

• Unlatch Low Alarm (O)

• Unlatch Ramp Alarm (O)

Instance Canale dell’allarme da sganciare

Se si desidera In questa proprietà Digitare o selezionare

Selezionare questo comando Se si desidera

Lettura per PLC5 Leggere dati di tipo intero a 16 bit, a virgola mobile o stringa e conservare l’integrità dei dati. Vedere Tipi di dati per messaggi di lettura e scrittura per PLC5 a pagina 161.

Scrittura per PLC5 Scrivere dati di tipo intero a 16 bit, a virgola mobile o stringa e conservare l’integrità dei dati. Vedere Tipi di dati per messaggi di lettura e scrittura per PLC5 a pagina 161.

Lettura a parole per PLC5 Leggere una serie contigua di parole a 16 bit nella memoria del PLC-5 a prescindere dal tipo di dati.

Questo comando inizia dall’indirizzo specificato come Elemento Source e legge in sequenza il numero delle parole a 16 bit richieste.

I dati dall’Elemento Source vengono memorizzati, a partire dall’indirizzo specificato come tag di destinazione.

Scrittura a parole per PLC5 Scrivere parole contigue di 16 bit dalla memoria del Logix5000 alla memoria del PLC-5, a prescindere dal tipo di dati.

Questo comando inizia dall’indirizzo specificato come Tag Source e legge in sequenza il numero delle parole a 16 bit richieste.

I dati dall’Elemento Source vengono memorizzati, a partire dall’indirizzo specificato come tag di destinazione nel processore PLC-5.

160 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 161: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

La seguente tabella mostra i tipi di dati da usare con messaggi di lettura e scrittura per PLC5.

I comandi di Lettura e di Scrittura per PLC5 funzionano anche con i processori SLC 5/03 (OS303 e superiori), i processori SLC 5/04 (OS402 e superiori) e i processori SLC 5/05.

I seguenti schemi mostrano le differenze tra i comandi specializzati e a parole. L’esempio utilizza comandi di lettura da un processore PLC-5 ad un controllore Logix5000.

Tipi di dati per messaggi di lettura e scrittura per PLC5

Per il tipo dati PLC-5 Usare il tipo dati Logix5000

B INT

F REAL

N INT

DINT (scrivere valori DINT su un controllore PLC-5 solo se il valore è ≥ −32 768 e ≤ 32 767.)

S INT

ST STRING

parole di 16 bit nel processore PLC-5

parole di 32 bit nel controllore Logix5000

I comandi specializzati mantengono la struttura ed il valore dei dati.

1

2

3

4

Comando di lettura specializzato

1

2

3

4

parole di 16 bit nel processore PLC-5

parole di 32 bit nel controllore Logix5000

I comandi a parole occupano i tag di destinazione in modo contiguo. La struttura ed il valore dei dati cambiano a seconda del tipo di dati di destinazione.

1

2

3

4

Comando di lettura a parole

1

3

2

4

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 161

Page 162: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Specificare messaggi per SLC

Usare i tipi di messaggio SLC per comunicare con controllori SLC e MicroLogix. La seguente tabella mostra i tipi di dati cui l’istruzione consente di accedere. La tabella mostra anche il tipo dati Logix5000 corrispondente.

Specificare messaggi di trasferimento a blocchi

I messaggi di trasferimento a blocchi sono usati per comunicare con moduli a trasferimento a blocchi su una rete I/O remoto universale.

Seguire queste linee guida per configurare un messaggio di trasferimento a blocchi:

• I tag di origine (per i BTW) e di destinazione (per i BTR) devono essere abbastanza grandi da accettare i dati richiesti, eccetto le strutture MESSAGE, AXIS e MODULE.

• Specificare quanti interi a 16 bit (INT) inviare o ricevere. È possibile specificare da 0 a 64 interi.

Per il tipo dati SLC o MicroLogix Usare il tipo dati Logix5000

F REAL

L (controllori MicroLogix 1200 e 1500) DINT

N INT

Se si desidera Selezionare questo comando

leggere dati da un modulo a trasferimento a blocchi.

Questo tipo di messaggio sostituisce l’istruzione BTR.

Trasferimento a blocchi di lettura

scrivere dati ad un modulo a trasferimento a blocchi.

Questo tipo di messaggio sostituisce l’istruzione BTW.

Trasferimento a blocchi di scrittura

Se si desidera che Specificare

il modulo di trasferimento a blocchi determini il numero di interi a 16 bit da inviare (BTR).

0 per il numero di elementi

il controllore invii 64 interi (BTW).

162 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 163: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Specificare messaggi per PLC-3

I messaggi per PLC-3 sono rivolti ai processori PLC-3.

Selezionare questo comando Se si desidera

Lettura per PLC3 leggere dati di tipo intero o REAL.

Per i numeri interi, questo comando legge interi a 16 bit dal processore PLC-3 che memorizza in matrici di dati SINT, INT o DINT del controllore Logix5000, e gestisce l’integrità dei dati.

Questo comando, inoltre, legge i dati a virgola mobile dal PLC-3 e li memorizza in un tag di tipo di dati REAL del controllore Logix5000.

Scrittura per PLC3 scrivere dati di tipo intero o REAL.

Questo comando scrive dati SINT o INT nel file intero del PLC-3 e gestisce l’integrità dei dati. È possibile scrivere dati DINT purché essi rientrino nel tipo di dati INT (−32 768 ≥ dati ≤ 32 767).

Questo comando, inoltre, scrive dati di tipo REAL dal controllore Logix5000 in un file a virgola mobile di PLC-3.

Lettura a parole per PLC3 leggere una serie contigua di parole a 16 bit nella memoria del PLC-3 a prescindere dal tipo di dati.

Questo comando inizia dall’indirizzo specificato come Elemento Source e legge in sequenza il numero delle parole a 16 bit richieste.

I dati dall’Elemento Source vengono memorizzati, a partire dall’indirizzo specificato come tag di destinazione.

Scrittura a parole per PLC3 scrivere parole contigue di 16 bit dalla memoria del Logix5000 alla memoria del PLC-3, a prescindere dal tipo di dati.

Questo comando inizia dall’indirizzo specificato come Tag Source e legge in sequenza il numero delle parole a 16 bit richieste.

I dati dall’Elemento Source vengono memorizzati a partire dall’indirizzo specificato come Elemento di destinazione nel processore PLC-3.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 163

Page 164: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

I seguenti schemi mostrano le differenze tra i comandi specializzati e a parole. L’esempio utilizza comandi di lettura da un processore PLC-3 ad un controllore Logix5000.

Specificare messaggi per PLC-2

I messaggi per PLC-2 sono rivolti ai processori PLC-2.

Questo messaggio di trasferimento utilizza parole a 16 bit, pertanto assicurarsi che il tag del Logix5000 memorizzi correttamente i dati trasferiti (in genere come una matrice INT).

parole di 16 bit nel processore PLC-3

parole di 32 bit nel controllore Logix5000

I comandi specializzati mantengono la struttura ed il valore dei dati.

1

2

3

4

Comando di lettura specializzata

1

2

3

4

parole di 16 bit nel processore PLC-3

parole di 32 bit nel controllore Logix5000

I comandi a parole occupano i tag di destinazione in modo contiguo. La struttura ed il valore dei dati cambiano a seconda del tipo di dati di destinazione.

1

2

3

4

Comando di lettura a parole

1

3

2

4

Selezionare questo comando Se si desidera

Lettura non protetta per PLC2 leggere parole a 16 bit da qualsiasi area della tabella dati del PLC-2 o dal file di compatibilità con il PLC-2 di un altro processore.

Scrittura non protetta per PLC2 scrivere parole a 16 bit in qualsiasi area della tabella dati del PLC-2 o dal file di compatibilità con il PLC-2 di un altro processore.

164 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 165: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Esempi di configurazione MSG:

I seguenti esempi mostrano tag ed elementi di origine e destinazione per varie combinazioni di controllore.

Per le istruzioni MSG che hanno origine da un controllore Logix5000 e che scrivono in un altro controllore:

Per le istruzioni MSG che hanno origine da un controllore Logix5000 e che leggono da un altro controllore:

Percorso del messaggio Origine e Destinazione di esempio

Logix5000 → Logix5000 tag di origine matrice_1[0]

tag di destinazione matrice_2[0]

È possibile utilizzare un tag alias al posto del tag di origine (nel controllore Logix5000 di partenza).

Non è possibile utilizzare un alias al posto del tag di destinazione. La destinazione deve essere un tag base.

Logix5000 → PLC-5

Logix5000 → SLC

tag di origine matrice_1[0]

elemento di destinazione

N7:10

È possibile utilizzare un tag alias al posto del tag di origine (nel controllore Logix5000 di partenza).

Logix5000 → PLC-2 tag di origine matrice_1[0]

elemento di destinazione

010

Percorso del messaggio: Origine e Destinazione di esempio

Logix5000 → Logix5000 tag di origine matrice_1[0]

tag di destinazione matrice_2[0]

Non è possibile utilizzare un tag alias al posto del tag di origine. L’origine deve essere un tag base.

È possibile utilizzare un tag alias al posto del tag di destinazione (nel controllore Logix5000 di partenza).

Logix5000 → PLC-5

Logix5000 → SLC

elemento di origine N7:10

tag di destinazione matrice_1[0]

È possibile utilizzare un tag alias al posto del tag di destinazione (nel controllore Logix5000 di partenza).

Logix5000 → PLC-2 elemento di origine 010

tag di destinazione matrice_1[0]

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 165

Page 166: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Specificare i dettagli di comunicazione

Quando si configura un’istruzione MSG, è necessario specificare le seguenti informazioni nella scheda Comunicazione.

Specificare un percorso

Il percorso descrive l’instradamento del messaggio per raggiungere la destinazione. Utilizza nomi dalla configurazione I/O del controllore, numeri digitati o entrambi.

Specificare un percorso

Specificare un metodo di comunicazione o l’indirizzo di un modulo

Scegliere un’opzione cache

Se Allora

La configurazione I/O del controllore ha il modulo che riceve il messaggio.

Usare il pulsante Browse per selezionare il modulo di comunicazione locale.

La configurazione I/O del controllore ha solo il modulo di comunicazione locale.

1. Usare il pulsante Browse per selezionare il modulo di comunicazione locale.

2. Digitare il resto del percorso.

La configurazione I/O del controllore non ha nessuno dei moduli necessari per il messaggio.

Digitare il percorso.

166 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 167: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Per digitare un percorso, usare il seguente formato:

porta, indirizzo_successivo, porta, indirizzo_successivo, …

Esempio

La configurazione I/O del controllore ha il modulo che riceve il messaggio.

La configurazione I/O del controllore ha solo il modulo di comunicazione locale.

La configurazione I/O del controllore non ha nessuno dei moduli necessari per il messaggio.

Fare clic sul pulsante Browsee selezionare il modulo.

Andare al modulo di comunicazione locale.

Uscire dalla porta EtherNet/IP….

all’indirizzo 10.10.10.10.

Attraversare il backplane…

fino al modulo nello slot 0.

fino al modulo di comunicazione locale nello slot 1

Uscire dalla porta ControlNet….

fino al nodo 4

Attraversare il backplane…

fino al modulo nello slot 0.

Attraversare il backplane…

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 167

Page 168: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Dove È

Per questa rete Tipo

porta backplane 1

DF1 (seriale, canale seriale 0)

2

ControlNet

EtherNet/IP

DH+ canale A

DH+ canale B 3

DF1 canale 1 (canale seriale 1)

indirizzo_successivo

backplane numero di slot del modulo

DF1 (seriale) l’indirizzo della stazione (0–254)

ControlNet il numero di nodo (1–99 decimale)

DH+ 8# seguito dal numero di nodo (1–77 ottale)

Ad esempio, per specificare l’indirizzo di nodo ottale di 37, digitare 8#37.

EtherNet/IP È possibile specificare un modulo su una rete Ethernet/IP utilizzando uno di questi formati:

Indirizzo IP (ad esempio, 10.10.10.10)

Indirizzo IP:Porta (ad esempio, 10.10.10.10:24)

Nome DNS (ad esempio, tanks)

Nome DNS:Porta (ad esempio, tanks:24)

168 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 169: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Per trasferimenti a blocchi

Per messaggi di trasferimento a blocchi, aggiungere i seguenti moduli alla configurazione I/O del controllore:

Specificare un metodo di comunicazione o l’indirizzo di un modulo

Usare la seguente tabella per scegliere un metodo di comunicazione o l’indirizzo di un modulo per il messaggio.

Per trasferimenti a blocchi sulla rete

Aggiungere questi moduli alla configurazione I/O

ControlNet • modulo di comunicazione locale (ad es., modulo 1756-CNB)

• modulo adattatore remoto (ad es., modulo 1771-ACN)

Universal Remote I/O • modulo di comunicazione locale (ad es., modulo 1756-DHRIO)

• un modulo adattatore remoto (ad es., modulo 1771-ASB) per ogni rack, o parte di rack, dello chassis

• modulo di trasferimento a blocchi (facoltativo)

Se il dispositivo di destinazione è un

Selezionare E specificare

Controllore Logix5000 CIP non sono necessarie altre informazioni

Controllore PLC-5 su una rete EtherNet/IP

Controllore PLC-5 su una rete ControlNet

Controllore SLC 5/05

Controllore PLC-5 su una rete DH+

DH+ Canale: Canale A o B del modulo 1756-DHRIO collegato alla rete DH+

Controllore SLC su una rete DH+ Collegamento di origine:

ID del collegamento assegnato al backplane del Controllore nella tabella di instradamento del modulo 1756-DHRIO. (Il nodo di origine della tabella di instradamento è automaticamente il numero di slot del Controllore.)

Processore PLC-3 Collegamento di destinazione

ID del collegamento DH+ remoto dove risiede il dispositivo di destinazione

Processore PLC-2 Nodo di destinazione: Indirizzo della stazione del dispositivo di destinazione; ottale.

Se c’è un solo collegamento DH+ e non è stato utilizzato il software RSLinx per configurare il modulo DH/RIO per collegamenti remoti, specificare 0 sia per il Collegamento di origine che per il Collegamento di destinazione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 169

Page 170: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Scegliere un’opzione cache

A seconda di come si configura un’istruzione MSG, può utilizzare una connessione per inviare o ricevere dati.

Se un’istruzione MSG usa una connessione, si ha la possibilità di lasciare aperta la connessione (cache) o chiuderla quando la trasmissione del messaggio è terminata.

Applicazione su una workstation che riceve un messaggio non richiesto instradato su una rete Ethernet/IP o una rete ControlNet tramite RSLinx.

CIP con ID origine

(Ciò consente all’applicazione di ricevere i dati da un Controllore.)

Collegamento di origine:

ID remoto dell’argomento nel software RSLinx

Collegamento di destinazione:

Impostazione dell’ID di collegamento virtuale in RSLinx (0-65535)

Nodo di destinazione: ID di destinazione (0–77 ottale) fornito dall’applicazione ad RSLinx Come argomento DDE in RSLinx, usare 77.

Il numero di slot del controllore ControlLogix viene utilizzato come Nodo di origine.

modulo di trasferimento a blocchi su una rete I/O remoto universale

RIO Canale: Canale A o B del modulo 1756-DHRIO collegato alla rete RIO

Rack Numero di rack (ottale) del modulo

Gruppo Numero di gruppo del modulo

Slot Numero dello slot in cui si trova il modulo

modulo di trasferimento a blocchi su una rete ControlNet

ControlNet Slot Numero dello slot in cui si trova il modulo

Se il dispositivo di destinazione è un

Selezionare E specificare

Tipo di messaggio Metodo di comunicazione Connessione

Lettura o scrittura tabella dati CIP ✓

PLC2, PLC3, PLC5, o SLC (tutti i tipi) CIP

CIP con ID origine

DH+ ✓

CIP generico a scelta (1)

Trasferimento a blocchi di lettura o scrittura ✓

(1) È possibile connettere i messaggi CIP generici. Per la maggior parte delle applicazioni, tuttavia, si consiglia di lasciare i messaggi CIP generici non connessi.

Se Allora

Si mette in cache la connessione

La connessione resta aperta al termine dell’istruzione MSG. Questo ottimizza i tempi di esecuzione. L’apertura di una connessione ogni volta che si deve eseguire un messaggio incrementa il tempo di esecuzione.

Non si mette in cache la connessione

La connessione viene chiusa al termine dell’istruzione MSG. In questo modo la connessione viene liberata per altri usi.

170 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 171: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Il controllore ha i seguenti limiti in termini di numero di connessioni che è possibile mettere in cache:

Se più messaggi vanno allo stesso dispositivo, i messaggi possono essere in grado di condividere una connessione.

Se si possiede questo software e versione firmware

Allora è possibile mettere in cache

11.x o precedenti • messaggi di trasferimento a blocchi fino a 16 connessioni

• altri tipi di messaggi fino a 16 connessioni

12.x o successive fino a 32 connessioni

Se le istruzioni MSG sono dirette a E sono Allora

diversi dispositivi Ogni istruzione MSG usa 1 connessione.

lo stesso dispositivo attivati contemporaneamente Ogni istruzione MSG usa 1 connessione.

NON attivati contemporaneamente Le istruzioni MSG condividono la connessione (insieme contano come 1 connessione).

ESEMPIO Condivisone di una connessione

Se il controllore alterna tra l’invio di un messaggio di lettura a trasferimento di blocchi e un messaggio di scrittura a trasferimento di blocchi, insieme entrambi i messaggi contano come 1 connessione. Mettere in cache entrambi i messaggi conta come 1 nell’elenco della cache.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 171

Page 172: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Regole generali

Quando si pianificano e si programmano le istruzioni MSG, seguire queste regole generali

Regola Dettagli

1. Per ogni istruzione MSG, creare un tag di controllo.

Ogni istruzione MSG richiede il proprio tag di controllo.

• Tipo di dati = MESSAGE

• Ambito = controllore

• Il tag non può far parte di una matrice né di un tipo di dati definito dall’utente.

2. Mantenere i dati di sorgente e/o destinazione nell’ambito del controllore.

Un’istruzione MSG è in grado di accedere solo ai tag che si trovano nella cartella dei tag del controllore (ambito del controllore).

3. Se il MSG è diretto a un dispositivo che usa numeri interi a 16 bit, usare un buffer di INT nei MSG e DINT di tutto il progetto.

Se il messaggio è diretto a un dispositivo che usa numeri interi a 16 bit, come un controllore PLC-5® o SLC 500™ e trasferisce numeri interi (non REAL), usare un buffer di INT nel messaggio e DINT in tutto il progetto.

Questo aumenta l’efficienza del progetto perché i controllori Logix lavorano con maggior efficienza e usano meno memoria quando lavorano con numeri interi a 32 bit (DINT).

Per passare da INT a DINT, vedere Logix5000 Controllori Logix5000 – Procedure comuni, pubblicazione 1756-PM001.

4. Mettere in cache i messaggi connessi che vengono eseguiti più frequentemente.

Mettere in cache la connessione per le istruzioni MSG che vengono eseguite più frequentemente, fino al numero massimo consentito per la propria versione del controllore.

Questo ottimizza i tempi di esecuzione perché il controllore non deve aprire una connessione ogni volta che il messaggio viene eseguito.

5. Per attivare più di 16 MSG per volta, usare una qualche strategia di gestione.

Se vengono attivati più di 16 MSG per volta, alcune istruzioni MSG potrebbero subire dei ritardi nell’entrare in coda. Per garantire l’esecuzione di ogni messaggio, usare una delle seguenti opzioni:

• Attivare ogni messaggio in sequenza.

• Attivare i messaggi in gruppi.

• Programmare un messaggio affinché comunichi con più dispositivi. Per ulteriori informazioni, vedere Logix5000 Controllori Logix5000 – Procedure comuni, pubblicazione 1756-PM001.

• Programmare la logica affinché coordini l’esecuzione dei messaggi. Per ulteriori informazioni, vedere Logix5000 Controllori Logix5000 – Procedure comuni, pubblicazione 1756-PM001.

6. Mantenere il numero di MSG non connessi e non in cache inferiore del numero di buffer non connessi.

Il controllore può avere 10–40 buffer non connessi. Il valore di default è 10.

• Se tutti i buffer non connessi sono utilizzati quando un’istruzione lascia la coda dei messaggi, l’istruzione subisce un errore e non trasferisce i dati.

• È possibile aumentare il numero di buffer non connessi (max. 40) ma continuare a seguire la regola 5.

• Per aumentare il numero di buffer non connessi, vedere Logix5000 Controllori Logix5000 – Procedure comuni, pubblicazione 1756-PM001.

172 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 173: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Get System Value (GSV) and Set System Value (SSV)

Le istruzioni GSV/SSV servono per ottenere ed impostare i dati di sistema del controllore memorizzati negli oggetti.

Operandi:

Ladder

Testo strutturato

Gli operandi sono uguali a quelli usati per le istruzioni GSV e SSV ladder.

Descrizione: Le istruzioni GSV/SSV servono per ottenere ed impostare i dati di sistema del controllore memorizzati negli oggetti. Il controllore

Operando Tipo Formato Descrizione

Class name nome nome dell’oggetto

Instance name nome nome dell’oggetto specifico, quando l’oggetto richiede il nome

Attribute Name nome attributo dell’oggetto

il tipo di dati dipende dall’attributo selezionato

Destination (GSV) SINT

INT

DINT

REAL

struttura

tag destinazione dei dati dell’attributo

Source (SSV) SINT

INT

DINT

REAL

struttura

tag tag contenente i dati che si desidera copiare nell’attributo

GSV(ClassName,InstanceName,AttributeName,Dest);

SSV(ClassName,InstanceName,AttributeName,Source);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 173

Page 174: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

memorizza i dati di sistema in oggetti. Non c’è un file di stato come nel processore PLC-5.

Quando è abilitata, l’istruzione GSV recupera le informazioni specifiche e le inserisce nella destinazione. Quando è abilitata, l’istruzione SSV imposta l’attributo specifico con i dati dell’origine.

Quando si immette un’istruzione GSV/SSV, il software di programmazione visualizza le classi di oggetto valide, i nomi degli oggetti e i nomi degli attributi di ciascuna istruzione. Per l’istruzione GSV è possibile ottenere i valori per tutti gli attributi disponibili. Nel caso dell’istruzione SSV, il software visualizza solo quegli attributi che è possibile impostare (SSV).

Il paragrafo Oggetti GSV/SSV definisce gli attributi di ciascun oggetto ed i relativi tipi di dati. Ad esempio, l’attributo MajorFaultRecord dell’oggetto Program richiede un tipo di dati DINT[11].

ATTENZIONE Utilizzare le istruzioni GSV/SSV con cautela. Apportare modifiche agli oggetti può causare un funzionamento imprevisto del controllore o rischi per le persone.

È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

Le istruzioni GSV e SSV scrivono o leggono da un membro all’ altro di un tag. Se il tag è troppo piccolo, le istruzioni non scrivono né leggono i dati ma registrano un errore minore.

Esempio 1

Il membro_A è troppo piccolo per l’attributo. L’istruzione GSV scrive l’ultimo valore nel membro_B.

Esempio 2

My_Tag è troppo piccolo per l’attributo. L’istruzione GSV si ferma e registra un errore minore.

174 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 175: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esecuzione:

Si verifica un errore minore se Tipo errore Codice errore

l’indirizzo dell’oggetto non è valido 4 5

si è specificato un oggetto che non supporta GSV/SSV

4 6

l’attributo non è valido 4 6

non si sono fornite informazioni sufficienti per un’istruzione SSV

4 6

la destinazione GSV non è sufficientemente grande da mantenere i dati richiesti

4 7

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

l’istruzione viene eseguita Richiede o imposta il valore specificato. Richiede o imposta il valore specificato.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 175

Page 176: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Oggetti GSV/SSV Quando si immette un’istruzione GSV/SSV, si specifica l’oggetto e l’attributo a cui si vuole accedere. In alcuni casi vi sarà più di una presenza dello stesso tipo di oggetto, per cui è necessario specificare anche il nome dell’oggetto. Per esempio vi possono essere vari task nell’applicazione. Ogni task ha il proprio oggetto TASK a cui si può accedere con il nome del task.

È possibile accedere ai seguenti oggetti:

ATTENZIONE Nel caso dell’istruzione GSV, solo la dimensione specificata di dati viene copiata nella destinazione. Se, per esempio, l’attributo viene definito come SINT e la destinazione è un DINT, solo gli 8 bit meno significativi della destinazione DINT verranno aggiornati mentre i rimanenti 24 bit resteranno immutati.

Per informazioni su questo oggetto Consultare questa pagina o pubblicazione

AXIS ControlLogix Motion Module Setup and Configuration Manual, pubblicazione 1756-UM006

CONTROLLER 177

CONTROLLERDEVICE 178

CST 179

DF1 181

FAULTLOG 184

MESSAGE 185

MODULE 187

MOTIONGROUP 188

PROGRAM 189

ROUTINE 190

SERIALPORT 190

TASK 192

WALLCLOCKTIME 194

176 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 177: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Accesso all’oggetto CONTROLLER

L’oggetto CONTROLLER fornisce informazioni di stato riguardo l’esecuzione di un controllore.

Attributo Tipo di dati Istruzione Descrizione

TimeSlice INT GSV

SSV

Percentuale di CPU disponibile assegnata alla comunicazione.

Valori validi sono 10–90. Questo valore non può essere modificato quando il selettore a chiave del controllore è in posizione esecuzione.

ControllerLogTotalEntryCount

DINT SSV

GSV

Numero di voci del registro del controllore dall’ultimo aggiornamento del firmware.

Il numero viene azzerato se la RAM assume uno stato di errore.

Il numero ha come limite il DINT più elevato.

ControllerLogExecutionModificationCount

DINT SSV

GSV

Numero di voci del registro del controllore che hanno avuto origine da una modifica delle proprietà di un programma/task, una modifica online o una modifica del timeslice del controllore. Può inoltre essere configurato in modo da comprendere le voci di registro che hanno origine dalle forzature.

Il numero viene azzerato se la RAM assume uno stato di errore.

Il numero non ha come limite il DINT maggiore e può verificarsi un rollover del contatore.

ControllerLogUnsavedEntryCount

DINT GSV Numero di voci nel registro del controllore che devono ancora essere memorizzate in un supporto rimovibile.

Va da 0 al numero massimo di voci.

ControllerLogAutoWrite BOOL MSG Flag usato per determinare se la scrittura automatica del registro del controllore sul supporto rimovibile è abilitata.

0 = la scrittura automatica è disabilitata (errore)

1 = il registro del controllore tenta di scrivere sul supporto rimovibile quando il registro è pieno all’80 %.

ExecutionCountConfigureMask

DINT MSG Matrice di bit usata per determinare cosa causa l’incremento di Modify Execution Count.

0 = default (tutto tranne le forzature)

1 = forzature comprese (tutto + forzature).

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 177

Page 178: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Accesso all’oggetto CONTROLLERDEVICE

L’oggetto CONTROLLERDEVICE identifica l’hardware fisico del controllore.

Attributo Tipo di dati Istruzione Descrizione

DeviceName SINT[33] GSV La stringa ASCII che identifica il numero del catalogo del Controllore e della scheda di memoria.

Il primo byte contiene un conteggio del numero di caratteri ASCII riportati nella stringa matrice.

ProductCode INT GSV Identifica il tipo di controllore

ProductRev INT GSV Indica la revisione corrente del prodotto. Il display deve essere esadecimale.

Il byte basso contiene la revisione principale; il byte alto contiene la revisione secondaria.

SerialNumber DINT GSV Numero seriale del dispositivo.

Il numero seriale viene assegnato al dispositivo al momento della sua costruzione.

Controllore Logix Codice prodotto

CompactLogix5320 43

CompactLogix5330 44

CompactLogix5335E 65

ControlLogix5550 3

ControlLogix5553 50

ControlLogix5555 51

ControlLogix5561 54

ControlLogix5562 55

ControlLogix5563 56

DriveLogix5720 48

FlexLogix5433 41

FlexLogix5434 42

SoftLogix5860 15

178 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 179: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Accesso all’oggetto CST

Status INT GSV Bit che indicano lo stato:

I bit 3–0 sono riservati

Bit di stato del dispositivo

Bit 7–4: Significato:0000 riservato

0001 aggiornamento memoria flash in corso

0010 riservato

0011 riservato

0100 la memoria flash è difettosa

0101 in errore

0110 esecuzione

0111 programmazione

Bit di stato di errore

Bit 11–8: Significato:0001 errore minore recuperabile

0010 errore minore non recuperabile

0100 errore grave recuperabile

1000 errore grave non recuperabile

Bit di stato specifici del Logix5000

Bit 13–12: Significato:01 selettore a chiave in posizione esecuzione

10 selettore a chiave in posizione programmazione

11 selettore a chiave in posizione remoto

Bit 15–14 Significato

01 il controllore sta cambiando modalità

10 modalità debug se il controllore è inmodalità esecuzione

Type INT GSV Identifica il dispositivo come controllore.

Controllore = 14

Vendor INT GSV Identifica il produttore del dispositivo.

Allen-Bradley = 0001

Attributo Tipo di dati Istruzione Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 179

Page 180: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

L’oggetto CST (tempo di sistema coordinato) fornisce il tempo di sistema coordinato dei dispositivi di uno chassis.

Attributo Tipo di dati Istruzione Descrizione

CurrentStatus INT GSV Stato corrente del tempo di sistema coordinato. I bit indicano:

Bit: Significato:

0 errore hardware del timer: l’hardware del timer interno del dispositivo è in stato di errore

1 rampa abilitata: il valore corrente dei bit 16+ meno significativi del timer sale fino al valore richiesto invece di passare al valore più basso. Questi bit vengono manipolati tramite il metodo di sincronizzazione specifico della rete

2 tempo di sistema master: l’oggetto CST è una sorgente di tempo master nel sistema ControlLogix

3 sincronizzato: il CurrentValue a 64 bit dell’oggetto CST è sincronizzato da un oggetto CST master tramite un aggiornamento tempo di sistema

4 rete locale master: l’oggetto CST è la sorgente di tempo master della rete locale

5 in modalità relè: l’oggetto CST sta funzionando in modalità relè a tempo

6 rilevato master duplicato: è stato rilevato un master di tempo della rete locale duplicato. Questo bit è sempre 0 per i nodi a tempo.

7 non usato

8–9 00 = nodo a tempo dipendente01 = nodo a tempo master10 = nodo a relè a tempo 11 = non usato

10–15 non usato

CurrentValue DINT[2] GSV Valore corrente del timer. DINT[0] contiene i 32 bit più bassi; DINT[1] contiene i 32 bit più alti.

La sorgente del timer viene regolata in modo da combaciare con il valore fornito nei servizi di aggiornamento e tramite la sincronizzazione della rete di comunicazione locale. La regolazione viene fatta o salendo fino al valore richiesto o con un’impostazione immediata sul valore richiesto, così come riportato nell’attributo CurrentStatus.

180 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 181: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Accesso all’oggetto DF1

L’oggetto DF1 fornisce un’interfaccia verso il driver di comunicazione DF1 che è possibile configurare per la porta seriale.

Attributo Tipo di dati Istruzione Descrizione

ACKTimeout DINT GSV Il tempo entro cui ricevere un riscontro della trasmissione di un messaggio (solo punto a punto e master).

valore valido 0–32 767. Ritardo in conteggi di 20 msec. Il valore predefinito è 50 (1 secondo).

DiagnosticCounters INT[19] GSV Matrice di contatori diagnostici per il driver di comunicazione DF1.

offset parola DF1 punto a punto DF1 slave master0 firma (0x0043) firma (0x0042) firma (0x0044)1 bit modem bit modem bit modem2 pacchetti inviati pacchetti inviati pacchetti inviati3 pacchetti ricevuti pacchetti ricevuti pacchetti ricevuti4 pacchetti non consegnati pacchetti non consegnati pacchetti non consegnati5 non usato messaggi re-inviati messaggi re-inviati6 NAK ricevuti NAK ricevuti non usato7 ENQ ricevuti pacchetti di interrogazione

richiesti non usato8 pacchetti errati con NAK pacchetti errati senza ACK pacchetti errati senza ACK9 NAK inviati senza memoria senza memoria senza ACK non usato10 pacchetti duplicati ricevuti pacchetti duplicati ricevuti pacchetti duplicati ricevuti11 caratteri errati ricevuti non usato non usato12 conteggio recuperi DCD conteggio recuperi DCD conteggio recuperi DCD13 conteggio interruzioni modem conteggio interruzioni modem conteggio interruzioni modem14 non usato non usato massimo tempo di scansione priorità15 non usato non usato ultimo tempo di scansione priorità16 non usato non usato massimo tempo di scansione normale17 non usato non usato ultimo tempo di scansione normale18 ENQ inviati non usato non usato

DuplicateDetection SINT GSV Abilita il rilevamento di messaggi duplicati.

Valore: Significato:0 rilevamento messaggi duplicati disabilitatonon zero rilevamento messaggi duplicati disabilitato

EmbeddedResponseEnable SINT GSV Abilita la funzione di risposta integrata (solo punto a punto).

Valore: Significato:0 iniziato solo dopo averne ricevuto una (default)1 abilitato incondizionatamente

ENQTransmitLimit SINT GSV Il numero di richieste (ENQ) da inviare dopo un timeout di ACK (solo punto a punto).

Valori validi sono 0–127. Il valore di default è 3.

EOTSuppression SINT GSV Abilita la soppressione delle trasmissioni EOT in risposta a tutti i pacchetti di interrogazione (solo slave).

Valore: Significato:0 soppressione EOT disabilitata (disabilitata)non zero soppressione EOT abilitata

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 181

Page 182: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

ErrorDetection SINT GSV Indica lo schema di rilevamento errori.

Valore: Significato:0 BCC (default)1 CRC

MasterMessageTransmit SINT GSV Il valore corrente della trasmissione messaggi master (solo master).

Valore: Significato:0 tra interrogazioni delle stazioni1 in sequenza alle interrogazioni

(al posto del numero di stazione del master)

Il valore di default è 0.

NAKReceiveLimit SINT GSV Il numero di NAK ricevuti in risposta ad un messaggio prima di chiudere la trasmissione (solo comunicazione punto a punto).

Valori validi sono 0–127. Il valore di default è 3.

NormalPollGroupSize INT GSV Il numero di stazioni da interrogare nella matrice dei nodi ad interrogazione normale dopo l’interrogazione di tutte le stazioni nella matrice dei nodi ad interrogazione con priorità (solo master).

Valori validi sono 0–255. Il valore di default è 0.

PollingMode SINT GSV Modalità di interrogazione corrente (solo master).

Valore: Significato:0 basata su messaggi, ma non permette agli slave

di iniziare messaggi1 basata su messaggi, ma permette agli slave

di iniziare messaggi (default)2 trasferimento standard, con messaggio singolo per

scansione di nodo3 trasferimento standard, con più messaggi per

scansione di nodo

Il valore di default è 1.

ReplyMessageWait DINT GSV Il tempo (mentre si comporta da master) che bisogna attendere dopo il ricevimento di un ACK prima di interrogare lo slave per una risposta (solo slave).

Valore valido 0–65 535. Ritardo in unità da 20 msec. Il valore di default è 5 unità (100 msec).

StationAddress INT GSV L’indirizzo della stazione corrente della porta seriale.

Valori validi sono 0–254. Il valore di default è 0.

SlavePollTimeout DINT GSV Il tempo espresso in msec. che lo slave attende affinché il master esegua l’interrogazione prima che lo slave dichiari che è impossibilitato a trasmettere poiché il master è inattivo (solo slave).

valore valido 0–32 767. Ritardo in conteggi di 20 msec. Il valore di default è 3000 unità (1 minuto).

TransmitRetries SINT GSV Il numero di tentativi di invio di un messaggio senza ottenere un riconoscimento (solo master e slave).

Valori validi sono 0–127. Il valore di default è 3.

Attributo Tipo di dati Istruzione Descrizione

182 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 183: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Per applicare i valori per ciascuno degli attributi di DF1 in attesa:

1. Utilizzare un’istruzione SSV per impostare il valore per l’attributo in attesa.

È possibile impostare tutti gli attributi in attesa che si desidera utilizzando un’istruzione SSV per ogni attributo in attesa.

2. Utilizzare un’istruzione MSG per applicare il valore. L’istruzione MSG si applica ad ogni attributo in attesa che si è impostato. Configurare l’istruzione MSG come segue:

PendingACKTimeout DINT SSV Valore in attesa dell’attributo ACKTimeout.

PendingDuplicateDetection SINT SSV Valore in attesa dell’attributo DuplicateDetection.

PendingEmbeddedResponseEnable

SINT SSV Valore in attesa dell’attributo EmbeddedResponse.

PendingENQTransmitLimit SINT SSV Valore in attesa dell’attributo ENQTransmitLimit.

PendingEOTSuppression SINT SSV Valore in attesa dell’attributo EOTSuppression.

PendingErrorDetection SINT SSV Valore in attesa dell’attributo ErrorDetection.

PendingNormalPollGroupSize INT SSV Valore in attesa per l’attributo NormalPollGroupSize.

PendingMasterMessageTransmit

SINT SSV Valore in attesa per l’attributo MasterMessageTransmit.

PendingNAKReceiveLimit SINT SSV Valore in attesa per l’attributo NAKReceiveLimit.

PendingPollingMode SINT SSV Valore in attesa per l’attributo PollingMode.

PendingReplyMessageWait DINT SSV Valore in attesa per l’attributo ReplyMessageWait.

PendingStationAddress INT SSV Valore in attesa per l’attributo StationAddress.

PendingSlavePollTimeout DINT SSV Valore in attesa per l’attributo SlavePollTimeout.

PendingTransmitRetries SINT SSV Valore in attesa per l’attributo TransmitRetries.

Attributo Tipo di dati Istruzione Descrizione

Scheda di configurazione MSG

Campo Valore

Configuration Message Type CIP generico

Service Code 0d esad.

Object Type a2

Object ID 1

Object attribute lasciare vuoto

Source lasciare vuoto

Number of Elements 0

Destination lasciare vuoto

Comunication Path percorso di comunicazione verso se stesso (1,s dove s = numero di slot del controllore)

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 183

Page 184: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Accesso all’oggetto FAULTLOG

L’oggetto FAULTLOG fornisce informazioni sugli errori del controllore.

Attributo Tipo di dati Istruzione Descrizione

MajorEvents INT GSV

SSV

Il numero di errori gravi che si sono verificati dall’ultima volta che questo contatore è stato azzerato.

MinorEvents INT GSV

SSV

Il numero di errori minori che si sono verificati dall’ultima volta che questo contatore è stato azzerato.

MajorFaultBits DINT GSV

SSV

I singoli bit indicano il motivo dell’errore grave corrente.

Bit: Significato:1 perdita di alimentazione3 I/O4 esecuzione dell’istruzione (programma)5 programma di gestione errori6 watchdog7 stack8 cambiamento di modalità11 movimento

MinorFaultBits DINT GSV

SSV

I singoli bit indicano il motivo dell’errore minore corrente.

Bit: Significato:4 esecuzione dell’istruzione (programma)6 watchdog9 porta seriale10 batteria

184 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 185: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Accesso all’oggetto MESSAGE

È possibile accedere all’oggetto MESSAGE mediante le istruzioni GSV/SSV. Specificare il nome del tag del messaggio per determinare l’oggetto MESSAGE desiderato. L’oggetto MESSAGE fornisce un’interfaccia per impostare ed attivare la comunicazione peer-to-peer. Questo oggetto sostituisce il tipo di dati MG del processore PLC-5.

Per modificare un attributo MESSAGE, procedere in questo modo:

1. Utilizzare un’istruzione GSV per ottenere l’attributo MessageType e salvarlo in un tag.

2. Utilizzare un’istruzione SSV per impostare il MessageType su 0.

3. Utilizzare un’istruzione SSV per impostare l’attributo MESSAGE che si desidera modificare.

4. Utilizzare un’istruzione SSV per impostare l’attributo MessageType sul valore originario ottenuto al punto 1.

Attributo Tipo di dati Istruzione Descrizione

ConnectionPath SINT[130] GSV

SSV

Dati per l’impostazione del percorso di connessione. I primi due byte (byte basso e byte alto) rappresentano la lunghezza in byte del percorso di connessione.

ConnectionRate DINT GSV

SSV

Frequenza pacchetto richiesto della connessione.

MessageType SINT GSV

SSV

Specifica il tipo di messaggio.

Valore: Significato:0 non inizializzato

Port SINT GSV

SSV

Indica su quale porta deve essere inviato il messaggio.

Valore: Significato:1 backplane2 porta seriale

TimeoutMultiplier SINT GSV

SSV

Determina quando una connessione deve essere considerata scaduta e chiusa.

Valore: Significato:0 la connessione scadrà in un tempo pari a 4 volte la

frequenza di aggiornamento (default)

1 la connessione scadrà in un tempo pari ad 8 volte lafrequenza di aggiornamento

2 la connessione scadrà in un tempo pari ad 16 voltela frequenza di aggiornamento

UnconnectedTimeout DINT GSV

SSV

Il periodo di timeout è espresso in microsecondi per tutti i messaggi non connessi. Il valore di default è 30 000 000 microsecondi (30 secondi).

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 185

Page 186: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Esempio: Il seguente esempio modifica l’attributo ConnectionPath, in modo tale che il messaggio venga trasmesso a un controllore diverso. Quando msg_path è attivo, imposta il percorso del messaggio msg _1 al valore di msg_1_ path. Questo invia il messaggio a un controllore diverso.

Ladder

Testo strutturato

IF msg_path THEN

GSV(MESSAGE,msg_1,MessageType,msg_1_type);

SSV(MESSAGE,msg_1,MessageType,tag_a);

SSV(MESSAGE,msg_1,ConnectionPath,msg_1_path[0]);

SSV(MESSAGE,msg_1,MessageType,msg_1_type);

END_IF;

IF NOT msg_1.EN THEN

MSG(msg_1);

END_IF;

Dove È

msg_1 il messaggio con l’attributo che si vuole cambiare

msg_1_type tag che memorizza il valore dell’attributo MessageType

tag_a tag che memorizza uno 0.

msg_1_path tag che memorizza il nuovo percorso di collegamento per il messaggio

0 msg_path

Get System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeDest msg_1_type 2

GSVSet System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeSource tag_a 0

SSV

Set System ValueClass name MESSAGEInstance name msg_1Attribute Name ConnectionPathSource msg_1_path[0] 6

SSVSet System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeSource msg_1_type 2

SSV

1 /msg_1.EN

ENDNER

Type - CIP Data Table WriteMessage Control msg_1 ...

MSG

Get System ValueClass name MessageInstance name msg_1Attribute Name MessageTypeDest msg_1_type

2

Set System ValueClass name MessageInstance name msg_1Attribute Name MessageTypeSource tag_a

0

Set System ValueClass name MessageInstance name msg_1Attribute Name ConnectionPathSource msg_1path[0]

6

Set System ValueClass name MessageInstance name msg_1Attribute Name MessageTypeSource msg_1_type

2

Type – CIP Data Table WriteMessage Control msg_1

GSV SSV

SSV SSV

MSG

msg_path

msg_1.ENENDNER

186 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 187: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Accesso all’oggetto MODULE

L’oggetto MODULE fornisce informazioni sullo stato di un modulo. Per selezionare un determinato oggetto MODULE, impostare nell’operando Nome Oggetto dell’istruzione GSV/SSV il nome del modulo. Il modulo specificato deve essere presente nella sezione Configurazione I/O dell’organizer del controllore e deve avere un nome di dispositivo.

Attributo Tipo di dati Istruzione Descrizione

EntryStatus INT GSV Indica lo stato corrente dell’elemento di mappa specificato. Quando si esegue un’operazione di confronto, i 12 bit più bassi devono essere mascherati. Solo i bit 12–15 sono validi.

Valore: Significato:16#0000 Standby: il controllore è in fase di accensione.

16#1000 In errore: errore di una delle connessioni dell’oggettoMODULE associata al modulo. Questo valore non deveessere usato per stabilire se il modulo è in errore poichél’oggetto MODULE esce da questo stato periodicamentequando tenta di riconnettersi al modulo. Si consiglia invecedi verificare lo stato di Esecuzione (16#4000). Controllareche FaultCode sia diverso da 0 per determinare se unmodulo è guasto. Se vi è un errore, gli attributi FaultCode e FaultInforimangono validi fino a quando la condizione di errore nonviene corretta.

16#2000 Validazione: l’oggetto MODULE sta verificando l’integritàdell’oggetto MODULE prima di stabilire le connessionicon il modulo.

16#3000 Connessione in corso: l’oggetto MODULE sta iniziandole connessioni con il modulo.

16#4000 In esecuzione: tutte le connessioni con il modulo sonoattive ed i dati vengono trasferiti correttamente.

16#5000 Chiusura in corso: l’oggetto MODULE sta eseguendo lachiusura di tutte le connessioni con il modulo.

16#6000 Inibito: l’oggetto MODULE è inibito (il bitdi inibizione nell’attributo Modalità è impostato).

16#7000 In attesa: l’oggetto MODULE principale da cuidipende questo oggetto MODULE non è in esecuzione.

FaultCode INT GSV Un numero che, in caso di errore del modulo, lo identifica.

FaultInfo DINT GSV Fornisce informazioni specifiche sul codice di errore dell’oggetto MODULE.

ForceStatus INT GSV Indica lo stato delle forzature.

Bit: Significato:0 forzature installate (1=sì, 0-no)1 forzature abilitate (1=sì, 0=no)2–15 non usati

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 187

Page 188: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Accesso all’oggetto MOTIONGROUP

L’oggetto MOTIONGROUP fornisce informazioni sullo stato di un gruppo di assi del modulo servo. Specificare il nome del tag del gruppo assi per determinare l’oggetto MOTIONGROUP desiderato.

Instance DINT GSV Fornisce il numero di istanza di questo oggetto MODULE.

LEDStatus INT GSV Indica lo stato corrente del LED I/O posto sul frontale del Controllore.

Valore: Significato:0 LED spento: Nessun oggetto MODULE configurato per

il Controllore (nella Configurazione I/O dell’organizer delControllore non è presente alcun modulo).

1 Rosso lampeggiante: nessun oggetto MODULE inesecuzione.

2 Verde lampeggiante: almeno un oggetto MODULE nonè in esecuzione.

3 Verde fisso: tutti gli oggetti MODULE sono in esecuzione.

Nota: non inserire un nome di oggetto con questo attributo in quanto questo attributo si riferisce a tutto il gruppo di moduli.

Mode INT GSV

SSV

Indica la modalità corrente dell’oggetto MODULE.

Bit: Significato:0 Se è impostato, provoca un errore grave qualora una delle

connessioni dell’oggetto MODULE va in errore mentre ilControllore è in modalità esecuzione (RUN).

2 Se è impostato, fa sì che l’oggetto MODULE passi allostato Inibito dopo la chiusura di tutte le connessioni con ilmodulo.

Attributo Tipo di dati Istruzione Descrizione

Attributo Tipo di dati Istruzione Descrizione

Instance DINT GSV Fornisce il numero di istanza di questo oggetto MOTION_GROUP.

188 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 189: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Accesso all’oggetto PROGRAM

L’oggetto PROGRAM fornisce informazioni sullo stato di un programma. Specificare il nome del programma per determinare l’oggetto PROGRAM desiderato.

Attributo Tipo di dati Istruzione Descrizione

DisableFlag SINT GSV

SSV

Controlla l’esecuzione di questo programma.

Valore: Significato:0 esecuzione abilitata1 esecuzione disabilitata

Instance DINT GSV Fornisce il numero di istanza di questo oggetto PROGRAM.

LastScanTime DINT GSV

SSV

Il tempo impiegato per eseguire questo programma l’ultima volta che è stato eseguito. Tempo espresso in microsecondi.

MajorFaultRecord DINT[11] GSV

SSV

Registra gli errori gravi di questo programma

Si consiglia di creare una struttura definita dall’utente per semplificare l’accesso all’attributo MajorFaultRecord:

Nome: Tipo dati: Stile: Descrizione:

TimeLow DINT Decimale i 32 bit più bassi del valore di data e ora dell’errore

TimeHigh DINT Decimale i 32 bit più alti del valore di data e ora dell’errore

Type INT Decimale tipo di errore (programma, I/O, ecc.)

Code INT Decimale codice univoco per l’errore (dipende dal tipo di errore)

Info DINT[8] Esadecimale informazioni specifiche sull’errore (in base al tipo e al codiceerrore)

MaxScanTime DINT GSV

SSV

Tempo di esecuzione massimo registrato di questo programma. Tempo espresso in microsecondi.

MinorFaultRecord DINT[11] GSV

SSV

Registra gli errori minori di questo programma

Si consiglia di creare una struttura definita dall’utente per semplificare l’accesso all’attributo MinorFaultRecord:

Nome: Tipo dati: Stile: Descrizione:

TimeLow DINT Decimale i 32 bit più bassi del valore di data e ora dell’errore

TimeHigh DINT Decimale i 32 bit più alti del valore di data e ora dell’errore

Type INT Decimale tipo di errore (programma, I/O, ecc.)

Code INT Decimale codice univoco per l’errore (dipende dal tipo di errore)

Info DINT[8] Esadecimale informazioni specifiche sull’errore (in base al tipo e al codiceerrore)

SFCRestart INT GSV

SSV

non usato – riservato per uso futuro

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 189

Page 190: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Accesso all’oggetto Routine

L’oggetto ROUTINE fornisce informazioni sullo stato di una routine. Specificare il nome della routine per determinare l’oggetto ROUTINE desiderato.

Accesso all’oggetto SERIALPORT

L’oggetto SERIALPORT fornisce un’interfaccia alla porta di comunicazione seriale.

Attributo Tipo di dati Istruzione Descrizione

Instance DINT GSV Fornisce il numero di istanza di questo oggetto ROUTINE.

Valori validi sono 0–65 535.

Attributo Tipo di dati Istruzione Descrizione

BaudRate DINT GSV Specifica la velocità di trasmissione (baud rate).

Valori validi sono 110, 300, 600, 1200, 2400, 4800, 9600 e 19200 (default).

DataBits SINT GSV Indica il numero di bit di dati per carattere.

Valore: Significato:7 7 bit dati (solo ASCII)8 8 bit dati (default)

Parity SINT GSV Specifica la parità.

Valore: Significato:0 nessuna parità (no default)1 parità dispari (solo ASCII)2 parità pari

RTSOffDelay INT GSV Il tempo di ritardo per la disattivazione della linea RTS (Request To Send) dopo che l’ultimo carattere è stato trasmesso.

valore valido 0–32 767. Ritardo in conteggi di 20 msec. Il valore di default è 0 msec.

RTSSendDelay INT GSV Il tempo di ritardo per la trasmissione del primo carattere di un messaggio dopo l’attivazione della linea RTS.

valore valido 0–32 767. Ritardo in conteggi di 20 msec. Il valore di default è 0 msec.

StopBits SINT GSV Indica il numero di bit di stop.

Valore: Significato:1 1 bit di stop (default)2 2 bit stop (solo ASCII)

PendingBaudRate DINT SSV Valore in attesa dell’attributo BaudRate.

PendingDataBits SINT SSV Valore in attesa dell’attributo DataBits.

PendingParity SINT SSV Valore in attesa dell’attributo Parity.

190 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 191: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Per applicare i valori per uno degli attributi di SERIALPORT in attesa:

1. Utilizzare un’istruzione SSV per impostare il valore per l’attributo in attesa.

È possibile impostare tutti gli attributi in attesa che si desidera utilizzando un’istruzione SSV per ogni attributo in attesa.

2. Utilizzare un’istruzione MSG per applicare il valore. L’istruzione MSG si applica ad ogni attributo in attesa che si è impostato. Configurare le istruzioni MSG come segue:

PendingRTSOffDelay INT SSV Valore in attesa dell’attributo RTSOffDelay.

PendingRTSSendDelay INT SSV Valore in attesa dell’attributo RTSSendDelay.

PendingStopBits SINT SSV Valore in attesa dell’attributo StopBits.

Attributo Tipo di dati Istruzione Descrizione

Scheda di configurazione MSG

Campo Valore

Configuration Message Type CIP generico

Service Code 0d esad.

Object Type 6f esad.

Object ID 1

Object attribute lasciare vuoto

Source lasciare vuoto

Number of Elements 0

Destination lasciare vuoto

Comunication Path percorso di comunicazione verso se stesso (1,s dove s = numero di slot del Controllore)

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 191

Page 192: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Accesso all’oggetto TASK

L’oggetto TASK fornisce informazioni sullo stato di un task. Specificare il nome del task per determinare l’oggetto TASK desiderato.

Attributo Tipo di dati Istruzione Descrizione

DisableUpdateOutputs DINT GSV

SSV

Abilita o disabilita l’elaborazione delle uscite al termine del task

Per: Impostare l’attributo su:

abilita l’elaborazione delle uscite al termine del task

0

disabilita l’elaborazione delle uscite al termine del task

1 (o qualsiasi valore diverso da zero)

EnableTimeOut DINT GSV

SSV

Abilita o disabilita la funzione di timeout di un task evento.

Per: Impostare l’attributo su:

disabilitare la funzione di timeout

0

abilitare la funzione di timeout 1 (o qualsiasi valore diverso da zero)

InhibitTask DINT GSV

SSV

Impedisce l’esecuzione del task. Se un task è inibito, il controllo esegue la prescansione del task quando il controllore passa dalla modalità di programmazione a quella di esecuzione o test.

Per: Impostare l’attributo su:

abilitare il task 0 (default)

inibire (disabilitare) il task 1 (o qualsiasi valore diverso da zero)

Instance DINT GSV Fornisce il numero di istanza di questo oggetto TASK.

Valori validi sono 0–31.

LastScanTime DINT GSV

SSV

Il tempo impiegato per eseguire questo task l’ultima volta che è stato eseguito. Tempo espresso in microsecondi.

MaxInterval DINT[2] GSV

SSV

L’intervallo di tempo massimo tra esecuzioni successive del task. DINT[0] contiene i 32 bit meno significativi del valore; DINT[1] contiene i 32 bit più significativi del valore.

Un valore di 0 indica 1 o meno esecuzioni del task.

MaxScanTime DINT GSV

SSV

Tempo di esecuzione massimo registrato di questo programma. Tempo espresso in microsecondi.

MinInterval DINT[2] GSV

SSV

L’intervallo di tempo minimo tra esecuzioni successive del task. DINT[0] contiene i 32 bit meno significativi del valore; DINT[1] contiene i 32 bit più significativi del valore.

Un valore di 0 indica 1 o meno esecuzioni del task.

OverlapCount DINT GSV

SSV

Numero di volte in cui il task è stato attivato mentre era ancora in esecuzione. Valido per un evento o un task periodico.

Per azzerare il conteggio, impostare l’attributo su 0.

Priority INT GSV

SSV

La priorità relativa di questo task in confronto agli altri task.

Valori validi sono 1...15.

192 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 193: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Rate DINT GSV

SSV

Se il tipo di task è: L’attributo Rate specifica:

periodico Il periodo del task. Tempo espresso in microsecondi.

evento Il valore di timeout del task. Tempo espresso in microsecondi.

StartTime DINT[2] GSV

SSV

Il valore del WALLCLOCKTIME quando l’ultima esecuzione del task ha avuto inizio. DINT[0] contiene i 32 bit meno significativi del valore; DINT[1] contiene i 32 bit più significativi del valore.

Status DINT GSV

SSV

Fornisce informazioni sullo stato del task. Una volta che il controllore imposta uno di questi bit, il bit deve essere azzerato manualmente.

Per determinare se: Esaminare questo bit:

Un’istruzione EVNT ha attivato il task (solo task evento).

0

Un timeout ha attivato il task (solo task evento).

1

Si è verificata una sovrapposizione per questo task.

2

Watchdog DINT GSV

SSV

Tempo limite per l’esecuzione di tutti i programmi associati a questo task. Tempo espresso in microsecondi.

Se si inserisce 0, vengono assegnati questi valori:

Tempo: Tipo di task:

0,5 sec periodico o evento

5,0 sec continuo

Attributo Tipo di dati Istruzione Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 193

Page 194: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Accesso all’oggetto WALLCLOCKTIME

L’oggetto WALLCLOCKTIME fornisce una registrazione cronologica che il controllore utilizza per la schedulazione.

Attributo Tipo di dati Istruzione Descrizione

CSTOffset DINT[2] GSV

SSV

Offset positivo dal CurrentValue dell’oggetto CST (tempo di sistema coordinato, vedere pagina 179). DINT[0] contiene i 32 bit meno significativi del valore; DINT[1] contiene i 32 bit più significativi del valore.

Valore in μsecs. Il valore di default è 0.

CurrentValue DINT[2] GSV

SSV

Il valore corrente dell’ora dell’orologio. DINT[0] contiene i 32 bit meno significativi del valore; DINT[1] contiene i 32 bit più significativi del valore.

Il valore rappresenta il numero di microsecondi trascorsi dalle 0000 del 1 Gennaio 1972.

Gli oggetti CST e WALLCLOCKTIME sono matematicamente correlati nel Controllore. Ad esempio, se si sommano il CurrentValue del CST e il CTSOffset del WALLCLOCKTIME, il risultato è il CurrentValue del WALLCLOCKTIME.

DateTime DINT[7] GSV

SSV

La data e l’ora in formato leggibile.

DINT[0] anno

DINT[1] intero rappresentante il mese (1–12)

DINT[2] intero rappresentante il giorno (1–31)

DINT[3] ora (0–23)

DINT[4] minuto (0–59)

DINT[5] secondi (0–59)

DINT[6] microsecondi (0–999 999)

194 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 195: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Esempio di programmazione GSV/SSV

Get Fault Information

Nei seguenti esempi si utilizzano le istruzioni GSV per ottenere informazioni sugli errori.

Esempio 1: In questo esempio si mostra come ottenere informazioni sugli errori dal disc_in_2 del modulo I/O ed inserire i dati in una struttura definita dall’utente disc_in_2_info.

Ladder

Testo strutturato

GSV(MODULE,disc_in_2,FaultCode,disc_in_2_info.FaultCode);

GSV(MODULE,disc_in_2,FaultInfo,disc_in_2_info.FaultInfo);

GSV(MODULE,disc_in_2,Mode,disc_in_2info.Mode);

Esempio 2: In questo esempio si mostra come ottenere informazioni sullo stato di un programma discrete ed inserire i dati in una struttura definita dall’utente discrete_info.

Ladder

Testo strutturato

GSV(PROGRAM,DISCRETE,LASTSCANTIME,discrete_info.LastScanTime);

GSV(PROGRAM,DISCRETE,MAXSCANTIME,discrete_info.MaxScanTime);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 195

Page 196: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Esempio 3: In questo esempio si mostra come ottenere informazioni sullo stato di un task IO_test ed inserire i dati in una struttura definita dall’utente io_test_info.

Ladder

Testo strutturato

GSV(TASK,IO_TEST,LASTSCANTIME,io_test_info.LastScanTime);

GSV(TASK,IO_TEST,MAXSCANTIME,io_test_info.MaxScanTime);

GSV(TASK,IO_TEST,WATCHDOG,io_test_info.WatchDog);

196 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 197: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Impostazione degli indicatori di abilitazione e disabilitazione

Nel seguente esempio si utilizza l’istruzione SSV per abilitare o disabilitare un programma. È possibile utilizzare questo metodo anche per abilitare o disabilitare un modulo I/O; una soluzione di programma simile a quella che prevede l’uso dei bit di inibizione con un processore PLC-5.

Esempio: In base allo stato di SW.1, inserire il valore appropriato nell’attributo disableflag del programma discrete.

Ladder

Testo strutturato

IF SW.1 THEN

discrete_prog_flag := enable_prog;

ELSE

discrete_prog_flag := disable_prog;

END_IF;

SSV(PROGRAM,DISCRETE,DISABLEFLAG,discrete_prog_flag);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 197

Page 198: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Immediate Output (IOT) L’istruzione IOT aggiorna immediatamente i dati di uscita specificati (tag di uscita o tag prodotto).

Operandi:

Ladder

Testo strutturato

Gli operandi sono uguali a quelli utilizzati per l’istruzione IOT ladder.

Descrizione: L’istruzione IOT ha la precedenza sull’intervallo di pacchetto richiesto (RPI) di una connessione di uscita e invia dati nuovi attraverso la connessione.

• Una connessione di uscita è una connessione associata al tag di uscita di un modulo I/O o a un tag prodotto.

• Se la connessione è per un tag prodotto, l’istruzione IOT invia anche il trigger evento al controllore consumatore. Questo consente all’istruzione IOT di attivare un task evento nel controllore consumatore.

Per usare un’istruzione IOT e il tag prodotto per attivare un task evento in un controllore consumatore, configurare il tag prodotto nel modo seguente:

Operando Tipo Formato Descrizione

Update Tag tag tag che si desidera aggiornare:

• tag di uscita di un modulo I/O oppure

• tag prodotto

Non scegliere un membro o un elemento di un tag. Ad esempio, Local:5:0 va bene, ma Local:5:0.Data non è accettabile.

IOT(tag_uscita);

Spuntare questa casella.

In questo modo il tag viene configurato per aggiornare iltrigger evento solo tramite istruzione IOT.

198 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 199: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Il tipo di rete tra controllori determina quando il controllore consumatore riceve i nuovi dati e il trigger evento tramite l’istruzione IOT.

Lo schema seguente confronta la ricezione di dati tramite un’istruzione IOT attraverso le reti EtherNet/IP e ControlNet.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Con questo controllore Tramite questa rete Il dispositivo consumatore riceve i dati e il trigger evento

ControlLogix backplane immediatamente

rete EtherNet/IP immediatamente

rete ControlNet entro l’intervallo pacchetto effettivo (API) del tag consumato (connessione)

SoftLogix5800 È possibile produrre e consumare tag solo tramite una rete ControlNet.

entro l’intervallo pacchetto effettivo (API) del tag consumato (connessione)

rete EtherNet/IP rete ControlNet

task evento nelcontrollore consumatore

valori caricati in tagprodotti

istruzione IOT nelcontrollore produttore

task evento nelcontrollore consumatore

valori caricati in tagprodotti

istruzione IOT nelcontrollore produttore

RPI del tag prodotto

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 199

Page 200: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

Esecuzione:

Esempio 1: Quando viene eseguita l’istruzione IOT, invia immediatamente i valori del tag Local:5:0 al modulo di uscita.

Ladder

Testo strutturato

IOT (Local:5:O);

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita. na

La condizione del ramo di uscita viene impostata su vero.

EnableIn è impostato na EnableIn è sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione:

• aggiorna la connessione del tag specificato

• azzera il timer RPI della connessione

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

200 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 201: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di I/O (MSG, GSV, SSV, IOT) Capitolo 4

Esempio 2: Il controllore controlla la stazione 24 e produce dati per la stazione successiva (stazione 25). Per usare un’istruzione IOT per segnalare la trasmissione di nuovi dati, il tag prodotto viene configurato nel modo seguente:

Ladder

Testo strutturato

Produced_Tag è configurato per aggiornare il triggerevento tramite un’istruzione IOT.

Se New_Data = on, avviene quando segue per una scansione:

L’istruzione CPS imposta Produced_Tag = Source_Tag.

L’istruzione IOT aggiorna Produced_Tag e invia tale aggiornamento al controllore consumatore (stazione 25). Quando il controllore consumatore riceve l’aggiornamento, aziona il task evento associato in quel controllore.

IF New_Data AND NOT Trigger_Consumer THEN

CPS (Source_Tag,Produced_Tag,1);

IOT (Produced_Tag);

END_IF;

Trigger_Consumer := New_Data;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 201

Page 202: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 4 Istruzioni di I/O (MSG, GSV, SSV, IOT)

202 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 203: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5

Istruzioni di confronto(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Introduzione Le istruzioni di confronto permettono di confrontare dei valori utilizzando un’espressione o un’istruzione di confronto specifica.

È possibile confrontare valori di tipo diverso, ad esempio a virgola mobile ed interi.

Per le istruzioni ladder, i tipi di dati in grassetto indicano i tipi di dati ottimali. Un’istruzione viene eseguita più velocemente e richiede meno memoria se tutti gli operandi dell’istruzione utilizzano il medesimo tipo di dati ottimali, in genere DINT o REAL.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

confrontare dei valori con un’espressione CMP laddertesto strutturato(1)

204

verificare se due valori sono uguali EQU laddertesto strutturato(2)

blocco funzione

209

verificare se un valore è maggiore o uguale ad un secondo valore

GEQ laddertesto strutturato(1)

blocco funzione

213

verificare se un valore è maggiore di un secondo valore

GRT laddertesto strutturato(1)

blocco funzione

217

verificare se un valore è minore o uguale ad un secondo valore

LEQ laddertesto strutturato(1)

blocco funzione

221

verificare se un valore è minore di un secondo valore

LES laddertesto strutturato(1)

blocco funzione

225

verificare se un valore è compreso tra due altri valori

LIM laddertesto strutturato(1)

blocco funzione

229

filtrare due valori attraverso una mask e vedere se sono uguali

MEQ laddertesto strutturato(1)

blocco funzione

235

verificare se un valore è diverso da un secondo valore

NEQ laddertesto strutturato(1)

blocco funzione

240

(1) Non esiste un’istruzione equivalente in testo strutturato. Utilizzare un’altra programmazione in testo strutturato per ottenere lo stesso risultato. Vedere la descrizione dell’istruzione.

(2) Non esiste un’istruzione equivalente in testo strutturato. Utilizzare l’operatore in un’espressione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 203

Page 204: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Compare (CMP) L’istruzione CMP esegue un confronto delle operazioni aritmetiche specificate nell’espressione.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non ha un’istruzione CMP, ma è possibile ottenere gli stessi risultati usando un costrutto IF...THEN e un’espressione.

IF espressione_booleana THEN

<istruzione>;

END_IF;

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi di costrutti ed espressioni nel testo strutturato.

Descrizione: Definire l’espressione CMP utilizzando operatori, tag e valori immediati. Utilizzare delle parentesi ( ) per definire parti di espressioni più complesse.

L’esecuzione di un’istruzione CMP è leggermente più lenta ed utilizza più memoria rispetto all’esecuzione di altre istruzioni di confronto. Il vantaggio di un’istruzione CMP consiste nel fatto che consente di inserire espressioni complesse in una istruzione.

Indicatori di stato aritmetico: L’istruzione CMP attiva gli indicatori di stato aritmetico soltanto se l’espressione contiene un operatore (ad esempio, +, −, *, /) che attiva gli indicatori di stato aritmetico.

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

Espressione SINT

INT

DINT

REAL

stringa

immediato

tag

un’espressione formata da tag e/o valori immediati separati da operatori

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

204 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 205: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Esecuzione:

Esempi: Se l’istruzione CMP trova che l’espressione è vera, la condizione del ramo di uscita viene impostata su vero.

Se si inserisce un’espressione senza un operatore di confronto, ad esempio valore_1 + valore_2 oppure valore_1, l’istruzione valuta l’espressione nel modo seguente:

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

fine

valuta espressionel’espressione è vera

l’espressione è falsa

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

Se l’espressione è La condizione del ramo di uscita è impostata su

diversa zero vero

zero falso

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 205

Page 206: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Espressioni CMP

Le espressioni delle istruzioni CMP vanno programmate nello stesso modo delle espressioni delle istruzioni FSC. Per informazioni su operatori validi, formato ed ordine delle operazioni comuni ad entrambe le istruzioni, utilizzare le seguenti sezioni.

Operatori validi

Formattazione delle espressioni

Per ogni operatore utilizzato in un’espressione, è necessario fornire uno o due operandi (tag o valori immediati). Utilizzare la seguente tabella per formare operatori ed operandi in un’espressione:

Operatore Descrizione Ottimale

+ somma DINT, REAL

– sottrai/nega DINT, REAL

* moltiplica DINT, REAL

/ dividi DINT, REAL

= uguale DINT, REAL

< minore di DINT, REAL

<= minore di o uguale DINT, REAL

> maggiore di DINT, REAL

>= maggiore di o uguale a DINT, REAL

<> diverso DINT, REAL

** esponente (x alla y) DINT, REAL

ABS valore assoluto DINT, REAL

ACS arcocoseno REAL

AND AND di bit DINT

ASN arcoseno REAL

ATN arcotangente REAL

COS coseno REAL

DEG da radianti a gradi DINT, REAL

FRD da BCD a intero DINT

LN logaritmo naturale REAL

LOG logaritmo in base 10 REAL

MOD modulo-divide DINT, REAL

NOT complemento di bit DINT

OR OR di bit DINT

RAD da gradi a radianti DINT, REAL

SIN seno REAL

SQR radice quadrata DINT, REAL

TAN tangente REAL

TOD da intero a BCD DINT

TRN tronca DINT, REAL

XOR OR di bit esclusivo DINT

Operatore Descrizione Ottimale

Per operatori con Utilizzare questo Formato Esempi

un operando operatore(operando) ABS(tag_a)

due operandi operando_a operatore operando_b

• tag_b + 5

• tag_c AND tag_d

• (tag_e ** 2) MOD (tag_f/tag_g)

206 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 207: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Determinazione dell’ordine delle operazioni

Le operazioni che vengono scritte nell’espressione sono eseguite dall’istruzione in un determinato ordine, non necessariamente nell’ordine con cui sono state scritte. È possibile cambiare l’ordine delle operazioni raggruppando i termini all’interno di parentesi, forzando l’istruzione a eseguire un’operazione all’interno delle parentesi prima di altre operazioni.

Operazioni di ordine uguale vengono eseguite da sinistra a destra.

Ordine Funzionamento

1. ( )

2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN

3. **

4. − (nega), NOT

5. *, /, MOD

6. <, <=, >, >=, =

7. − (sottrai), +

8. AND

9. XOR

10. OR

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 207

Page 208: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Uso di stringhe in un’espressione

Utilizzare un’espressione ladder o di testo strutturato per confrontare i tipi di dati delle stringhe. Per utilizzare stringhe in un’espressione, attenersi alle seguenti regole:

• Un’espressione consente di confrontare due tag stringa.

• Non è possibile inserire caratteri ASCII direttamente nell’espressione.

• Sono permessi solamente i seguenti operatori

• Le stringhe sono uguali se i loro caratteri corrispondono.

• I caratteri ASCII sono sensibili alle maiuscole. “A” maiuscola ($41) non è uguale ad “a” minuscola ($61).

• I valori esadecimali dei caratteri determinano se una stringa è minore o maggiore di un’altra stringa. Per il codice esadecimale di un carattere, vedere il retro copertina di questo manuale.

• Quando le due stringhe sono ordinate come in un elenco telefonico, l’ordine delle stringhe determina quale è la maggiore.

Operatore Descrizione

= uguale

< minore di

<= minore di o uguale a

> maggiore di

>= maggiore di o uguale a

<> diverso

Caratteri ASCII Codici esadecimali

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

AB $61$62

maggiore

minore

AB < B

a > B

208 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 209: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Equal to (EQU) L’istruzione EQU verifica se Source A è uguale a Source B.

Operandi:

Ladder

• Se si inserisce un tag SINT oppure INT, il valore viene convertito in un valore DINT con un’estensione di segno.

• I valori REAL raramente sono completamente uguali. Se si desidera determinare l’uguaglianza di due valori REAL, utilizzare l’istruzione LIM.

• I tipi di dati stringa sono:

– tipo dati STRINGA di default

– qualunque nuovo tipo di dati stringa che si crea

• Per verificare i caratteri di una stringa, immettere un tag stringa per Source A e Source B.

Testo strutturato

Usare il segno di uguale “=“ come operatore all’interno di un’espressione. Questa espressione valuta se sourceA è uguale a sourceB.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source B

Source B SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source A

Operando Tipo Formato Descrizione

tag EQU FBD_COMPARE struttura struttura EQU

IF sourceA = sourceB THEN

<istruzioni>;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 209

Page 210: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Struttura FBD_ COMPARE

Descrizione: Usare l’istruzione EQU per confrontare due numeri o due stringhe di caratteri ASCII. Quando si confrontano stringhe:

• Le stringhe sono uguali se i loro caratteri corrispondono.

• I caratteri ASCII sono sensibili alle maiuscole. “A” maiuscola ($41) non è uguale ad “a” minuscola ($61).

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA REAL Valore da confrontare con SourceB.

Valori validi = qualsiasi numero a virgola mobile

SourceB REAL Valore da confrontare con SourceA.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest BOOL Risultato dell’istruzione. Equivale alla condizione del ramo di uscita dell’istruzione ladder EQU.

210 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 211: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

Source A = Source Bsì

no

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 211

Page 212: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Esempio: Se valore_1 è uguale a valore_2, impostare light_a. Se valore_1 non è uguale a valore_2, azzerare light_a.

Ladder

Testo strutturato

light_a := (valore_1 = valore_2);

Blocco funzione

212 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 213: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Greater than or Equal to (GEQ)

L’istruzione GEQ verifica se Source A è maggiore di o uguale a Source B.

Operandi:

Ladder

• Se si inserisce un tag SINT oppure INT, il valore viene convertito in un valore DINT con un’estensione di segno.

• I tipi di dati stringa sono:

– tipo dati STRINGA di default

– qualunque nuovo tipo di dati stringa che si crea

• Per verificare i caratteri di una stringa, immettere un tag stringa per Source A e Source B.

Testo strutturato

Usare segni di maggiore e uguale adiacenti “>=” come operatore all’interno di un’espressione. Questa espressione valuta se sourceA è maggiore di o uguale a sourceB.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source B

Source B SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source A

Operando Tipo Formato Descrizione

tag GEQ FBD_COMPARE struttura struttura GEQ

IF sourceA >= sourceB THEN

<istruzioni>;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 213

Page 214: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Struttura FBD_ COMPARE

Descrizione: L’istruzione GEQ verifica se Source A è maggiore di o uguale a Source B.

Quando si confrontano stringhe:

• I valori esadecimali dei caratteri determinano se una stringa è minore o maggiore di un’altra stringa. Per il codice esadecimale di un carattere, vedere il retro copertina di questo manuale.

• Quando le due stringhe sono ordinate come in un elenco telefonico, l’ordine delle stringhe determina quale è la maggiore.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA REAL Valore da confrontare con SourceB.

Valori validi = qualsiasi numero a virgola mobile

SourceB REAL Valore da confrontare con SourceA.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest BOOL Risultato dell’istruzione. Equivale alla condizione del ramo di uscita dell’istruzione ladder GEQ.

Caratteri ASCII Codici esadecimali

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

AB $61$62

maggiore

minore

AB < B

a > B

214 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 215: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

Source A ≥ Source Bsì

no

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 215

Page 216: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Esempio: Se valore_1 è maggiore di o uguale a valore_2, impostare light_b. Se valore_1 è minore di valore_2, azzerare light_b.

Ladder

Testo strutturato

light_b := (valore_1 >= valore_2);

Blocco funzione

216 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 217: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Greater Than (GRT) L’istruzione GRT verifica se Source A è maggiore di Source B.

Operandi:

Ladder

• Se si inserisce un tag SINT oppure INT, il valore viene convertito in un valore DINT con un’estensione di segno.

• I tipi di dati stringa sono:

– tipo dati STRINGA di default

– qualunque nuovo tipo di dati stringa che si crea

• Per verificare i caratteri di una stringa, immettere un tag stringa per Source A e Source B.

Testo strutturato

Usare il segno di maggiore “>” come operatore all’interno dell’espressione. Questa espressione valuta se sourceA è maggiore di sourceB.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source B

Source B SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source A

Operando Tipo Formato Descrizione

tag GRT FBD_COMPARE struttura struttura GRT

IF sourceA > sourceB THEN

<istruzioni>;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 217

Page 218: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Struttura FBD_ COMPARE

Descrizione: L’istruzione GRT verifica se Source A è maggiore di Source B.

Quando si confrontano stringhe:

• I valori esadecimali dei caratteri determinano se una stringa è minore o maggiore di un’altra stringa. Per il codice esadecimale di un carattere, vedere il retro copertina di questo manuale.

• Quando le due stringhe sono ordinate come in un elenco telefonico, l’ordine delle stringhe determina quale è la maggiore.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA REAL Valore da confrontare con SourceB.

Valori validi = qualsiasi numero a virgola mobile

SourceB REAL Valore da confrontare con SourceA.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest BOOL Risultato dell’istruzione. Equivale alla condizione del ramo di uscita dell’istruzione ladder GRT.

Caratteri ASCII Codici esadecimali

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

AB $61$62

maggiore

minore

AB < B

a > B

218 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 219: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

Source A > Source Bsì

no

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 219

Page 220: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Esempio: Se valore_1 è maggiore di valore_2, impostare light_1. Se valore_1 è minore uguale a valore_2, azzerare light_1.

Ladder

Testo strutturato

light_1 := (valore_1 > valore_2);

Blocco funzione

220 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 221: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Less Than or Equal to (LEQ) L’istruzione LEQ verifica se Source A è minore di o uguale a Source B.

Operandi:

Ladder

• Se si inserisce un tag SINT oppure INT, il valore viene convertito in un valore DINT con un’estensione di segno.

• I tipi di dati stringa sono:

– tipo dati STRINGA di default

– qualunque nuovo tipo di dati stringa che si crea

• Per verificare i caratteri di una stringa, immettere un tag stringa per Source A e Source B.

Testo strutturato

Usare segni di minore e uguale adiacenti “<=” come operatore all’interno dell’espressione. Questa espressione valuta se sourceA è minore di o uguale a sourceB.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source B

Source B SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source A

Operando Tipo Formato Descrizione

tag LEQ FBD_COMPARE struttura struttura LEQ

IF sourceA <= sourceB THEN

<istruzioni>;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 221

Page 222: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Struttura FBD_ COMPARE

Descrizione: L’istruzione LEQ verifica se Source A è minore di o uguale a Source B.

Quando si confrontano stringhe:

• I valori esadecimali dei caratteri determinano se una stringa è minore o maggiore di un’altra stringa. Per il codice esadecimale di un carattere, vedere il retro copertina di questo manuale.

• Quando le due stringhe sono ordinate come in un elenco telefonico, l’ordine delle stringhe determina quale è la maggiore.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA REAL Valore da confrontare con SourceB.

Valori validi = qualsiasi numero a virgola mobile

SourceB REAL Valore da confrontare con SourceA.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest BOOL Risultato dell’istruzione. Equivale alla condizione del ramo di uscita dell’istruzione ladder LEQ.

Caratteri ASCII Codici esadecimali

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

AB $61$62

maggiore

minore

AB < B

a > B

222 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 223: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

Source A ≤ Source Bsì

no

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 223

Page 224: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Esempio: Se valore_1 è minore o uguale a valore_2, impostare light_2. Se valore_1 è maggiore di valore_2, azzerare light_2.

Ladder

Testo strutturato

light_2 := (valore_1 <= valore_2);

Blocco funzione

224 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 225: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Less Than (LES) L’istruzione LES verifica se Source A è minore di Source B.

Operandi:

Ladder

• Se si inserisce un tag SINT oppure INT, il valore viene convertito in un valore DINT con un’estensione di segno.

• I tipi di dati stringa sono:

– tipo dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

• Per verificare i caratteri di una stringa, immettere un tag stringa per Source A e Source B.

Testo strutturato

Usare il segno di minore “<” come operatore all’interno di un’espressione. Questa espressione valuta se sourceA è minore di sourceB.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source B

Source B SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source A

Operando Tipo Formato Descrizione

tag LES FBD_COMPARE struttura struttura LES

IF sourceA < sourceB THEN

<istruzioni>;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 225

Page 226: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Struttura FBD_ COMPARE

Descrizione: L’istruzione LES verifica se Source A è minore di Source B.

Quando si confrontano stringhe:

• I valori esadecimali dei caratteri determinano se una stringa è minore o maggiore di un’altra stringa. Per il codice esadecimale di un carattere, vedere il retro copertina di questo manuale.

• Quando le due stringhe sono ordinate come in un elenco telefonico, l’ordine delle stringhe determina quale è la maggiore.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA REAL Valore da confrontare con SourceB.

Valori validi = qualsiasi numero a virgola mobile

SourceB REAL Valore da confrontare con SourceA.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest BOOL Risultato dell’istruzione. Equivale alla condizione del ramo di uscita dell’istruzione ladder LES.

Caratteri ASCII Codici esadecimali

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

AB $61$62

maggiore

minore

AB < B

a > B

226 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 227: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

Source A < Source Bsì

no

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

quando EnableIn è falso EnableOut viene azzerato.

quando EnableIn è vero L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 227

Page 228: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Esempio: Se valore_1 è minore di valore_2, impostare light_3. Se valore_1 è maggiore o uguale a valore_2, azzerare light_3.

Ladder

Testo strutturato

light_3 := (valore_1 < valore_2);

Blocco funzione

228 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 229: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Limit (LIM) L’istruzione LIM verifica se il valore Test è all’interno dell’intervallo compreso tra il limite inferiore ed il limite superiore.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non ha un’istruzione LIM, ma consente comunque di ottenere gli stessi risultati.

IF (LowLimit <= HighLimit AND(Test >= LowLimit AND Test <= HighLimit)) OR (LowLimit >= HighLimit AND(Test <= LowLimit OR Test >= HighLimit)) THEN

<istruzione>;

END_IF;

Operando Tipo Formato Descrizione

Low limit SINT

INT

DINT

REAL

immediato

tag

il valore del limite inferiore

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Test SINT

INT

DINT

REAL

immediato

tag

il valore da confrontare

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

High limit SINT

INT

DINT

REAL

immediato

tag

il valore del limite superiore

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 229

Page 230: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Blocco funzione

Struttura FBD_ LIMIT

Descrizione: L’istruzione LIM verifica se il valore Test è all’interno dell’intervallo compreso tra il limite inferiore ed il limite superiore.

Operando Tipo Formato Descrizione

tag LIM FBD_LIMIT struttura struttura LIM

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se è impostato, l’istruzione viene eseguita come descritto sotto Esecuzione.

Il valore di default è impostato.

LowLimit REAL Valore del limite inferiore.

Valori validi = qualsiasi numero a virgola mobile

Test REAL Valore da confrontare con i limiti.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest BOOL Risultato dell’istruzione. Equivale alla condizione del ramo di uscita dell’istruzione ladder LIM.

HighLimit REAL Valore del limite superiore.

Valori validi = qualsiasi numero a virgola mobile

Se il limite inferiore

E il valore test è La condizione del ramo di uscita è

≤ Limite superiore uguale ai limiti o entro di questi vero

diverso dai limiti o al di fuori di questi

falso

≥ Limite superiore uguale ai limiti o al di fuori di questi

vero

diverso dai limiti o entro questi falso

230 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 231: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Gli interi con segno, quando il bit più significativo è ad 1, passano dal massimo positivo al massimo negativo. Per esempio, negli interi a 16 bit (tipo INT), il numero intero positivo massimo è 32 767, rappresentato in forma esadecimale come 16#7FFF (i bit da 0 a 14 sono tutti ad 1). Se questo numero aumenta di una unità, il risultato sarà di 16#8000 (il bit 15 è impostato). Nel caso di interi con segno, il numero esadecimale 16#8000 è uguale a –32 768 decimale. Se si continua ad incrementare fino a quando tutti i 16 bit sono ad 1, si arriva a 16#FFFF, che è pari a –1 decimale.

Questo processo può essere rappresentato come un diagramma circolare (vedere le figure seguenti). L’istruzione LIM inizia dal limite inferiore e cresce in senso orario fino a raggiungere il limite superiore. Qualsiasi valore di Test nell’intervallo in senso orario compreso tra il limite inferiore ed il limite superiore imposta la condizione del ramo di uscita a vera. Qualsiasi valore di Test nell’intervallo in senso orario compreso tra il limite superiore ed il limite inferiore imposta la condizione del ramo di uscita su falso.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

−1

0

+1

limite inferiore

limite superiore

+n−(n+1)

n = valore massimo

Limite inferiore ≤ Limite superiore

L’istruzione è vera se il valore Test è uguale a oppure è compreso tra il limite inferiore e superiore

Limite inferiore ≥ Limite superiore

L’istruzione è vera se il valore Test è uguale a oppure è esterno al limite inferiore e superiore

−1

0

+1

limite superiore

limite inferiore

+n−(n+1)n = valore massimo

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 231

Page 232: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

valuta limiteil confronto è vero

il confronto è falso

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato, l’istruzione non esegue alcuna azione e le uscite non vengono aggiornate.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

232 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 233: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Esempio 1: Limite inferiore ≤ Limite superiore:Quando 0 ≤ valore ≥ 100, impostare light_1. Se valore < 0 o valore >100, azzerare light_1.

Ladder

Testo strutturato

IF (valore <= 100 AND(valore >= 0 AND valore <= 100)) OR valore >= 100 AND valore <= 0 OR valore >= 100)) THEN

light_1 := 1;

ELSE

light_1 := 0;

END_IF;

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 233

Page 234: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Esempio 2: Limite inferiore ≥ Limite superiore:Quando valore ≥ 0 o valore ≤ −100, impostare light_1. Se valore < 0 o valore > −100, azzerare light_1.

Ladder

Testo strutturato

IF (0 <= –100 AND valore >= 0 AND valore <= –100)) OR (0 >= –100 AND(valore <= 0 OR valore >= –100)) THEN

light_1 := 1;

ELSE

light_1 := 0;

END_IF;

Blocco funzione

234 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 235: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Mask Equal to (MEQ) L’istruzione MEQ fa passare i valori di Source e Compare attraverso una maschera (Mask) e confronta i risultati.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non ha un’istruzione MEQ, ma consente comunque di ottenere gli stessi risultati.

IF (Source AND Mask) = (Compare AND Mask) THEN

<istruzione>;

END_IF;

Blocco funzione

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

immediato

tag

valore da confrontare con Compare

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Mask SINT

INT

DINT

immediato

tag

definisce quali bit bloccare o fare passare

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Compare SINT

INT

DINT

immediato

tag

valore da confrontare con Source

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Operando Tipo Formato Descrizione

tag MEQ FBD_MASK_EQUAL struttura struttura MEQ

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 235

Page 236: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Struttura FBD_MASK_ EQUAL

Descrizione: Un “1” nella mask significa che il bit dati viene fatto passare. Uno “0” nella mask significa che il bit dati è bloccato. In genere i valori Source, Mask e Compare sono tutti dello stesso tipo di dati.

Se si mischiano tipi di dati interi, l’istruzione riempie con degli 0 i bit superiori dei tipi di dati interi più piccoli in modo che questi abbiano la stessa dimensione dei tipi di dati più grandi.

Immissione di un valore maschera immediato

Quando si immette un valore maschera, il software di programmazione imposta automaticamente valori decimali. Se si desidera immettere una maschera utilizzando un altro formato, fare precedere il prefisso corretto al valore.

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se è impostato, l’istruzione viene eseguita come descritto sotto Esecuzione.

Il valore di default è impostato.

Source DINT Valore da confrontare con Confronta

Valori validi = qualsiasi numero intero

Mask DINT Definisce quali bit bloccare (mascherare).

Valori validi = qualsiasi numero intero

Compare DINT Valore di confronto.

Valori validi = qualsiasi numero intero

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest BOOL Risultato dell’istruzione. Equivale alla condizione del ramo di uscita dell’istruzione ladder MEQ.

Prefisso Descrizione

16# Esadecimale

per esempio; 16#0F0F

8# Ottale

per esempio; 8#16

2# Binario

per esempio; 2#00110011

236 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 237: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

origine mascherata = confronto

mascherato

no

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato, l’istruzione non esegue alcuna azione e le uscite non vengono aggiornate.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 237

Page 238: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Esempio 1: Se il valore_1 mascherato è uguale al valore_2 mascherato, impostare light_1. Se il valore_1 mascherato è diverso dal valore_2 mascherato, azzerare light_1. Questo esempio mostra valori mascherati uguali. Uno 0 nella mask impedisce all’istruzione di confrontare quel bit (indicato dalla x nell’esempio).

Ladder

Testo strutturato

light_1 := ((valore_1 AND mask_1)=(valore_2 AND mask_2));

Blocco funzione

valore_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 valore_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0

mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0

valore_1mascherato

0 1 0 1 0 1 0 1 1 1 1 1 X X X X valore_2mascherato

0 1 0 1 0 1 0 1 1 1 1 1 X X X X

238 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 239: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Esempio 2: Se il valore_1 mascherato è uguale al valore_2 mascherato, impostare light_1. Se il valore_1 mascherato è diverso dal valore_2 mascherato, azzerare light_1. Questo esempio mostra valori mascherati diversi. Uno 0 nella mask impedisce all’istruzione di confrontare quel bit (indicato dalla x nell’esempio).

Ladder

Testo strutturato

light_1 := ((valore_1 AND mask_1)=(valore_2 AND mask_2));

Blocco funzione

valore_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 valore_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0

mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1

valore_1mascherato

X X X X X X X X X X X X 1 1 1 1 valore_2mascherato

X X X X X X X X X X X X 0 0 0 0

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 239

Page 240: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Not Equal to (NEQ) L’istruzione NEQ verifica se Source A è diverso da Source B.

Operandi:

Ladder

• Se si inserisce un tag SINT oppure INT, il valore viene convertito in un valore DINT con un’estensione di segno.

• I tipi di dati stringa sono:

– tipo di dati STRINGA di default

– qualunque nuovo tipo di dati stringa che si crea

• Per verificare i caratteri di una stringa, immettere un tag stringa per Source A e Source B.

Testo strutturato

Usare i segni di minore e maggiore “<>“ insieme come operatore all’interno di un’espressione. Questa espressione valuta se sourceA è diverso da sourceB.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source B

Source B SINT

INT

DINT

REAL

stringa

immediato

tag

valore da confrontare con Source A

Operando Tipo Formato Descrizione

tag NEQ FBD_COMPARE struttura struttura NEQ

IF sourceA <> sourceB THEN

<istruzioni>;

240 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 241: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Struttura FBD_ COMPARE

Descrizione: L’istruzione NEQ verifica se Source A è diverso da Source B.

Quando si confrontano stringhe:

• Le stringhe non sono uguali se i loro caratteri non corrispondono.

• I caratteri ASCII sono sensibili alle maiuscole. “A” maiuscola ($41) non è uguale ad “a” minuscola ($61).

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA REAL Valore da confrontare con SourceB.

Valori validi = qualsiasi numero a virgola mobile

SourceB REAL Valore da confrontare con SourceA.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest BOOL Risultato dell’istruzione. Equivale alla condizione del ramo di uscita dell’istruzione ladder NEQ.

Caratteri ASCII Codici esadecimali

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

AB $61$62

maggiore

minore

AB < B

a > B

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 241

Page 242: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

Source A = Source Bsì

no

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

242 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 243: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capitolo 5

Esempio: Se valore_1 è diverso da valore_2, impostare light_4. Se valore_1 è uguale a valore_2, azzerare light_4.

Ladder

Testo strutturato

light_4 := (valore_1 <> valore_2);

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 243

Page 244: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 5 Istruzioni di confronto (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Note:

244 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 245: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6

Istruzioni di calcolo/matematiche(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Introduzione Le istruzioni di calcolo/matematiche valutano le operazioni aritmetiche usando un’espressione o un’istruzione aritmetica specifica.

È possibile usare tipi di dati diversi, ma si potrebbe perdere in precisione ed in arrotondamento ed inoltre l’istruzione potrebbe impiegare più tempo per essere eseguita. Controllare il bit S:V per verificare se il risultato è stato troncato.

Per le istruzioni ladder, i tipi di dati in grassetto indicano i tipi di dati ottimali. Un’istruzione viene eseguita più velocemente e richiede meno memoria se tutti gli operandi dell’istruzione utilizzano il medesimo tipo di dati ottimale, in genere DINT o REAL.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

valutare un’espressione CPT laddertesto strutturato(1)

246

sommare due valori ADD laddertesto strutturato(2)

blocco funzione

250

sottrarre due valori SUB laddertesto strutturato(2)

blocco funzione

253

moltiplicare due valori MUL laddertesto strutturato(2)

blocco funzione

256

dividere due valori DIV laddertesto strutturato(2)

blocco funzione

259

determinare il resto dopo aver diviso un valore per un altro

MOD laddertesto strutturato(2)

blocco funzione

264

calcolare la radice quadrata di un valore SQR

SQRT(3)

laddertesto strutturatoblocco funzione

268

invertire il segno di un valore NEG laddertesto strutturato(2)

blocco funzione

272

acquisire il valore assoluto di un valore ABS laddertesto strutturatoblocco funzione

275

(1) Non esiste un’istruzione equivalente in testo strutturato. Utilizzare un’altra programmazione in testo strutturato per ottenere lo stesso risultato. Vedere la descrizione dell’istruzione.

(2) Non esiste un’istruzione equivalente in testo strutturato. Utilizzare l’operatore in un’espressione.

(3) Solo testo strutturato.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 245

Page 246: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Compute (CPT) L’istruzione CPT esegue le operazioni aritmetiche definite nell’espressione.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non ha un’istruzione CPT, ma è possibile ottenere gli stessi risultati usando un’assegnazione e un’espressione.

destination := espressione_numerica;

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi di assegnazioni ed espressioni nel testo strutturato.

Descrizione: L’istruzione CPT esegue le operazioni aritmetiche definite nell’espressione. Se abilitata, l’istruzione CPT valuta l’espressione e inserisce il risultato nella destinazione.

L’esecuzione di un’istruzione CPT è leggermente più lenta ed utilizza più memoria rispetto all’esecuzione di altre istruzioni di calcolo/matematiche. Il vantaggio di un’istruzione CPT consiste nel fatto che consente di inserire espressioni complesse in una istruzione.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

Destination SINTINTDINTREAL

tag tag dove memorizzare il risultato

Espressione SINTINTDINTREAL

immediato

tag

un’espressione formata da tag e/o valori immediati separati da operatori

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

INFORMAZIONE Non vi è alcun limite alla lunghezza di un’espressione.

246 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 247: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Esecuzione:

Esempio 1: Se abilitata, l’istruzione CPT valuta value_1 moltiplicato 5 e divide il risultato per il risultato di value_2 diviso 7 e inserisce il risultato finale in result_1.

Esempio 2: Se abilitata, l’istruzione CPT tronca float_value_1 e float_value_2, eleva il float_value_2 troncato alla seconda divide il float_value_1 troncato per il risultato e memorizza il resto della divisione in float_value_result_cpt.

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione valuta l’espressione e inserisce il risultato nella destinazione.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 247

Page 248: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Operatori validi

Formattazione delle espressioni

Per ogni operatore utilizzato in un’espressione, è necessario fornire uno o due operandi (tag o valori immediati). Utilizzare la seguente tabella per formare operatori ed operandi in un’espressione:

Operatore Descrizione Ottimale

+ somma DINT, REAL

– sottrai/nega DINT, REAL

* moltiplica DINT, REAL

/ dividi DINT, REAL

** esponente (x alla y) DINT, REAL

ABS valore assoluto DINT, REAL

ACS arcocoseno REAL

AND AND di bit DINT

ASN arcoseno REAL

ATN arcotangente REAL

COS coseno REAL

DEG da radianti a gradi DINT, REAL

FRD da BCD a intero DINT

LN logaritmo naturale REAL

LOG logaritmo in base 10 REAL

MOD modulo-divide DINT, REAL

NOT complemento di bit DINT

OR OR di bit DINT

RAD da gradi a radianti DINT, REAL

SIN seno REAL

SQR radice quadrata DINT, REAL

TAN tangente REAL

TOD da intero a BCD DINT

TRN tronca DINT, REAL

XOR OR di bit esclusivo DINT

Operatore Descrizione Ottimale

Per operatori con: Utilizzare questo Formato Esempi:

un operando operatore(operando) ABS(tag_a)

due operandi operando_a operatore operando_b

• tag_b + 5

• tag_c AND tag_d

• (tag_e ** 2) MOD (tag_f/tag_g)

248 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 249: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Determinazione dell’ordine delle operazioni

Le operazioni che vengono scritte nell’espressione sono eseguite dall’istruzione in un determinato ordine, non necessariamente nell’ordine con cui sono state scritte. È possibile cambiare l’ordine delle operazioni raggruppando i termini all’interno di parentesi, forzando l’istruzione a eseguire un’operazione all’interno delle parentesi prima di altre operazioni.

Operazioni di ordine uguale vengono eseguite da sinistra a destra.

Ordine Funzionamento

1. ( )

2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN

3. **

4. − (nega), NOT

5. *, /, MOD

6. − (sottrai), +

7. AND

8. XOR

9. OR

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 249

Page 250: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Add (ADD) L’istruzione ADD somma Source A a Source B e inserisce il risultato nella destinazione.

Operandi:

Ladder

Testo strutturato

Usare il segno più “+“ come operatore all’interno di un’espressione. Questa espressione aggiunge sourceA a sourceB e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

immediato

tag

valore da aggiungere a Source B

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Source B SINT

INT

DINT

REAL

immediato

tag

valore da aggiungere a Source A

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

tag ADD FBD_MATH struttura struttura ADD

dest := sourceA + sourceB;

250 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 251: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Struttura FBD_MATH

Descrizione: L’istruzione ADD aggiunge Source A a Source B e inserisce il risultato nella destinazione.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA REAL Valore da aggiungere a SourceB.

Valori validi = qualsiasi numero a virgola mobile

SourceB REAL valore da aggiungere a SourceA.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Destination = Source A + Source B

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 251

Page 252: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Blocco funzione

Esempio: Aggiungere float_value_1 a float_value_2 e inserire il risultato in add_result.

Ladder

Testo strutturato

add_result := float_value_1 + float_value_2;

Blocco funzione

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

252 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 253: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Subtract (SUB) L’istruzione SUB sottrae Source B da Source A e inserisce il risultato nella destinazione.

Operandi:

Ladder

Testo strutturato

Usare il segno meno “−” come operatore in un’espressione. Questa espressione sottrae sourceB da sourceA e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

immediato

tag

valore dal quale sottrarre Source B

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Source B SINT

INT

DINT

REAL

immediato

tag

valore da sottrarre da Source A

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

tag SUB FBD_MATH struttura struttura SUB

dest := sourceA – sourceB;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 253

Page 254: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Struttura FBD_MATH

Descrizione: L’istruzione SUB sottrae Source B da Source A e inserisce il risultato nella destinazione.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA REAL Valore dal quale sottrarre SourceB.

Valori validi = qualsiasi numero a virgola mobile

SourceB REAL Valore da sottrarre da SourceA.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Destination = Source B – Source A

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

254 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 255: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Blocco funzione

Esempio: Sottrarre float_value_2 da float_value_1 e inserire il risultato in subtract_result.

Ladder

Testo strutturato

subtract_result := float_value_1 – float_value_2;

Blocco funzione

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 255

Page 256: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Multiply (MUL) L’istruzione MUL moltiplica Source A per Source B e inserire il risultato nella destinazione.

Operandi:

Ladder

Testo strutturato

Usare il segno di moltiplicazione “∗” come operatore in un’espressione. Questa espressione moltiplica sourceA per sourceB e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

immediato

tag

valore del moltiplicando

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Source B SINT

INT

DINT

REAL

immediato

tag

valore del moltiplicatore

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

tag MUL FBD_MATH struttura struttura MUL

dest := sourceA * sourceB;

256 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 257: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Struttura FBD_MATH

Descrizione: L’istruzione MUL moltiplica Source A per Source B e inserire il risultato nella destinazione.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source A REAL Valore del moltiplicando.

Valori validi = qualsiasi numero a virgola mobile

Source B REAL Valore del moltiplicatore.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Destination = Source B x Source A

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 257

Page 258: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Blocco funzione

Esempio: Moltiplicare float_value_1 per float_value_2 e inserire il risultato in multiply_result.

Ladder

Testo strutturato

multiply_result := float_value_1 ∗ float_value_2;

Blocco funzione

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

258 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 259: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Divide (DIV) L’istruzione DIV divide Source A per Source B e inserisce il risultato nella destinazione.

Operandi:

Ladder

Testo strutturato

Usare il segno di divisione “/” come operatore in un’espressione. Questa espressione divide sourceA per sourceB e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

immediato

tag

valore del dividendo

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Source B SINT

INT

DINT

REAL

immediato

tag

valore del divisore

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

dest := sourceA/sourceB;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 259

Page 260: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Blocco funzione

Struttura FBD_MATH

Descrizione: Se la destinazione non è un valore REAL, l’istruzione gestisce la parte frazionaria del risultato come segue:

Operando Tipo Formato Descrizione

tag DIV FBD_MATH struttura struttura DIV

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source A REAL Valore del dividendo.

Valori validi = qualsiasi numero a virgola mobile

Source B REAL Valore del divisore.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Se Source A La parte frazionaria del risultato

Esempio

e Source B non sono valori REAL

viene troncata Source A DINT 5

Source B DINT 3

Destination DINT 1

o Source B è un valore REAL

viene arrotondata Source A REAL 5.0

Source B DINT 3

Destination DINT 2

260 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 261: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Se Source B (il divisore) è zero:

• si verifica un errore minore:

– Tipo 4: errore programma

– Codice 4: overflow aritmetico

• la destinazione viene impostata come segue:

Per rilevare eventuali divisioni per zero, esaminare il bit di errore minore (S:MINOR). Vedere Logix5000 Controllori Logix5000 – Procedure comuni, pubblicazione 1756-PM001.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore:

Esecuzione:

Ladder

Se Source B è zero e E la destinazione è E Il risultato è La destinazione viene impostata a

tutti gli operandi sono interi (SINT, INT o DINT)

Source A

almeno un operando è REAL SINT, INT o DINT positivo –1

negativo 0

REAL positivo 1.$ (positivo infinito)

negativo –1.$ (negativo infinito)

Si verifica un errore minore se

Tipo errore Codice errore

il divisore è zero 4 4

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Destination = Source A/Source B

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 261

Page 262: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Blocco funzione

Esempio 1: Dividere float_value_1 per float_value_2 e inserire il risultato in divide_result.

Ladder

Testo strutturato

divide_result := float_value_1 / float_value_2;

Blocco funzione

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

262 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 263: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Esempio 2: Le istruzioni DIV e MOV operano insieme per dividere due interi, arrotondare il risultato e inserirlo in un tag intero:

• L’istruzione DIV divide dint_a per dint_b.

• Per arrotondare il risultato, la destinazione è un tag REAL. Se la destinazione era un tag intero (SINT, INT o DINT), l’istruzione avredde troncato il risultato.

• L’istruzione MOV sposta il risultato arrotondato (real_temp) da DIV a divide_result_rounded.

• Poiché divide_result_rounded è un tag DINT, il valore di real_temp viene arrotondato e inserito nella destinazione DINT.

Ladder

43009

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 263

Page 264: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Modulo (MOD) L’istruzione MOD divide Source A per Source B e inserisce il resto nella destinazione.

Operandi:

Ladder

Testo strutturato

Usare MOD come operatore in un’espressione. Questa espressione divide sourceA per sourceB e memorizza il resto in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

REAL

immediato

tag

valore del dividendo

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Source B SINT

INT

DINT

REAL

immediato

tag

valore del divisore

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

tag MOD FBD_MATH struttura struttura MOD

dest := sourceA MOD sourceB;

264 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 265: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Struttura FBD_MATH

Descrizione: Se Source B (il divisore) è zero:

• si verifica un errore minore:

– Tipo 4: errore programma

– Codice 4: overflow aritmetico

• la destinazione viene impostata come segue:

Per rilevare eventuali divisioni per zero, esaminare il bit di errore minore (S:MINOR). Vedere Logix5000 Controllori Logix5000 – Procedure comuni, pubblicazione 1756-PM001.

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source A REAL Valore del dividendo.

Valori validi = qualsiasi numero a virgola mobile

Source B REAL Valore del divisore.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Se Source B è Zero e E la destinazione è E Il risultato è La destinazione viene impostata a

tutti gli operandi sono interi (SINT, INT o DINT)

Source A

almeno un operando è REAL SINT, INT o DINT positivo –1

negativo 0

REAL positivo 1.$ (positivo infinito)

negativo –1.$ (negativo infinito)

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 265

Page 266: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore:

Esecuzione:

Ladder

Blocco funzione

Si verifica un errore minore se

Tipo errore Codice errore

il divisore è zero 4 4

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Destination = Source A – (TRN (Source A/Source B) * Source B)

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

post-scansione Nessuna.

266 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 267: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Esempio: Dividere dividend per divisor e inserire il resto in remainder. In questo esempio, il 3 sta nel 10 tre volte, con un resto di 1.

Ladder

Testo strutturato

remainder := dividend MOD divisor;

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 267

Page 268: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Square Root (SQR) L’istruzione SQR calcola la radice quadrata di Source e inserisce il risultato nella destinazione.

Operandi:

Ladder

Testo strutturato

Usare SQRT come funzione. Questa espressione calcola la radice quadrata di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

calcolare la radice quadrata di questo valore

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

dest := SQRT(source);

268 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 269: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Blocco funzione

Struttura FBD_MATH_ADVANCED

Descrizione: Se la destinazione non è un valore REAL, l’istruzione gestisce la parte frazionaria del risultato come segue:

Se Source è negativo, l’istruzione prende il valore assoluto di Source prima di calcolare la radice quadrata.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

tagSQR FBD_MATH_ADVANCED struttura struttura SQR

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Calcolare la radice quadrata di questo valore.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Se il valore Source è La parte frazionaria del risultato

Esempio

non REAL viene troncata Source DINT 3

Destination DINT 1

REAL viene arrotondata Source REAL 3.0

Destination DINT 2

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 269

Page 270: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Destination Source=

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

270 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 271: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Esempio: Calcolare la radice quadrata di value_1 e inserire il risultato in sqr_result.

Ladder

Testo strutturato

sqr_result := SQRT(value_1);

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 271

Page 272: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Negate (NEG) L’istruzione NEG modifica il segno di Source e inserisce il risultato nella destinazione.

Operandi:

Ladder

Testo strutturato

Usare il segno meno “−” come operatore in un’espressione. Questa espressione modifica il segno di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

valore da negare

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

tag NEG FBD_MATH_ADVANCED struttura struttura NEG

dest := -source;

272 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 273: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Struttura FBD_MATH

Descrizione: Se si nega un valore negativo, il risultato sarà positivo. Se si nega un valore positivo, il risultato sarà negativo.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Valore di cui modificare il segno.

valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Destination = 0 − Source

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 273

Page 274: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Esempio: Modificare il segno di value_1 e inserire il risultato in negate_result.

Ladder

Testo strutturato

negate_result := -value_1;

Blocco funzione

274 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 275: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Absolute Value (ABS) L’istruzione ABS prende il valore assoluto di Source e inserisce il risultato nella destinazione.

Operandi:

Ladder

Testo strutturato

Usare ABS come funzione. Questa espressione calcola il valore assoluto di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

valore di cui prendere il valore assoluto

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

tag ABS FBD_MATH_ADVANCED struttura struttura ABS

dest := ABS(source);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 275

Page 276: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Struttura FBD_MATH_ADVANCED

Descrizione: L’istruzione ABS prende il valore assoluto di Source e inserisce il risultato nella destinazione.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Valore di cui prendere il valore assoluto.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Destination = | Source |

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

276 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 277: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capitolo 6

Esempio: Inserire il valore assoluto di value_1 in value_1_absolute. In questo esempio, il valore assoluto di “–4” è “+4”.

Ladder

Testo strutturato

value_1_absolute := ABS(value_1);

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 277

Page 278: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 6 Istruzioni di calcolo/matematiche (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)

Note:

278 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 279: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7

Istruzioni di spostamento/logiche(MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Introduzione È possibile usare tipi di dati diversi, ma si potrebbe perdere in precisione ed in arrotondamento ed inoltre l’istruzione potrebbe impiegare più tempo per essere eseguita. Controllare il bit S:V per verificare se il risultato è stato troncato.

Per le istruzioni ladder, i tipi di dati in grassetto indicano i tipi di dati ottimali. Un’istruzione viene eseguita più velocemente e richiede meno memoria se tutti gli operandi dell’istruzione utilizzano il medesimo tipo di dati ottimali, in genere DINT o REAL.

Le istruzioni di spostamento servono per modificare e spostare i bit.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

copiare un valore MOV ladder

testo strutturato(1)

281

copiare una sezione specifica di un numero intero

MVM ladder 283

copiare una sezione specifica di un numero intero in un blocco funzione

MVMT testo strutturato

blocco funzione

286

spostare i bit all’interno di un numero intero o da un numero intero all’altro

BTD ladder 290

spostare i bit all’interno di un numero intero o da un numero intero all’altro all’interno di un blocco funzione

BTDT testo strutturato

blocco funzione

293

cancellare un valore CLR testo strutturato(1)

ladder

296

riposizionare i byte di un tag INT, DINT, o REAL SWPB ladder

testo strutturato

298

(1) Non esiste un’istruzione equivalente in testo strutturato. Utilizzare un’altra programmazione in testo strutturato per ottenere lo stesso risultato. Vedere la descrizione dell’istruzione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 279

Page 280: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Le istruzioni logiche eseguono delle operazioni sui bit.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

operazione di AND di bit Bitwise AND

&(1)

ladder

testo strutturato(2)

blocco funzione

302

operazione OR di bit Bitwise OR ladder

testo strutturato(2)

blocco funzione

305

operazione OR esclusivo di bit Bitwise XOR ladder

testo strutturato(2)

blocco funzione

308

operazione NOT di bit Bitwise NOT ladder

testo strutturato(2)

blocco funzione

311

AND logico su 8 ingressi booleani. Boolean AND (BAND) testo strutturato(2)

blocco funzione

314

OR logico su 8 ingressi booleani. Boolean OR (BOR) testo strutturato(2)

blocco funzione

317

esegue un OR esclusivo su 2 ingressi booleani. Boolean Exclusive OR (BXOR)

testo strutturato(2)

blocco funzione

320

fare il complemento di un ingresso booleano. Boolenan NOT (BNOT) testo strutturato(2)

blocco funzione

323

(1) Solo testo strutturato.

(2) In testo strutturato, le operazioni AND, OR, XOR e NOT possono essere di tipo di bit o logico.

280 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 281: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Move (MOV) L’istruzione MOV copia il valore Source nella Destination. Il valore Source rimane invariato.

Operandi:

Ladder

Testo strutturato

Utilizzare un’assegnazione “:=” con un’espressione. Con questa assegnazione il valore viene spostato dalla source alla dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni e delle assegnazioni in testo strutturato.

Descrizione: L’istruzione MOV copia il valore Source nella Destination. Il valore Source rimane invariato.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Operando Tipo formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

valore da spostare (copiare)

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

dest := Source;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 281

Page 282: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Esecuzione:

Esempio: Portare i dati di value_1 in value_2.

Ladder

Testo strutturato

value_2: = value_1;

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione copia il valore Source nella Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

282 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 283: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Masked Move (MVM) L’istruzione MVM sposta una copia di Source in una destinazione attraverso una maschera.

L’istruzione è disponibile in testo strutturato e blocco funzione come MVMT, vedere pagina 286.

Operandi:

Ladder

Testo strutturato

Questa istruzione è disponibile come MVMT in testo strutturato. In alternativa è possibile combinare la logica di bit all’interno di un’espressione e assegnare il risultato alla destinazione. Questa espressione consente di eseguire uno spostamento su Source attraverso una maschera.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni e delle assegnazioni in testo strutturato.

Descrizione: L’istruzione MVM utilizza una maschera per passare o bloccare i bit di dati della Source. Un “1” nella maschera significa che il bit dati viene fatto passare. Uno “0” nella maschera significa che il bit dati è bloccato.

Se si mischiano tipi di dati interi, l’istruzione riempie con degli 0 i bit superiori dei tipi di dati interi più piccoli in modo che questi abbiano la stessa dimensione dei tipi di dati più grandi.

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

immediato

tag

valore da spostare

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Mask SINT

INT

DINT

immediato

tag

quali bit bloccare o fare passare

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Destination SINT

INT

DINT

tag tag dove memorizzare il risultato

dest := (Dest AND NOT (Mask))OR (Source AND Mask);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 283

Page 284: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Immissione di un valore di maschera immediato

Quando si immette una maschera, il software di programmazione imposta automaticamente valori decimali. Se si desidera immettere una maschera utilizzando un altro formato, fare precedere il prefisso corretto al valore.

Indicatori di stato aritmetico gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore nessuna

Esecuzione:

Prefisso Descrizione

16# Esadecimale

per esempio; 16#0F0F

8# Ottale

per esempio; 8#16

2# Binario

per esempio; 2#00110011

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione fa passare i valori della Source attraverso la maschera e muove i risultati nella destinazione. I bit senza maschera della destinazione rimangono invariati.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

284 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 285: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Esempio: Copia dati da value_a a value_b, consentendo di applicare una maschera (lo 0 maschera i dati in value_a).

Ladder

Testo strutturato

value_b := (value_b AND NOT (mask_2)) OR(value_a AND mask_2);

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1

Le caselle ombreggiate indicano i bit che sono stati modificati in value_b.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 285

Page 286: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Masked Move with Target (MVMT)

L’istruzione MVMT per prima cosa copia il valore Target nella destinazione. Quindi l’istruzione confronta Source a cui è stata applicata una maschera, con la destinazione ed apporta le eventuali modifiche richieste alla destinazione. Source e Target rimangono invariati.

Questa istruzione è disponibile in ladder come MVM, vedere pagina 283.

Operandi:

Testo strutturato

Blocco funzione

Struttura FBD_MASKED_MOVE

Variabile Tipo Formato Descrizione

tag MVMT FBD_MASKED_MOVE struttura struttura MVMT

Operando Tipo Formato Descrizione

tag MVMT FBD_MASKED_MOVE struttura struttura MVMT

MVMT(MVMT_tag);

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Blocco funzione

Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se impostato, l’istruzione viene eseguita.

Il valore di default è impostato.

Testo strutturato

Nessun effetto. L’istruzione viene eseguita.

Source DINT Il valore dell’ingresso viene portato nella destinazione sulla base del valore della maschera.

Valori validi = qualsiasi numero intero

Mask DINT Maschera di bit da spostare da Source a dest. Tutti i bit impostati a uno provocano lo spostamento dei bit corrispondenti dalla Source alla dest. Tutti i bit impostati a zero non determinano lo spostamento dei bit corrispondenti dalla Source alla dest.

Valori validi = qualsiasi numero intero

Target DINT Il valore dell’ingresso viene portato alla destinazione prima del passaggio dei bit Source attraverso la maschera.

Valori validi = qualsiasi numero intero

286 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 287: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Descrizione: Se abilitata, l’istruzione MVMT utilizza una maschera per passare o bloccare i bit di dati della Source. Un “1” nella mask significa che il bit dati viene fatto passare. Uno “0” nella mask significa che il bit dati è bloccato.

Se si mischiano tipi di dati interi, l’istruzione riempie con degli 0 i bit superiori dei tipi di dati interi più piccoli in modo che questi abbiano la stessa dimensione dei tipi di dati più grandi.

Inserimento di un valore immediato maschera con un Riferimento di ingresso

Quando si immette una masschera, il software di programmazione imposta automaticamente valori decimali. Se si desidera immettere una maschera utilizzando un altro formato, fare precedere il prefisso corretto al valore.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest DINT Uscita dell’istruzione con spostamento attraverso maschera. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Prefisso Descrizione

16# Esadecimale

per esempio; 16#0F0F

8# Ottale

per esempio; 8#16

2# Binario

per esempio; 2#00110011

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 287

Page 288: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Esecuzione:

Esempio: 1. Copia Target nella Dest.

2. Applica la maschera alla Source e la confronta con la Destination. Le modifiche eventualmente necessarie vengono effettuate nella Destination. Source e Target rimangono invariati. Uno 0 nella maschera impedisce all’istruzione di confrontare quel bit (indicato dalla x nell’esempio).

Testo strutturato

MVMT_01.Source := value_1;

MVMT_01.Mask := mask1;

MVMT_01.Target := target;

MVMT(MVMT_01);

value_masked := MVMT_01.Dest;

Condizione Azione blocco funzione Azione testo strutturato

durante la prescansione Nessuna. Nessuna.

prima scansione dell’istruzione

Nessuna. Nessuna.

durante la prima esecuzione dell’istruzione

Nessuna. Nessuna.

EnableIn viene azzerato EnableOut viene azzerato, l’istruzione non esegue alcuna azione e le uscite non vengono aggiornate.

na

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

EnableIn viene sempre impostato.

L’istruzione viene eseguita.

post-scansione Nessuna. Nessuna.

Target 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Source 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

mask1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

Dest 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1

Le caselle ombreggiate indicano i bit che sono stati modificati.

288 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 289: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 289

Page 290: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Bit Field Distribute (BTD) L’istruzione BTD copia i bit specificati dalla Source, sposta i bit nella posizione appropriata, e scrive i bit nella Destination.

Questa istruzione è disponibile come BTDT in testo strutturato e blocco funzione, vedere pagina 293.

Operandi:

Ladder

Descrizione: Quando è abilitata, l’istruzione BTD copia un gruppo di bit dalla Source alla destinazione. Il gruppo di bit è identificato dal bit di Source (bit con il numero più basso del gruppo) e la Length (n. di bit da copiare). Il bit di destinazione è il bit con il numero inferiore da cui cominciare nella Destination. Il valore Source rimane invariato.

Se la lunghezza del campo bit è superiore alla Destination, l’istruzione non determina il salvataggio dei bit in eccesso. Gli eventuali bit in eccesso non scorrono nella parola successiva.

Se si mischiano tipi di dati interi, l’istruzione riempie con degli 0 i bit superiori dei tipi di dati interi più piccoli in modo che questi abbiano la stessa dimensione dei tipi di dati più grandi.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

immediato

tag

tag che contiene i bit da spostare

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Source bit DINT immediato

(0–31 DINT)(0–15 INT)(0–7 SINT)

numero del bit (bit con il numero più basso) da cui iniziare uno spostamento

deve rientrare nella gamma valida per il tipo di dati della Source

Destination SINT

INT

DINT

tag tag in cui spostare i bit

Destination bit

DINT immediato

(0–31 DINT)(0–15 INT)(0–7 SINT)

numero del bit (bit con il numero più basso) da cui iniziare la copia dei bit dalla Source

deve rientrare nella gamma valida per il tipo di dati della Destination

Length DINT immediato(1–32)

numero di bit da spostare

290 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 291: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Esecuzione:

Esempio 1: Se abilitata, l’istruzione BTD determina lo spostamento dei bit all’interno del value_1.

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione copia e sposta i bit della Source nella Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

value_1prima dell’istruzione BTD

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

value_1dopo l’istruzione BTD

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Le caselle ombreggiate indicano i bit che sono stati modificati in value_1.

Source bitDestination bit

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 291

Page 292: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Esempio 2: Se è abilitata, l’istruzione BTD sposta 10 bit da value_1 a value_2.

value_1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

value_2prima dell’istruzione BTD

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

value_2dopo l’istruzione BTD

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0

Le caselle ombreggiate indicano i bit che sono stati modificati in value_2.

Source bit

Destination bit

292 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 293: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Bit Field Distribute with Target (BTDT)

L’istruzione BTDT per prima cosa copia il valore Target nella Destinazione. Quindi l’istruzione copia i bit specificati da Source, sposta i bit nella posizione appropriata, e scrive i bit nella Destination. Source e Target rimangono invariati.

Questa istruzione è disponibile in ladder come BTD, vedere pagina 290.

Operandi:

Testo strutturato

Blocco funzione

Struttura FBD_BIT_FIELD_DISTRIBUTE

Variabile Tipo Formato Descrizione

BTDT tag FBD_BIT_FIELD_DISTRIBUTE struttura struttura BTDT

Operando Tipo Formato Descrizione

BTDT tag FBD_BIT_FIELD_DISTRIBUTE struttura struttura BTDT

BTDT(BTDT_tag);

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Blocco funzione:

Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Se impostato, l’istruzione viene eseguita.

Il valore di default è impostato.

Testo strutturato:

Nessun effetto. L’istruzione viene eseguita.

Source DINT Valore dell’ingresso contenente i bit da portare nella destinazione.

Valori validi = qualsiasi numero intero

SourceBit DINT Posizione del bit nella Source (bit con il numero più basso da cui iniziare lo spostamento).

Validi = 0–31

Length DINT numero di bit da spostare

Validi = 1–32

DestBit DINT Posizione del bit nella Source (bit con il numero più basso da cui iniziare la copia).

Validi = 0–31

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 293

Page 294: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Descrizione: Quando è abilitata, l’istruzione BTD copia un gruppo di bit dalla Source alla destinazione. Il gruppo di bit è identificato dal bit di Source (bit con il numero più basso del gruppo) e la Length (n. di bit da copiare). Il bit di destinazione è il bit con il numero inferiore da cui cominciare nella Destination. Il valore Source rimane invariato.

Se la lunghezza del campo bit è superiore alla Destination, l’istruzione non determina il salvataggio dei bit in eccesso. Gli eventuali bit in eccesso non scorrono nella parola successiva.

Indicatori di stato aritmetico: Gli indicatori di stato aritmetici sono influenzati

Condizioni di errore: nessuna

Esecuzione:

Target DINT Il valore dell’ingresso viene portato alla destinazione prima dello spostamento dei bit dalla Source.

Valori validi = qualsiasi numero intero

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest DINT Risultato dell’operazione di spostamento bit. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Parametro di ingresso

Tipo di dati Descrizione

Condizione Azione blocco funzione Azione testo strutturato

durante la prescansione Nessuna. Nessuna.

prima scansione dell’istruzione

Nessuna. Nessuna.

durante la prima esecuzione dell’istruzione

Nessuna. Nessuna.

EnableIn viene azzerato EnableOut viene azzerato, l’istruzione non esegue alcuna azione e le uscite non vengono aggiornate.

na

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

EnableIn viene sempre impostato.

L’istruzione viene eseguita.

post-scansione Nessuna. Nessuna.

294 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 295: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Esempio: 1. Il controllore copia il Target nella Dest.

2. SourceBit e Length indicano quali bit della Source devono essere copiati nella Dest, a partire da DestBit. Source e Target rimangono invariati.

Testo strutturato

BTDT_01.Source := Source;

BTDT_01.SourceBit := source_bit;

BTDT_01.Length := length;

BTDT_01.DestBit := dest_bit;

BTDT_01.Target := target;

BTDT(BTDT_01);

distributed_value := BTDT_01.Dest;

Blocco funzione

Target 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

Source 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SourceBitDestBit

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 295

Page 296: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Clear (CLR) L’istruzione CLR cancella tutti i bit della destinazione.

Operandi:

Ladder

Testo strutturato

Il testo strutturato non prevede un’istruzione CLR. In alternativa, assegnare 0 al tag da cancellare. Con questa assegnazione dest. viene cancellato

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni e delle assegnazioni in testo strutturato.

Descrizione: L’istruzione CLR cancella tutti i bit della destinazione.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Operando Tipo Formato Descrizione

Destination SINT

INT

DINT

REAL

tag tag da cancellare

dest := 0;

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione cancella la Destinazione.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

296 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 297: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Esempio: Cancella tutti i bit di value.

Ladder

Testo strutturato

value := 0;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 297

Page 298: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Swap Byte (SWPB) L’istruzione SWPB ridispone i byte di un valore.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione SWPB in ladder. Selezionando la modalità ordine HIGH/LOW, inserire HIGHLOW o HIGH_LOW (senza barra obliqua).

Operando Tipo Formato Digitare

Source INT

DINT

REAL

tag tag contenente i byte che si desidera ridisporre

Modalità order Se Source è E si desidera modificare la configurazione dei byte impostando questa configurazione (ogni lettera rappresenta un byte diverso)

Selezionare

INT N/A qualunque opzione

DINT

REAL

ABCD ⇒ DCBA REVERSE (o inserire 0)

ABCD ⇒ CDAB WORD (o inserire 1)

ABCD ⇒ BADC HIGH/LOW (o inserire 2)

Destination INT

DINT

REAL

tag tag per memorizzare i byte con un nuovo ordine

Se Source è La Destination deve essere

INT INT

DINT

DINT DINT

REAL REAL

SWPB(Source,OrderMode,Dest);

298 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 299: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Descrizione: L’istruzione SWPB consente di cambiare l’ordine dei byte della Source. I risultati vengono inseriti nella Destinazione.

Quando si leggono o scrivono caratteri ASCII normalmente non è necessario cambiare l’ordine dei caratteri. Le istruzioni di lettura e scrittura ASCII (ARD, ARL, AWA, AWT) determinano automaticamente lo scambio dei caratteri, come mostrato sotto.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

42969

42968

B A Nome tag Valore Stile Tipo

bar_code[0] AB ASCII INT

A B

lettore per codici a barre

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione SWPB ridispone i byte specificati. L’istruzione SWPB ridispone i byte specificati.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 299

Page 300: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Esempio 1: Le tre istruzioni SWPB determinano ciascuna il riordino dei byte di DINT_1 con un ordine diverso. Lo stile di visualizzazione è ASCII, e ciascun carattere rappresenta un byte. Ciascuna istruzione colloca il byte in una Destinazione diversa, nel nuovo ordine.

Ladder

Testo strutturato

SWPB(DINT_1,REVERSE,DINT_1_reverse);

SWPB(DINT_1,WORD,DINT_1_swap_word);

SWPB(DINT_1,HIGHLOW,DINT_1_swap_high_low);

Esempio 2: Nell’esempio che segue vengono invertiti i byte di ciascun elemento di una matrice. Per visualizzare un progetto RSLogix 5000 contenente questo esempio, aprire la cartella RSLogix 5000\Projects\Samples, file Swap_Bytes_in_Array.ACD.

1. Inizializzare i tag. L’istruzione SIZE trova il numero di elementi all’interno della array e memorizza quel valore in array_length. Un’istruzione successiva utilizza questo valore per stabilire quando la routine ha agito su tutti gli elementi della matrice.

2. Inversione dei byte in un elemento della array.

• L’istruzione SWPB inverte i byte dell’ elemento in posizione indicata dal valore index. Ad esempio, se index è pari a 0, l’istruzione SWPB agisce su array[0].

• L’istruzione ADD aumenta il valore di index. La volta successiva che l’istruzione viene eseguita, SWPB agisce sull’elemento successivo della array.

3. Stabilire quando l’istruzione SWPB ha agito su tutti gli elementi della matrice.

• Se index è inferiore al numero di elementi della matrice (array_length), si passa all’elemento successivo della matrice.

• Se index è pari a array_length, significa che SWPB ha agito su tutti gli elementi della matrice.

300 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 301: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Ladder

Testo strutturato

index := 0;

SIZE (array[0],0,array_length);

REPEAT

SWPB(array[index],REVERSE,array_byte_reverse[index]);

index := index + 1;

UNTIL(index >= array_length)END_REPEAT;

Inizializzare i tag.

Inversione dei byte.

Stabilire se l’istruzione SWPB ha agito su tutti gli elementi della matrice.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 301

Page 302: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Bitwise AND (AND) L’istruzione AND esegue un’operazione AND di bit utilizzando i bit di Source A e Source B e colloca i risultati nella Destinazione.

Per eseguire un AND logico, vedere pagina 314.

Operandi:

Ladder

Testo strutturato

Usare AND o il simbolo della e commerciale “&” come operatore all’interno di un’espressione. Questa espressione valuta sourceA AND sourceB.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

immediato

tag

valore su cui eseguire AND con Source B

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Source B SINT

INT

DINT

immediato

tag

valore su cui eseguire AND con Source A

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Destination SINT

INT

DINT

tag memorizza il risultato

Operando Tipo Formato Descrizione

AND tag FBD_LOGICAL struttura struttura AND

dest := sourceA AND sourceB

302 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 303: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Struttura FBD_LOGICAL

Descrizione: Se è abilitata, l’istruzione valuta l’operazione AND.

Se si mischiano tipi di dati interi, l’istruzione riempie con degli 0 i bit superiori dei tipi di dati interi più piccoli in modo che questi abbiano la stessa dimensione dei tipi di dati più grandi.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA DINT Valore su cui eseguire AND con Source B.

Valori validi = qualsiasi numero intero

SourceB DINT Valore su cui eseguire AND con Source A.

Valori validi = qualsiasi numero intero

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest DINT Risultato dell’istruzione. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Se il bit In Source A è

E il bit in Source B è

Il bit nella Destination è

0 0 0

0 1 0

1 0 0

1 1 1

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione esegue un’operazione AND di bit.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 303

Page 304: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Blocco funzione

Esempio: Se è abilitata, l’istruzione AND esegue un’operazione AND di bit su SourceA e SourceB e inserisce il risultato nella Dest.

Ladder

Testo strutturato

value_result_and := value_1 AND value_2;

Blocco funzione

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1

SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

Dest 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0

304 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 305: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Bitwise OR (OR) L’istruzione OR esegue un’operazione OR di bit di Source A e Source B e colloca i risultati nella Destinazione.

Per eseguire un OR logico, vedere pagina 317.

Operandi:

Ladder

Testo strutturato

Usare OR come operatore all’interno di un’espressione. Questa espressione valuta sourceA OR sourceB.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

immediato

tag

valore su cui eseguire OR con Source B

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Source B SINT

INT

DINT

immediato

tag

valore su cui eseguire OR con Source A

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Destination SINT

INT

DINT

tag memorizza il risultato

Operando Tipo Formato Descrizione

OR tag FBD_LOGICAL struttura struttura OR

dest := sourceA OR sourceB

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 305

Page 306: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Struttura FBD_LOGICAL

Descrizione: Se è abilitata, l’istruzione valuta l’operazione OR:

Se si mischiano tipi di dati interi, l’istruzione riempie con degli 0 i bit superiori dei tipi di dati interi più piccoli in modo che questi abbiano la stessa dimensione dei tipi di dati più grandi.

indicatori di stato aritmetico gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA DINT Valore su cui eseguire OR con SourceB.

Valori validi = qualsiasi numero intero

SourceB DINT Valore su cui eseguire OR con SourceA.

Valori validi = qualsiasi numero intero

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest DINT Risultato dell’istruzione. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Se il bit In Source A è

E il bit in Source B è

Il bit nella Destination è

0 0 0

0 1 1

1 0 1

1 1 1

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione esegue un’operazione OR di bit.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

306 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 307: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Blocco funzione

Esempio: Se è abilitata, l’istruzione OR esegue un’operazione OR di bit SourceA e SourceB e inserisce il risultato nella Dest.

Ladder

Testo strutturato

value_result_or := value_1 OR value_2;

Blocco funzione

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1

SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

Dest 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 307

Page 308: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Bitwise Exclusive OR (XOR) L’istruzione XOR esegue un’operazione XOR di bit utilizzando i bit di Source A e Source B e colloca i risultati nella Destinazione.

Per eseguire un’operazione logica XOR, vedere pagina 320.

Operandi:

Ladder

Testo strutturato

Usare XOR come operatore all’interno di un’espressione. Questa espressione valuta sourceA XOR sourceB.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source A SINT

INT

DINT

immediato

tag

valore su cui eseguire XOR con Source B

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Source B SINT

INT

DINT

immediato

tag

valore su cui eseguire XOR con Source A

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Destination SINT

INT

DINT

tag memorizza il risultato

Operando Tipo Formato Descrizione

XOR tag FBD_LOGICAL struttura struttura XOR

dest := sourceA XOR sourceB

308 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 309: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Struttura FBD_LOGICAL

Descrizione: Se è abilitata, l’istruzione valuta l’operazione XOR:

Se si mischiano tipi di dati interi, l’istruzione riempie con degli 0 i bit superiori dei tipi di dati interi più piccoli in modo che questi abbiano la stessa dimensione dei tipi di dati più grandi.

indicatori di stato aritmetico gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

SourceA DINT Valore su cui eseguire XOR con SourceB.

Valori validi = qualsiasi numero intero

SourceB DINT Valore su cui eseguire XOR con SourceA.

Valori validi = qualsiasi numero intero

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest DINT Risultato dell’istruzione. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Se il bit In Source A è

E il bit in Source B è

Il bit nella Destination è

0 0 0

0 1 1

1 0 1

1 1 0

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione esegue un’operazione OR di bit.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 309

Page 310: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Blocco funzione

Esempio: Se è abilitata, l’istruzione XOR esegue un’operazione XOR di bit su SourceA e SourceB e inserisce il risultato nel tag di destinazione.

Ladder

Testo strutturato

value_result_xor := value_1 XOR value_2;

Blocco funzione

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1

value_2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

value_result_xor 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1

310 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 311: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Bitwise NOT (NOT) L’istruzione NOT esegue un’operazione NOT di bit utilizzando i bit di Source e colloca il risultato nella Destinazione.

Per quanto riguarda l’esecuzione di un’operazione NOT logica, vedere pagina 323.

Operandi:

Ladder

Testo strutturato

Usare NOT come operatore all’interno di un’espressione. Questa espressione valuta NOT Source.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

immediato

tag

valore su cui eseguire l’operazione NOT

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Destination SINT

INT

DINT

tag memorizza il risultato

Operando Tipo Formato Descrizione

NOT tag FBD_LOGICAL struttura struttura NOT

dest := Source NOT

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 311

Page 312: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Struttura FBD_LOGICAL

Descrizione: Se è abilitata, l’istruzione valuta l’operazione NOT:

Se si mischiano tipi di dati interi, l’istruzione riempie con degli 0 i bit superiori dei tipi di dati interi più piccoli in modo che questi abbiano la stessa dimensione dei tipi di dati più grandi.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source DINT Valore su cui eseguire l’operazione NOT.

Valori validi = qualsiasi numero intero

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest DINT Risultato dell’istruzione. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Se il bit nella Source A è

Il bit nella Destinazione sarà

0 1

1 0

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione esegue un’operazione NOT di bit.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

312 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 313: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Blocco funzione

Esempio: Se è abilitata, l’istruzione NOT esegue un’operazione NOT di bit su Source e inserisce il risultato nella Dest.

Ladder

Testo strutturato

value_result_not := NOT value_1;

Blocco funzione

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1

value_result_not 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 313

Page 314: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Boolean AND (BAND) L’istruzione BAND esegue operazioni AND logiche su 8 ingressi booleani.

Per quanto riguarda l’esecuzione di un’operazione AND di bit, vedere pagina 302.

Operandi:

Testo strutturato

Usare AND o il simbolo della e commerciale “&” come operatore all’interno di un’espressione. Gli operandi devono essere valori o espressioni BOOL che valutino i valori BOOL. Questa espressione controlla se operandA e operandB sono entrambi impostati (true).

Consultare l’Appendice B per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_BOOLEAN_AND

Operando Tipo Formato Descrizione

BAND tag FBD_BOOLEAN_AND struttura struttura BAND

IF operandA AND operandB THEN

<istruzione>;

END_IF;

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

In1 BOOL Primo ingresso booleano.

Il valore di default è impostato.

In2 BOOL Secondo ingresso booleano.

Il valore di default è impostato.

In3 BOOL Terzo ingresso booleano.

Il valore di default è impostato.

In4 BOOL Quarto ingresso booleano.

Il valore di default è impostato.

In5 BOOL Quinto ingresso booleano.

Il valore di default è impostato.

In6 BOOL Sesto ingresso booleano.

Il valore di default è impostato.

In7 BOOL Settimo ingresso booleano.

Il valore di default è impostato.

314 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 315: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Descrizione: L’istruzione BAND esegue operazioni AND logiche su 8 ingressi booleani. In presenza di un ingresso non utilizzato, viene impostato il valore di default (1).

Out = In1 AND In2 AND In3 AND In4 AND In5 AND In6 AND In7 AND In8

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio 1: In questo esempio viene eseguito un AND su bool_in1 e bool_in2 e il risultato viene inserito in value_result_and.

Testo strutturato

value_result_and := bool_in1 AND bool_in2;

In8 BOOL Ottavo ingresso booleano.

Il valore di default è impostato.

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL Abilita l’uscita.

Out BOOL Uscita dell’istruzione.

Parametro di ingresso

Tipo di dati Descrizione

Condizione Azione blocco funzione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Se BOOL_IN1 è Se BOOL_IN2 è VALUE_RESULT_AND sarà

0 0 0

0 1 0

1 0 0

1 1 1

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 315

Page 316: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Blocco funzione

Esempio 2: Se sia bool_in1 che bool_in2 sono impostati (true), light1 viene impostato (on). Diversamente, light1 viene azzerato (off).

Testo strutturato

IF bool_in1 AND bool_in2 THEN

light1 := 1;

ELSE

light1 := 0;

END_IF;

316 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 317: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Boolean OR (BOR) L’istruzione BOR esegue operazioni OR logiche su 8 ingressi booleani.

Per quanto riguarda l’esecuzione di un’operazione OR di bit, vedere pagina 305.

Operandi:

Testo strutturato

Usare OR come operatore all’interno di un’espressione. Gli operandi devono essere valori o espressioni BOOL che valutino i valori BOOL. Questa espressione controlla se operandA o operandB o entrambi sono impostati (true).

Consultare l’Appendice B per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_BOOLEAN_OR

Operando Tipo Formato Descrizione

BOR tag FBD_BOOLEAN_OR struttura struttura BOR

IF operandA OR operandB THEN

<istruzione>;

END_IF;

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

In1 BOOL Primo ingresso booleano.

Il valore di default è azzerato.

In2 BOOL Secondo ingresso booleano.

Il valore di default è azzerato.

In3 BOOL Terzo ingresso booleano.

Il valore di default è azzerato.

In4 BOOL Quarto ingresso booleano.

Il valore di default è azzerato.

In5 BOOL Quinto ingresso booleano.

Il valore di default è azzerato.

In6 BOOL Sesto ingresso booleano.

Il valore di default è azzerato.

In7 BOOL Settimo ingresso booleano.

Il valore di default è azzerato.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 317

Page 318: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Descrizione: L’istruzione BOR esegue operazioni OR logiche su 8 ingressi booleani. In presenza di un ingresso non utilizzato, il valore di default viene azzerato (0).

Out = In1 OR In2 OR In3 OR In4 OR In5 OR In6 OR In7 OR In8

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio 1: In questo esempio viene eseguito un OR su bool_in1 e bool_in2 e il risultato viene inserito in value_result_or.

Testo strutturato

value_result_or := bool_in1 OR bool_in2;

In8 BOOL Ottavo ingresso booleano.

Il valore di default è azzerato.

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL Abilita l’uscita.

Out BOOL Uscita dell’istruzione.

Parametro di ingresso

Tipo di dati Descrizione

Condizione Azione blocco funzione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Se BOOL_IN1 è Se bool_in2 è Value_result_or sarà

0 0 0

0 1 1

1 0 1

1 1 1

318 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 319: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Blocco funzione

Esempio 2: In questo esempio, light1 viene impostato (on) se:

• solo bool_in1 è impostato (true).

• solo bool_in2 è impostato (true).

• sia bool_in1 che bool_in2 sono impostati (true).

Diversamente, light1 viene azzerato (off).

Testo strutturato

IF bool_in1 OR bool_in2 THEN

light1 := 1;

ELSE

light1 := 0;

END_IF;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 319

Page 320: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Boolean Exclusive OR (BXOR)

BXOR esegue un OR esclusivo su 2 ingressi booleani.

Per quanto riguarda l’esecuzione di un’operazione XOR di bit, vedere pagina 308.

Operandi:

Testo strutturato

Usare XOR come operatore all’interno di un’espressione. Gli operandi devono essere valori o espressioni BOOL che valutino i valori BOOL. Questa espressione controlla se è impostato (true) solo operandA o solo operandB.

Consultare l’Appendice B per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_BOOLEAN_XOR

Descrizione: L’istruzione BXOR esegue un OR esclusivo su 2 ingressi booleani.

Out = In1 XOR In2

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

BXOR tag FBD_BOOLEAN_XOR struttura struttura BXOR

IF operandA XOR operandB THEN

<istruzione>;

END_IF;

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

In1 BOOL Primo ingresso booleano.

Il valore di default è azzerato.

In2 BOOL Secondo ingresso booleano.

Il valore di default è azzerato.

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL Abilita l’uscita.

Out BOOL Uscita dell’istruzione.

320 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 321: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Esecuzione:

Esempio 1: In questo esempio viene eseguito un OR esclusivo su bool_in1 e bool_in2 e il risultato viene inserito in value_result_xor.

Testo strutturato

value_result_xor := bool_in1 XOR bool_in2;

Blocco funzione

Condizione Azione blocco funzione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Se BOOL_IN1 è Se BOOL_IN2 è VALUE_RESULT_XOR sarà

0 0 0

0 1 1

1 0 1

1 1 0

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 321

Page 322: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Esempio 2: In questo esempio, light1 viene impostato (on) se

• solo bool_in1 è impostato (true).

• solo bool_in2 è impostato (true).

Diversamente, light1 viene azzerato (off).

Testo strutturato

IF bool_in1 XOR bool_in2 THEN

light1 := 1;

ELSE

light1 := 0;

END_IF;

322 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 323: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capitolo 7

Boolean NOT (BNOT) L’istruzione BNOT complementa un ingresso booleano.

Per quanto riguarda l’esecuzione di un’operazione NOT di bit, vedere pagina 311.

Operandi:

testo strutturato

Usare NOT come operatore all’interno di un’espressione. L’operando deve corrispondere a valori o espressioni BOOL che valutino i valori BOOL. Questa espressione valuta se l’operando è azzerato (falso).

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_BOOLEAN_NOT

Descrizione: L’istruzione BNOT complementa un ingresso booleano.

Out = NOT In

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

BNOT tag FBD_BOOLEAN_NOT struttura struttura BNOT

IF NOT operand THEN

<istruzione>;

END_IF;

Parametro di ingresso

Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

In BOOL Ingresso istruzione.

Il valore di default è impostato.

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL Abilita l’uscita.

Out BOOL Uscita dell’istruzione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 323

Page 324: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 7 Istruzioni di spostamento/logiche (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)

Esecuzione:

Esempio 1: In questo esempio viene eseguito il complemento di bool_in1 e il risultato viene inserito in value_result_not.

Testo strutturato

value_result_not := NOT bool_in1;

Blocco funzione

Esempio 2: Se bool_in1 viene azzerato, light1 viene azzerato (off). Diversamente, light1 viene impostato (on).

Testo strutturato

IF NOT bool_in1 THEN

light1 := 0;

ELSE

light1 := 1;

END_IF;

Condizione Azione blocco funzione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Se BOOL_IN1 è VALUE_RESULT_NOT sarà

0 1

1 0

324 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 325: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Introduzione Le istruzioni di file/varie operano su matrici di dati.

È possibile usare tipi di dati diversi, ma si potrebbe perdere in precisione ed in arrotondamento ed inoltre l’istruzione potrebbe impiegare più tempo per essere eseguita. Controllare il bit S:V per verificare se il risultato è stato troncato.

Per le istruzioni ladder, i tipi di dati in grassetto indicano i tipi di dati ottimali. Un’istruzione viene eseguita più velocemente e richiede meno memoria se tutti gli operandi dell’istruzione utilizzano il medesimo tipo di dati ottimali, in genere DINT o REAL.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

eseguire operazioni aritmetiche, logiche, di spostamento e funzionali su valori di matrici

FAL ladder

testo strutturato(1)

331

cercare e confrontare valori di matrici FSC ladder 342

copiare il contenuto di una matrice in un’altra matrice

COP ladder

testo strutturato

350

copiare il contenuto di una matrice in un’altra matrice senza interruzione

CPS ladder

testo strutturato

350

riempire una matrice con determinati dati FLL ladder

testo strutturato(1)

356

calcolare la media di una matrice di valori AVE ladder

testo strutturato(1)

360

ordinare i dati di una dimensione di una matrice in ordine crescente

SRT ladder

testo strutturato

365

calcolare la deviazione standard di una matrice di valori

STD ladder

testo strutturato(1)

370

trovare la dimensione di una dimensione di una matrice

SIZE ladder

testo strutturato

375

(1) Non esiste un’istruzione equivalente in testo strutturato. Utilizzare un’altra programmazione in testo strutturato per ottenere lo stesso risultato. Vedere la descrizione dell’istruzione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 325

Page 326: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Scelta della modalità operativa

Nel caso delle istruzioni FAL e FSC, la modalità indica al controllore come distribuire le operazioni di matrice.

Modalità Continua

In modalità Continua (ALL), si opera su tutti gli elementi specificati nella matrice prima di continuare con l’istruzione successiva. L’operazione inizia quando la condizione del ramo di ingresso dell’istruzione passa da falsa a vera. Il valore posizione (.POS) della struttura di controllo indica l’elemento della matrice che l’istruzione sta utilizzando. L’operazione ha termine quando il valore .POS è uguale al valore .LEN.

Se si desidera Selezionare questa modalità

operare su tutti gli elementi specificati in una matrice prima di continuare con l’istruzione successiva

Continua (All)

distribuire l’operazione sulla matrice su più scansioni

immettere il numero di elementi per scansione su cui operare (1-2147483647)

Discreta (Numerical)

manipolare un elemento della matrice ogni volta che la condizione del ramo di ingresso passa da falsa a vera

Incrementale (Incremental)

Matrice dati una scansione

16639

326 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 327: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Il seguente schema di temporizzazione mostra la relazione tra i bit di stato e il funzionamento dell’istruzione. Quando l’esecuzione dell’istruzione è completa, viene impostato il bit .DN. Quando la condizione del ramo di ingresso è falsa, il bit .DN, il bit .EN ed il valore .POS vengono azzerati. Solo a questo punto una transizione della condizione del ramo di ingresso da falsa a vera può attivare un’altra esecuzione dell’istruzione.

Modalità discreta

La modalità discreta (NUMERICAL) distribuisce le operazioni sulla matrice in varie scansioni. Questa modalità è utile quando si lavora su dati non critici per tempo o su grandi quantità di dati. Si inserisce il numero di elementi su cui operare ad ogni scansione e così facendo si riducono i tempi di scansione.

una scansione

operazione completa

azzera i bit di stato ed azzera il valore .POS

condizione ramo di ingresso

bit .EN

bit .DN

scansione dell’istruzione

40010nessuna esecuzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 327

Page 328: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

L’esecuzione viene attivata quando la condizione del ramo di ingresso passa da falsa a vera. Una volta attivata, l’istruzione viene eseguita ogni volta che viene scandita e per il numero di volte necessario a completare l’operazione su tutta la matrice. Dopo essere stata attivata, la condizione del ramo di ingresso può cambiare continuamente senza interrompere l’esecuzione dell’istruzione.

Il seguente schema di temporizzazione mostra la relazione tra i bit di stato e il funzionamento dell’istruzione. Quando l’esecuzione dell’istruzione è completa, viene impostato il bit .DN.

Se al completamento la condizione del ramo di ingresso è vera, i bit .DN ed .ER sono impostati fino a quando la condizione del ramo di

IMPORTANTE Evitare di utilizzare i risultati di un’istruzione di file funzionante in modalità discreta fino a quando non sia stato impostato il bit .DN.

una scansione

16641

seconda scansione

scansione successiva

più scansioni più scansioni

condizione ramo di ingresso

bit .EN

bit .DN

scansione dell’istruzione

azzera i bit di stato ed azzera il valore .POS

azzera i bit di stato ed azzera il valore .POS

al completamento il ramo è vero al completamento il ramo è falso

40013operazione completa operazione completa

328 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 329: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

ingresso diventa falsa. Quando la condizione del ramo di ingresso diventa falsa, questi bit vengono azzerati così come il valore .POS.

Se al completamento la condizione del ramo di ingresso è falsa, il bit .EN viene azzerato immediatamente. Una scansione dopo l’azzeramento del bit .EN, vengono azzerati il bit .DN ed il valore .POS.

Modalità incrementale

La modalità incrementale (INCREMENTAL) manipola un elemento della matrice ogni volta che la condizione del ramo di ingresso dell’istruzione passa da falsa a vera.

16643

1° istruzione abilitata2° istruzione abilitata3° istruzione abilitata

ultima istruzione abilitata

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 329

Page 330: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Il seguente schema di temporizzazione mostra la relazione tra i bit di stato e il funzionamento dell’istruzione. L’esecuzione avviene solo in una scansione in cui la condizione del ramo di ingresso passa da falsa a vera. Ogni volta che ciò si verifica viene manipolato un solo elemento della matrice. Se la condizione del ramo di ingresso rimane vera per più di una scansione, l’istruzione viene eseguita solamente durante la prima scansione.

Quando la condizione del ramo di ingresso è vera, viene impostato il bit .EN. Quando è stato manipolato l’ultimo elemento della matrice, viene impostato il bit .DN. Quando l’ultimo elemento è stato manipolato e la condizione del ramo di ingresso diventa falsa, il bit .EN, il bit .DN ed il valore .POS vengono azzerati.

La differenza tra la modalità incrementale e la modalità discreta alla frequenza di un elemento per scansione è che:

• per iniziare l’esecuzione, la modalità discreta con un qualsiasi numero di elementi per scansione richiede solo una transizione da falsa a vera della condizione del ramo di ingresso. L’istruzione continua l’esecuzione del numero di elementi specificato per ogni scansione fino al suo completamento, a prescindere dallo stato della condizione del ramo di ingresso.

• La modalità incrementale richiede un cambiamento della condizione del ramo di ingresso da falsa a vera affinché sia possibile manipolare un elemento della matrice.

una scansione

condizione ramo di ingresso

bit .EN

bit .DN

scansione dell’istruzione

operazionecompleta

azzera i bit di stato ed azzera il valore .POS

40014

330 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 331: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

File Arithmetic and Logic (FAL)

L’istruzione FAL esegue operazioni di copia, aritmetiche, logiche e di funzione sui dati memorizzati in una matrice.

Operandi:

Ladder

Testo strutturato

Il linguaggio testo strutturato non prevede un’istruzione FAL, tuttavia è possibile ottenere lo stesso risultato utilizzando un’istruzione SIZE e un FOR...DO o altro costrutto loop.

SIZE(destination,0,length-1);

FOR position = 0 TO length DO

destination[position] := numeric_expression;

END_FOR;

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi dei costrutti in testo strutturato.

Operando Tipo Formato Descrizione

Control CONTROL tag struttura di controllo per l’operazione

Length DINT immediato numero di elementi della matrice da manipolare

Position DINT immediato elemento corrente della matrice

il valore iniziale generalmente è 0

Mode DINT immediato come distribuire l’operazione

selezionare INC, ALL oppure inserire un numero

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Expression SINT

INT

DINT

REAL

immediato

tag

un’espressione formata da tag e/o valori immediati separati da operatori

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 331

Page 332: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Struttura di controllo

Descrizione: L’istruzione FAL esegue sulle matrici le stesse operazioni che l’istruzione CPT esegue sugli elementi.

Gli esempi che iniziano a pagina 338 mostrano come usare il valore POS per passare attraverso una matrice. Se un indice dell’espressione della destinazione è fuori gamma, l’istruzione FAL genera un errore grave (tipo 4, codice 20).

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore:

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione FAL è abilitata.

.DN BOOL Il bit di fine viene impostato quando l’istruzione ha operato sull’ultimo elemento (.POS = .LEN).

.ER BOOL Il bit di errore viene impostato se l’espressione genera un overflow (S:V è impostato). L’istruzione interrompe la sua esecuzione fino a quando il programma non azzera il bit .ER. Il valore .POS contiene la posizione dell’elemento che ha causato un overflow.

.LEN DINT La lunghezza specifica il numero di elementi della matrice su cui opera l’istruzione FAL.

.POS DINT La posizione contiene la posizione dell’elemento corrente a cui l’istruzione accede.

Si verifica un errore grave se Tipo errore Codice errore

l’indice è fuori gamma 4 20

.POS < 0 oppure .LEN < 0 4 21

332 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 333: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esecuzione:

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

esamina il bit .DN

bit .DN = 0

bit .DN = 1

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

fine

bit .EN viene azzeratobit .ER viene azzeratobit .DN viene azzeratovalore .POS azzerato

Modalità INCno

modalità continua

no

bit .EN viene azzerato.

.POS = .POS + 1

modalità discreta

internal bit viene azzerato

.LEN < 0 o .POS < 0

no

errore grave

.POS = .POS – 1

.POS = 0sì

no

bit .DN viene impostato bit .EN viene impostato

.POS < .LENno

Modalità > .LEN

no

mode = .LEN

.LEN = 0sì

no

bit .DN viene impostatobit .EN viene azzerato

pagina 337

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 333

Page 334: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Condizione Azione ladder

se la condizione del ramo di ingresso è vera

La condizione del ramo di uscita viene impostata su vero.

fine

esamina il bit .DN

bit .DN = 0

bit .DN = 1

.LEN = 0no

Modalità INCno

modalità continua

no

loop_count = loop_count – 1

loop_count < 0no

.POS = .POS + 1

valuta espressione

.POS = .POS + 1

esamina S:Vno

bit .ER viene impostato

.POS = .LENno

bit .DN viene impostato bit .EN viene impostato .POS = .POS + 1

esamina il bit .ER

bit .ER = 0

bit .ER = 1

bit .DN viene impostato bit .EN viene impostato

Modalità INC

modalità continua

modalità discreta

comune

pagina 337

pagina 335 pagina 336

.LEN < 0 o

.POS < 0sì

no

errore grave

334 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 335: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Condizione Azione ladder

esamina bit .ENbit .EN = 1

bit .EN = 0

.POS = .POS + 1

.POS ≥ .LENsì

no

bit .EN viene impostatoloop_count = 1.POS = .POS – 1

esaminainternal bit

bit = 1

bit = 0

internal bit viene impostato

Modalità INC

comune

.POS = .POS – 1

.POS = 0sì

no

bit .DN viene impostato bit .EN viene impostato

La condizione del ramo di uscita viene impostata su vero.

fine

pagina 334

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 335

Page 336: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Condizione Azione ladder

esamina bit .ENbit .EN = 0

bit .EN = 1

.POS = .POS + 1

.POS ≥ .LENsì

no

loop_count = .LEN – .POS.POS = .POS – 1

esaminainternal bit

bit = 1

bit = 0

bit .EN viene impostato

Modalità Continua

comune

.POS = .POS – 1

.POS = 0sì

no

bit .DN viene impostato bit .EN viene impostato

La condizione del ramo di uscita viene impostata su vero.

finepagina 334

336 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 337: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

esamina bit .ENbit .EN = 1

bit .EN = 0

.POS = .POS + 1

.POS ≥ .LENsì

no

esaminainternal bit

bit = 1

bit = 0

internal bit viene impostato

modalità discreta

comune

.POS = .POS – 1

.POS = 0sì

no

bit .DN viene impostato bit .EN viene impostato

La condizione del ramo di uscita viene impostata su vero.

fine

modalità .LEN ≥

nomode = .LEN

bit .EN viene impostatoloop_count = .LEN – .POS.POS = .POS – 1

modalità ≥loop_count

no

bit .EN viene impostatoloop_count = mode

pagina 334

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 337

Page 338: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esempio 1: Se è abilitata, l’istruzione FAL copia ciascun elemento di array_2 nella stessa posizione di array_1.

Esempio 2: Se è abilitata, l’istruzione FAL copia value_1 nelle prime 10 posizioni della seconda dimensione di array_2.

Esempio 3: Ogni volta che l’istruzione FAL è abilitata, questa copia il valore corrente di array_1 in value_1. L’istruzione FAL utilizza la modalità incrementale, pertanto, ogni volta che l’istruzione viene abilitata, viene copiato solo un elemento alla volta. La volta successiva che viene abilitata, l’istruzione sovrascrive value_1 con il valore successivo di array_1.

Esempio 4: Se è abilitata, l’istruzione FAL somma value_1 e value_2 e memorizza il risultato nella posizione corrente di array_1.

copia da matrice a matrice

Espressione:array_2[control_2.pos]

Destination:array_1[control_2.pos]

copia da elemento a matrice

Espressione:value_1

Destination:array_2[0,control_2.pos]

copia da matrice ad elemento

Espressione:array_1[control_1.pos]

Destination:value_1

operazione aritmetica: (elemento + elemento) a matrice

Espressione:value_1 + value_2

Destination:array_1[control_1.pos]

338 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 339: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esempio 5: Se è abilitata, l’istruzione FAL divide il valore della posizione corrente di array_2 con il valore della posizione corrente di array_3 e memorizza il risultato nella posizione corrente di array_1.

Esempio 6: Se è abilitata, l’istruzione FAL somma il valore della posizione corrente di array_1 e di value_1 e memorizza il risultato nella posizione corrente di array_3. L’istruzione deve essere eseguita 10 volte affinché gli interi array_1 e array_3 vengano elaborati.

Esempio 7: Ogni volta che l’istruzione FAL è abilitata, essa somma value_1 ed il valore corrente di array_1 e memorizza il risultato in value_2. L’istruzione FAL utilizza la modalità incrementale, pertanto, ogni volta che l’istruzione viene abilitata, solo un elemento viene sommato a value_1. La volta successiva che l’istruzione verrà abilitata, l’istruzione sovrascriverà il value_2.

operazione aritmetica: (matrice/matrice) a matrice

Espressione:array_2[control_2.pos]/array_3[control_2.pos]

Destination:array_1[control_2.pos]

operazione aritmetica: (matrice + elemento) a matrice

Espressione:array_1[control_1.pos] + value_1

Destination:array_3[control_1.pos]

operazione aritmetica: (elemento + matrice) ad elemento

Espressione:value_1 + array_1[control_1.pos]

Destination:value_2

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 339

Page 340: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esempio 8: Se è abilitata, l’istruzione FAL moltiplica il valore corrente di array_1 per il valore corrente di array_3 e memorizza il risultato in value_1. L’istruzione FAL utilizza la modalità incrementale, pertanto, ogni volta che l’istruzione viene abilitata, viene moltiplicata solo una coppia di elementi. La volta successiva che verrà abilitata, l’istruzione sovrascriverà value_1.

Espressioni FAL

Le espressioni delle istruzioni FAL vanno programmate nello stesso modo delle espressioni delle istruzioni CPT. Per informazioni su operatori validi, formato ed ordine delle operazioni comuni ad entrambi le istruzioni, utilizzare le seguenti sezioni.

Operatori validi

operazione aritmetica: (matrice∗ matrice) con elemento

Espressione:array_1[control_1.pos] * array_3[control_1.pos]

Destination:value_1

Operatore Descrizione Ottimale

+ somma DINT, REAL

– sottrai/nega DINT, REAL

* moltiplica DINT, REAL

/ dividi DINT, REAL

** esponente (x alla y) DINT, REAL

ABS valore assoluto DINT, REAL

ACS arcocoseno REAL

AND AND di bit DINT

ASN arcoseno REAL

ATN arcotangente REAL

COS coseno REAL

DEG da radianti a gradi DINT, REAL

FRD da BCD a intero DINT

LN logaritmo naturale REAL

LOG logaritmo in base 10 REAL

MOD modulo-divide DINT, REAL

NOT complemento di bit DINT

OR OR di bit DINT

RAD da gradi a radianti DINT, REAL

SIN seno REAL

SQR radice quadrata DINT, REAL

TAN tangente REAL

TOD da intero a BCD DINT

TRN tronca DINT, REAL

XOR OR di bit esclusivo DINT

Operatore Descrizione Ottimale

340 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 341: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Formattazione delle espressioni

Per ogni operatore utilizzato in un’espressione, è necessario fornire uno o due operandi (tag o valori immediati). Utilizzare la seguente tabella per formare operatori ed operandi in un’espressione:

Determinazione dell’ordine delle operazioni

Le operazioni che vengono scritte nell’espressione sono eseguite dall’istruzione in un determinato ordine, non necessariamente nell’ordine con cui sono state scritte. È possibile cambiare l’ordine delle operazioni raggruppando i termini all’interno di parentesi, forzando l’istruzione a eseguire un’operazione all’interno delle parentesi prima di altre operazioni.

Operazioni di ordine uguale vengono eseguite da sinistra a destra.

Per operatori con: Utilizzare questo Formato Esempi:

un operando operatore(operando) ABS(tag_a)

due operandi operando_a operatore operando_b

• tag_b + 5

• tag_c AND tag_d

• (tag_e ** 2) MOD (tag_f/tag_g)

Ordine Funzionamento

1. ( )

2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN

3. **

4. − (nega), NOT

5. *, /, MOD

6. − (sottrai), +

7. AND

8. XOR

9. OR

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 341

Page 342: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

File Search and Compare (FSC)

L’istruzione FSC confronta i valori di una matrice, elemento per elemento.

Operandi:

Ladder

Struttura di CONTROL

Descrizione: Quando l’istruzione FSC è abilitata ed il confronto risulta vero, l’istruzione imposta il bit .FD ed il bit .POS indica la posizione della matrice in cui l’istruzione ha trovato il confronto vero. L’istruzione imposta il bit .IN per interrompere la ricerca.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore:

Operando Tipo Formato Descrizione

Control CONTROL tag struttura di controllo per l’operazione

Length DINT immediato numero di elementi della matrice da manipolare

Position DINT immediato offset nella matrice

il valore iniziale generalmente è 0

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione FSC è abilitata.

.DN BOOL Il bit di fine viene impostato quando l’istruzione ha operato sull’ultimo elemento(.POS = .LEN).

.ER BOOL Il bit di errore non è modificato.

.IN BOOL Il bit di inibizione indica che l’istruzione FSC ha rilevato un confronto vero. Per continuare l’operazione, bisogna azzerare questo bit.

.FD BOOL Il bit di trovato indica che l’istruzione FSC ha rilevato un confronto vero.

.LEN DINT La lunghezza specifica il numero di elementi della matrice su cui opera l’istruzione.

.POS DINT La posizione contiene la posizione dell’elemento corrente a cui l’istruzione accede.

Si verifica un errore grave se Tipo errore Codice errore

.POS < 0 oppure .LEN < 0 4 21

342 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 343: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esecuzione:

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

esamina il bit .DN

bit .DN = 0

bit .DN = 1

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

fine

bit .EN viene azzeratobit .ER viene azzeratobit .DN viene azzeratovalore .POS azzerato

Modalità INCno

modalità continua

no

bit .EN viene azzerato.

.POS = .POS + 1

modalità discreta

internal bit viene azzerato

.LEN < 0 o .POS < 0

no

errore grave

.POS = .POS – 1

.POS = 0sì

no

bit .DN viene impostato bit .EN viene impostato

.POS < .LENno

Modalità > .LEN

no

mode = .LEN

.LEN = 0sì

no

bit .DN viene impostatobit .EN viene azzerato

pagina 337

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 343

Page 344: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

se la condizione del ramo di ingresso è vera

La condizione del ramo di uscita viene impostata su vero.

fine

esamina bit .IN

bit .DN = 0

bit .DN = 1

.LEN = 0no

Modalità INCno

modalità continua

no

loop_count = loop_count – 1

loop_count < 0no

.POS = .POS + 1

valuta confronto

.POS = .POS + 1

corrispondenzano

bit .EN viene impostatobit .FD viene impostatobit .IN viene impostato

.POS = .LENno

bit .DN viene impostato bit .EN viene impostato .POS = .POS + 1

esamina il bit .ER

bit .ER = 0

bit .ER = 1

bit .DN viene impostato bit .EN viene impostato Modalità

INCmodalità continua

modalità discreta

comune

pagina 337

pagina 335 pagina 336

.LEN < 0 o .POS < 0

no

errore grave

esamina il bit .DN

bit .DN = 1

bit .IN = 0

bit .DN = 0

344 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 345: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esempio 1: Ricerca di una corrispondenza tra due matrici. Quando è abilitata l’istruzione FSC confronta ognuno dei primi 10 elementi di array_1 con i corrispondenti elementi di array_2.

Esempio 2: Ricerca di una corrispondenza in una matrice. Quando è abilitata, l’istruzione FSC confronta MySearchKey con i 10 elementi di array_1.

00000000000000000000000000000000 0

00000000000000000000000000000000 1

00000000000000000000000000000000 2

00000000000000000000000000000000 3

11111111111111110000000000000000 4

11111111111111111111111111111111 5

11111111111111111111111111111111 6

11111111111111111111111111111111 7

11111111111111111111111111111111 8

11111111111111111111111111111111 9

array_1 array_2

L’istruzione FSC rivela che questi elementi sono diversi. L’istruzione imposta i bit .FD e .IN. Il valore .POS (4) indica la posizione degli elementi che sono diversi. Per continuare a confrontare il resto della matrice, bisogna azzerare il bit .IN.

control_3.pos

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000001111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

MySearchKey reference

L’istruzione FSC rivela che questo elemento di matrice è uguale a MySearchKey. L’istruzione imposta i bit .FD e .IN. Il valore .POS (4) indica la posizione degli elementi uguali. Per continuare a confrontare il resto della matrice, bisogna azzerare il bit .IN.

control_3.pos

00000000000000000000000000000000 0

00000000000000000000000000000000 1

00000000000000000000000000000000 2

00000000000000000000000000000000 3

11111111111111110000000000000000 4

11111111111111111111111111111111 5

11111111111111111111111111111111 6

11111111111111111111111111111111 7

11111111111111111111111111111111 8

11111111111111111111111111111111 9

11111111111111110000000000000000

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 345

Page 346: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esempio 3: Ricerca di una stringa in una matrice di stringhe. Quando è abilitata, l’istruzione FSC confronta i caratteri di code a 10 elementi di code_table.

Espressioni FSC

Le espressioni delle istruzioni FSC vanno programmate nello stesso modo delle espressioni delle istruzioni CMP. Per informazioni su operatori validi, formato ed ordine delle operazioni comuni ad entrambi le istruzioni, utilizzare le seguenti sezioni.

SAM

AFG 0

BEH 1

HUO 2

SAK 3

SAM 4

FQG 5

CLE 6

CAK 7

DET 8

BWG 9

code code_table

L’istruzione FSC rivela che questo elemento di matrice è uguale a code. L’istruzione imposta i bit .FD e .IN. Il valore .POS (4) indica la posizione degli elementi uguali. Per continuare a confrontare il resto della matrice, bisogna azzerare il bit .IN.

code_table_search.POS

346 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 347: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Operatori validi

Formattazione delle espressioni

Per ogni operatore utilizzato in un’espressione, è necessario fornire uno o due operandi (tag o valori immediati). Utilizzare la seguente tabella per formare operatori ed operandi in un’espressione:

Operatore Descrizione Ottimale

+ somma DINT, REAL

– sottrai/nega DINT, REAL

* moltiplica DINT, REAL

/ dividi DINT, REAL

= uguale DINT, REAL

< minore di DINT, REAL

<= minore di o uguale a DINT, REAL

> maggiore di DINT, REAL

>= maggiore di o uguale a DINT, REAL

<> diverso DINT, REAL

** esponente (x alla y) DINT, REAL

ABS valore assoluto DINT, REAL

ACS arcocoseno REAL

AND AND di bit DINT

ASN arcoseno REAL

ATN arcotangente REAL

COS coseno REAL

DEG da radianti a gradi DINT, REAL

FRD da BCD a intero DINT

LN logaritmo naturale REAL

LOG logaritmo in base 10 REAL

MOD modulo-divide DINT, REAL

NOT complemento di bit DINT

OR OR di bit DINT

RAD da gradi a radianti DINT, REAL

SIN seno REAL

SQR radice quadrata DINT, REAL

TAN tangente REAL

TOD da intero a BCD DINT

TRN tronca DINT, REAL

XOR OR di bit esclusivo DINT

Operatore Descrizione Ottimale

Per operatori con: Utilizzare questo Formato Esempi:

un operando operatore(operando) ABS(tag_a)

due operandi operando_a operatore operando_b

• tag_b + 5

• tag_c AND tag_d

• (tag_e ** 2) MOD (tag_f/tag_g)

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 347

Page 348: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Determinazione dell’ordine delle operazioni

Le operazioni che vengono scritte nell’espressione sono eseguite dall’istruzione in un determinato ordine, non necessariamente nell’ordine con cui sono state scritte. È possibile cambiare l’ordine delle operazioni raggruppando i termini all’interno di parentesi, forzando l’istruzione a eseguire un’operazione all’interno delle parentesi prima di altre operazioni.

Operazioni di ordine uguale vengono eseguite da sinistra a destra.

Ordine Funzionamento

1. ( )

2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN

3. **

4. − (nega), NOT

5. *, /, MOD

6. <, <=, >, >=, =

7. − (sottrai), +

8. AND

9. XOR

10. OR

348 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 349: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Uso di stringhe in un’espressione

Per utilizzare stringhe di caratteri ASCII in un’espressione, attenersi alle seguenti regole:

• Un’espressione consente di confrontare due tag stringa.

• Non è possibile inserire caratteri ASCII direttamente nell’espressione.

• Sono permessi solamente i seguenti operatori

• Le stringhe sono uguali se i loro caratteri corrispondono.

• I caratteri ASCII sono sensibili alle maiuscole. “A” maiuscola ($41) non è uguale ad “a” minuscola ($61).

• I valori esadecimali dei caratteri determinano se una stringa è minore o maggiore di un’altra stringa. Per il codice esadecimale di un carattere, vedere il retro copertina di questo manuale.

• Quando le due stringhe sono ordinate come in un elenco telefonico, l’ordine delle stringhe determina quale è la maggiore.

Operatore Descrizione

= uguale

< minore di

<= minore di o uguale a

> maggiore di

>= maggiore di o uguale a

<> diverso

Caratteri ASCII Codici Esadecimali

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

ab $61$62

maggiore

minore

AB < B

a > B

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 349

Page 350: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Copy File (COP) Synchronous Copy File (CPS)

Le istruzioni COP e CPS copiano il(i) valore(i) in Source nella Destination. Il valore Source rimane invariato.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi delle istruzioni COP e CPS in ladder.

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

stringa

struttura

tag elemento iniziale da copiare

Importante: per evitare risultati inaspettati gli operandi Source e Destination devono essere dello stesso tipo di dati

Destination SINT

INT

DINT

REAL

stringa

struttura

tag elemento iniziale che Source deve sovrascrivere

Importante: per evitare risultati inaspettati gli operandi Source e Destination devono essere dello stesso tipo di dati

Length DINT immediato

tag

numero di elementi di destinazione da copiare

COP(Source,Dest,Length);

CPS(Source,Dest,Length);

350 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 351: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Descrizione: Durante l’esecuzione delle istruzioni COP e CPS, altre azioni del Controllore possono provare ad interrompere l’operazione di copiatura e modificare i dati sorgente o destinazione:

Il numero di byte copiati è:

Conteggio byte = Length ∗ (numero di byte nel tipo di dati della Destination)

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Se Source o Destination è E si desidera Selezionare Note

• tag prodotto

• tag consumato

• dati I/O

• dati che un altro task può sovrascrivere

preservare i dati da modifiche durante l’operazione di copiatura

CPS • I task che tentano di interrompere un’istruzione CPS vengono ritardati fino a quando l’istruzione è eseguita.

• Per stimare il tempo di esecuzione di un’istruzione CPS, vedere Sistema ControlLogix – Manuale dell’utente, pubblicazione 1756-UM001.

consentire la modifica dei dati durante l’operazione di copiatura

COP

nessuno dei precedenti COP

ATTENZIONE Se il numero di byte è superiore alla lunghezza di Source, per i rimanenti elementi verranno copiati dei dati imprevedibili.

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

Le istruzioni COP e CPS operano su dati di memoria contigui compiono una copia di memoria diretta da byte a byte. In alcuni casi, scrivono oltre la matrice in altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

La lunghezza è eccessiva se supera il numero totale di elementi nella matrice Destination.

Se il tag è: Allora

tipo di dati definito dall’utente

Se la lunghezza è eccessiva, l’istruzione scrive oltre la fine della matrice in altri membri del tag. Si ferma alla fine del tag. Non viene generato alcun errore grave.

tipo di dati NON definito dall’utente

Se la lunghezza è eccessiva, l’istruzione si arresta alla fine della matrice. Non viene generato alcun errore grave.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 351

Page 352: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esecuzione:

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

esecuzione istruzioni

La condizione del ramo di uscita viene impostata su vero.

fine

end_address = start_address + (Length ∗ numero di byte dell’elemento di destinazione)

no

end_address > fine della matrice di

destinazione

end_address = fine della matrice di destinazione

source_address = Source

no

destination_address = end_address

copia i dati di source_address in destination_address

source_address = source_address + 1

destination_address = destination_address + 1

352 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 353: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esempio 1: Sia array_4 che array_5 sono dello stesso tipo di dati. Se è abilitata, l’istruzione COP copia i primi 10 elementi di array_4 nei primi 10 elementi di array_5.

Ladder

Testo strutturato

COP(array_4[0],array_5[0],10);

Esempio 2: Se è abilitata, l’istruzione COP copia la struttura timer_1 nell’elemento 5 di array_timer. L’istruzione copia solamente una struttura in un elemento della matrice.

Ladder

Testo strutturato

COP(timer_1,array_timer[5],1);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 353

Page 354: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esempio 3: La matrice project_data (100 elementi) memorizza una varietà di valori che si modificano in tempi differenti nell’applicazione. Per inviare un’immagine completa di project_data in un istante di tempo ad un altro Controllore, l’istruzione CPS copia project_data su produced_array.

• Mentre l’istruzione CPS copia i dati, nessun aggiornamento I/O o altro task può modificare i dati.

• Il tag produced_array produce i dati su una rete ControlNet ad uso di altri Controllore.

• Per usare la stessa immagine dei dati (cioè, una copia sincronizzata dei dati), il Controllore che usa i dati utilizza un’istruzione CPS per copiare i dati dal tag consumato a un altro tag per l’uso nell’applicazione.

Ladder

Testo strutturato

CPS(project_data[0],produced_array[0],100);

Esempio 4: Local:0:I.Data memorizza i dati di ingresso per la rete DeviceNet che è connessa al modulo 1756-DNB nello slot 0. Per sincronizzare gli ingressi con l’applicazione, l’istruzione CPS copia i dati di ingresso su input_buffer.

• Mentre l’istruzione CPS copia i dati, nessun aggiornamento I/O può modificare i dati.

• Quando viene lanciata, l’applicazione utilizza come suoi ingressi i dati di ingresso in input_buffer.

Ladder

Testo strutturato

CPS(Local:0:I.Data[0],input_buffer[0],20);

354 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 355: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esempio 5: In questo esempio viene inizializzata una matrice di strutture timer. Se è abilitata, l’istruzione MOV inizializza i valori .PRE e .ACC del primo elemento di array_timer. Se è abilitata, l’istruzione COP copia un blocco contiguo di byte, a partire da array_timer[0]. La lunghezza è di nove strutture di timer.

Ladder

Testo strutturato

IF S:FS THEN

array_timer[0].pre := 500;

array_timer[0].acc := 0;

COP(array_timer[0],array_timer[1],10);

END_IF;

array_timer[0] Prima l’istruzione copia i valori di timer[0] in timer[1]

array_timer[1] Poi l’istruzione copia i valori di timer[1] in timer[2]

array_timer[2] Quindi l’istruzione copia i valori di timer[2] in timer[3]

array_timer[3] Quindi l’istruzione copia i valori di timer[3] in timer[4]

array_timer[4]

array_timer[9] Ed infine l’istruzione copia i valori di timer[9] in timer[10]

array_timer[10]

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 355

Page 356: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

File Fill (FLL) L’istruzione FLL riempie gli elementi di una matrice con il valore Source. Il valore Source rimane invariato.

Operandi:

Ladder

Testo strutturato

Il linguaggio in testo strutturato non prevede un’istruzione FLL, tuttavia è possibile ottenere lo stesso risultato utilizzando un’istruzione SIZE e un FOR...DO o altro costrutto loop.

SIZE(destination,0,length);

FOR position = 0 TO length-1 DO

destination[position] := source;

END_FOR;

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi dei costrutti in testo strutturato.

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

elemento da copiare

Importante: per evitare risultati inaspettati gli operandi Source e Destination devono essere dello stesso tipo di dati

Destination SINT

INT

DINT

REAL

struttura

tag elemento iniziale che Source deve sovrascrivere

Importante: per evitare risultati inaspettati gli operandi Source e Destination devono essere dello stesso tipo di dati

Il modo migliore per inizializzare una struttura è di utilizzare un’istruzione COP.

Length DINT immediato numero di elementi da riempire

356 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 357: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Descrizione: Il numero di byte riempiti è:

Conteggio byte = Length ∗ (numero di byte nel tipo di dati della Destination)

Per ottenere i migliori risultati i valori Source e Destination devono essere dello stesso tipo di dati. Se si desidera riempire una struttura, utilizzare l’istruzione COP (vedere esempio 3 a pagina 354). Se per Source e Destination si usano tipi di dati diversi, gli elementi di destinazione vengono riempiti con i valori Source convertiti.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione FLL opera su una memoria di dati contigui. In alcuni casi, le istruzioni scrivono oltre la matrice in altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

La lunghezza è eccessiva se supera il numero totale di elementi nella matrice Destination.

Se il tag è: Allora

tipo di dati definito dall’utente

Se la lunghezza è eccessiva, l’istruzione scrive oltre la fine della matrice in altri membri del tag. Si ferma alla fine del tag. Non viene generato alcun errore grave.

tipo di dati NON definito dall’utente

Se la lunghezza è eccessiva, l’istruzione si arresta alla fine della matrice. Non viene generato alcun errore grave.

Se il valore Source è E la destinazione è Il valore Source viene convertito in

SINT, INT, DINT o REAL SINT SINT

SINT, INT, DINT o REAL INT INT

SINT, INT, DINT o REAL DINT DINT

SINT, INT, DINT o REAL REAL REAL

SINT struttura SINT (non convertito)

INT struttura INT (non convertito)

DINT struttura DINT (non convertito)

REAL struttura REAL (non convertito)

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 357

Page 358: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esecuzione:

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

La condizione del ramo di uscita viene impostata su vero.

fine

end_address = start_address + (Length ∗ numero di byte dell’elemento di destinazione)

no

end_address > fine della matrice di

destinazione

end_address = fine della matrice di destinazione

source_address = Source

no

destination_address = end_address

copia i dati di source_address in destination_address

destination_address = destination_address + 1

358 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 359: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esempio: Se è abilitata, l’istruzione FLL copia i dati di value_1 in dest_1.

Ladder

Testo strutturato

dest_1 := value_1;

Tipo di dati Source (value_1)

Valore Source (value_1)

Tipo di dati Destination (dest_1)

Valore Destination (dest_1) dopo FLL

SINT 16#80 (–128) DINT 16#FFFF FF80 (–128)

DINT 16#1234 5678 SINT 16#78

SINT 16#01 REAL 1.0

REAL 2.0 INT 16#0002

SINT 16#01 TIMER 16#0101 0101

16#0101 0101

16#0101 0101

INT 16#0001 TIMER 16#0001 0001

16#0001 0001

16#0001 0001

DINT 16#0000 0001 TIMER 16#0000 0001

16#0000 0001

16#0000 0001

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 359

Page 360: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

File Average (AVE) L’istruzione AVE calcola la media di un gruppo di valori.

Operandi:

Ladder

Testo strutturato

Il linguaggio testo strutturato non prevede un’istruzione AVE, tuttavia è possibile ottenere lo stesso risultato utilizzando un’istruzione SIZE e un FOR...DO o altro costrutto loop.

SIZE(array,0,length);

sum := 0;

FOR position = 0 TO length-1 DO

sum := sum + array[position];

END_FOR;

destination := sum / length;

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi dei costrutti in testo strutturato.

Operando Tipo Formato Descrizione

Array SINT

INT

DINT

REAL

tag matrice calcola la media dei valori di questa matrice

specifica il primo elemento del gruppo di elementi su cui calcolare la media

non usare CONTROL.POS nell’indice

Dimension to vary

DINT immediato

(0, 1, 2)

quale dimensione usare

a seconda del numero delle dimensioni, l’ordine è

array[dim_0,dim_1,dim_2]

array[dim_0,dim_1]

array[dim_0]

Destination SINT

INT

DINT

REAL

tag risultato dell’operazione

Control CONTROL tag struttura di controllo per l’operazione

Length DINT immediato numero di elementi della matrice su cui calcolare la media

Position DINT immediato elemento corrente della matrice

il valore iniziale generalmente è 0

360 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 361: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Struttura di CONTROL

Descrizione: L’istruzione AVE calcola la media di un gruppo di valori.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore:

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione AVE è abilitata.

.DN BOOL Il bit di fine viene impostato quando l’istruzione ha operato sull’ultimo elemento di Array (.POS = .LEN).

.ER BOOL Il bit di errore viene impostato se l’istruzione genera un overflow. L’istruzione interrompe la sua esecuzione fino a quando il programma non azzera il bit .ER. La posizione dell’elemento che ha provocato l’overflow viene memorizzata nel valore .POS.

.LEN DINT La lunghezza specifica il numero di elementi della matrice su cui opera l’istruzione.

.POS DINT La posizione contiene la posizione dell’elemento corrente a cui l’istruzione accede.

IMPORTANTE Assicurarsi che il valore Length non porti l’istruzione a superare la dimensione da variare specificata. In questo caso, la destinazione sarà errata.

Si verifica un errore grave se Tipo errore Codice errore

.POS < 0 oppure .LEN < 0 4 21

la dimensione da variare non esiste per la matrice specificata

4 20

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 361

Page 362: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esecuzione:

Condizione Azione ladder

durante la prescansione Il bit .EN viene azzerato.

Il bit .DN viene azzerato.

Il bit .ER viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione AVE calcola la media sommando tutti gli elementi specificati nella matrice e dividendo per il numero di elementi.

Internamente, l’istruzione utilizza un’istruzione FAL per calcolare la media:

Espressione = calcolo della media

Modalità = ALL

Per ulteriori informazioni sul funzionamento dell’istruzione FAL, vedere pagina 333.

post-scansione La condizione del ramo di uscita viene impostata su falso.

esamina il bit .DNbit .DN = 0

bit .DN = 1

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

fine

bit .EN viene azzeratobit .ER viene azzeratobit .DN viene azzeratovalore .POS viene azzerato

362 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 363: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esempio 1: Media di array_dint, ossia DINT[4,5].

Ladder

Testo strutturato

SIZE(array_dint,0,length);

sum := 0;

FOR position = 0 TO (length-1) DO

sum := sum + array_dint[position];

END_FOR;

dint_ave := sum / length;

dimensione 1

dimensione 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

AVE 19 14 9 4+ + +4

------------------------------------- 464------ 11.5= = =

dint_ave = 12

indici

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 363

Page 364: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esempio 2: Media di array_dint, ossia DINT[4,5].

Ladder

Testo strutturato

SIZE(array_dint,1,length);

sum := 0;

FOR position = 0 TO (length-1) DO

sum := sum + array_dint[position];

END_FOR;

dint_ave := sum / length;

dimensione 1

dimensione 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

AVE 5 4 3 2 1+ + + +5

---------------------------------------- 155------ 3= = =

indici

dint_ave = 3

364 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 365: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

File Sort (SRT) L’istruzione SRT ordina in modo crescente un gruppo di valori di una dimensione (Dim to vary) della Matrice.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione SRT in ladder. Tuttavia, i valori Length e Position vengono indicati accedendo ai membri .LEN e .POS della struttura di controllo invece di inserire il valore nella lista di operandi.

Struttura di CONTROL

Operando Tipo Formato Descrizione

Array SINT

INT

DINT

REAL

tag matrice matrice da ordinare

specifica il primo elemento del gruppo di elementi da ordinare

non usare CONTROL.POS nell’indice

Dimension to vary

DINT immediato

(0, 1, 2)

quale dimensione usare

a seconda del numero delle dimensioni, l’ordine è

array[dim_0,dim_1,dim_2]

array[dim_0,dim_1]

array[dim_0]

Control CONTROL tag struttura di controllo per l’operazione

Length DINT immediato numero di elementi della matrice da ordinare

Position DINT immediato elemento corrente della matrice

il valore iniziale generalmente è 0

SRT(Array,Dimtovary,Control);

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione SRT è abilitata.

.DN BOOL Il bit di fine è impostato quando gli elementi specificati sono stati ordinati.

.ER BOOL Il bit di errore è impostato quando .LEN < 0 o quando .POS < 0. Una qualsiasi di queste condizioni genera anche un errore grave.

.LEN DINT La lunghezza specifica il numero di elementi della matrice su cui opera l’istruzione.

.POS DINT La posizione contiene la posizione dell’elemento corrente a cui l’istruzione accede.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 365

Page 366: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Descrizione: L’istruzione SRT ordina in modo crescente un gruppo di valori di una dimensione (Dim da variare) della Matrice.

Questa è un’istruzione di transizione:

• In ladder, cambiare la condizione del ramo di ingresso da azzerata a impostata ogni volta che l’istruzione deve essere eseguita.

• In testo strutturato, condizionare l’ istruzione in modo che venga eseguita solo su una transizione. Vedere Appendice C, Programmazione in testo strutturato.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore:

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione SRT opera su una memoria contigua. In alcuni casi, l’istruzione cambia i dati in altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

IMPORTANTE Assicurarsi che il valore Length non porti l’istruzione a superare la dimensione da variare specificata. Se ciò accadesse, si potrebbero verificare dei risultati inaspettati.

Si verifica un errore grave se Tipo errore Codice errore

.POS < 0 oppure .LEN < 0 4 21

La dimensione da variare non esiste per la matrice specificata

4 20

L’istruzione tenta di avere accesso ai dati posti all’esterno dei limiti della matrice

4 20

366 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 367: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esecuzione:

Condizione Azione ladder Azione testo strutturato

durante la prescansione Il bit .EN viene azzerato.

Il bit .DN viene azzerato.

Il bit .ER viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

Il bit .EN viene azzerato.

Il bit .DN viene azzerato.

Il bit .ER viene azzerato.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione ordina gli elementi specificati della matrice in modo crescente.

L’istruzione ordina gli elementi specificati della matrice in modo crescente.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

esamina il bit .DN bit .DN = 0

bit .DN = 1

La condizione del ramo di uscita viene impostata su falso.

fine

bit .EN viene azzeratobit .ER viene azzeratobit .DN bit viene azzeratovalore .POS viene azzerato

se la condizione del ramo di ingresso è falsa

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 367

Page 368: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esempio 1: Ordina int _array, ossia DINT[4,5].

Ladder

Testo strutturato

control_1.LEN := 4;

control_1.POS := 0;

SRT(int_array[0,2],0,control_1);

dimensione 1

dimensione 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

dimensione 1

dimensione 0

0 20 19 3 17 16

15 14 8 12 11

10 9 13 7 6

5 4 18 2 1

1

2

3

0 1 2 3 4

Prima Dopo

indiciindici

368 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 369: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esempio 2: Ordina int _array, ossia DINT[4,5].

Ladder

Testo strutturato

control_1.LEN := 5;

control_1.POS := 0;

SRT(int_array[2,0],1,control_1);

dimensione 1

dimensione 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

dimensione 1

dimensione 0

0 20 19 18 17 16

15 14 13 12 11

6 7 8 9 10

5 4 3 2 1

1

2

3

0 1 2 3 4

Prima Dopo

indiciindici

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 369

Page 370: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

File Standard Deviation (STD)

L’istruzione STD calcola la deviazione standard di un insieme di valori di una dimensione della matrice e memorizza il risultato nella destinazione.

Operandi:

Ladder

Struttura di CONTROL

Operando Tipo Formato Descrizione

Array SINT

INT

DINT

REAL

tag matrice calcola la deviazione standard dei valori di una matrice

specifica il primo elemento del gruppo di elementi da utilizzare per il calcolo della deviazione standard

non usare CONTROL.POS nell’indice

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Dimension to vary

DINT immediato

(0, 1, 2)

quale dimensione usare

a seconda del numero delle dimensioni, l’ordine è

array[dim_0,dim_1,dim_2]

array[dim_0,dim_1]

array[dim_0]

Destination REAL tag risultato dell’operazione

Control CONTROL tag struttura di controllo per l’operazione

Length DINT immediato numero di elementi della matrice da utilizzare per il calcolo della deviazione standard

Position DINT immediato elemento corrente della matrice

il valore iniziale generalmente è 0

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione STD è abilitata.

.DN BOOL Il bit di fine viene impostato quando il calcolo è stato completato.

.ER BOOL Il bit di errore viene impostato se l’istruzione genera un overflow. L’istruzione interrompe la sua esecuzione fino a quando il programma non azzera il bit .ER. La posizione dell’elemento che ha provocato l’overflow viene memorizzata nel valore .POS.

.LEN DINT La lunghezza specifica il numero di elementi della matrice su cui opera l’istruzione.

.POS DINT La posizione contiene la posizione dell’elemento corrente a cui l’istruzione accede.

370 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 371: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Testo strutturato

Il linguaggio testo strutturato non prevede un’istruzione STD, tuttavia è possibile ottenere lo stesso risultato utilizzando un’istruzione SIZE e un FOR...DO o altro costrutto loop.

SIZE(array,0,length);

sum := 0;

FOR position = 0 TO length-1 DO

sum := sum + array[position];

END_FOR;

average := sum / length;

sum := 0;

FOR position = 0 TO length-1 DO

sum := sum + ((array[position] – average)**2);

END_FOR;

destination := SQRT(sum /(length-1));

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi dei costrutti in testo strutturato.

Descrizione: La deviazione standard viene calcolata in base alla seguente formula:

Dove:

• start = indice della dimensione da variare dell’operando della matrice

• xi = elemento variabile della matrice

• N = numero di elementi specificati della matrice

• AVE =

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

X start i+( ) AVE–⟨ ⟩2[ ]

i 1=

N

∑⎝ ⎠⎜ ⎟⎜ ⎟⎛ ⎞

N 1–( )--------------------------------------------------------------------

Deviazione standard =

x start i+( )

i 1=

N

∑⎝ ⎠⎜ ⎟⎜ ⎟⎛ ⎞

N-----------------------------------------

IMPORTANTE Assicurarsi che il valore Length non porti l’istruzione a superare la dimensione da variare specificata. In questo caso, la destinazione sarà errata.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 371

Page 372: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Condizioni di errore:

Esecuzione:

Si verifica un errore grave se Tipo errore Codice errore

.POS < 0 oppure .LEN < 0 4 21

la dimensione da variare non esiste per la matrice specificata

4 20

Condizione Azione ladder

durante la prescansione Il bit .EN viene azzerato.

Il bit .DN viene azzerato.

Il bit .ER viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera L’istruzione STD calcola la deviazione standard degli elementi specificati.

Internamente, l’istruzione utilizza un’istruzione FAL per calcolare la media:

Espressione = calcolo della deviazione standard

Modalità = ALL

Per ulteriori informazioni sul funzionamento dell’istruzione FAL, vedere pagina 333.

post-scansione La condizione del ramo di uscita viene impostata su falso.

esamina il bit .DN bit .DN = 0

bit .DN = 1

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

fine

bit .EN viene azzeratobit .ER viene azzeratobit .DN viene azzeratovalore .POS viene azzerato

372 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 373: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esempio 1: Calcolo della deviazione standard di dint_array, ossia DINT[4,5].

Ladder

Testo strutturato

SIZE(dint_array,0,length);

sum := 0;

FOR position = 0 TO (length-1) DO

sum := sum + dint_array[position];

END_FOR;

average := sum / length;

sum := 0;

FOR position = 0 TO (length-1) DO

sum := sum + ((dint_array[position] – average)**2);

END_FOR;

real_std := SQRT(sum /(length-1));

dimensione 1

dimensione 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

STD 16 8.5–⟨ ⟩2 11 8.5–⟨ ⟩2 6 8.5–⟨ ⟩2 1 8.5–⟨ ⟩2+ + +

4 1–⟨ ⟩--------------------------------------------------------------------------------------------------------------------------- 6.454972= =

AVE 16 11 6 1+ + +4

------------------------------------- 344------ 8.5= = =

indici

real_std = 6,454972

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 373

Page 374: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esempio 2: Calcolo della deviazione standard di dint_array, ossia DINT[4,5].

Ladder

Testo strutturato

SIZE(dint_array,1,length);

sum := 0;

FOR position = 0 TO (length-1) DO

sum := sum + dint_array[position];

END_FOR;

average := sum / length;

sum := 0;

FOR position = 0 TO (length-1) DO

sum := sum + ((dint_array[position] – average)**2);

END_FOR;

real_std := SQRT(sum /(length-1));

dimensione 1

dimensione 0

0 20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

1

2

3

0 1 2 3 4

STD 20 18–⟨ ⟩2 19 18–⟨ ⟩2 18 18–⟨ ⟩2 17 18–⟨ ⟩2 16 18–⟨ ⟩2+ + + +

5 1–⟨ ⟩------------------------------------------------------------------------------------------------------------------------------------------------------------ 1.581139= =

AVE 20 19 18 17 16+ + + +5

------------------------------------------------------- 905------ 18= = =

indici

real_std = 1,581139

374 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 375: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Size In Elements (SIZE) L’istruzione SIZE trova la misura di una dimensione di una matrice.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione SIZE in ladder.

Descrizione: L’istruzione SIZE trova il numero di elementi (size) nella dimensione designata della matrice Source e posiziona il risultato nell’operando Size.

• L’istruzione trova la misura di una dimensione di una matrice.

• L’istruzione opera su una:

– matrice

– matrice in una struttura

– matrice che è parte di una matrice più grande

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna.

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

struttura

stringa

tag matrice matrice sulla quale l’istruzione deve operare

Dimension to Vary

DINT immediato (0, 1, 2)

dimensione da Usare

Size SINT

INT

DINT

REAL

tag tag per memorizzare il numero di elementi nella dimensione specificata della matrice

Per la dimensione di Digitare

prima dimensione 0

seconda dimensione 1

terza dimensione 2

SIZE(Source,Dimtovary,Size);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 375

Page 376: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Esecuzione:

Esempio 1: Trova il numero di elementi in dimensione 0 (prima dimensione) di array_a. Memorizza la dimensione in array_a_size. In questo esempio, dimensione 0 di array_a ha 10 elementi.

Ladder

Testo strutturato

SIZE(array_a,0,array_a_size);

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione trova la misura (size) di una dimensione di una matrice.

L’istruzione trova la misura (size) di una dimensione di una matrice.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Size in ElementsSource array_a[0]

255Dim. To Vary 0Size array_a_size

10

SIZESize in ElementsSource array_a[0]

255Dim. To Vary 0Size array_a_size

10

SIZE

376 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 377: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Capitolo 8

Esempio 2: Trova il numero di elementi nel membro DATA di string_1, che è una stringa. Memorizza la dimensione in string_1_size. In questo esempio, il membro DATA di string_1 ha 82 elementi. (La stringa usa il tipo di dati STRINGA di default.) Siccome ciascun elemento contiene un carattere, string_1 può contenere fino a 82 caratteri.

Ladder

Testo strutturato

SIZE(string_1.DATA[0],0,string_1_size);

Esempio 3: Strings_a è una matrice di strutture stringa. L’istruzione SIZE trova il numero di elementi nel membro DATA della struttura stringa e memorizza la dimensione in data_size_a. In questo esempio, il membro DATA ha 24 elementi. (La struttura stringa ha una lunghezza definita dall’utente di 24.)

Ladder

Testo strutturato

SIZE(strings_a[0].DATA[0],0,data_size_a);

Size in ElementsSource string_1.DATA[0]

'$00'Dim. To Vary 0Size string_1_size

82

SIZESize in ElementsSource string_1.DATA[0]

’$00’Dim. To Vary 0Size string_1_size

82

SIZE

Size in ElementsSource strings_a[0].DATA[0]

'$00'Dim. To Vary 0Size data_size_a

24

SIZESize in ElementsSource strings_a[0].DATA[0]

’$00’Dim. To Vary 0Size data_size_a

24

SIZE

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 377

Page 378: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 8 Istruzioni di matrice (file)/varie (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Note:

378 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 379: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9

Istruzioni di matrici (File)/Scorrimento(BSL, BSR, FFL, FFU, LFL, LFU)

Introduzione Utilizzare le istruzioni di matrice (file)/scorrimento per modificare la posizione dei dati all’interno delle matrici.

È possibile mischiare vari tipi di dati, ma si potrebbero verificare errori di precisione e di arrotondamento.

Per le istruzioni ladder, i tipi di dati in grassetto indicano i tipi di dati ottimali. Un’istruzione viene eseguita più velocemente e richiede meno memoria se tutti gli operandi dell’istruzione utilizzano il medesimo tipo di dati ottimali, in genere DINT o REAL.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

Caricare, spostare e scaricare bit da una matrice di bit, un bit alla volta.

BSL ladder 380

BSR ladder 384

Caricare e scaricare valori nello stesso ordine. FFL ladder 388

FFU ladder 394

Caricare e scaricare valori nell’ordine inverso. LFL ladder 400

LFU ladder 406

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 379

Page 380: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

Bit Shift Left (BSL) L’istruzione BSL sposta i bit specificati della matrice di una posizione verso sinistra.

Operandi:

Ladder

Struttura CONTROL

Descrizione: Se è abilitata, l’istruzione scarica il più alto dei bit specificati al bit .UL, fa scorrere i restanti bit di una posizione a sinistra e carica il Source bit nel bit 0 della matrice.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

Array DINT tag matrice matrice da modificare

specifica il primo elemento del gruppo di elementi

non usare CONTROL.POS nell’indice

Control CONTROL tag struttura di controllo per l’operazione

Source bit BOOL tag bit da spostare

Length DINT immediato numero di bit della matrice da spostare

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione BSL è abilitata.

.DN BOOL Il bit di fine è impostato per indicare che i bit sono stati spostati di una posizione a sinistra.

.UL BOOL Il bit di scaricamento è l’uscita dell’istruzione. Il bit .UL memorizza lo stato del bit che è stato spostato fuori dell’intervallo dei bit.

.ER BOOL Il bit di errore viene impostato quando .LEN < 0.

.LEN DINT La lunghezza specifica il numero di bit della matrice da spostare.

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione BSL opera su una memoria contigua. In alcuni casi, le istruzioni spostano i bit oltre la matrice in altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

380 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 381: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Esecuzione:

Condizione Azione ladder

durante la prescansione Il bit .EN viene azzerato.

Il bit .DN viene azzerato.

Il bit .ER viene azzerato.

Il valore .POS viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit .EN viene azzerato.

Il bit .DN viene azzerato.

Il bit .ER viene azzerato.

Il valore .POS viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 381

Page 382: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

se la condizione del ramo di ingresso è vera

esamina bit .EN bit .EN = 1

bit .EN = 0

fine

bit .DN viene impostato

sposta il gruppo di bit di una posizione a sinistra

bit .EN viene impostato

La condizione del ramo di uscita viene impostata su vero.bit .DN viene impostato

.POS = .LEN

.LEN = 0sì

no

.LEN < 0 sì

no

Source bitbit .UL matrice

esame bit Source .source bit = 1

.source bit = 0

il bit .UL rimane impostato

bit .UL viene impostato

bit .ER viene impostato

382 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 383: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Esempio 1: Se è abilitata, l’istruzione BSL inizia dal bit 0 di array_dint[0]. L’istruzione scarica array_dint[0].9 nel bit .UL, sposta i rimanenti bit e carica input_1 in array_dint[0].0. I valori dei bit rimanenti (10–31) non sono validi.

Esempio 2: Se è abilitata, l’istruzione BSL inizia dal bit 0 di array_dint[0]. L’istruzione scarica array_dint[0].1 nel bit .UL, sposta i rimanenti bit e carica input_1 in array_dint[0].0. I valori dei bit rimanenti (31–26 in array_dint[1]) non sono validi. Si noti come array_dint[0].31 si sposti tra le parole fino a array_dint[1].0.

9 8 7 6 5 4 3 2 1 0

array_dint[0]prima delloscorrimento

1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

9 8 7 6 5 4 3 2 1 0

array_dint[0]dopo lo

scorrimento

0 1 1 1 1 0 0 0 0 1

1

input_10

bit .UL

questi bit si spostano a sinistra

31 0

array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

31 0

array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

1

input_1questi bit si spostano

0

bit .UL

questi bit si spostano a sinistra

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 383

Page 384: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

Bit Shift Right (BSR) L’istruzione BSR sposta i bit specificati della matrice di una posizione verso destra.

Operandi:

Ladder

Struttura CONTROL

Descrizione: Se è abilitata, l’istruzione scarica il valore del bit 0 della matrice nel bit .UL, sposta i restanti bit di una posizione a destra e carica il bit Source nel più alto dei bit specificati.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

Array DINT tag matrice matrice da modificare

specifica l’elemento da cui iniziare lo scorrimento

non usare CONTROL.POS nell’indice

Control CONTROL tag struttura di controllo per l’operazione

Source bit BOOL tag bit da spostare

Length DINT immediato numero di bit della matrice da spostare

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione BSR è abilitata.

.DN BOOL Il bit di fine è impostato per indicare che i bit sono stati spostati di una posizione a destra.

.UL BOOL Il bit di scaricamento è l’uscita dell’istruzione. Il bit .UL memorizza lo stato del bit che è stato spostato fuori dell’intervallo dei bit.

.ER BOOL Il bit di errore viene impostato quando .LEN < 0.

.LEN DINT La lunghezza specifica il numero di bit della matrice da spostare.

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione BSR opera su una memoria contigua. In alcuni casi, l’istruzione cambia i bit in altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

384 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 385: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Esecuzione:

Condizione Azione ladder

durante la prescansione Il bit .EN viene azzerato.

Il bit .DN viene azzerato.

Il bit .ER viene azzerato.

Il valore .POS viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit .EN viene azzerato.

Il bit .DN viene azzerato.

Il bit .ER viene azzerato.

Il valore .POS viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 385

Page 386: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

Condizione Azione ladder

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

esamina bit .EN bit .EN = 1

bit .EN = 0

fine

bit .DN viene impostato

sposta il gruppo di bit di una posizione a sinistra

bit .EN viene impostato

La condizione del ramo di uscita viene impostata su vero.bit .DN viene impostato

.POS = .LEN

.LEN = 0sì

no

.LEN < 0 sì

no

source bit bit .ULmatrice

esamina bit Source .source bit = 1

.source bit = 0

il bit .UL rimane impostato

bit .UL viene impostato

bit .ER viene impostato

386 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 387: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Esempio 1: Se è abilitata, l’istruzione BSR inizia dal bit 9 di array_dint[0]. L’istruzione scarica array_dint[0].0 nel bit .UL, sposta i rimanenti bit a destra e carica input_1 in array_dint[0].9. I valori dei bit rimanenti (10–31) non sono validi.

Esempio 2: Se è abilitata, l’istruzione BSR inizia dal bit 25 di array_dint[1]. L’istruzione scarica array_dint[0].0 nel bit .UL, sposta i rimanenti bit a destra e carica input_1 in array_dint[1].25. I valori dei bit rimanenti (31–26 in array_dint[1]) non sono validi. Si noti come array_dint[1].0 scorra attraverso le parole in array_dint[0].31.

9 8 7 6 5 4 3 2 1 0

array_dint[0]prima delloscorrimento

1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

9 8 7 6 5 4 3 2 1 0

array_dint[0]dopo lo

scorrimento

1 0 0 1 1 1 1 0 0 0

questi bit scorrono a destra0

bit .UL1

input_1

31 0

array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

31 0

array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

questi bit scorrono a destra 0

bit .UL

questi bit scorrono a destra1

input_1

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 387

Page 388: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

FIFO Load (FFL) L’istruzione FFL copia il valore di Origine nel FIFO.

Operandi:

Ladder

Se come tipo di dati per l’operando Source o FIFO si utilizza una struttura definita dall’utente, utilizzare la stessa struttura per entrambi gli operandi.

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

stringa

struttura

immediato

tag

dati da memorizzare nel FIFO

Source viene convertito nel tipo di dati del tag matrice. Un intero più piccolo viene convertito in un intero più grande tramite estensione del segno.

FIFO SINT

INT

DINT

REAL

stringa

struttura

tag matrice FIFO da modificare

specifica il primo elemento del FIFO

non usare CONTROL.POS nell’indice

Control CONTROL tag struttura di controllo per l’operazione

in genere, utilizzare lo stesso CONTROL del FFU associato

Length DINT immediato numero massimo di elementi che il FIFO può contenere contemporaneamente

Position DINT immediato posizione successiva nel FIFO in cui l’istruzione carica i dati

il valore iniziale generalmente è 0

388 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 389: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Struttura di controllo

Descrizione: Utilizzare l’istruzione FFL con l’istruzione FFU per memorizzare ed estrarre dati nell’ordine primo ad entrare/primo ad uscire. Se sono usate in coppia, le istruzioni FFL e FFU formano un registro a scorrimento asincrono.

In genere Source e FIFO sono dello stesso tipo di dati.

Se è abilitata, l’istruzione FFL carica il valore della Source nella posizione del FIFO identificata dal valore .POS. L’istruzione carica un valore ogni volta che l’istruzione è abilitata fino a quando il FIFO non è pieno.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione FFL è abilitata.

.DN BOOL Il bit di fine è impostato per indicare che il FIFO è pieno (.POS = .LEN). Il bit .DN impedisce il caricamento del FIFO finché .POS < .LEN.

.EM BOOL Il bit di vuoto indica che il FIFO è vuoto. Se .LEN ≤ 0 o .POS < 0, vengono impostati sia il .EM sia il bit .DN.

.LEN DINT La lunghezza specifica il numero massimo di elementi che il FIFO può contenere contemporaneamente.

.POS DINT La posizione identifica la posizione del FIFO in cui l’istruzione caricherà il valore successivo.

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione FFL opera su una memoria contigua. In alcuni casi, le istruzioni caricano i dati oltre la matrice in altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

Si verifica un errore grave se Tipo errore Codice errore

(elemento iniziale + .POS) > dimensione matrice FIFO

4 20

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 389

Page 390: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

Esecuzione:

Condizione Azione ladder

durante la prescansione

fine

bit .EN viene impostato per evitare un falso caricamento quando inizia la scansione

La condizione del ramo di uscita viene impostata su falso.

.LEN < 0 sì

no

.POS < 0 sì

.EM viene azzerato

.DN viene azzerato

no

.POS = 0 sì

no

.EM viene impostato

.POS ≥ .LEN sì

no

.DN viene impostato

.EM viene impostato

.DN viene impostato

390 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 391: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Condizione Azione ladder

se la condizione del ramo di ingresso è falsa

fine

bit .EN viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

.LEN < 0 sì

no

.POS < 0 sì

.EM viene azzerato

.DN viene azzerato

no

.POS = 0 sì

no

.EM viene impostato

.POS ≥ .LEN sì

no

.DN viene impostato

.EM viene impostato

.DN viene impostato

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 391

Page 392: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

se la condizione del ramo di ingresso è vera

fine

La condizione del ramo di uscita viene impostata su vero.

esamina bit .EN.EN = 0

.EN = 1

bit .EN viene impostato .LEN < 0

no

.POS < 0sì

no

bit .EM viene impostato

.DN viene impostato

bit .EM viene azzerato

.DN viene azzerato

.POS = .POS + 1

.POS ≥ .LENsì

no

bit .DN viene impostato

.POS o .LEN > dimensione

della matrice

no

errore grave

.POS > .LENsì

no

.POS = .POS – 1

FIFO[.POS – 1] = origine

.LEN < 0sì

no

.POS < 0sì

no

bit .EM viene azzerato

.DN viene azzerato

.POS = 0sì

no

bit .EM viene impostato

.POS ≥ .LENsì

no

bit .DN viene impostato

bit .EM viene impostato

.DN viene impostato

392 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 393: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Esempio: Se è abilitata, l’istruzione FFL carica value_1 nella posizione successiva della FIFO, che in questo esempio è array_dint[5].

prima del caricamento FIFO

dopo il caricamento FIFO

array_dint[0] 00000 00000

11111 11111

22222 22222

33333 control_1.pos = 5 33333

44444 value_1 = 55555 44444

array_dint[5] 00000 55555

00000 00000 control_1.pos = 6

00000 00000

00000 00000

00000 00000

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 393

Page 394: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

FIFO Unload (FFU) L’istruzione FFU scarica il valore dalla posizione 0 (prima posizione) del FIFO e lo memorizza nella destinazione. I restanti dati del FIFO scorrono di una posizione.

Operandi:

Ladder

Se come tipo di dati per l’operando FIFO o Destination si utilizza una struttura definita dall’utente, utilizzare la stessa struttura per entrambi gli operandi.

Operando Tipo Formato Descrizione

FIFO SINT

INT

DINT

REAL

stringa

struttura

tag matrice FIFO da modificare

specifica il primo elemento del FIFO

non usare CONTROL.POS nell’indice

Destination SINT

INT

DINT

REAL

stringa

struttura

tag valore che esce dal FIFO

Il valore Destination viene convertito nel tipo di dati del tag Destination. Un intero più piccolo viene convertito in un intero più grande tramite estensione del segno.

Control CONTROL tag struttura di controllo per l’operazione

in genere, utilizzare lo stesso CONTROL del FFL associato

Length DINT immediato numero massimo di elementi che il FIFO può contenere contemporaneamente

Position DINT immediato posizione successiva nel FIFO da cui l’istruzione scarica i dati

il valore iniziale generalmente è 0

394 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 395: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Struttura CONTROL

Descrizione: Utilizzare l’istruzione FFU con l’istruzione FFL per memorizzare ed estrarre dati nell’ordine primo ad entrare/primo ad uscire.

Se è abilitata, l’istruzione FFU scarica i dati dal primo elemento del FIFO e li inserisce nella destinazione. L’istruzione scarica un valore ogni volta che l’istruzione è abilitata fino a quando il FIFO non è vuoto. Se il FIFO è vuoto, l’FFU invia uno 0 alla destinazione.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Mnemonico Tipo di dati Descrizione

.EU BOOL Il bit di abilitazione scaricamento indica che l’istruzione FFU è abilitata. Il bit EU viene impostato per prevenire un falso scaricamento quando comincia la scansione del programma.

.DN BOOL Il bit di fine è impostato per indicare che il FIFO è pieno (.POS = .LEN).

.EM BOOL Il bit di vuoto indica che il FIFO è vuoto. Se .LEN ≤ 0 o .POS < 0, il bit .EM e il bit .DN vengono impostati.

.LEN DINT La lunghezza specifica il numero massimo di elementi del FIFO.

.POS DINT La posizione identifica il punto fino al quale sono stati caricati dei dati nel FIFO.

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione FFU opera su una memoria contigua. In alcuni casi, l’istruzione scarica i dati da altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

Si verifica un errore grave se Tipo errore Codice errore

Length > dimensione matrice FIFO 4 20

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 395

Page 396: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

Esecuzione:

Condizione Azione ladder

durante la prescansione

fine

bit .EU viene impostato per evitare un falso scaricamento quando inizia la scansione

La condizione del ramo di uscita viene impostata su falso.

.LEN < 0 sì

no

.POS < 0 sì

.EM viene azzerato

.DN viene azzerato

no

.POS = 0 sì

no

.EM viene impostato

.POS ≥ .LEN sì

no

.DN viene impostato

.EM viene impostato

.DN viene impostato

396 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 397: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Condizione Azione ladder

se la condizione del ramo di ingresso è falsa

fine

bit .EU viene azzerato

La condizione del ramo di uscita viene impostata su falso.

.LEN < 0 sì

no

.POS < 0 sì

.EM viene azzerato

.DN viene azzerato

no

.POS = 0 sì

no

.EM viene impostato

.POS ≥ .LEN sì

no

.DN viene impostato

.EM viene impostato

.DN viene impostato

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 397

Page 398: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

se la condizione del ramo di ingresso è vera

fine

esamina bit .EU.EU = 0

.EU = 1

bit .EU viene impostato .LEN < 0

no

.POS < 0sì

no

bit .EM viene impostato

.DN viene impostatobit .EM viene azzerato

.DN viene azzerato

.LEN > dimensione

della matricesì

no

errore grave

.POS ≤ 1sì

no

bit .EM viene impostato

.LEN < 0sì

no

.POS < 0sì

no

bit .EM viene azzerato

.DN viene azzerato

.POS = 0sì

no

bit .EM viene impostato

.POS ≥ .LENsì

no

bit .DN viene impostato

bit .EM viene impostato

.DN viene impostato

.POS < 1sì

no

Destination = 0

.POS = .POS – 1

Destination = FIFO[0]i = 1

FIFO[i – 1] = FIFO[i]i = i +1

i < .LENsì

noLa condizione del ramo di uscita viene impostata su vero.

398 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 399: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Esempio: Se è abilitata, l’istruzione FFU scarica array_dint[0] in value_2 e fa scorrere i rimanenti elementi lungo array_dint.

prima dello scaricamento FIFO

dopo lo scaricamento FIFO

array_dint[0] 00000 11111

11111 22222

22222 33333

33333 44444

44444 55555

array_dint[5] 55555 00000 control_1.pos = 5

00000 control_1.pos = 6 00000 value_2 = 00000

00000 00000

00000 00000

00000 00000

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 399

Page 400: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

LIFO Load (LFL) L’istruzione LFL copia il valore di Origine nel LIFO.

Operandi:

Ladder

Se per l’operando Source o LIFO si utilizza una struttura definita dall’utente come tipo di dati, utilizzare la stessa struttura per entrambi gli operandi.

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

stringa

struttura

immediato

tag

dati da memorizzare nel LIFO

Source viene convertito nel tipo di dati del tag matrice. Un intero più piccolo viene convertito in un intero più grande tramite estensione del segno.

LIFO SINT

INT

DINT

REAL

stringa

struttura

tag matrice LIFO da modificare

specifica il primo elemento del LIFO

non usare CONTROL.POS nell’indice

Control CONTROL tag struttura di controllo per l’operazione

in genere, utilizzare lo stesso CONTROL del LFU associato

Length DINT immediato numero massimo di elementi che il LIFO può contenere contemporaneamente

Position DINT immediato posizione successiva nel LIFO in cui l’istruzione carica i dati

il valore iniziale generalmente è 0

400 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 401: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Struttura CONTROL

Descrizione: Utilizzare l’istruzione LFL con l’istruzione LFU per memorizzare ed estrarre dati nell’ordine ultimo ad entrare/primo ad uscire. Se sono usate in coppia, le istruzioni LFL e LFU formano un registro a scorrimento asincrono.

In genere Source e LIFO sono dello stesso tipo di dati.

Se è abilitata, l’istruzione LFL carica il valore dell’origine nella posizione del LIFO identificata dal valore .POS. L’istruzione carica un valore ogni volta che l’istruzione è abilitata fino a quando il LIFO non è pieno.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione LFL è abilitata.

.DN BOOL Il bit di fine è impostato per indicare che il LIFO è pieno (.POS = .LEN). Il bit .DN impedisce il caricamento del LIFO finché .POS < .LEN.

.EM BOOL Il bit vuoto indica che il LIFO è vuoto. Se .LEN ≤ 0 o .POS < 0, vengono impostati sia il .EM sia il bit .DN.

.LEN DINT La lunghezza specifica il numero massimo di elementi che il LIFO può contenere contemporaneamente.

.POS DINT La posizione identifica la posizione del LIFO in cui l’istruzione caricherà il valore successivo.

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione LFL opera su una memoria contigua. In alcuni casi, le istruzioni caricano i dati oltre la matrice in altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

Si verifica un errore grave se Tipo errore Codice errore

(elemento iniziale + .POS) > dimensione matrice LIFO

4 20

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 401

Page 402: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

Esecuzione:

Condizione Azione ladder

durante la prescansione

fine

bit .EN viene impostato per evitare un falso caricamento quando inizia la scansione

La condizione del ramo di uscita viene impostata su falso.

.LEN < 0 sì

no

.POS < 0 sì

.EM viene azzerato

.DN viene azzerato

no

.POS = 0 sì

no

.EM viene impostato

.POS ≥ .LEN sì

no

.DN viene impostato

.EM viene impostato

.DN viene impostato

402 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 403: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Condizione Azione ladder

se la condizione del ramo di ingresso è falsa

fine

bit .EN viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

.LEN < 0 sì

no

.POS < 0 sì

.EM viene azzerato

.DN viene azzerato

no

.POS = 0 sì

no

.EM viene impostato

.POS ≥ .LEN sì

no

.DN viene impostato

.EM viene impostato

.DN viene impostato

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 403

Page 404: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

se la condizione del ramo di ingresso è vera

fine

La condizione del ramo di uscita viene impostata su vero.

esamina bit .EN.EN = 0

.EN = 1

bit .EN viene impostato .LEN < 0

no

.POS < 0sì

no

bit .EM viene impostato

.DN viene impostatobit .EM viene azzerato

.DN viene azzerato

.POS = .POS + 1

.POS ≥ .LENsì

no

bit .DN viene impostato

.POS o

.LEN > dimensione

della matrice

no

errore grave

.POS > .LENsì

no

.POS = .POS – 1

LIFO[.POS – 1] = origine

.LEN < 0sì

no

.POS < 0sì

no

bit .EM viene azzerato

.DN viene azzerato

.POS = 0sì

no

bit .EM viene impostato

.POS ≥ .LENsì

no

bit .DN viene impostato

bit .EM viene impostato

.DN viene impostato

404 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 405: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Esempio: Se è abilitata, l’istruzione LFL carica value_1 nella posizione successiva del LIFO che, in questo esempio, è array_dint[5].

prima del caricamento LIFO

dopo il caricamento LIFO

array_dint[0] 00000 00000

11111 11111

22222 22222

33333 control_1.pos = 5 33333

44444 value_1 = 55555 44444

array_dint[5] 00000 55555

00000 00000 control_1.pos = 6

00000 00000

00000 00000

00000 00000

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 405

Page 406: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

LIFO Unload (LFU) L’istruzione LFU scarica il valore di. POS del LIFO e memorizza uno 0 in quella posizione.

Operandi:

Ladder

Se come tipo di dati per l’operando LIFO o Destination si utilizza una struttura definita dall’utente, utilizzare la stessa struttura per entrambi gli operandi.

Operando Tipo Formato Descrizione

LIFO SINT

INT

DINT

REAL

stringa

struttura

tag matrice LIFO da modificare

specifica il primo elemento del LIFO

non usare CONTROL.POS nell’indice

Destination SINT

INT

DINT

REAL

stringa

struttura

tag valore che esce dal LIFO

Il valore Destination viene convertito nel tipo di dati del tag Destination. Un intero più piccolo viene convertito in un intero più grande tramite estensione del segno.

Control CONTROL tag struttura di controllo per l’operazione

in genere, utilizzare lo stesso CONTROL dell’LFL associato

Length DINT immediato numero massimo di elementi che il LIFO può contenere contemporaneamente

Position DINT immediato posizione successiva nel LIFO in cui l’istruzione scarica i dati

il valore iniziale generalmente è 0

406 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 407: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Struttura CONTROL

Descrizione: Utilizzare l’istruzione LFU con l’istruzione LFL per memorizzare ed estrarre dati nell’ordine ultimo ad entrare/primo ad uscire.

Se è abilitata, l’istruzione LFU scarica il valore di .POS del LIFO e lo inserisce nella destinazione. L’istruzione scarica un valore e lo sostituisce con uno 0 ogni volta che l’istruzione è abilitata, fino a quando il LIFO non è vuoto. Se il LIFO è vuoto, l’LFU invia uno 0 alla destinazione.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Mnemonico Tipo di dati Descrizione

.EU BOOL Il bit di abilitazione scaricamento indica che l’istruzione LFU è abilitata. Il bit EU viene impostato per prevenire un falso scaricamento quando comincia la scansione del programma.

.DN BOOL Il bit di fine è impostato per indicare che il LIFO è pieno (.POS = .LEN).

.EM BOOL Il bit vuoto indica che il LIFO è vuoto. Se .LEN ≤ 0 o .POS < 0, vengono impostati sia il .EM sia il bit .DN.

.LEN DINT La lunghezza specifica il numero massimo di elementi che il LIFO può contenere contemporaneamente.

.POS DINT La posizione identifica il punto fino al quale sono stati caricati dei dati nel LIFO.

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione LFU opera su una memoria contigua. In alcuni casi, l’istruzione scarica i dati da altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

Si verifica un errore grave se Tipo errore Codice errore

Length > dimensione matrice LIFO 4 20

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 407

Page 408: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

Esecuzione:

Condizione Azione ladder

durante la prescansione

fine

bit .EU viene impostato per evitare un falso scaricamento quando inizia la scansione

La condizione del ramo di uscita viene impostata su falso.

.LEN < 0 sì

no

.POS < 0 sì

.EM viene azzerato

.DN viene azzerato

no

.POS = 0 sì

no

.EM viene impostato

.POS ≥ .LEN sì

no

.DN viene impostato

.EM viene impostato

.DN viene impostato

408 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 409: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Condizione Azione ladder

se la condizione del ramo di ingresso è falsa

fine

bit .EU viene azzerato

La condizione del ramo di uscita viene impostata su falso.

.LEN < 0 sì

no

.POS < 0 sì

.EM viene azzerato

.DN viene azzerato

no

.POS = 0 sì

no

.EM viene impostato

.POS ≥ .LEN sì

no

.DN viene impostato

.EM viene impostato

.DN viene impostato

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 409

Page 410: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

se la condizione del ramo di ingresso è vera

fine

La condizione del ramo di uscita viene impostata su vero.

esamina bit .EU.EU = 0

.EU = 1

bit .EU viene impostato .LEN < 0

no

.POS < 0sì

no

bit .EM viene impostato

DN viene impostatobit .EM viene azzerato

DN viene azzerato

.LEN > dimensione

della matrice

no

errore grave

.POS ≤ 1sì

no

bit .EM viene impostato

.LEN < 0sì

no

.POS < 0sì

no

bit .EM viene azzerato

.DN viene azzerato

.POS = 0sì

no

bit .EM viene impostato

.POS ≥ .LENsì

no

bit .DN viene impostato

bit .EM viene impostato

DN viene impostato

.POS < 1sì

no

.POS > .LENsì

no

.POS = .LEN

Destination = 0

Destination = LIFO[control.POS]

LIFO[controllo.POS) = 0

.POS = .POS – 1

410 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 411: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU) Capitolo 9

Esempio: Se è abilitata, l’istruzione LFU scarica array_dint[5] in value_2.

prima dello scaricamento LIFO

dopo lo scaricamento LIFO

array_dint[0] 00000 00000

11111 11111

22222 22222

33333 33333

44444 44444

array_dint[5] 55555 00000 control_1.pos = 5

00000 control_1.pos = 6 00000 value_2 = 55555

00000 00000

00000 00000

00000 00000

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 411

Page 412: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 9 Istruzioni di matrici (File)/Scorrimento (BSL, BSR, FFL, FFU, LFL, LFU)

Note:

412 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 413: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 10

Istruzioni sequenziatore (SQI, SQO, SQL)

Introduzione Nessuna azione. Le istruzioni sequenziatore controllano operazioni costanti e ripetibili.

Per le istruzioni ladder, i tipi di dati in grassetto indicano i tipi di dati ottimali. Un’istruzione viene eseguita più velocemente e richiede meno memoria se tutti gli operandi dell’istruzione utilizzano il medesimo tipo di dati ottimali, in genere DINT o REAL.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

Sapere quando una fase è statacompletata.

SQI ladder 414

Impostare le condizioni di uscitaper la fase successiva.

SQO ladder 418

Caricare le condizioni diriferimento nelle matricisequenziatore

SQL ladder 422

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 413

Page 414: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 10 Istruzioni sequenziatore (SQI, SQO, SQL)

Sequencer Input (SQI) L’istruzione SQI rileva quando un passo è completo in una coppia insequenza di istruzioni SQO/SQI.

Operandi:

Ladder

Struttura di CONTROL

Operando Tipo Formato Descrizione

Array DINT tag matrice matrice sequenziatore

specifica il primo elemento dellamatrice sequenziatore

non usare CONTROL.POS nell’indice

Mask SINT

INT

DINT

tag

immediato

quali bit bloccare o fare passare

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Source SINT

INT

DINT

tag dati di ingresso della matricesequenziatore

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Control CONTROL tag struttura di controllo per l’operazione

generalmente usa lo stessoCONTROL delle istruzioni SQO edSQL

Length DINT immediato numero di elementi dellamatrice (tabella sequenziatore)da confrontare

Position DINT immediato posizione corrente nella matrice

il valore iniziale generalmente è 0

Mnemonico Tipo di dati Descrizione

.ER BOOL Il bit di errore viene impostato quando .LEN ≤ 0, .POS < 0, o .POS > .LEN.

.LEN DINT La lunghezza specifica il numero di passi della matrice sequenziatore.

.POS DINT La posizione identifica l’elemento che l’istruzione sta confrontando.

414 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 415: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni sequenziatore (SQI, SQO, SQL) Capitolo 10

Descrizione: Se è abilitata, l’istruzione SQI verifica l’uguaglianza di un elemento Source, tramite una maschera, con un elemento della matrice.

Generalmente usa lo stesso CONTROL delle istruzioni SQO ed SQL.

L’istruzione SQI opera su una memoria contigua.

Immissione di un valore di maschera immediato

Quando si immette una maschera, il software di programmazione imposta automaticamente valori decimali. Se si desidera immettere una maschera utilizzando un altro formato, fare precedere il prefisso corretto al valore.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Prefisso Descrizione

16# Esadecimale

per esempio; 16#0F0F

8# Ottale

per esempio; 8#16

2# Binario

per esempio; 2#00110011

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 415

Page 416: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 10 Istruzioni sequenziatore (SQI, SQO, SQL)

Esecuzione:

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

.LEN ≤ 0

.POS < 0o

.POS > .LEN

no

fine

bit .ER viene impostato

La condizione del ramo di uscita viene impostata su falso.

Origine mascherata =Matrice[.POS]mascherata

bit .ER azzerato

no

La condizione del ramo di uscita viene impostata su vero.

416 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 417: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni sequenziatore (SQI, SQO, SQL) Capitolo 10

Esempio: Se è abilitata, l’istruzione SQI fa passare value_2 attraverso la maschera per stabilire se il risultato è uguale all’elemento corrente della array_dint. Il confronto mascherato è vero per cui la condizione del ramo di uscita diventa vera.

Uno 0 nella maschera significa che il bit non viene confrontato (indicato dalle xxxx in questo esempio).

Uso di SQI senza SQO

Se si utilizza l’istruzione SQI senza un’istruzione SQO, è necessarioincrementare dall’esterno la matrice sequenziatore.

L’istruzione SQI confronta il valore di origine. L’istruzione ADD fa incrementare il puntatore della matrice sequenziatore. L’istruzione GRT determina se nella matrice sequenziatore c’è un altro valore da controllare. L’istruzione MOV ripristina il valore della posizione dopo avere completato una volta tutte le fasi della matrice sequenziatore.

Operando SQI Valori di esempio (DINT visualizzati in binario)

Source xxxxxxxx xxxxxxxx xxxx0101 xxxx1010

Mask 00000000 00000000 00001111 00001111

Array xxxxxxxx xxxxxxxx xxxx0101 xxxx1010

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 417

Page 418: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 10 Istruzioni sequenziatore (SQI, SQO, SQL)

Sequencer Output (SQO) L’istruzione SQO imposta le condizioni di uscita per il passo successivo di una coppia in sequenza di istruzioni SQO/SQI.

Operandi:

Ladder

Struttura di CONTROL

Descrizione: Se è abilitata, l’istruzione SQO incrementa la posizione, sposta i dati della posizione filtrati dalla maschera e memorizza il risultato nella destinazione. Se .POS > .LEN, l’istruzione ritorna all’inizio della matrice sequenziatore e continua con .POS = 1.

Generalmente usa lo stesso CONTROL delle istruzioni SQI ed SQL.

L’istruzione SQO opera su una memoria contigua.

Operando Tipo Formato Descrizione

Array DINT tag matrice matrice sequenziatore

specifica il primo elemento della matrice sequenziatore

non usare CONTROL.POS nell’indice

Mask SINT

INT

DINT

tag

immediato

quali bit bloccare o fare passare

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Destination DINT tag dati di uscita della matrice sequenziatore

Control CONTROL tag struttura di controllo per l’operazione

generalmente usa lo stesso CONTROL delle istruzioni SQI ed SQL

Length DINT immediato numero di elementi della matrice (tabella sequenziatore) per l’uscita

Position DINT immediato posizione corrente nella matrice

il valore iniziale generalmente è 0

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione SQO è abilitata.

.DN BOOL Il bit di fine è impostato quando tutti gli elementi specificati sono stati spostati nella destinazione.

.ER BOOL Il bit di errore viene impostato quando .LEN ≤ 0, .POS < 0, o .POS > .LEN.

.LEN DINT La lunghezza specifica il numero di passi della matrice sequenziatore.

.POS DINT La posizione identifica l’elemento che il controllore sta manipolando.

418 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 419: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni sequenziatore (SQI, SQO, SQL) Capitolo 10

Immissione di un valore di maschera immediato

Quando si immette una maschera, il software di programmazione imposta automaticamente valori decimali. Se si desidera immettere una maschera utilizzando un altro formato, fare precedere il prefisso corretto al valore.

Indicatori di stato aritmetico non influenzati

Condizioni di errore: nessuna

Esecuzione:

Prefisso Descrizione

16# Esadecimale

per esempio; 16#0F0F

8# Ottale

per esempio; 8#16

2# Binario

per esempio; 2#00110011

Condizione Azione ladder

durante la prescansione Il bit .EN viene impostato per prevenire un falso caricamento quando comincia la scansione del programma.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit .EN viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 419

Page 420: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 10 Istruzioni sequenziatore (SQI, SQO, SQL)

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

se la condizione del ramo di ingresso è vera

.LEN ≤ 0 o .POS < 0

no

bit .DN viene impostato

.POS = .LENno

esamina bit .EN.EN = 0

.EN = 1

bit .EN viene impostato

bit .ER azzerato

bit .DN viene impostato

.POS ≥ .LENsì

no

.POS = .POS + 1

valore .POS superiore al

limite

no

bit .ER viene impostato

fine

La condizione del ramo di uscita viene impostata su vero.

bit .DN viene impostato.POS = .LENsì

no

Destination = (Destination AND (NOT(Maschera))) OR (Matrice[controllo.POS] AND Maschera)

.POS > .LENno

.POS = 1

vai a errore

errore

420 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 421: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni sequenziatore (SQI, SQO, SQL) Capitolo 10

Esempio: Se è abilitata, l’istruzione SQO incrementa la posizione, passa i dati di quella posizione in array_dint attraverso la maschera e memorizza il risultato in value_1.

Uno 0 nella maschera significa che il bit non viene confrontato (indicato dalle xxxx in questo esempio).

Uso di SQI con SQOSe si utilizza una coppia di istruzioni SQI ed SQO, assicurarsi che entrambe le istruzioni utilizzino gli stessi valori Control, Length e Position.

Ripristino della posizione dell’istruzione SQOOgni volta che il controllore passa dalla modalità Programmazione alla modalità di Esecuzione, l’istruzione SQO azzera (inizializza) il valore .POS. Per riportare .POS al valore di inizializzazione (.POS = 0), utilizzare un’istruzione RES per azzerare il valore della posizione. In questo esempio si utilizza lo stato del bit di prima scansione per azzerare il valore .POS.

Operando SQO Valori di esempio (con INT visualizzati in binario)

Array xxxxxxxx xxxxxxxx xxxx0101 xxxx1010

Mask 00000000 00000000 00001111 00001111

Destination xxxxxxxx xxxxxxxx xxxx0101 xxxx1010

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 421

Page 422: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 10 Istruzioni sequenziatore (SQI, SQO, SQL)

Sequencer Load (SQL) L’istruzione SQL carica le condizioni di riferimento in una matrice sequenziatore.

Operandi:

Ladder

Struttura di CONTROL

Operando Tipo Formato Descrizione

Array DINT tag matrice matrice sequenziatore

specifica il primo elemento dellamatrice sequenziatore

non usare CONTROL.POS nell’indice

Source SINT

INT

DINT

tag

immediato

dati di ingresso da caricare nellamatrice sequenziatore

Un tag SINT o INT viene convertito in un valore DINT tramite estensione del segno.

Control CONTROL tag struttura di controllo per l’operazione

generalmente usa lo stessoCONTROL delle istruzioni SQO edSQL

Length DINT immediato numero di elementi dellamatrice (tabella sequenziatore)da caricare

Position DINT immediato posizione corrente nella matrice

il valore iniziale generalmente è 0

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione SQL è abilitata.

.DN BOOL Il bit di fine viene impostato quando tutti gli elementi specificati sono stati caricati nella matrice.

.ER BOOL Il bit di errore viene impostato quando .LEN ≤ 0, .POS < 0, o .POS > .LEN.

.LEN DINT La lunghezza specifica il numero di passi della matrice sequenziatore.

.POS DINT La posizione identifica l’elemento che il controllore sta manipolando.

422 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 423: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni sequenziatore (SQI, SQO, SQL) Capitolo 10

Descrizione: Se è abilitata, l’istruzione SQL avanza fino alla posizione successiva della matrice sequenziatore e carica il valore Source in quella posizione. Se il bit .DN è impostato oppure se .POS ≥ .LEN, l’istruzione imposta .POS=1.

Generalmente usa lo stesso CONTROL delle istruzioni SQI ed SQO.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esecuzione:

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione SQL opera su una memoria contigua. In alcuni casi, le istruzioni caricano i dati oltre la matrice in altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

Si verifica un errore grave se Tipo errore Codice errore

Length > dimensione della matrice

4 20

Condizione Azione ladder

durante la prescansione Il bit .EN viene impostato per prevenire un falso caricamento quando comincia la scansione del programma.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Il bit .EN viene azzerato.

La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 423

Page 424: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 10 Istruzioni sequenziatore (SQI, SQO, SQL)

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

se la condizione del ramo di ingresso è vera

.LEN ≤ 0 o .POS < 0

no

bit .DN viene impostato

.POS = .LENno

esamina bit .EN.EN = 0

.EN = 1

bit .EN viene impostato

bit .ER azzerato

bit .DN viene impostato

.POS ≥ .LENsì

no

.POS = .POS + 1

valore .POS superiore al

limite

no

bit .ER viene impostato

fine

La condizione del ramo di uscita viene impostata su vero.

bit .DN viene impostato.POS = .LENsì

no

.POS > .LENno

.POS = 1

vai a errore

errore

.LEN > dimensione

della matricesì

no

Matrice[controllo.POS] = Origine

errore grave

424 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 425: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni sequenziatore (SQI, SQO, SQL) Capitolo 10

Esempio: Se è abilitata, l’istruzione SQL carica il value_3 nella posizione successiva della matrice sequenziatore, che è la array_dint[5] in questo esempio.

prima del caricamento dopo il caricamento

array_dint[0] 00000 00000

11111 11111

22222 22222

33333 control_1.pos = 5 33333

44444 value_3 = 55555 44444

array_dint[5] 00000 55555

00000 00000 control_1.pos = 6

00000 00000

00000 00000

00000 00000

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 425

Page 426: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 10 Istruzioni sequenziatore (SQI, SQO, SQL)

Note:

426 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 427: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Introduzione Utilizzare le istruzioni di controllo programma per modificare l’esecuzione della logica.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

Saltare un segmento di logica che non è necessario eseguire sempre.

JMPLBL

ladder 428

Saltare ad un’altra routine, trasferire dati alla routine, eseguire la routine ed inviare i risultati.

JSRSBRRET

ladder 430

blocco funzione

testo strutturato

Saltare ad una routine esterna (solo per controllore SoftLogix5800)

JXR ladder 441

Impostare una fine temporanea che interrompa l’esecuzione della routine.

TND ladder 444

testo strutturato

Disabilitare tutti i rami di una sezione di logica. MCR ladder 446

Disabilitare i task utente. UID ladder 448

testo strutturato

Abilitare i task utente. UIE ladder 448

testo strutturato

Disabilitare un ramo. AFI ladder 450

Inserire un marcatore di posizione nella logica. NOP ladder 451

Fine di una transizione per diagramma di funzione sequenziale.

EOT ladder 452

testo strutturato

Pausa di un diagramma di funzione sequenziale. SFP ladder 454

testo strutturato

Ripristino di un diagramma di funzione sequenziale.

SFR ladder 456

testo strutturato

Attivare l’esecuzione di un task evento. EVENT ladder 458

testo strutturato

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 427

Page 428: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Jump to Label (JMP)Label (LBL)

Le istruzioni JMP ed LBL consentono di saltare porzioni di logica ladder.

Operandi:

Ladder

Descrizione: Se è abilitata, l’istruzione JMP va all’istruzione LBL di riferimento ed il controllore continua l’esecuzione da quel punto. Se è disabilitata, l’istruzione JMP non ha alcun effetto sull’esecuzione della logica ladder.

L’istruzione JMP può spostare l’esecuzione ladder in avanti o indietro. Il salto ad una LBL fa diminuire il tempo di scansione del programma poiché si evita un segmento di logica. Il salto indietro fa ripetere al controllore iterazioni di logica.

Fare attenzione a non saltare indietro troppe volte. Il timer watchdog potrebbe scadere perché il controllore non raggiunge mai la fine della logica, e quindi causare l’errore del controllore.

L’istruzione LBL rappresenta la destinazione dell’istruzione JMP con lo stesso nome di etichetta. Assicurarsi che l’istruzione LBL sia la prima istruzione sul suo ramo.

Esiste solo un’etichetta con quel nome in una routine. Il nome può:

• contenere un massimo di 40 caratteri

• contenere lettere, numeri e sottolineature (_)

Operando Tipo Formato Descrizione

Istruzione JMP

Label name Nome etichetta

inserire il nome dell’istruzione LBL associata

Istruzione LBL

Label name Nome etichetta

il programma salta all’istruzione LBL con il nome di riferimento

ATTENZIONE La logica saltata non viene scandita. Inserire la logica critica al di fuori dell’area saltata.

428 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 429: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esecuzione:

Esempio: Se l’istruzione JMP è abilitata, l’esecuzione salta i rami di logica successivi fino a raggiungere il ramo contenente l’istruzione LBL con label_20.

Si verifica un errore grave se Tipo errore Codice errore

l’etichetta non esiste 4 42

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera La condizione del ramo di uscita viene impostata su vero.

L’esecuzione salta al ramo che contiene l’istruzione LBL con il nome di etichetta di riferimento.

post-scansione La condizione del ramo di uscita viene impostata su falso.

[altri rami di codice]

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 429

Page 430: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Jump to Subroutine (JSR)Subroutine (SBR) Return (RET)

L’istruzione JSR salta ad una routine diversa. Le istruzioni SBR e RET sono istruzioni opzionali che prevedono lo scambio di dati con l’istruzione JSR.

Operandi JSR:

Ladder

Operando Tipo Formato Descrizione

Routine name

ROUTINE nome routine da eseguire (ossia, subroutine)

Input parameter

BOOL

SINT

INT

DINT

REAL

struttura

immediato

tag

tag matrice

dati di questa routine che si desidera copiare in un tag della subroutine

• I parametri di ingresso sono opzionali.

• Se necessario, inserire parametri di ingresso multipli.

Return parameter

BOOL

SINT

INT

DINT

REAL

struttura

tag

tag matrice

tag di questa routine in cui si desidera copiare un risultato della subroutine

• I parametri di ritorno sono opzionali.

• Se necessario, inserire parametri di ritorno multipli.

430 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 431: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Operandi JSR, continua

Testo strutturato

Blocco funzione

Gli operandi sono gli stessi dell’istruzione JSR in logica ladder.

Operando Tipo Formato Descrizione

Routine name

ROUTINE nome routine da eseguire (ossia, subroutine)

Input count SINT

INT

DINT

REAL

immediato numero di parametri di ingresso

Input parameter

BOOL

SINT

INT

DINT

REAL

struttura

immediato

tag

tag matrice

dati di questa routine che si desidera copiare in un tag della subroutine

• I parametri di ingresso sono opzionali.

• Se necessario, inserire parametri di ingresso multipli.

Return parameter

BOOL

SINT

INT

DINT

REAL

struttura

tag

tag matrice

tag di questa routine in cui si desidera copiare un risultato della subroutine

• I parametri di ritorno sono opzionali.

• Se necessario, inserire parametri di ritorno multipli.

ATTENZIONE Per ciascun parametro di un’istruzione SBR o RET, utilizzare lo stesso tipo di dati (incluse le dimensioni della matrice) del corrispondente parametro dell’istruzione JSR. L’utilizzo di tipi di dati diversi può provocare risultati imprevisti.

JSR(RoutineName,InputCount,InputPar,ReturnPar);

Input Parameters Return Parameters

❇ ❇

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 431

Page 432: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Operandi SBR: L’istruzione deve essere la prima istruzione in una routine di logica o testo strutturato.

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione SBR in logica ladder.

Blocco funzione

Gli operandi sono gli stessi dell’istruzione SBR in logica ladder.

Operandi RET:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione RET in logica ladder.

Operando Tipo Formato Descrizione

Input parameter

BOOL

SINT

INT

DINT

REAL

struttura

tag

tag matrice

tag di questa routine in cui si desidera copiare il parametro di ingresso corrispondente dall’istruzione JSR

SBR(InputPar);

Parametri

Operando Tipo Formato Descrizione

Return parameter

BOOL

SINT

INT

DINT

REAL

struttura

immediato

tag

tag matrice

dati di questa routine che si desidera copiare nel parametro di ritorno corrispondente dell’istruzione JSR

RET(ReturnPar);

432 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 433: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Blocco funzione

Gli operandi sono gli stessi dell’istruzione RET in logica ladder.

Descrizione: L’istruzione JSR inizia l’esecuzione della routine specificata, definita subroutine:

• La subroutine viene eseguita una volta.

• Dopo l’esecuzione della subroutine, l’esecuzione della logica ritorna alla routine che contiene l’istruzione JSR.

Per programmare un salto ad una subroutine, seguire la seguente procedura:

Parametri

IMPORTANTE Non utilizzare un’istruzione JSR per richiamare (eseguire) la routine principale.

• Si può inserire un’istruzione JSR nella routine principale o in qualunque altra routine.

• Se si utilizza un’istruzione JSR per richiamare la routine principale e quindi si inserisce un’istruzione RET nella routine principale, si verifica un errore grave (tipo 4, codice 31).

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 433

Page 434: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Nello schema che segue è illustrato il funzionamento delle istruzioni.

Il numero di routine annidate che è possibile avere o di parametri che è possibile passare o ritornare dipende solo dalla memoria del controllore.

routine chiamante

JSR

SBR

RET

RET

JSR

1. Se si desidera copiare i dati in un tag della subroutine, inserire un parametro di ingresso.

2. Se si desidera copiare un risultato della subroutine in un tag di questa routine, inserire un parametro di ritorno.

3. Inserire il numero di parametri di ingresso e di ritorno necessari.

SBR

1. Se l’istruzione JSR ha un parametro di ingresso, inserire un’istruzione SBR.

2. Posizionare l’istruzione SBR come prima istruzione della routine.

3. Per ciascun parametro di ingresso dell’istruzione JSR inserire il tag in cui si desidera copiare i dati.

42974

subroutine

RET

1. Se l’istruzione JSR ha un parametro di ritorno, inserire un’istruzione RET.

2. Posizionare l’istruzione RET come ultima istruzione della routine.

3. Per ciascun parametro di ritorno dell’istruzione JSR inserire un parametro di ritorno da inviare all’istruzione JSR.

4. In una routine in ladder, se necessario, inserire delle istruzioni RET aggiuntive per uscire dalla subroutine in condizioni di ingresso diverse. (Le routine di blocco funzione consentono di utilizzare una sola istruzione RET.)

routine

livello 1subroutine action_1

livello 3subroutine action_3

livello 2subroutine action_2

JSRJSR

JSR

SBRSBRSBR

RETRETRET

action_1

action_2 action_3

434 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 435: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore:

Esecuzione:

Ladder e testo strutturato

Si verifica un errore grave se Tipo errore Codice errore

l’istruzione JSR ha meno parametri di ingresso dell’istruzione SBR 4 31

l’istruzione JSR salta ad una routine di errore 4 o fornito dall’utente 0 o fornito dall’utente

l’istruzione RET ha meno parametri di ritorno dell’istruzione JSR 4 31

la routine principale contiene un’istruzione RET 4 31

Condizione Azione ladder Azione testo strutturato

durante la prescansione Il controllore esegue tutte le subroutine, a prescindere dalla condizione del ramo. Per assicurarsi che tutti i rami nella subroutine siano prescansionati, il controllore ignora le istruzioni RET (cioè, le istruzioni RET non chiudono la subroutine).

• Con la versione 6.x e precedenti, i parametri di input e return sono accettati.

• Con la versione 7.x e successive, i parametri di input e return non sono accettati.

Le subroutine ricorsive, vengono prescansionate solo la prima volta. Una subroutine richiamata più volte (non ricorsiva), viene prescansionata ogni volta.

La condizione del ramo di uscita viene impostata su falso (solo in ladder).

l’istruzione del ramo di ingresso dell’istruzione JSR è falsa

La subroutine non viene eseguita.

Le uscite della subroutine rimangono nel loro ultimo stato.

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 435

Page 436: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

esecuzione istruzioni

post-scansione Stessa azione della prescansione sopra descritta. Stessa azione della prescansione sopra descritta.

Condizione Azione ladder Azione testo strutturato

parametri di ingresso

no

JSR copia i parametri di ingresso nei tag SBR appropriati

fine

l’esecuzione della logica inizia dalla routine identificata da JSR

fine della subroutine

no

la condizione del ramo di uscita viene impostata su falsa continua esecuzione della logica

parametri di ritornosì

no

RET copia i parametri di ritorno nei tag JSR appropriati

la condizione del ramo di uscita viene impostata su vera esecuzione logica ritorna a JSR

Istruzione RETsì

no

436 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 437: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Blocco funzione

Esempio 1: L’istruzione JSR passa value_1 e value_2 alla routine_1.

L’istruzione SBR riceve value_1 e value_2 dall’istruzione JSR e copia questi valori in value_a e value_b, rispettivamente. L’esecuzione della logica continua in questa routine.

L’istruzione RET invia float_a all’istruzione JSR. L’istruzione JSR riceve float_a e copia il valore in float_value_1. L’esecuzione della logica continua con l’istruzione successiva all’istruzione JSR.

Ladder

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione

Nessuna.

esecuzione normale 1. Se la routine contiene un’istruzione SBR il controllore esegue l’istruzione SBR per prima.

2. Il controllore aggancia tutti i valori dei dati sugli IREF.

3. Il controllore esegue gli altri blocchi funzione nell’ordine determinato dai relativi cablaggi. Questo implica l’esecuzione di altre istruzioni JSR.

4. Il controllore scrive le uscite negli OREF.

5. Se la routine contiene un’istruzione RET il controllore esegue l’istruzione RET per ultima.

post-scansione Chiamata alla subroutine.

Se la routine è di tipo SFC viene inizializzata con le stesse modalità della prescansione.

Routine Programma

routine principale

subroutine

[altri rami di codice]

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 437

Page 438: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Testo strutturato

Routine Programma

routine principale JSR(routine_1,2,value_1,value_2,float_value_1);

subroutine SBR(value_a,value_b);

<istruzioni>;

RET(float_a);

438 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 439: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Esempio 2:

Ladder

MainRoutine

Se abc è attivo, la subroutine_1 viene eseguita, viene calcolato il numero di biscotti ed il valore viene inserito in cookies_1.

Somma il valore di cookies_1 con quello di cookies_2 e memorizza il risultato in total_cookies.

Subroutine_1

Se def è attivo, l’istruzione RET ritorna value_1 al parametro cookies_1 di JSR ed il resto della subroutine non viene scandito.

Se def è disabilitato (ramo precedente) e ghi è abilitato, l’istruzione RET ritorna value_2 al parametro cookies_1 di JSR ed il resto della subroutine non viene scandito.

Se sia def sia ghi sono disabilitati (rami precedenti), l’istruzione RET ritorna value_3 al parametro cookies_1 di JSR.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 439

Page 440: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Esempio 3:

Blocco funzione

42973

42972

2. L’istruzione ADD somma Input_A, Input_B e Input_C e inserisce il risultato in Sum_A_B_C.

Istruzione JSR in Routine_A

Blocchi funzione della routine Add_Three_Inputs

1. I valori di Add_Input_1, Add_Input_2 e Add_Input_3 vengono copiati rispettivamente in Input_A, Input_B e Input_C.

3. Il valore di Sum_A_B_C viene copiato in Add_Three_Result.

440 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 441: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Jump to External Routine (JXR)

L’istruzione JXR esegue una routine esterna. Questa istruzione è supportata soltanto dai controllori SoftLogix5800.

Operandi:

Ladder

.

Operando Tipo Formato Descrizione

External routine name

ROUTINE nome routine esterna da eseguire

External routine control

EXT_ROUTINE_CONTROL

tag struttura di controllo (v. pagina seguente)

Parameter BOOL

SINT

INT

DINT

REAL

struttura

immediato

tag

tag matrice

dati di questa routine che si desidera copiare in una variabile della routine esterna

• I parametri sono opzionali.

• Se necessario, inserire parametri multipli.

• È possibile inserire un massimo di 10 parametri.

Return parameter

BOOL

SINT

INT

DINT

REAL

tag tag di questa routine in cui si desidera copiare un risultato della subroutine esterna

• Il parametro di ritorno è opzionale.

• È possibile inserire un solo parametro di ritorno.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 441

Page 442: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Struttura EXT_ROUTINE_CONTROL

Mnemonico Tipo di dati Descrizione Implementazione

ErrorCode SINT Se si verifica un errore, questo valore corrisponde all’errore. Valori validi nell’intervallo 0–255.

Non esistono codici di errore predefiniti. Lo sviluppatore della routine esterna deve definire i codici di errore.

NumParams SINT Questo valore indica il numero di parametri associati a questa istruzione.

Sola visualizzazione – questa informazione viene ricavata da quanto inserito nell’istruzione.

ParameterDefs EXT_ROUTINE_PARAMETERS[10]

Questa matrice contiene le definizioni dei parametri da passare alla routine esterna. L’istruzione consente di passare fino a 10 parametri.

Sola visualizzazione – questa informazione viene ricavata da quanto inserito nell’istruzione.

ReturnParamDef EXT_ROUTIN_PARAMETERS

Questo valore contiene le definizioni del parametro di ritorno proveniente dalla routine esterna. È previsto un solo parametro di ritorno.

Sola visualizzazione – questa informazione viene ricavata da quanto inserito nell’istruzione.

EN BOOL Se impostato, il bit di abilitazione indica che l’istruzione JXR è abilitata.

Questo bit viene impostato dalla routine esterna.

ReturnsValue BOOL Se impostato, questo bit indica che è stato inserito un parametro di ritorno per l’istruzione. Se azzerato, questo bit indica che non è stato inserito alcun parametro di ritorno per l’istruzione.

Sola visualizzazione – questa informazione viene ricavata da quanto inserito nell’istruzione.

DN BOOL Il bit di fine viene impostato quando la routine esterna è stata eseguita una volta fino alla fine.

Questo bit viene impostato dalla routine esterna.

ER BOOL Questo bit di errore viene impostato se si verifica un errore. L’istruzione interrompe la sua esecuzione fino a quando il programma non azzera il bit di errore.

Questo bit viene impostato dalla routine esterna.

FirstScan BOOL Questo bit indica se si tratta della prima scansione dopo aver portato il controllore in modalità Run. Se necessario, FirstScan può essere utilizzato per inizializzare la routine esterna.

Questo bit viene impostato dal controllore per riflettere lo stato della scansione.

EnableOut BOOL Abilita l’uscita. Questo bit viene impostato dalla routine esterna.

EnableIn BOOL Abilita gli ingressi. Questo bit viene impostato dal controllore per riflettere la condizione del ramo di ingresso. L’istruzione viene eseguita indipendentemente dalle condizioni del ramo. Lo sviluppatore della routine esterna dovrà monitorare questo stato e agire di conseguenza.

User1 BOOL Questi bit sono a disposizione dell’utente. Essi non vengono inizializzati dal controllore.

Questi bit possono essere impostati dalla routine esterna o dal programma utente.

User0 BOOL

442 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 443: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Descrizione: L’istruzione Salta alla routine esterna (JXR) serve per richiamare la routine esterna da una routine ladder del progetto in uso. L’istruzione JXR supporta vari parametri, per cui è possibile passare i valori dalla routine ladder alla routine esterna e viceversa.

L’istruzione JXR è simile all’istruzione Salta alla subroutine (JSR). L’istruzione JXR inizia l’esecuzione della routine esterna specificata:

• La routine esterna viene eseguita una volta.

• Dopo l’esecuzione della routine esterna, l’esecuzione della logica ritorna alla routine che contiene l’istruzione JXR.

Indicatori di stato aritmetico: Gli indicatori di stato aritmetici non sono influenzati.

Condizioni di errore:

Esecuzione: La JXR può essere sincrona o asincrona a seconda dell’implementazione della DLL. Il codice della DLL determina anche la modalità di risposta allo stato della scansione, stato condizione del ramo di ingresso e stato condizione del ramo di uscita.

Per ulteriori informazioni sull’uso dell’istruzione JXR e sulla creazione di routine esterne si rimanda a: Manuale utente del sistema SoftLogix5800, pubblicazione 1789-UM002.

ScanType1 BOOL Questi bit indicano il tipo di scansione della scansione corrente:

Valori bit: Tipo di scansione:

00 Normale

01 Prescansione

10 Post-scansione (non applicabileai programmi in ladder)

Questi bit vengono impostati dal controllore per indicare lo stato della scansione.

ScanType0 BOOL

Mnemonico Tipo di dati Descrizione Implementazione

Si verifica un errore grave se Tipo errore Codice errore

• si verifica un’eccezione nella DLL della routine esterna

• impossibile caricare la DLL

• impossibile trovare il punto d’ingresso della DLL

4 88

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 443

Page 444: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Temporary End (TND) L’istruzione TND agisce come una delimitazione.

Operandi:

Operandi ladder

nessuno

Testo strutturato

nessuno

È necessario inserire le parentesi ( ) dopo lo mnemonico dell’istruzione, anche se non ci sono operandi.

Descrizione: Se è abilitata, l’istruzione TND permette al controllore di eseguire la logica solo fino a questa istruzione.

Se è abilitata, l’istruzione TND agisce come fine della routine. Quando il controllore esegue la scansione di un’istruzione TND, il controllore si sposta alla fine della routine corrente. Se l’istruzione TND si trova in una subroutine, il controllo ritorna alla routine chiamante. Se l’istruzione TND si trova invece in una routine principale, il controllo ritorna al programma successivo del task corrente.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

TND();

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni La routine corrente termina. La routine corrente termina.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

444 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 445: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Esempio: È possibile utilizzare l’istruzione TND per il debug o la ricerca guasti eseguendo la logica solo fino ad un certo punto. Via via che viene eseguito il debug di una nuova sezione, spostare l’istruzione TND nella restante logica.

Se l’istruzione TND è abilitata, il controllore interrompe la scansione della routine corrente.

Ladder

Testo strutturato

TND();

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 445

Page 446: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Master Control Reset (MCR) L’istruzione MCR, usata a coppie, crea una zona di programma in grado di disabilitare tutti i rami all’interno dell’istruzione MCR.

Operandi:

Ladder

nessuno

Descrizione: Se la zona MCR è abilitata, i rami della zona MCR vengono scanditi normalmente per verificare le condizioni di vero o falso. Se è disabilitata, il controllore scandisce comunque i rami della zona MCR, ma il tempo di scansione è ridotto poiché tutte le uscite non ritentive della zona sono disabilitate. La condizione del ramo di ingresso è falsa per tutte le istruzioni all’interno della zona MCR disabilitata.

Quando si programma una zona MCR, notare quanto segue:

• È necessario terminare la zona con un’istruzione MCR incondizionata.

• Non è possibile annidare una zona MCR all’interno di un’altra.

• Non saltare in una zona MCR. Se la zona è falsa, il saltare in questa la rende attiva a partire dal punto in cui si è saltati fino alla fine della zona.

• Se una zona MCR continua fino alla fine della routine, non è necessario programmare un’istruzione MCR per terminare la zona.

l’istruzione MCR non sostituisce il relè di controllo principale cablato per l’arresto di emergenza. Per garantire l’arresto di emergenza degli I/O, bisogna in ogni caso installare un relè di controllo principale cablato.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

ATTENZIONE Non sovrapporre o annidare zone MCR. Ogni zona MCR deve essere separata e completa. In caso contrario potrebbe verificarsi un funzionamento anomalo della macchina con possibili danni alle apparecchiature o alle persone.

Inserire le operazioni critiche al di fuori della zona MCR. Se si avvia un’istruzione, ad esempio un timer, in una zona MCR, l’esecuzione dell’istruzione si interrompe quando la zona è disabilitata ed il timer viene azzerato.

446 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 447: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Esecuzione:

Esempio: Quando la prima istruzione MCR è abilitata (input_1, input_2 e input_3 impostati), il controllore esegue i rami nella zona MCR (tra le due istruzioni MCR) e, a seconda delle condizioni di ingresso, imposta o azzera le uscite.

Quando la prima istruzione MCR è disabilitata (input_1, input_2 e input_3 non sono tutti impostati), il controllore esegue i rami nella zona MCR (tra le due istruzioni MCR) e la condizione del ramo di ingresso diventa falsa per tutti i rami della zona MCR, a prescindere dalle condizioni di ingresso.

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

Le istruzioni della zona vengono scandite, ma la condizione del ramo di ingresso è falsa e le uscite non ritentive sono disabilitate.

se la condizione del ramo di ingresso è vera La condizione del ramo di uscita viene impostata su vero.

Le istruzioni della zona vengono scandite normalmente.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 447

Page 448: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

User Interrupt Disable (UID) User Interrupt Enable (UIE)

Le istruzioni UID e UIE funzionano congiuntamente per evitare che alcuni rami critici vengano interrotti da altri task.

Operandi:

Ladder

nessuno

Testo strutturato

nessuno

È necessario inserire le parentesi ( ) dopo lo mnemonico dell’istruzione, anche se non ci sono operandi.

Descrizione: Quando la condizione del ramo di ingresso è vera:

• l’istruzione UID impedisce ai task con maggiore priorità di interrompere il task corrente ma non disabilita l’esecuzione di un routine di errore o del Programma di Gestione Errori del Controllore.

• l’istruzione UIE abilita altri task ad interrompere il task corrente.

Per evitare che una serie di rami venga interrotta:

1. Limitare il numero di rami che non si vuole vengano interrotti. La disabilitazione degli interrupt per un periodo di tempo prolungato può provocare un’interruzione delle comunicazioni.

2. Sopra al primo ramo che non si desidera venga interrotto, inserire un ramo ed un’istruzione UID.

3. Dopo l’ultimo ramo della serie che non si desidera che venga interrotto, inserire un ramo ed un’istruzione UIE.

4. Se richiesto, è possibile annidare coppie di istruzioni UID/UIE.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

UID();

UIE();

448 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 449: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Esecuzione:

Esempio: Se si verifica un errore (error_bit è attivo), l’istruzione FSC verifica se il codice di errore è presente in un elenco di errori critici. Se l’istruzione FSC trova che l’errore è critico (error_check.FD è attivo), viene attivato un allarme. Le istruzioni UID e UIE evitano che altri task interrompano il controllo errori e l’allarme.

Ladder

Testo strutturato

UID();

<istruzioni>

UIE();

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione UID previene l’interrupt da parte di un task ad alta priorità.

L’istruzione UIE abilita l’interrupt da parte di un task ad alta priorità.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

UID

error_bit

ENDNER

File Search/CompareControl error_checkLength 10Position 8Mode ALLExpression error_code=error_list[error_check.POS]

FSC

error_check.FD

alarm

UIE

File Search/CompareControlLengthPositionModeExpression

error_check

error_code=error_list[error_check.POS]Continua

alarm

UID

ENDNER

FSCerror_bit

error_check.FD

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 449

Page 450: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Always False Instruction (AFI)

L’istruzione AFI imposta la sua condizione del ramo di uscita su falso.

Operandi:

Ladder

nessuna

Descrizione: L’istruzione AFI imposta la sua condizione del ramo di uscita su falso.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio: Utilizzare l’istruzione AFI per disabilitare temporaneamente un ramo mentre si esegue il debug di un programma.

Se è abilitata, l’istruzione AFI disabilita tutte le istruzioni di questo ramo.

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

450 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 451: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

No Operation (NOP) L’istruzione NOP funziona come un marcatore di posizione

Operandi:

Ladder

nessuno

Descrizione: È possibile inserire l’istruzione NOP in una posizione qualsiasi del ramo. Se è abilitata, l’istruzione NOP non esegue alcuna operazione. Se è disabilitata, l’istruzione NOP non esegue alcuna operazione.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio Questa istruzione è utile per localizzare diramazioni incondizionate inserendo un’istruzione NOP sulla diramazione.

L’istruzione NOP aggira l’istruzione XIC per abilitare l’uscita.

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 451

Page 452: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

End of Transition (EOT) L’istruzione EOT restituisce uno stato booleano in una transizione SFC.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione EOT in logica ladder.

Descrizione: L’istruzione EOT restituisce uno stato booleano, per cui è possibile che più routine SFC condividano la stessa routine contenente l’istruzione EOT. Se la routine chiamante non è una transizione, l’istruzione EOT agisce come un’istruzione TND (vedere pagina 444).

L’implementazione dell’istruzione EOT sui controllori Logix è diversa da quella dei controllori PLC-5. Nel caso di un controllore PLC-5 l’istruzione EOT non ha parametri, ma restituisce la condizione del ramo come stato. Invece nel caso del controllore Logix il parametro di ritorno restituisce lo stato della transizione poiché lo stato del ramo non è disponibile in tutti i linguaggi di programmazione Logix.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Operando Tipo Formato Descrizione

bit di dati BOOL tag stato della transizione (0=in esecuzione, 1=completata)

EOT(data_bit);

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione restituisce il valore dei bit di dati alla routine chiamante.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

452 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 453: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Esempio: Quando sono impostati sia limit_switch1 che interlock_1 impostare lo stato. Al termine di timer_1, EOT restituisce il valore dello state alla routine chiamante.

Ladder

Testo strutturato

state := limit_switch1 AND interlock_1;

IF timer_1.DN THEN

EOT(state);

END_IF;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 453

Page 454: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

SFC Pause (SFP) L’istruzione consente di mettere in pausa una routine SFC.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione SFP in logica ladder.

Descrizione: L’istruzione SFP consente di mettere in pausa una routine SFC in esecuzione. Quando la routine SFC è in pausa, si usa nuovamente l’istruzione SFP per modificarne lo stato e riprendere l’esecuzione.

Inoltre, l’istruzione SFP serve per riprendere l’esecuzione della SFC dopo aver utilizzato un’istruzione SFR (vedere pagina 456) per ripristinare una routine SFC.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Operando Tipo Formato Descrizione

SFCRoutine Name

ROUTINE nome routine SFC da mettere in pausa

TargetState DINT immediato

tag

selezionare:

eseguire (o inserire 0)

pausa (o inserire 1)

SFP(SFCRoutineName,TargetState);

Si verifica un errore grave se Tipo errore Codice errore

la routine non è di tipo SFC 4 85

454 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 455: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Esecuzione:

Esempio: Se sfc_en_p è impostato, mettere in pausa la routine SFC denominata normal. Riprendere l’esecuzione della SFC quando viene impostato sfc_en_e.

Ladder

Testo strutturato

Mettere in pausa la routine SFC: IF (sfp_en_p) THEN

SFP(normal,paused);

sfp_en_p := 0;

END_IF;

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione mette in pausa o riprende l’esecuzione della routine SFC specificata.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Mettere in pausa la routine SFC.

Riprendere l’esecuzione della routine SFC.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 455

Page 456: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Riprendere l’esecuzione della routine SFC: IF (sfp_en_e) THEN

SFP(normal,executing);

sfp_en_e := 0;

END_IF;

SFC Reset (SFR) L’istruzione SFR ripristina l’esecuzione di una routine SFC in corrispondenza di un passo specificato.

Operandi:

Operandi ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione SFR in logica ladder.

Descrizione: Quando l’istruzione SFR è abilitata:

• nella routine SFC specificata, tutte le azioni memorizzate smettono di essere eseguire (ripristino)

• l’istruzione SFC inizia a essere eseguita al passo specificato.

Se il passo target è 0, il diagramma verrà ripristinato al passo iniziale

L’implementazione dell’istruzione SFR sui controllori Logix è diversa da quella dei controllori PLC-5. Nel caso dei controllori PLC-5, la SFR veniva eseguita quando la condizione del ramo era vera. Dopo l’azzeramento la SFC rimaneva in pausa fino a quando il ramo contenente la SFR non diventava falso. In questo modo era possibile ritardare l’esecuzione in seguito a un ripristino. Questa funzione di pausa/riprendi dell’istruzione PLC-5 SFR è stata scissa dalla condizione del ramo e trasferita all’istruzione SFP.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Operando Tipo Formato Descrizione

SFCRoutine Name

ROUTINE nome routine SFC da ripristinare

Step Name SFC_STEP tag passo target da cui riprendere l’esecuzione

SFR(SFCRoutineName,StepName);

Si verifica un errore grave se Tipo errore Codice errore

la routine non è di tipo SFC 4 85

il passo target specificato non esiste nella routine SFC

4 89

456 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 457: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Esecuzione:

Esempio: Se si verifica una condizione specifica (è impostato shutdown), riavviare la SFC al passaggio initialize.

Ladder

Testo strutturato

IF shutdown THEN

SFR(mySFC,initialize);

END_IF;

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione reimposta la routine SFC specificata. L’istruzione reimposta la routine SFC specificata.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 457

Page 458: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Trigger Event Task (EVENT) L’istruzione EVENT aziona l’esecuzione di un task evento.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione EVENT in logica ladder.

Descrizione: Usare l’istruzione EVENT per eseguire via programma un task evento:

• Ogni volta che l’istruzione viene eseguita, attiva il task evento specificato.

• Accertarsi di dare al task evento tempo a sufficienza per completare la propria esecuzione prima di attivarlo nuovamente. In caso contrario, si verifica una sovrapposizione.

• Se si esegue un’istruzione EVENT mentre il task evento è già in esecuzione, il controllore aumenta il contatore di sovrapposizione ma non attiva il task evento.

Determinare via programma se un’istruzione EVENT ha azionato un task

Per determinare se un’istruzione EVENT ha azionato un task evento, usare un’istruzione Get System Value (GSV) per monitorare l’attributo Status del task.

Operando Tipo Formato Descrizione

Task TASK nome task evento da eseguire

L’istruzione consente di scegliere altri tipi di task, ma non li esegue.

EVENT(task_name);

Attributo Status dell’oggetto TASK

Attributo Tipo di dati Istruzione Descrizione

Status DINT GSV

SSV

Fornisce informazioni sullo stato del task. Una volta che il controllore imposta un bit, occorre azzerarlo manualmente per determinare se si è verificato un altro errore di quel tipo.

Per determinare se: Esamina questo bit:

L’istruzione EVENT ha attivato il task (solo task evento).

0

Un timeout ha attivato il task (solo task evento). 1

Si è verificata una sovrapposizione per questo task. 2

458 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 459: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Il controllore non azzera i bit dell’attributo Status una volta che sono stati impostati.

• Per usare un bit per nuove informazioni sullo stato, occorre azzerare manualmente il bit.

• Usare un’istruzione Imposta valore di sistema (SSV) per impostare l’attributo su un valore diverso.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita. na

La condizione del ramo di uscita viene impostata su vero.

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione EVENT attiva l’esecuzione del task evento specificato

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 459

Page 460: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Esempio 1: Un controllore usa più programmi ma una procedura di spegnimento comune. Ogni programma usa un tag del programma chiamato Shut_Down_Line che si attiva se il programma rileva una condizione che richiede lo spegnimento. La logica in ciascun programma viene eseguita nel modo seguente:

Se Shut_Down_Line = on (condizioni che richiedono uno spegnimento), allora

Eseguire il task Shut_Down una volta

Ladder

Programma A

Programma B

Testo strutturato

Programma A

Programma B

IF Shut_Down_Line AND NOT Shut_Down_Line_One_Shot THEN

EVENT (Shut_Down);

END_IF;

Shut_Down_Line_One_Shot := Shut_Down_Line;

IF Shut_Down_Line AND NOT Shut_Down_Line_One_Shot THEN

EVENT (Shut_Down);

END_IF;

Shut_Down_Line_One_Shot := Shut_Down_Line;

460 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 461: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capitolo 11

Esempio 2: L’esempio seguente usa un’istruzione EVENT per inizializzare un task evento (un altro tipo di evento attiva normalmente il task evento).

Task continuo

Se Initialize_Task_1 = 1 allora

L’istruzione ONS limita l’esecuzione dell’istruzione EVENT a una scansione.

L’istruzione EVENT attiva l’esecuzione di Task_1 (task evento).

Task_1 (task evento)

L’istruzione GSV imposta Task_Status (DINT tag) = attributo Status per il task evento. Nell’attributo Instance Name, THIS indica l’oggetto TASK per il task in cui si trova l’istruzione (ossia Task_1).

Se Task_Status.0 = 1 allora un’istruzione EVENT ha attivato il task evento (ossia quando il task continuo è in esecuzione, la sua istruzione EVENT inizializza il task evento).

L’istruzione RES ripristina un contatore utilizzato dal task evento.

Il controllore non azzera i bit dell’attributo Status una volta che sono stati impostati. Per usare un bit per nuove informazioni sullo stato, occorre azzerare manualmente il bit.

Se Task_Status.0 = 1 azzerare il bit.

L’istruzione OTU imposta Task_Status.0 = 0.

L’istruzione SSV imposta l’attributo Status del task THIS (Task_1) = Task_Status. Questo comprende il bit azzerato.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 461

Page 462: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 11 Istruzioni di controllo programma (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)

Note:

462 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 463: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 12

Istruzioni For/Break(FOR, FOR...DO, BRK, EXIT, RET)

Introduzione Utilizzare l’istruzione FOR per richiamare ripetutamente una subroutine. Utilizzare l’istruzione BRK per interrompere l’esecuzione di una subroutine.

Se si desidera Utilizzare questa istruzione Disponibile in questi linguaggi Vedere pagina

Eseguire ripetutamente una routine. FOR

FOR...DO(1)

ladder

testo strutturato

464

Terminare l’esecuzione ripetuta di una routine.

BRK

EXIT(1)

ladder

testo strutturato

467

Ritornare all’istruzione FOR. RET ladder 468

(1) Solo testo strutturato.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 463

Page 464: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 12 Istruzioni For/Break (FOR, FOR...DO, BRK, EXIT, RET)

For (FOR) L’istruzione FOR esegue una subroutine ripetutamente.

Operandi:

Ladder

Testo strutturato

Usare il costrutto FOR...DO. Vedere l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi dei costrutti in testo strutturato.

Descrizione:

Se è abilitata, l’istruzione FOR esegue ripetutamente la routine fino a quando il valore Index non supera il Terminal value. Questa istruzione non passa parametri alla routine.

Operando Tipo Formato Descrizione

Routine name

ROUTINE nome routine

routine da eseguire

Index DINT tag calcola quante volte è stata eseguita la routine

Initial value SINT

INT

DINT

immediato

tag

valore iniziale dell’indice

Terminal value

SINT

INT

DINT

immediato

tag

valore a cui interrompere l’esecuzione della routine

Step size SINT

INT

DINT

immediato

tag

valore da sommare all’indice ogni volta che l’istruzione FOR esegue la routine

FOR conteggio:= valore_iniziale TO valore_finale BY incremento DO

IMPORTANTE Non utilizzare un’istruzione FOR per richiamare (eseguire) la routine principale.

• Si può inserire un’istruzione FOR nella routine principale o in qualunque altra routine.

• Se si utilizza un’istruzione FOR per richiamare la routine principale e quindi si inserisce un’istruzione RET nella routine principale, si verifica un errore grave (tipo 4, codice 31).

464 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 465: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni For/Break (FOR, FOR...DO, BRK, EXIT, RET) Capitolo 12

Ogni volta che l’istruzione FOR esegue la routine essa aggiunge il valore Step size all’Index.

Fare attenzione a non creare troppe iterazioni in una singola scansione. Un numero eccessivo di ripetizioni può provocare il timeout del watchdog del controllore e quindi un errore grave.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esecuzione:

Si verifica un errore grave se Tipo errore Codice errore

la routine principale contiene un’istruzione RET

4 31

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Il controllore esegue la subroutine una volta.

Se vi sono delle istruzioni FOR ricorsive che richiamano la stessa subroutine, questa viene prescansionata solo la prima volta. Se vi sono più istruzioni FOR (non ricorsive) che richiamano la stessa subroutine, questa viene prescansionata ogni volta.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

index ≥ terminal valuenosì

esegui routine

index =(index + step_size)

se la condizione del ramo di ingresso è vera

fine

index = initial_value

la condizione del ramo di uscita viene impostata su vera

step size < 0no

index ≤ terminal valueno

vai alla fine

finevai alla fine

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 465

Page 466: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 12 Istruzioni For/Break (FOR, FOR...DO, BRK, EXIT, RET)

Esempio: Se è abilitata, l’istruzione FOR esegue ripetutamente la routine_2 e, ogni volta, fa incrementare value_2 di 1. Quando value_2 è >10 oppure se è abilitata un’istruzione BRK, l’istruzione FOR non esegue più la routine_2.

466 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 467: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni For/Break (FOR, FOR...DO, BRK, EXIT, RET) Capitolo 12

Break (BRK) L’istruzione BRK interrompe l’esecuzione di una routine richiamata da un’istruzione FOR.

Operandi:

Ladder

nessuna

Testo strutturato

L’istruzione EXIT viene usata in un ciclo. Vedere l’Appendice B per informazioni sulla sintassi dei costrutti in testo strutturato.

Descrizione: Se è abilitata, l’istruzione BRK termina la routine e riporta il controllore all’istruzione seguente alla FOR.

Se vi sono delle istruzioni FOR annidate, l’istruzione BRK riporta il controllo all’istruzione FOR più interna.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio: Se è abilitata, l’istruzione BRK interrompe l’esecuzione della routine corrente e ritorna all’istruzione successiva all’istruzione FOR chiamante.

EXIT;

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera La condizione del ramo di uscita viene impostata su vero.

L’esecuzione ritorna all’istruzione successiva all’istruzione FOR chiamante.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 467

Page 468: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 12 Istruzioni For/Break (FOR, FOR...DO, BRK, EXIT, RET)

Return (RET) L’istruzione RET riporta all’istruzione FOR chiamante.

Operandi:

Ladder

nessuna

Descrizione:

Se è abilitata, l’istruzione RET riporta all’istruzione FOR. L’istruzione FOR fa incrementare il valore Index del valore Step size ed esegue nuovamente la subroutine. Se il valore Index supera il Terminal value, l’istruzione FOR viene completata e l’esecuzione continua con l’istruzione seguente l’istruzione FOR.

L’istruzione FOR non utilizza parametri. L’istruzione FOR ignora qualsiasi parametro inserito in un’istruzione RET.

Per terminare l’esecuzione di una subroutine è possibile anche utilizzare un’istruzione TND.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esecuzione:

IMPORTANTE Non inserire un’istruzione RET nella routine principale. Se si inserisce un’istruzione RET nella routine principale, si verifica un errore grave (tipo 4, codice 31).

Si verifica un errore grave se Tipo errore Codice errore

la routine principale contiene un’istruzione RET

4 31

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Riporta i parametri specificati alla routine chiamante.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

468 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 469: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni For/Break (FOR, FOR...DO, BRK, EXIT, RET) Capitolo 12

Esempio: L’istruzione FOR esegue ripetutamente la routine_2 e, ogni volta, fa incrementare value_2 di 1. Quando value_2 è > 10 oppure se è abilitata un’istruzione BRK, l’istruzione FOR non esegue più la routine_2.

L’istruzione RET riporta all’istruzione FOR chiamante. L’istruzione FOR esegue nuovamente la subroutine e fa incrementare il valore Index del valore Step size, oppure, se il valore Index supera il Terminal value, l’istruzione viene completata e l’esecuzione continua con l’istruzione seguente all’istruzione FOR.

routine chiamante subroutine

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 469

Page 470: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 12 Istruzioni For/Break (FOR, FOR...DO, BRK, EXIT, RET)

Note:

470 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 471: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13

Istruzioni speciali(FBC, DDT, DTR, PID)

Introduzione Le istruzioni speciali eseguono delle operazioni specifiche a seconda delle applicazioni.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

Confrontare i dati con un file di dati di riferimento noto ed affidabile e registrare le eventuali non corrispondenze.

FBC ladder 472

Confrontare i dati con un file di dati di riferimento noto ed affidabile e registrare le eventuali non corrispondenze e aggiornare il riferimento in funzione della Source.

DDT ladder 479

Far passare i dati Source attraverso una maschera e confrontare il risultato con i dati di riferimento. Quindi scrivere la Source nel file di riferimento per effettuare il confronto successivo.

DTR ladder 486

Controllare un anello PID. PID ladder

testo strutturato

489

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 471

Page 472: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

File Bit Comparison (FBC) L’istruzione FBC confronta i bit della matrice Source con i bit di una matrice Reference.

Operandi:

Ladder

Operando Tipo Formato Descrizione

Source DINT tag matrice matrice da confrontare al riferimento

non usare CONTROL.POS nell’indice

Reference DINT tag matrice matrice da confrontare alla Source

non usare CONTROL.POS nell’indice

Result DINT tag matrice matrice dove memorizzare il risultato

non usare CONTROL.POS negli indici

Cmp control CONTROL struttura struttura di controllo per il confronto

Length DINT immediato numero di bit da confrontare

Position DINT immediato posizione corrente nella source

il valore iniziale generalmente è 0

Result control

CONTROL struttura struttura di controllo dei risultati

Length DINT immediato numero di locazioni di memorizzazione nel risultato

Position DINT immediato posizione corrente nel risultato

il valore iniziale generalmente è 0

ATTENZIONE Usare tag diversi per la struttura di controllo del confronto e la struttura di controllo del risultato.Se si utilizza lo stesso tag si potrebbe verificare un funzionamento anomalo della macchina con possibili danni alle apparecchiature o alle persone.

472 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 473: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Struttura COMPARE

Struttura RESULT

Descrizione: Se è abilitata, l’istruzione FBC confronta i bit della matrice Source con i bit della matrice Reference e registra nella matrice Result il numero di bit di ogni mancata corrispondenza.

La differenza tra l’istruzione DDT e FBC consiste nel fatto che ogni volta che un’istruzione DDT trova una mancata corrispondenza, l’istruzione cambia il bit di riferimento facendolo corrispondere con il bit Source. L’istruzione FBC non cambia il bit di riferimento.

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione FBC è abilitata.

.DN BOOL Il bit di fine viene impostato quando l’istruzione FBC confronta l’ultimo bit nelle matrici Source e Riferimento.

.FD BOOL Il bit di trovato viene impostato ogni volta che l’istruzione FBC rileva una mancata corrispondenza (modalità “uno alla volta”) o dopo avere registrato tutte le mancate corrispondenze (modalità “tutti”).

.IN BOOL Il bit di inibizione indica la modalità di ricerca FBC.

0 = Modalità Tutti

1 = Modalità Uno alla volta

.ER BOOL Il bit di errore viene impostato se il.POS di confronto < 0, il.LEN di confronto < 0, il .POS risultato < 0 o il.LEN risultato < 0. L’esecuzione dell’istruzione viene interrotta fino a quando il programma non cancella il bit .ER.

.LEN DINT Il valore length indica il numero di bit da confrontare.

.POS DINT Il valore posizione indica il bit corrente.

Mnemonico Tipo di dati Descrizione

.DN BOOL Il bit di fine viene impostato quando la matrice Result è piena.

.LEN DINT Il valore Length indica il numero di posizioni di memorizzazione nella matrice Result.

.POS DINT Il valore di posizione specifica la posizione corrente nella matrice Result.

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione FBC opera su una memoria contigua. In alcuni casi, le istruzioni cercano o scrivono oltre la matrice in altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 473

Page 474: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Scelta della modalità di ricerca

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esecuzione:

Se si vuole rilevare Selezionare questa modalità

Una mancata corrispondenza per volta

Impostare il bit .IN nella struttura di controllo del confronto.

Ogni volta che la condizione del ramo di ingresso passa da falsa a vera, l’istruzione FBC cerca la successiva mancata corrispondenza tra le matrici Source e Reference. Quando trova una mancata corrispondenza, l’istruzione imposta il bit .FD, registra la posizione della mancata corrispondenza ed interrompe l’esecuzione.

Tutte le mancate corrispondenze

Azzerare il bit .IN nella struttura di controllo del confronto.

Ogni volta che la condizione del ramo di ingresso passa da falsa a vera, l’istruzione FSC cerca tutte le mancate corrispondenze tra le matrici Source e Reference.

Si verifica un errore grave se Tipo errore Codice errore

Result.POS > dimensione della matrice Result

4 20

Condizione Azione ladder

durante la prescansione

fine

il bit compare.EN viene azzerato il bit compare.FD viene azzerato

La condizione del ramo di uscita viene impostata su falso

esamina il bit compare.DN

compare.DN = 0

compare.DN = 1

il compare.DN è azzeato

il valore compare.POS viene azzerato

il bit result.DN viene azzerato

il valore result.POS viene azzerato

474 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 475: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Condizione Azione ladder

se la condizione del ramo di ingresso è falsa

fine

il bit compare.EN viene azzerato

il bit compare.FD viene azzerato

La condizione del ramo di uscita viene impostata su falso.

esamina il bit compare.DN

compare.DN = 0

compare.DN = 1

il bit compare.DN viene azzerato

il valore compare.POS viene azzerato

il bit result.DN viene azzerato

il valore di result.POS viene azzerato

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 475

Page 476: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Condizione Azione ladder

esamina il bit compare.EN

compare.EN = 1

compare.EN = 0

se la condizione del ramo di ingresso è vera

esamina il bit compare.DN

compare.DN = 1

compare.DN = 0

il bit compare.EN viene impostato.

il bit compare.ER viene azzerato

il bit compare.FD viene azzeratocompare.LEN ≤ 0

no

compare.POS < 0sì

no il bit compare.ER viene impostato

confronto

pagina 477fine

la condizione del ramo di uscita viene impostata su vera

vai a uscita

uscita

vai a uscita

vai a uscita

476 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 477: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

compare.POS ≥ compare.LEN

no

compare.POS = compare.LEN

il bit compare.DN viene impostato

confronto

vai a uscita

source[compare.POS] = reference[compare.POS]

no

esamina bit result.DN

result.DN = 1

result.DN = 0

compare.POS =compare.POS + 1

il bit compare.FD viene impostato

Il bit result.DN viene azzerato,il valore di result.POS viene azzerato

result.POS < 0sì

no

result.LEN ≤ 0sì

no il bit compare.ER viene impostato

vai a uscita

no

errore grave

result[result.POS] = compare.POSresult.POS = result.POS + 1

result.POS > result.LEN

no

il bit result.DN viene impostato

pagina 476

pagina 476

result.POS > dimensione della matrice

Result

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 477

Page 478: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Esempio: Se è abilitata, l’istruzione FBC confronta array_dint1 di origine con la array_dint2 di riferimento e memorizza le posizioni delle mancate corrispondenze nella array_dint3 di risultato.

originearray_dint1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

riferimentoarray_dint2

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0

risultatoarray_dint3

5 3

478 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 479: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Diagnostic Detect (DDT) L’istruzione DDT confronta i bit della matrice Source con i bit della matrice Reference per determinare eventuali cambiamenti di stato.

Operandi:

Ladder

Operando Tipo Formato Descrizione

Source DINT tag matrice matrice da confrontare al riferimento

non usare CONTROL.POS nell’indice

Reference DINT tag matrice matrice da confrontare alla Source

non usare CONTROL.POS nell’indice

Result DINT tag matrice matrice dove memorizzare i risultati

non usare CONTROL.POS nell’indice

Cmp control CONTROL struttura struttura di controllo per il confronto

Length DINT immediato numero di bit da confrontare

Position DINT immediato posizione corrente nella source

il valore iniziale generalmente è 0

Result control

CONTROL struttura struttura di controllo dei risultati

Length DINT immediato numero di locazioni di memorizzazione nel risultato

Position DINT immediato posizione corrente nel risultato

il valore iniziale generalmente è 0

ATTENZIONE Usare tag diversi per la struttura di controllo del confronto e la struttura di controllo del risultato. !Se si utilizza lo stesso tag si potrebbe verificareun funzionamento anomalo della macchina con possibilidanni alle apparecchiature o alle persone.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 479

Page 480: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Struttura COMPARE

Struttura RESULT

Descrizione: Se è abilitata, l’istruzione DDT confronta i bit della matrice Source con i bit della matrice Reference, registra nella matrice Result il numero di bit di ogni mancata corrispondenza e cambia il valore del bit di Reference in modo che corrisponda con il valore del relativo bit di Source.

La differenza tra l’istruzione DDT e FBC consiste nel fatto che ogni volta che un’istruzione DDT trova una mancata corrispondenza, l’istruzione cambia il bit di riferimento in modo che corrisponda con il bit della Source. L’istruzione FBC non cambia il bit di riferimento.

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione DDL è abilitata.

.DN BOOL Il bit di fine viene impostato quando l’istruzione DDT confronta l’ultimo bit nelle matrici di origine e riferimento.

.FD BOOL Il bit di trovato viene impostato ogni volta che l’istruzione DDT rileva una mancata corrispondenza (modalità “uno alla volta”) o dopo avere registrato tutte le mancate corrispondenze (modalità “tutti”).

.IN BOOL Il bit di inibizione indica la modalità di ricerca DDT.

0 = Modalità Tutti

1 = Modalità Uno alla volta

.ER BOOL Il bit di errore viene impostato se il.POS di confronto < 0, il.LEN di confronto < 0, il .POS risultato < 0 o il.LEN risultato < 0. L’esecuzione dell’istruzione viene interrotta fino a quando il programma non cancella il bit .ER.

.LEN DINT Il valore Length indica il numero di bit da confrontare.

.POS DINT Il valore posizione indica il bit corrente.

Mnemonico Tipo di dati Descrizione

.DN BOOL Il bit di fine viene impostato quando la matrice Result è piena.

.LEN DINT Il valore Length indica il numero di posizioni di memorizzazione nella matrice Result.

.POS DINT Il valore di posizione specifica la posizione corrente nella matrice Result.

IMPORTANTE È necessario testare e confermare che le istruzioni non modifichino i dati che non si desidera cambiare.

L’istruzione DDT opera su una memoria contigua. In alcuni casi, le istruzioni cercano o scrivono oltre la matrice in altri membri del tag. Questo avviene se la lunghezza è eccessiva e il tag è un tipo di dati definito dall’utente.

480 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 481: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Scelta della modalità di ricerca

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esecuzione:

Se si vuole rilevare Selezionare questa modalità

Una mancata corrispondenza per volta

Impostare il bit .IN nella struttura di controllo del confronto.

Ogni volta che la condizione del ramo di ingresso passa da falsa a vera, l’istruzione DDT cerca la successiva mancata corrispondenza tra le matrici Source e Reference. Quando trova una mancata corrispondenza, l’istruzione imposta il bit .FD, registra la posizione della mancata corrispondenza ed interrompe l’esecuzione.

Tutte le mancate corrispondenze

Azzerare il bit .IN nella struttura di controllo del confronto.

Ogni volta che la condizione del ramo di ingresso passa da falsa a vera, l’istruzione DDT cerca tutte le mancate corrispondenze tra le matrici Source e Reference.

Si verifica un errore grave se Tipo errore Codice errore

Result.POS > dimensione della matrice Result

4 20

Condizione Azione ladder

durante la prescansione

fine

il bit compare.EN viene azzerato

il bit compare.FD viene azzerato

La condizione del ramo di uscita viene impostata su falso.

esamina il bit compare.DN

compare.DN = 0

compare.DN = 1

il bit compare.FD viene azzerato

il valore di compare.POS viene azzerato

il bit result.DN viene azzerato

il valore result.POS viene azzerato

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 481

Page 482: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Condizione Azione ladder

se la condizione del ramo di ingresso è falsa

fine

il bit compare.EN viene azzerato

il bit compare.FD viene azzerato

La condizione del ramo di uscita viene impostata su falso.

esamina il bit compare.DN

compare.DN = 0

compare.DN = 1

il bit compare.DN viene azzerato

il valore di compare.POS viene azzerato

il bit result.DN viene azzerato

il valore di result.POS viene azzerato

482 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 483: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Condizione Azione ladder

esamina il bit compare.EN

compare.EN = 1

compare.EN = 0

se la condizione del ramo di ingresso è vera

esamina il bit compare.DN

bit compare.DN = 1

bit compare.DN = 0

il bit compare.EN viene impostato.

il bit compare.ER viene azzeratoil bit compare.FD viene azzerato

compare.LEN ≤ 0sì

no

compare.POS < 0sì

noil bit compare.ER viene impostato

confronto

pagina 484fine

la condizione del ramo di uscita viene impostata su vera

vai a uscita

uscita

vai a uscita

vai a uscita

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 483

Page 484: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione ladder

compare.POS ≥ compare.LEN

no

compare.POS = compare.LEN

il bit compare.DN viene impostato

confronto

vai a uscita

source[compare.POS] = reference[compare.POS]

no

esamina bit result.DN

result.DN = 1

result.DN = 0

compare.POS =compare.POS + 1

il bit compare.FD viene impostatoreference[compare.POS] = source[compare.POS]

Il bit result.DN viene azzerato,il valore di result.POS viene azzerato

result.POS < 0sì

no

result.LEN ≤ 0sì

no il bit compare.ER viene impostato

vai a uscita

no

errore grave

result[result.POS] = compare.POSresult.POS = result.POS + 1

result.POS ≥ result.LEN

no

il bit result.DN viene impostato

pagina 483

pagina 476

result.POS > dimensione della matrice

Result

484 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 485: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Esempio: Se è abilitata, l’istruzione DDT confronta array_dint1 della Source con la array_dint2 di riferimento e memorizza le posizioni delle mancate corrispondenze nella array_dint3 di risultato. Il controllore cambia anche i bit non corrispondenti di array_dint2 del riferimento in modo che corrispondano a quelli di array_dint1 della Source.

Source

array_dint1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

riferimento (prima delconfronto)

array_dint2

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0

risultato

array_dint3

5 3

riferimento (dopo ilconfronto)

array_dint2

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 485

Page 486: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Data Transitional (DTR) L’istruzione DTR passa il valore Source attraverso una maschera econfronta il risultato con il valore Reference.

Operandi:

Ladder

Descrizione: L’istruzione DTR passa il valore Source attraverso una maschera e confronta il risultato con il valore Reference. L’istruzione DTR, inoltre, scrive il valore Source mascherato nel valore Reference per il successivo confronto. Il valore Source rimane invariato.

Un “1” nella maschera significa che il bit dati viene fatto passare. Uno “0” nella maschera significa che il bit dati è bloccato.

Se il valore Source con maschera è diverso dal valore Reference, la condizione del ramo di uscita diventa vera per una scansione. Se il valore Source con maschera e il valore Reference sono gli stessi, la condizione del ramo di uscita è falsa.

Operando Tipo Formato Descrizione

Source DINT immediato

tag

matrice da confrontare al riferimento

Mask DINT immediato

tag

quali bit bloccare o fare passare

Reference DINT tag matrice da confrontare a Source

ATTENZIONE È pericoloso programmare online con questa istruzione. Se il valore Reference è diverso dal valore Source, la condizione del ramo di uscita diventa vera. Fare attenzione nell’inserire questa istruzione quando il processore si trova in modalità Run o Remote Run.

486 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 487: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Immissione di un valore di maschera immediato

Quando si immette una maschera, il software di programmazione imposta automaticamente valori decimali. Se si desidera una maschera utilizzando un altro formato, fare precedere il prefisso corretto al valore.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Prefisso Descrizione

16# Esadecimale

per esempio; 16#0F0F

8# Ottale

per esempio; 8#16

2# Binario

per esempio; 2#00110011

Condizione Azione ladder

durante la prescansione Reference = Source AND Mask.

La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa Reference = Source AND Mask.

La condizione del ramo di uscita viene impostata su falso.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

source con maschera = reference

no

il riferimento viene impostato uguale alla Source con maschera

La condizione del ramo di uscita viene impostata su vero.

La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 487

Page 488: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Esempio: Quando è abilitata, l’istruzione DTR maschera value_1. Se c’è differenza tra i due valori, la condizione del ramo di uscita viene impostata a vera.

Uno 0 nella maschera lascia il bit invariato.

13385

Il ramo rimane falso fino a quando ilvalore di ingresso non cambia.

Il ramo rimane vero per una scansione seviene rilevato un cambiamento.

0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1

1 8 3 1 8 7

mask = 0FFF

1 8 7

Source

value_1

reference

value_2

1 8 3

1 8 3

1 8 3

scansionecorrente

scansioneprecedente

scansione precedente

scansione corrente

esempio 1 esempio 2

97

0

0

0

0

488 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 489: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Proportional Integral Derivative (PID)

L’istruzione PID controlla una variabile di processo come ad esempio flusso, pressione, temperatura o livello.

Operandi:

Ladder

Operando Tipo Formato Descrizione

PID PID struttura struttura PID

Process variable

SINT

INT

DINT

REAL

tag valore che si vuole controllare

Tieback SINT

INT

DINT

REAL

immediato

tag

(opzionale) uscita di una stazione manuale/automatica hardware che bypassa l’uscita del controllore

Immettere 0 se non si desidera utilizzare questo parametro.

Control variable

SINT

INT

DINT

REAL

tag valore che viene inviato al dispositivo di controllo finale (valvola, damper, ecc.)

Se si utilizza la banda morta, la variabile di controllo deve essere REAL altrimenti essa verrà forzata a 0 se l’errore è all’interno della banda morta.

PID master loop

PID struttura (opzionale) tag PID per il PID master

Se si esegue un controllo a cascata e questo PID è un anello slave, inserire il nome del PID master. Immettere 0 se non si desidera utilizzare questo parametro.

Inhold bit BOOL tag (opzionale) stato corrente del bit inhold di un canale di uscita analogico 1756 per il supporto del riavviamento graduale

Immettere 0 se non si desidera utilizzare questo parametro.

Inhold value SINT

INT

DINT

REAL

tag (opzionale) valore di ritorno dati da un canale di uscita analogico 1756 per il supporto del riavviamento graduale

Immettere 0 se non si desidera utilizzare questo parametro.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 489

Page 490: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Testo strutturato

Gli operandi sono gli stessi dell’istruzione PID in logica ladder. Tuttavia, i valori Setpoint, Process Variable, e Output % vengono indicati accedendo ai membri .SP, .PV. e .OUT della struttura PID invece di inserire il valore nella lista di operandi.

Struttura PID

Setpoint visualizzazione valore corrente del setpoint

Process variable

visualizzazione valore corrente della variabile di processo in scala

Output % visualizzazione valore in percentuale dell’uscita corrente

Operando Tipo Formato Descrizione

PID(PID,ProcessVariable,Tieback,ControlVariable,PIDMasterLoop,InholdBit,InHoldValue);

Mnemonico Tipo di dati Descrizione

.CTL DINT Il membro .CTL permette di accedere ai membri di stato (bit) in una parola a 32 bit. L’istruzione PID imposta i bit 07–15.

Questo bit: È questo membro:

31 .EN

30 .CT

29 .CL

28 .PVT

27 .DOE

26 .SWM

25 .CA

24 .MO

23 .PE

22 .NDF

21 .NOBC

20 .NOZC

Questo bit: È questo membro impostato dall’istruzione PID:

15 .INI

14 .SPOR

13 .OLL

12 .OLH

11 .EWD

10 .DVNA

09 .DVPA

08 .PVLA

07 .PVHA

.SP REAL setpoint

.KP REAL indipendente guadagno proporzionale (adimensionale)

dipendente guadagno del controllore (adimensionale)

490 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 491: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

.KI REAL indipendente guadagno integrale (1/sec)

dipendente tempo integrale (minuti per ripetizione)

.KD REAL indipendente guadagno derivativo (secondi)

dipendente tempo derivativo (minuti)

.BIAS REAL % della compensazione anticipata o del bias

.MAXS REAL fondo scala superiore in unità ingegneristiche

.MINS REAL fondo scala inferiore in unità ingegneristiche

.DB REAL banda morta in unità ingegneristiche

.SO REAL % di uscita impostata

.MAXO REAL limite uscita massimo (% dell’uscita)

.MINO REAL limite uscita minimo (% dell’uscita)

.UPD REAL tempo di aggiornamento dell’anello (secondi)

.PV REAL valore PV scalato

.ERR REAL valore errore scalato

.OUT REAL output %

.PVH REAL limite superiore allarme della variabile di processo

.PVL REAL limite inferiore allarme della variabile di processo

.DVP REAL limite allarme della deviazione positiva

.DVN REAL limite allarme della deviazione negativa

.PVDB REAL banda morta dell’allarme della variabile di processo

.DVDB REAL banda morta dell’allarme della deviazione

.MAXI REAL valore PV massimo (ingresso non in scala)

.MINI REAL valore PV minimo (ingresso non in scala)

.TIE REAL .TIE REAL valore di tieback per il controllo manuale

.MAXCV REAL valore CV massimo (equivalente al 100 %)

.MINCV REAL valore CV minimo (equivalente allo 0 %)

.MINTIE REAL valore tieback minimo (equivalente al 100 %)

.MAXTIE REAL valore tieback massimo (equivalente allo 0 %)

Mnemonico Tipo di dati Descrizione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 491

Page 492: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

.DATA REAL[17] Il membro .DATA memorizza:

Elemento: Descrizione

.DATA[0] accumulazione integrale

.DATA[1] valore temporaneo dell’ attenuazione derivativa

.DATA[2] valore .PV precedente

.DATA[3] valore .ERR precedente

.DATA[4] valore .SP precedente valido

.DATA[5] costante di conversione in scala della percentuale

.DATA[6] costante di conversione in scala della .PV

.DATA[7] costante di conversione in scala della derivativa

.DATA[8] valore .KP precedente

.DATA[9] valore .KI precedente

.DATA[10] valore .KD precedente

.DATA[11] guadagno dipendente .KP

.DATA[12] guadagno dipendente .KI

.DATA[13] guadagno dipendente .KD

.DATA[14] valore .CV precedente

.DATA[15] costante di riconversione dalla scala della .CV

.DATA[16] costante di riconversione dalla scala del tieback

.EN BOOL abilitato

.CT BOOL tipo a cascata (0=slave; 1=master)

.CL BOOL anello a cascata (0=no; 1=sì)

.PVT BOOL tracciabilità variabile di processo (0=no; 1=sì)

.DOE BOOL derivata di (0=PV; 1=errore)

.SWM BOOL modalità manuale software (0=no-auto; 1=sì- manuale sw)

.CA BOOL azione di controllo (0 indica E=SP-PV; 1 indica E=PV-SP)

.MO BOOL modalità stazione (0=automatica; 1=manuale)

.PE BOOL equazione PID (0=indipendente; 1=dipendente)

.NDF BOOL nessuna attenuazione derivata (0=filtro di attenuazione derivata abilitato; 1=filtro di attenuazione derivata disabilitato)

.NOBC BOOL nessun calcolo bias (0=calcolo bias abilitato; 1=calcolo bias disabilitato)

.NOZC BOOL nessuna banda morta all’ attraversamento dello zero (0=banda morta con attraversamento dello zero; 1=banda morta senza attraversamento dello zero)

.INI BOOL PID inizializzato (0=no; 1=sì)

.SPOR BOOL setpoint fuori gamma (0=no; 1=sì)

.OLL BOOL CV al di sotto del limite minimo di uscita (0=no; 1=sì)

.OLH BOOL CV al di sopra del limite massimo di uscita (0=no; 1=sì)

.EWD BOOL errore all’interno della banda morta (0=no; 1=sì)

.DVNA BOOL deviazione con allarme basso (0=no; 1=sì)

Mnemonico Tipo di dati Descrizione

492 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 493: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Descrizione: In genere, l’istruzione PID riceve la variabile di processo (PV) da un modulo di ingresso analogico e modula un’uscita di variabile di controllo (CV) su un modulo di uscita analogico al fine di mantenere la variabile di processo sul valore di riferimento desiderato (setpoint).

Il bit .EN indica lo stato dell’esecuzione. Il bit .EN viene impostato quando la condizione del ramo di ingresso passa da falsa a vera. Quando la condizione del ramo di ingresso diventa falsa, il bit .EN viene azzerato. L’istruzione PID non utilizza un bit .DN e viene eseguita ogni scansione fino a quando la condizione del ramo di ingresso rimane vera.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

.DVPA BOOL deviazione con allarme alto (0=no; 1=sì)

.PVLA BOOL PV con allarme basso (0=no; 1=sì)

.PVHA BOOL PV con allarme alto (0=no; 1=sì)

Mnemonico Tipo di dati Descrizione

stato del ramo

esecuzione dell’istruzione PID

bit .EN

IMPORTANTE Questi errori erano di tipo grave sul controllore PLC-5.

Si verifica un errore minore se Tipo errore Codice errore

.UPD ≤ 0 4 35

setpoint fuori gamma 4 36

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 493

Page 494: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Esecuzione:

Configurazione di un’istruzione PID

Dopo avere immesso l’istruzione PID e specificato la struttura PID, utilizzare le schede di configurazione per specificare in che modo l’istruzione deve funzionare.

Condizione Azione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione esegue l’anello PID. L’istruzione esegue l’anello PID.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Fare clic qui per configurare l’istruzione PID

494 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 495: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Messa a punto (Tuning)

Selezionare la scheda Tuning. Le modifiche hanno effetto dal momento in cui si fa clic su un altro campo, su OK, su Applica o quando si preme Invio.

Configurazione

Selezionare la scheda Configuration. Fare clic su OK o Applica affinché i cambiamenti abbiano effetto.

In questo campo Specificare

Setpoint (SP) Inserire un valore di setpoint (.SP).

% di uscita impostata Inserire una percentuale di uscita (.SO).

In modalità Manuale software, questo valore viene utilizzato per l’uscita.

In modalità Auto, questo valore visualizza la % dell’uscita

Output bias Inserire una percentuale del bias di uscita (.BIAS).

Proportional gain (Kp) Inserire il guadagno proporzionale (.KP).

Per i guadagni indipendenti, è il guadagno proporzionale (adimensionale).

Per i guadagni dipendenti, è il guadagno del controllore (adimensionale).

Integral gain (Ki) Inserire il guadagno integrale (.KI).

Per i guadagni indipendenti, è il guadagno integrale (1/sec).

Per i guadagni dipendenti, è il tempo di azzeramento (minuti per ripetizione).

Derivative time (Kd) Inserire il guadagno derivativo (.KD).

Per i guadagni indipendenti, è il guadagno derivativo (secondi).

Per i guadagni dipendenti, è il tempo derivativo (minuti).

Manual mode Selezionare Manuale (.MO) o Manuale software (.SWM).

Se si selezionano entrambe le modalità, la modalità Manuale sarà quella prevalente.

In questo campo Specificare

PID equation Selezionare guadagni indipendenti o guadagni dipendenti (.PE).

Scegliere Indipendente se si desidera che i tre guadagni (P, I e D) operino indipendentemente. Scegliere Dipendente se si desidera un guadagno generale del controllore che influenzi tutti e tre i termini (P, I e D).

Control action Selezionare E=PV-SP oppure E=SP-PV per l’azione di controllo (.CA).

Derivative of Selezionare PV o errore (.DOE).

Utilizzare la derivata della PV per eliminare i picchi transitori derivanti dalle modifiche del setpoint. Utilizzare la derivata dell’errore per una rapida risposta alle modifiche del setpoint se l’algoritmo è in grado di tollerare sovraelongazioni.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 495

Page 496: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Allarmi

Selezionare la scheda Alarms. Fare clic su OK o Applica affinché i cambiamenti abbiano effetto.

Loop update time Immettere il tempo di aggiornamento (.UPD) dell’istruzione.

CV high limit Inserire un limite superiore per la variabile di controllo (.MAXO).

CV low limit Inserire un limite inferiore per la variabile di controllo (.MINO).

Deadband value Inserire un valore per la banda morta (.DB).

No derivative smoothing Abilitare o disabilitare questa voce (.NDF).

No bias calculation Abilitare o disabilitare questa voce (.NOBC).

No zero crossing in deadband

Abilitare o disabilitare questa voce (.NOZC).

PV tracking Abilitare o disabilitare questa voce (.PVT).

Cascade loop Abilitare o disabilitare questa voce (.CL).

Cascade type Se l’anello in cascata è abilitato, selezionare slave o master (.CT).

In questo campo Specificare

In questo campo Specificare

PV high Inserire un valore di allarme alto di PV (.PVH).

PV low Inserire un valore di allarme basso di PV (.PVL).

PV deadband Inserire un valore di banda morta dell’allarme di PV (.PVBD).

positive deviation Inserire un valore di deviazione positiva (.DVP).

negative deviation Inserire un valore di deviazione negativa (.DVN).

deviation deadband Inserire un valore di banda morta dell’allarme della deviazione (.DVDB).

496 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 497: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Conversione in scala

Selezionare la scheda Scaling. Fare clic su OK o Applica affinché i cambiamenti abbiano effetto.

Uso delle istruzioni PID Il controllo ad anello chiuso PID mantiene una variabile di processo alvalore di riferimento (setpoint) desiderato. La seguente figura mostra un esempio relativo alla portata/livello di fluidi:

In questo esempio, il livello del serbatoio viene confrontato con un valore di riferimento o setpoint. Se il livello è superiore al setpoint, l’equazione PID fa aumentare la variabile di controllo e provoca l’apertura della valvola di scarico del serbatoio facendo quindi diminuire il livello.

In questo campo Specificare

PV unscaled maximum Inserire il valore massimo di PV (.MAXI) uguale al valore massimo non in scala ricevuto dal canale di ingresso analogico per il valore PV.

PV unscaled minimum Inserire il valore minimo di PV (.MINI) uguale al valore minimo non in scala ricevuto dal canale di ingresso analogico per il valore PV.

PV engineering units maximum

Inserire il valore massimo in unità ingegneristiche corrispondente a .MAXI (.MAXS)

PV engineering units minimum

Inserire il valore minimo in unità ingegneristiche corrispondente a .MINI (.MINS)

CV maximum Inserire il valore massimo di CV corrispondente al 100 % (.MAXCV).

CV minimum Inserire il valore minimo di CV corrispondente allo 0 % (.MINCV).

Tieback maximum Inserire il valore massimo di tieback (.MAXTIE) uguale al valore massimo non in scala ricevuto dal canale di ingresso analogico per il valore di tieback.

Tieback minimum Inserire il valore minimo di tieback (.MINTIE) uguale al valore minimo non in scala ricevuto dal canale di ingresso analogico per il valore di tieback.

PID Initialized Se si modificano le costanti di conversione in scala durante la modalità Run, disattivare questa opzione per inizializzare di nuovo i valori di riconversione interni (.INI).

-

+

14271

setpoint

portata

erroreequazione PID

variabile di controllovariabile di processo

rilevatore livello

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 497

Page 498: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

L’equazione PID utilizzata nell’istruzione PID è un’equazione posizionale con la possibilità di utilizzo di guadagni indipendenti o dipendenti. Quando si utilizzano i guadagni indipendenti, i guadagni proporzionali, integrali e derivativi influenzano solo i relativi termini specifici proporzionale, integrale o derivativo. Quando si utilizzano i guadagni dipendenti, il guadagno proporzionale è sostituito da un guadagno del controllore che influenza tutti e tre i termini. Per eseguire lo stesso tipo di controllo è possibile utilizzare indifferentemente una delle due forme di equazione. L’utente può scegliere l’equazione che preferisce.

Opzioni di guadagno Derivata di Equazione

Guadagni dipendenti(standard ISA)

errore (E)

Variabile di processo (PV)

Guadagni indipendenti errore (E)

Variabile di processo (PV)

CV KC E 1Ti---- Edt Td

dEdt-------+

0

t

∫+ BIAS+=

CV KC E 1Ti---- Edt Td–

dPVdt

-----------

0

t

∫+ BIAS+=

E = SP – PV

CV KC E 1Ti---- Edt Td

dPVdt

-----------+

0

t

∫+ BIAS+=

E = PV – SP

CV KPE Ki+ Edt KddEdt-------+

0

t

∫ BIAS+=

CV KPE Ki+ Edt Kd–dPVdt

-----------

0

t

∫ BIAS+=

E = SP – PV

CV KPE Ki+ Edt KddPVdt

-----------+

0

t

∫ BIAS+=

E = PV – SP

498 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 499: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Dove:

Se non si desidera utilizzare un particolare termine dell’equazione PID, impostare i suoi guadagni a zero. Ad esempio, se non si desidera nessuna azione derivativa, impostare Kd o Td a zero.

Antiaccumulo dell’integrale e trasferimento bumpless da manuale ad automatico

L’istruzione PID evita automaticamente l’accumulo dell’integrale evitando che questo accumuli ogni volta che l’uscita della variabile di controllo raggiunge il suo valore massimo o minimo, in base all’impostazione di .MAXO e .MINO. L’integrale accumulato rimane bloccato fino a quando l’uscita della variabile di controllo non scende al di sotto del limite massimo o sale al di sopra del limite minimo. A questo punto la normale accumulazione dell’integrale riprende automaticamente.

Variabile Descrizione

KP guadagno proporzionale (adimensionale)

Kp = Kc adimensionale

Ki guadagno integrale (secondi -1)

La relazione tra Ki (guadagno integrale) e Ti (tempo integrale), è:

Kd guadagno derivativo (secondi)

La relazione tra Kd (guadagno derivativo) e Td (tempo derivativo), è:

Kd = Kc (Td) 60

KC guadagno del controllore (adimensionale)

Ti tempo integrale (minuti/ripetizione)

Td tempo derivativo (minuti)

SP setpoint

PV variabile di processo

E errore [(SP-PV) o (PV-SP)]

BIAS compensazione anticipata o bias

CV variabile di controllo

dt tempo di aggiornamento dell’anello

KiKC

60Ti-----------=

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 499

Page 500: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

L’istruzione PID supporta due modalità manuali di controllo:

L’istruzione PID consente inoltre trasferimenti graduali automatici dalla modalità manuale software alla modalità Auto o dalla modalità manuale alla modalità Auto. L’istruzione PID calcola nuovamente il valore accumulato dell’integrale richiesto per fare in modo che l’uscita della variabile di controllo insegua o il valore impostato dell’uscita (.SO) nella modalità manuale software o l’ingresso tieback nella modalità manuale. In questo modo, quando l’anello passa alla modalità Auto, l’uscita della variabile di controllo inizia dal valore di uscita impostato o di tieback senza che si verifichino “picchi” nel valore dell’uscita.

L’istruzione PID è inoltre in grado di fornire automaticamente un trasferimento bumpless da Manuale ad Auto anche senza l’uso del controllo integrale (cioè Ki = 0). In questo caso l’istruzione modifica il

termine – BIAS per far sì che l’uscite della variabile di controllo insegua o i valori di uscita impostata o di tieback. Quando viene ripristinato il controllo automatico, il termine .BIAS mantiene il suo ultimo valore. È possibile disabilitare il calcolo del .BIAS impostando il bit .NOBC della struttura dati PID. Considerare che se si imposta il bit .NOBC su vero, l’istruzione PID non fornisce più un trasferimento bumpless da Manuale ad Auto quando non si usa il controllo integrale.

Temporizzazione dell’istruzione PID

L’istruzione PID ed il campionamento della variabile di processo devono essere aggiornati con frequenza periodica. Questo tempo di aggiornamento è in stretta relazione con il processo fisico che si controlla. Nel caso di anelli molto lenti, ad esempio anelli di temperatura, un tempo di aggiornamento di una volta al secondo o più, è in genere sufficiente ad ottenere un buon controllo. Anelli più veloci, come gli anelli di pressione o di flusso, possono richiedere un

Modalità manuale di controllo

Descrizione

Manuale software (.SWM) conosciuta anche come modalità di impostazione uscita

consente all’utente di impostare la % dell’uscita dal software

Il valore di uscita impostato (.SO) viene utilizzato come uscita dell’anello. Questo valorein genere viene immesso da un operatore tramite un dispositivo di interfaccia operatore.

Manuale (.MO) considera il valore di tieback come un ingresso e regola le sue variabili interne in modo da generare lo stesso valore all’uscita

L’ingresso tieback per l’istruzione PID è in scala dallo 0 al 100 % con riferimento ai valori di .MINTIE e .MAXTIE ed è utilizzato come uscita dell’anello. L’ingresso tieback in genere deriva dall’uscita di una stazione hardware manuale/automatica che aggira l’uscita dal controllore.

Nota: se si impostano entrambi i bit di modalità, prevale la modalità Manuale.

500 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 501: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

tempo di aggiornamento di una volta ogni 250 millisecondi. Solo in casi molto rari, come nel caso del controllo della tensione di un svolgitore di bobine, è necessario un aggiornamento dell’anello ogni 10 millisecondi o più veloce.

Poiché l’istruzione PID utilizza una base tempo per i suoi calcoli, è necessario sincronizzare l’esecuzione di questa istruzione con il campionamento della variabile di processo (PV).

Il modo più semplice per eseguire l’istruzione PID è quello di inserire l’istruzione PID in un task periodico. Configurare il tempo di aggiornamento dell’anello (.UPD) uguale alla frequenza del task periodico ed accertarsi che l’istruzione PID venga eseguita ad ogni scansione del task periodico.

Ladder

Testo strutturato

PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,Local:1:O.Ch4Data,0,Local:1:I.Ch4InHold,Local:1:I.Ch4Data);

Quando si utilizza un task periodico, accertarsi che l’ingresso analogico utilizzato per la variabile di processo venga aggiornato nel processore con una frequenza significativamente più veloce di quella del task periodico. Idealmente, la variabile di processo dovrebbe essere inviata al processore con una velocità almeno 5–10 volte superiore a quella del task periodico. Ciò consente di ridurre la differenza di tempo tra i campioni effettivi della variabile di processo e l’esecuzione dell’anello PID. Per esempio, se l’anello PID si trova in un task periodico di 250 millisecondi, utilizzare un tempo di aggiornamento dell’anello di 250 millisecondi (.UPD = .25) e configurare il modulo di ingresso analogico in modo che produca datialmeno ogni 25–50 msec circa.

Un altro metodo, ma meno preciso, di eseguire un’istruzione PID è quello di inserire l’istruzione in un task continuo ed utilizzare il bit di fine di un timer per attivare l’esecuzione dell’istruzione PID.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 501

Page 502: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Ladder

Testo strutturato

PID_timer.pre := 1000

TONR(PID_timer);

IF PID_timer.DN THEN

PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold,Local:1:I.Ch0Data);

END_IF;

Con questo metodo, il tempo di aggiornamento dell’anello dell’istruzione PID deve essere posto uguale al valore preimpostato del timer. Come nel caso dell’utilizzo di un task periodico, è necessario impostare il modulo di ingresso analogico in modo che produca la variabile di processo ad una velocità molto più rapida del tempo di aggiornamento dell’anello. Il metodo mediante timer deve essere utilizzato solo per anelli con tempi di aggiornamento molto più lunghi rispetto al caso peggiore del tempo di esecuzione del task continuo.

Il modo più preciso per l’esecuzione di un’istruzione PID è quello di usare la funzione di campionamento in tempo reale (RTS) dei moduli di ingresso analogico 1756. Il modulo di ingresso analogico campiona i suoi ingressi ad una velocità di campionamento in tempo reale impostata dall’utente al momento della configurazione del modulo. Alla scadenza del periodo di campionamento in tempo reale, il modulo aggiorna i suoi ingressi e il registratore cronologico ciclico (rappresentato dal membro .RollingTimestamp della struttura dati dell’ingresso analogico) prodotto dal modulo.

502 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 503: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Il marcatore di tempo conta da 0 a 32 767 millisecondi. Controllare la registrazione cronologica. Quando cambia, significa che è stato ricevuto un nuovo campione della variabile di processo. Ogni volta che il contatore cambia, eseguire l’istruzione PID una volta. Dato che il campione della variabile di processo dipende dal modulo di ingresso analogico, il tempo del campione di ingresso è molto preciso ed il tempo di aggiornamento dell’anello utilizzato dall’istruzione PID deve essere impostato uguale al tempo dell’RTS del modulo di ingresso analogico.

Per assicurarsi di non perdere alcun campione della variabile di processo, eseguire la logica ad una velocità maggiore del tempo dell’RTS. Per esempio, se il tempo RTS è di 250 msec., si potrebbe inserire la logica PID in un task periodico che viene eseguito ogni 100 msec. per fare in modo che non si perda alcun campione. È possibile, inoltre, inserire la logica PID in un task continuo, purché ci si assicuri che la logica venga aggiornata più frequentemente di una volta ogni 250 millisecondi.

Di seguito viene fornito un esempio del metodo di esecuzione mediante RTS. L’esecuzione dell’istruzione PID dipende dalla ricezione di nuovi dati di ingresso analogici. Se il modulo di ingresso analogico va in errore o viene rimosso, il controllore interrompe la ricezione del tempo dal marcatore e l’anello PID si interrompe. È necessario monitorare il bit di stato dell’ingresso analogico della variabile di processo e in caso di stato negativo, forzare l’anello nella modalità Manuale software ed eseguire l’anello ad ogni scansione. Ciò consente sempre all’operatore di cambiare manualmente l’uscita dell’anello PID.

Ladder

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 503

Page 504: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Testo strutturato

IF (Local:0:I.Ch0Fault) THENTIC101.SWM [:=] 1;

ELSETIC101.SWM := 0;

END_IF;

IF (Local:0:I.RollingTimestamp<>PreviousTimestamp) OR(Local:0:I.Ch0Fault) THEN

PreviousTimestamp := Local:0:I.RollingTimestamp;

PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold,Local:1:I.Ch0Data);

END_IF;

Riavviamento bumpless

L’istruzione PID può interagire con i moduli di uscita analogici 1756 per supportare un riavviamento senza brusche variazioni (o bumpless) quando il controllore passa dalla modalità Program alla modalità Run oppure quando il controllore viene acceso.

Se un modulo di uscita analogico 1756 perde la comunicazione con il controllore o rileva che il controllore è in modalità Program, il modulo d’uscita analogico imposta le sue uscite alla condizione di errore specificata al momento della configurazione del modulo. Quindi, quando il controllore ritorna in modalità di esecuzione oppure ristabilisce la comunicazione con il modulo d’uscita analogico, utilizzando i parametri del Bit Inhold e del Valore Inhold sull’istruzione PID, è possibile far sì che l’istruzione PID riporti automaticamente la propria uscita della variabile di controllo uguale all’uscita analogica.

504 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 505: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Per impostare un riavviamento bumpless:

Attenuazione derivata

Il calcolo della derivata è migliorato da un filtro di attenuazione della derivata. Questo filtro digitale passa-basso di primo livello contribuisce a ridurre i grandi picchi della derivata provocati dai disturbi nella variabile di processo. Questa attenuazione diventa più sensibile con valori del guadagno derivativo più grandi. Se il processo richiede valori di guadagno derivativo molto grandi, è possibile disabilitare l’attenuazione della derivata (Kd > 10, per esempio). Per

disabilitare l’attenuazione derivativa, selezionare l’opzione “No derivative smoothing” della scheda Configurazione oppure impostare il bit .NDF della struttura PID.

Procedere in questo modo Dettagli

Configurare il canale del modulo di uscita analogico 1756 che riceve la variabile di controllo dall’istruzione PID

Selezionare la casella di controllo “hold for initialization” nella pagina delle proprietà dello specifico canale del modulo.

In tal modo si dice al modulo di uscita analogico che quando il controllore ritorna alla modalità Run, oppure quando ristabilisce la comunicazione con il modulo, esso deve mantenere l’uscita analogica sul suo valore corrente fino a quando il valore inviato dal controllore non corrisponde (con una differenza massima dello 0,1 %) con il valore corrente utilizzato dal canale di uscita. L’uscita del controllore passerà al valore di uscita correntemente mantenuto utilizzando il termine .BIAS. Questo passaggio è simile al trasferimento bumpless ad Auto.

Inserire nell’istruzione PID il tag Inhold bit e il tag Inhold Value

Il modulo di uscita analogico 1756 ritorna due valori per ciascun canale nella sua struttura dati di ingresso. Il bit di stato InHold (.Ch2InHold, per esempio), se è vero, indica che il canale di uscita analogico sta mantenendo il suo valore. Il valore Data readback (.Ch2Data, per esempio) mostra il valore corrente dell’uscita in unità ingegneristiche.

Inserire il tag del bit di stato InHold come parametro Inhold bit dell’istruzione PID. Inserire il tag del valore Data readback come parametro di Inhold Value.

Se Inhold bit diventa vero, l’istruzione PID sposta Inhold Value nell’uscita della variabile di controllo e viene inizializzata di nuovo per supportare un riavviamento graduale con quel valore. Quando il modulo di uscita analogico riceve questo valore dal controllore, esso disabilita il bit di stato InHold, consentendo all’istruzione PID di iniziare il controllo normalmente.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 505

Page 506: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Impostazione della banda morta

La banda morta regolabile permette di selezionare una gamma di errore, al di sopra e al di sotto del setpoint, in cui l’uscita non cambia fino a quando l’errore rimane entro i limiti della gamma stessa. Questa banda morta consente di controllare di quanto la variabile di processo ed il setpoint possono discostarsi senza dover cambiare l’uscita. Inoltre, la banda morta contribuisce a ridurre l’usura ed il logorio del dispositivo di controllo finale.

L’attraversamento dello zero è il controllo della banda morta che permette all’istruzione di utilizzare l’errore per scopi di calcolo dal momento in cui la variabile di processo attraversa la banda morta fino all’attraversamento del setpoint. Una volta che la variabile di processo attraversa il setpoint (l’errore attraversa lo zero e cambia di segno) e fino a quando la variabile di processo rimane nella banda morta, l’uscita non cambia.

La banda morta si estende al di sopra e al di sotto del setpoint in base ad un valore specificato dall’utente. Per inibire la banda morta, inserire zero. La banda morta ha le stesse unità in scala del setpoint. È possibile utilizzare la banda morta senza l’attraversamento dello zero selezionando nella scheda Configurazione l’opzione “no zero crossing for deadband” oppure impostando il bit .NOZC nella struttura PID.

Se si utilizza la banda morta, la variabile di controllo deve essere REAL altrimenti essa verrà forzata a 0 se l’errore è all’interno della banda morta.

Uso del limite dell’uscita

È possibile impostare un limite di uscita (percentuale dell’uscita) sul controllo dell’uscita. Quando l’istruzione rileva che l’uscita ha raggiunto un limite, essa imposta un bit di allarme impedendo all’uscita di superare il limite inferiore o superiore.

errore all’interno della banda morta

banda morta +

setpoint

banda morta –

Tempo 41026

506 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 507: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Compensazione anticipata o bias dell’uscita

È possibile anticipare un disturbo dal sistema inserendo il valore .BIAS nel valore di compensazione anticipata/bias dell’istruzione PID.

Il valore della compensazione anticipata rappresenta un disturbo immesso nell’istruzione PID prima che il disturbo possa cambiare la variabile di processo. La compensazione anticipata viene spesso utilizzata per controllare i processi con ritardo di propagazione. Per esempio, un valore della compensazione anticipata che rappresenta “l’acqua fredda versata in una miscela calda” potrebbe fare aumentare il valore dell’uscita molto più velocemente piuttosto che aspettare che la variabile di processo cambi in conseguenza della nuova condizione creatasi.

Un valore di bias in genere viene utilizzato quando non si usa l’integrale del controllo. In questo caso, il valore bias può essere regolato in modo da mantenere l’uscita entro la gamma richiesta e tenere la variabile di processo vicino al setpoint.

Anelli in cascata

L’istruzione PID pone in cascata due anelli assegnando l’uscita in percentuale dell’anello master al setpoint dell’anello slave. L’anello slave converte automaticamente l’uscita dell’anello master nelle unità ingegneristiche corrette per il setpoint dell’anello slave, in base ai valori .MAXS e .MINS dell’anello slave.

Ladder

Testo strutturato

PID(master,pv_master,0,cv_master,0,0,0);

PID (slave,pv_slave,0,cv_slave,master,0,0);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 507

Page 508: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Controllo di un rapporto

È possibile stabilire un rapporto tra due valori utilizzando questi parametri:

• valore non controllato

• valore controllato (il risultante setpoint che deve essere utilizzatodall’istruzione PID)

• rapporto tra questi due valori

Ladder

Testo strutturato

pid_2.sp := uncontrolled_flow * ratio

PID(pid_2,pv_2,tieback_2,cv_2,0,0,0);

Per questo parametro di moltiplicazione Inserire questo valore

Destination valore controllato

Source A valore non controllato

Source B rapporto

508 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 509: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni speciali (FBC, DDT, DTR, PID) Capitolo 13

Teoria PID Nelle figure che seguono è illustrato il flusso di processo di un’istruzione PID.

Processo PID

Processo PID con anelli master/slave

+-

-1+

SP Visualizzati come EU

Errore visualizzato

come EU

Software A/M o

Modalità stazione A/M

Azione di controllo

Auto SP-PV

(Errore)

Manuale

no

PVT

SPPV-SP

Converte le unità binarie in unità ingegneristiche

(PV-mini)(maxs-mins) + minsmaxi-mini

PV

PVVisualizzati come EU

Converte le unità in %

Errore X 100maxs-mins

Calcolo PID

% bias uscita

Modalità A/M software

Auto

Auto(Out%)

% di uscita impostata

Converte le unità tieback in %

tieback-mintiemaxtie-mintie

x 100

ManualeManuale

Limite dell’uscita

% di uscita impostata

Modalità stazione A/M

Uscita (CV) visualizzata

come % della scala EU

Converte % in unità CV

CV%(maxcv-mincv)100

+ mincvCV

+-

-1+

+-

-1+

SP

Auto

Manuale

PVTno

Converte le unità binarie in unità ingegneristiche(PV-mini)(maxs-mins)

maxi-mini+ mins

PV

SP-PV

PV-SP

(Errore)Converte le unità in %

Errore X 100maxs-mins

Calcolo PID

% bias uscita

Modalità A/M software

Auto

Auto(Out%)

Limite dell’uscita

% di uscita impostataModalità

stazione A/M

% di uscita impostata

ManualeManuale

(Master.Out)

SP

PV

Anello master Software A/M

oModalità stazione A/M

Azione di controllo

Anello slave

(Master.Out)

Converte le unità binarie in unità ingegneristiche

(PV-mini)(maxs-mins)maxi-mini

+ mins

(SP)

PV

Converte le % in unità ingegneristiche

Converte le unità tieback in %

tieback-mintiemaxtie-mintie

x 100

Converte le unità in %

Errore X 100maxs-mins

Converte le unità in %

Errore X 100maxs-mins

X (maxs-mins)100

+ mins

Azione di controllo

SP-PV

PV-SP

Calcolo PID

% bias uscita

% di uscita impostata

Auto

Auto

Manuale

Manuale

Modalità stazione A/M

Limite dell’uscita

Modalità A/M software

% di uscita impostata

Convertire le % in unità CV

CV%(maxcv-mincv)100

+ mincv

Gli elementi indicati in questa casella sono parametri, unità e modalità relativi all’anello slave a cui appartengono.

ManualeManuale

Auto

Modalità A/M software

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 509

Page 510: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 13 Istruzioni speciali (FBC, DDT, DTR, PID)

Note:

510 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 511: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14

Istruzioni trigonometriche(SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Introduzione Le istruzioni trigonometriche eseguono il calcolo delle funzioni trigonometriche.

È possibile usare tipi di dati diversi, ma si potrebbe perdere in precisione ed in arrotondamento ed inoltre l’istruzione potrebbe impiegare più tempo per essere eseguita. Controllare il bit di stato overflow (S:V) per verificare se il risultato è stato troncato.

Per le istruzioni ladder, i tipi di dati in grassetto indicano i tipi di dati ottimali. Un’istruzione viene eseguita più velocemente e richiede meno memoria se tutti gli operandi dell’istruzione utilizzano il medesimo tipo di dati ottimali, in genere DINT o REAL.

Se si desidera Utilizzare questa istruzione Disponibile in questi linguaggi Vedere pagina

Calcolare il seno di un valore. SIN laddertesto strutturatoblocco funzione

512

Calcolare il coseno di un valore. COS laddertesto strutturatoblocco funzione

515

Calcolare la tangente di un valore. TAN laddertesto strutturatoblocco funzione

518

Calcolare l’arcoseno di un valore. ASN

ASIN(1)

laddertesto strutturatoblocco funzione

521

Calcolare l’arcocoseno di un valore. ACS

ACOS(1)

laddertesto strutturatoblocco funzione

524

Calcolare l’arcotangente di un valore. ATN

ATAN(1)

laddertesto strutturatoblocco funzione

527

(1) Solo testo strutturato.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 511

Page 512: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14 Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Sine (SIN) L’istruzione SIN calcola il seno del valore Source (in radianti) e memorizza il risultato in Destination.

Operandi:

Ladder

Testo strutturato

Usare SIN come funzione. L’istruzione SIN calcola il seno di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_MATH_ADVANCED

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

calcola il seno di questo valore

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

SIN tag FBD_MATH_ADVANCED struttura struttura SIN

dest := SIN(source);

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Dati di partenza dell’istruzione matematica

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

512 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 513: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capitolo 14

Descrizione: Il valore Source deve essere maggiore o uguale a –205887,4 (–2πx215) ed inferiore o uguale a 205887,4 (2πx215). Il valore risultante di Destination è sempre maggiore o uguale a –1 e minore o uguale a 1.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore calcola il seno di Source ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 513

Page 514: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14 Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Esempio: Calcola il seno di value ed inserisce il risultato in result.

Ladder

Testo strutturato

result := SIN(value);

Blocco funzione

514 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 515: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capitolo 14

Cosine (COS) L’istruzione COS calcola il coseno del valore Source (in radianti) e memorizza il risultato in Destination.

Operandi:

Ladder

Testo strutturato

Usare COS come funzione. L’istruzione COS calcola il coseno di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

calcola il coseno di questo valore

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

COS tag FBD_MATH_ADVANCED struttura struttura COS

dest := COS(source);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 515

Page 516: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14 Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Struttura FBD_MATH_ADVANCED

Descrizione: Il valore Source deve essere maggiore o uguale a –205887,4 (–2πx215) ed inferiore o uguale a 205887,4 (2πx215). Il valore risultante di Destination è sempre maggiore o uguale a –1 e minore o uguale a 1.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Dati di partenza dell’istruzione matematica

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore calcola il coseno di Source ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

516 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 517: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capitolo 14

Blocco funzione

Esempio: Calcola il coseno di value ed inserisce il risultato in result.

Ladder

Testo strutturato

result := COS(value);

Blocco funzione

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 517

Page 518: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14 Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Tangent (TAN) L’istruzione TAN calcola la tangente del valore Source (in radianti) e memorizza il risultato in Destination.

Operandi:

Ladder

Testo strutturato

Usare TAN come funzione. L’istruzione TAN calcola la tangente di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

calcola la tangente di questo valore

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

TAN tag FBD_MATH_ADVANCED struttura struttura TAN

dest := TAN(source);

518 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 519: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capitolo 14

Struttura FBD_MATH_ADVANCED

Descrizione: Il valore Source deve essere maggiore o uguale a –102943,7 (–2πx214) e minore o uguale a 102943,7 (2πx214).

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Dati di partenza dell’istruzione matematica

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore calcola la tangente di Source ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 519

Page 520: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14 Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Esempio: Calcola la tangente di value ed inserisce il risultato in result.

Ladder

Testo strutturato

result := TAN(value);

Blocco funzione

520 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 521: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capitolo 14

Arc Sine (ASN) L’istruzione ASN calcola l’arcoseno del valore Source e memorizza il risultato in Destination (in radianti).

Operandi:

Ladder

Testo strutturato

Usare ASIN come funzione. L’istruzione ASIN calcola l’arcoseno di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_MATH_ADVANCED

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

calcola l’arcoseno di questo valore

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

ASN tag FBD_MATH_ADVANCED struttura struttura ASN

dest := ASIN(source);

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Dati di partenza dell’istruzione matematica

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 521

Page 522: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14 Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Descrizione: Il valore Source deve essere maggiore o uguale a –1 ed inferiore o?e minore o uguale a 1. Il valore risultante di Destination è sempre maggiore o uguale a -π/2 e minore o uguale a π/2 (dove π = 3,141593).

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore calcola l’arcoseno di Source ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

522 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 523: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capitolo 14

Esempio: Calcola l’arcoseno di value ed inserisce il risultato in result.

Ladder

Testo strutturato

result := ASIN(value);

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 523

Page 524: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14 Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Arc Cosine (ACS) L’istruzione ACS calcola l’arcocoseno del valore Source e memorizza il risultato in Destination (in radianti).

Operandi:

Ladder

Testo strutturato

Usare ACOS come funzione. L’istruzione ACOS calcola l’arcocoseno di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_MATH_ADVANCED

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

calcola l’arcocoseno di questo valore

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

ACS tag FBD_MATH_ADVANCED struttura struttura ACS

dest := ACOS(source);

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Dati di partenza dell’istruzione matematica

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

524 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 525: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capitolo 14

Descrizione: Il valore Source deve essere maggiore o uguale a –1 e minore o uguale a 1. Il valore risultante di Destination è sempre maggiore o uguale a 0 e minore o uguale a π (dove π = 3,141593).

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore calcola l’arcocoseno di Source ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 525

Page 526: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14 Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Esempio: Calcola l’arcoseno di value ed inserisce il risultato in result.

Ladder

Testo strutturato

result := ACOS(value);

Blocco funzione

526 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 527: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capitolo 14

Arc Tangent (ATN) L’istruzione ATN calcola l’arcotangente del valore Source e memorizzail risultato in Destination (in radianti).

Operandi:

Ladder

Testo strutturato

Usare ATAN come funzione. L’istruzione ATAN calcola l’arcotangente di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_MATH_ADVANCED

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

calcola l’arcotangente di questo valore

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

ATN tag FBD_MATH_ADVANCED struttura struttura ATN

dest := ATAN(source);

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Dati di partenza dell’istruzione matematica

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 527

Page 528: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14 Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Descrizione: Il valore risultante di Destination è sempre maggiore o uguale a -π/2 e minore o uguale a π/2 (dove π = 3,141593).

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore calcola l’arcotangente di Source ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

528 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 529: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capitolo 14

Esempio: Calcola l’arcotangente di value ed inserisce il risultato in result.

Ladder

Testo strutturato

result := ATAN(value);

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 529

Page 530: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 14 Istruzioni trigonometriche (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Note:

530 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 531: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 15

Istruzioni di matematica avanzata (LN, LOG, XPY)

Introduzione Le istruzioni di matematica avanzata comprendono queste istruzioni:

È possibile usare tipi di dati diversi, ma si potrebbe perdere in precisione ed in arrotondamento ed inoltre l’istruzione potrebbe impiegare più tempo per essere eseguita. Controllare il bit S:V per verificare se il risultato è stato troncato.

Per le istruzioni ladder, i tipi di dati in grassetto indicano i tipi di dati ottimali. Un’istruzione viene eseguita più velocemente e richiede meno memoria se tutti gli operandi dell’istruzione utilizzano il medesimo tipo di dati ottimali, in genere DINT o REAL.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

Calcolare il logaritmo naturale di un valore. LN ladder

testo strutturato

blocco funzione

532

Calcolare il logaritmo in base 10 di un valore. LOG ladder

testo strutturato

blocco funzione

535

Elevare un valore alla potenza di un altro valore. XPY ladder

testo strutturato(1)

blocco funzione

538

(1) Non esiste un’istruzione equivalente in testo strutturato. Utilizzare l’operatore in un’espressione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 531

Page 532: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 15 Istruzioni di matematica avanzata (LN, LOG, XPY)

Natural Log (LN) L’istruzione LN calcola il logaritmo naturale di Source e memorizza ilrisultato in Destination.

Operandi:

Ladder

Testo strutturato

Usare LN come funzione. Questa funzione calcola il logaritmo naturale di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_MATH_ADVANCED

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

calcola il logaritmo naturale di questo valore

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

LN tag FBD_MATH_ADVANCED struttura struttura LN

dest := LN(source);

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Dati di partenza dell’istruzione matematica.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

532 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 533: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matematica avanzata (LN, LOG, XPY) Capitolo 15

Descrizione: Il valore Source deve essere maggiore di zero, altrimenti viene impostato S:V (bit di stato di overflow). Il valore Destination è maggiore o uguale a –87,33655 e minore o uguale a 88,72284.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore calcola il logaritmo naturale di Source e memorizza il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 533

Page 534: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 15 Istruzioni di matematica avanzata (LN, LOG, XPY)

Esempio: Calcola il logaritmo naturale di value ed inserisce il risultato in result.

Esempio in ladder

Testo strutturato

result := LN(value);

Blocco funzione

534 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 535: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matematica avanzata (LN, LOG, XPY) Capitolo 15

Log Base 10 (LOG) L’istruzione LOG calcola il logaritmo in base 10 di Source e memorizza il risultato in Destination.

Operandi:

Ladder

Testo strutturato

Usare LOG come funzione. Questa funzione calcola il logaritmo di source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

calcola il logaritmo di questo valore

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

LOG tag FBD_MATH_ADVANCED struttura struttura LOG

dest := LOG(source);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 535

Page 536: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 15 Istruzioni di matematica avanzata (LN, LOG, XPY)

Struttura FBD_MATH_ADVANCED

Descrizione: Il valore Source deve essere maggiore di zero, altrimenti viene impostato S:V (bit di stato di overflow). Il valore Destination è maggiore o uguale a –37,92978 e minore o uguale a 38,53184.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL dati di partenza dell’istruzione matematica.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore calcola il logaritmo di Source ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

536 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 537: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matematica avanzata (LN, LOG, XPY) Capitolo 15

Esempio: Calcola il logaritmo di value ed inserisce il risultato in result.

Ladder

Testo strutturato

result := LOG(value);

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 537

Page 538: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 15 Istruzioni di matematica avanzata (LN, LOG, XPY)

X to the Power of Y (XPY) L’istruzione XPY eleva Source A (X) alla potenza di Source B (Y) e memorizza il risultato in Destination.

Operandi:

Ladder

Testo strutturato

Usare due segni di moltiplicazione “∗∗” uno vicino all’altro come operatore all’interno di un’espressione. Questa espressione eleva sourceX alla potenza di sourceY e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Operando Tipo Formato Descrizione

Source X SINT

INT

DINT

REAL

immediato

tag

valore base

Source Y SINT

INT

DINT

REAL

immediato

tag

esponente

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

XPY tag FBD_MATH struttura struttura XPY

dest := sourceX ** sourceY;

538 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 539: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di matematica avanzata (LN, LOG, XPY) Capitolo 15

Struttura FBD_MATH

Descrizione: Se Source X è negativa, Source Y deve essere un valore intero, altrimenti si verifica un errore minore.

L’istruzione XPY utilizza questo algoritmo: Destination = X**Y

Il controllore calcola x0=1 e 0x=0.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore:

Esecuzione:

Ladder

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source X REAL Valore base.

Valori validi = qualsiasi numero a virgola mobile

Source Y REAL Esponente.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione matematica. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Si verifica un errore minore se Tipo errore Codice errore

Source X è negativa e Source Y non è un valore intero

4 4

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore eleva Source X alla potenza di Source Y ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 539

Page 540: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 15 Istruzioni di matematica avanzata (LN, LOG, XPY)

Blocco funzione

Esempio: L’istruzione XPY eleva value_1 alla potenza di value_2 ed inserisce il risultato in result.

Ladder

Testo strutturato

result := (value_1 ∗∗ value_2);

Blocco funzione

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

540 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 541: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 16

Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC)

Introduzione Le istruzioni di conversione matematica servono a convertire i valori.

È possibile usare tipi di dati diversi, ma si potrebbe perdere in precisione ed in arrotondamento ed inoltre l’istruzione potrebbe impiegare più tempo per essere eseguita. Controllare il bit S:V per verificare se il risultato è stato troncato.

Per le istruzioni ladder, i tipi di dati in grassetto indicano i tipi di dati ottimali. Un’istruzione viene eseguita più velocemente e richiede meno memoria se tutti gli operandi dell’istruzione utilizzano il medesimo tipo di dati ottimali, in genere DINT o REAL.

Se si desidera Utilizzare questa istruzione

Disponibile in questi linguaggi Vedere pagina

Convertire radianti in gradi. DEG ladder

testo strutturato

blocco funzione

542

Convertire gradi in radianti. RAD ladder

testo strutturato

blocco funzione

545

Convertire un valore intero in un valore BCD. TOD ladder

blocco funzione

548

Convertire un BCD in un valore intero. FRD ladder

blocco funzione

551

Eliminare la parte frazionaria di un valore TRN

TRUNC(1)

ladder

testo strutturato

blocco funzione

553

(1) Solo testo strutturato.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 541

Page 542: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 16 Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC)

Degrees (DEG) L’istruzione DEG converte il valore Source (in radianti) in gradi e memorizza il risultato in Destination.

Operandi:

Ladder

Testo strutturato

Usare DEG come funzione. Questa funzione converte il valore source in gradi e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_MATH_ADVANCED

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

valore da convertire in gradi

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

DEG tag FBD_MATH_ADVANCED struttura struttura DEG

dest := DEG(source);

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Dati di partenza dell’istruzione di conversione.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione di conversione. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

542 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 543: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC) Capitolo 16

Descrizione: L’istruzione DEG utilizza questo algoritmo:Source*180/π (dove π = 3,141593)

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore converte Source in gradi ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 543

Page 544: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 16 Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC)

Esempio: Converte value in gradi ed inserisce il risultato in result.

Ladder

Testo strutturato

result := DEG(value);

Blocco funzione

544 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 545: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC) Capitolo 16

Radians (RAD) L’istruzione RAD converte il valore Source (in gradi) in radianti e memorizza il risultato in Destination.

Operandi:

Ladder

Testo strutturato

Usare RAD come funzione. Questa funzione converte il valore source in radianti e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_MATH_ADVANCED

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

REAL

immediato

tag

valore da convertire in radianti

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

RAD tag FBD_MATH_ADVANCED struttura struttura RAD

dest := RAD(source);

Parametro di input Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Dati di partenza dell’istruzione di conversione.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest REAL Risultato dell’istruzione di conversione. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 545

Page 546: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 16 Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC)

Descrizione: L’istruzione RAD utilizza questo algoritmo:Source*π/180 (dove π = 3,141593)

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore converte Source in radianti ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

546 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 547: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC) Capitolo 16

Esempio Converte value in radianti ed inserisce il risultato in result.

Ladder

Testo strutturato

result := RAD(value);

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 547

Page 548: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 16 Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC)

Convert to BCD (TOD) L’istruzione TOD converte un valore decimale (0 ≤ Source ≤ 99 999 999) in un valore BCD e memorizza il risultato in Destination.

Operandi:

Ladder

Blocco funzione

Struttura FBD_CONVERT

Descrizione: La sigla BCD è l’acronimo di Binary Coded Decimal (decimale codificato in binario), il sistema che esprime le singole cifre decimali (0–9) sotto forma di notazione binaria a 4 bit.

Se si inserisce un valore Source negativo, l’istruzione genera un erroreminore ed azzera la Destination.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

immediato

tag

valore da convertire in decimale

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Destination SINT

INT

DINT

tag memorizza il risultato

Operando Tipo Formato Descrizione

TOD tag FBD_CONVERT struttura struttura TOD

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source DINT Dati di partenza dell’istruzione di conversione.

Valori validi = qualsiasi numero intero

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest DINT Risultato dell’istruzione di conversione. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

548 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 549: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC) Capitolo 16

Condizioni di errore:

Esecuzione:

Ladder

Blocco funzione

Si verifica un errore minore se Tipo errore Codice errore

Source < 0 4 4

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore converte Source in BDC ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera

fine

Source < 0no

Source > 99 999 999no

conversione source in BCD

S:V è impostato a 1

La condizione del ramo di uscita viene impostata su vero

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 549

Page 550: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 16 Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC)

Esempio: L’istruzione TOD converte value_1 in un valore BCD e inserisce il risultato in result_a.

Ladder

Blocco funzione

550 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 551: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC) Capitolo 16

Convert to Integer (FRD) L’istruzione FRD converte un valore BCD (Source) in un valore decimale e memorizza il risultato in Destination.

Operandi:

Ladder

Blocco funzione

Struttura FBD_CONVERT

Descrizione: L’istruzione FRD converte un valore BCD (Source) in un valore decimale e memorizza il risultato in Destination.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Operando Tipo Formato Descrizione

Source SINT

INT

DINT

immediato

tag

valore da convertire in decimale

Un tag SINT o INT viene convertito in un valore DINT tramite riempimento con zeri.

Destination SINT

INT

DINT

tag memorizza il risultato

Operando Tipo Formato Descrizione

FRD tag FBD_CONVERT struttura struttura FRD

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source DINT Dati di partenza dell’istruzione di conversione.

Valori validi = qualsiasi numero intero

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest DINT Risultato dell’istruzione di conversione. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 551

Page 552: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 16 Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC)

Esecuzione:

Ladder

Blocco funzione

Esempio: L’istruzione FRD converte value_a in un valore decimale e inserisce il risultato in result_1.

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore converte il valore Source in decimali ed inserisce il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

552 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 553: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC) Capitolo 16

Truncate (TRN) L’istruzione TRN elimina (tronca) la parte frazionaria di un valore (Source) e memorizza il risultato in Destination.

Operandi:

Ladder

Testo strutturato

Usare TRUNC come funzione. Questa funzione tronca il valore source e memorizza il risultato in dest.

Consultare l’Appendice C, Programmazione in testo strutturato per informazioni sulla sintassi delle espressioni nel testo strutturato.

Blocco funzione

Struttura FBD_TRUNCATE

Operando Tipo Formato Descrizione

Source REAL immediato

tag

valore da troncare

Destination SINT

INT

DINT

REAL

tag tag dove memorizzare il risultato

Operando Tipo Formato Descrizione

TRN tag FBD_TRUNCATE struttura struttura TRN

dest := TRUNC(source);

Parametro di ingresso Tipo di dati Descrizione

EnableIn BOOL Abilita gli ingressi. Se è azzerato, l’istruzione non viene eseguita e le uscite non vengono aggiornate.

Il valore di default è impostato.

Source REAL Dati di partenza dell’istruzione di conversione.

Valori validi = qualsiasi numero a virgola mobile

Parametro di uscita Tipo di dati Descrizione

EnableOut BOOL L’istruzione produce un risultato valido.

Dest DINT Risultato dell’istruzione di conversione. Per questa uscita vengono impostati gli indicatori di stato aritmetico.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 553

Page 554: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 16 Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC)

Descrizione: Il troncamento non arrotonda il valore in quanto la parte intera rimane la stessa a prescindere dal valore della parte frazionaria.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

Condizioni di errore: nessuna

Esecuzione:

Ladder

Blocco funzione

Condizione Azione

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera Il controllore elimina la parte frazionaria di Source e memorizza il risultato in Destination.

La condizione del ramo di uscita viene impostata su vero.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Condizione Azione

durante la prescansione Nessuna.

prima scansione dell’istruzione Nessuna.

durante la prima esecuzione dell’istruzione Nessuna.

EnableIn viene azzerato EnableOut viene azzerato.

EnableIn viene impostato L’istruzione viene eseguita.

EnableOut viene impostato.

post-scansione Nessuna.

554 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 555: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC) Capitolo 16

Esempio: Elimina la parte frazionaria di float_value_1, lasciando invariata la parte non frazionaria e inserisce il risultato in float_value_1_truncated.

Ladder

Testo strutturato

float_value_1_truncated := TRUNC(float_value_1);

Blocco funzione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 555

Page 556: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 16 Istruzioni di conversione matematica (DEG, RAD, TOD, FRD, TRN, TRUNC)

Note:

556 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 557: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17

Istruzioni Porta Seriale ASCII(ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Introduzione Utilizzare le istruzioni in ASCII della porta seriale per leggere e scrivere caratteri ASCII.

IMPORTANTE Per utilizzare le istruzioni porta seriale ASCII, si deve configurare la porta seriale del controllore. Vedere Logix5000 Controllori Logix5000 – Procedure comuni, pubblicazione 1756-PM001.

Se si desidera Per esempio Utilizzare questa istruzione

Disponibile in questi linguaggi

Vedere pagina

determinare se il buffer contiene caratteri di terminazione

controllare i dati contenenti caratteri di terminazione

ABL ladder

testo strutturato

562

contare i caratteri nel buffer controllare il numero di caratteri richiesto prima di leggere il buffer

ACB ladder

testo strutturato

565

cancellare il buffer • eliminare i dati vecchi del buffer all’avviamento

• sincronizzare il buffer con un dispositivo

ACL ladder

testo strutturato

567

cancellare le istruzioni per la Porta Seriale in ASCII in corso di esecuzione o in coda

conoscere lo stato delle linee di controllo della porta seriale

causare una sospensione modem AHL ladder

testo strutturato

569

attivare o disattivare il segnale DTR

attivare o disattivare il segnale RTS

leggere un numero fisso di caratteri leggere dati da un dispositivo che invia lo stesso numero di caratteri ad ogni trasmissione

ARD ladder

testo strutturato

573

leggere un numero di caratteri variabile fino al primo set di caratteri di terminazione (compreso)

leggere dati da un dispositivo che invia un numero di caratteri variabile ad ogni trasmissione

ARL ladder

testo strutturato

577

inviare caratteri ed includere automaticamente uno o due caratteri aggiuntivi per segnalare la fine dei dati

inviare messaggi che utilizzano sempre lo stesso carattere (o caratteri) di terminazione

AWA ladder

testo strutturato

581

inviare caratteri inviare messaggi che utilizzano una varietà di caratteri di terminazione

AWT ladder

testo strutturato

586

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 557

Page 558: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Esecuzione delle istruzioni

Le istruzioni porta seriale ASCII vengono eseguite in maniera asincrona rispetto alla scansione della logica:

Ciascuna istruzione porta seriale ASCII (eccetto ACL) utilizza una struttura SERIAL_PORT_CONTROL per ottenere le seguenti funzioni:

• controllare l’esecuzione dell’istruzione

• fornire informazioni sullo stato dell’istruzione

L’istruzione entra nella coda ASCII.

Coda ASCII

Istruzione 1 La prima istruzione della coda viene eseguita.

BufferPorta seriale

Istruzione 2

Istruzione 3

Istruzione 4

La condizione del ramo passa da falsa a vera

Scambio dati tra task e buffer.

Scambio dati tra buffer e porta seriale.

Logica Task ASCII

558 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 559: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

Il seguente diagramma dei tempi riporta le modifiche dei bit di stato quando un’istruzione ABL controlla i caratteri di terminazione del buffer.

La coda ASCII può contenere fino a 16 istruzioni. La figura sottostante mostra come un’istruzione tenta di mettersi in coda ad ogni successiva scansione quando la coda è completa:

scansione scansione scansione scansione

entra nella coda ripristina i bit di stato

esecuzione quando viene scandita e .DN o .ER sonno impostati, imposta il bit .EMin questo esempio,

trova i caratteri di terminazione

condizione ramo di ingresso falso vero falso vero falso

.EN off on off on off

.EU off on

.RN off on off on off

.DN o .ER off on off on

.FD off on off on

.EM off on off on

scansione scansione scansione scansione

entra nella coda

l’istruzione tenta di mettersi in coda ma questa è completa.

condizione ramo di ingresso falso vero falso

.EN off on

.EU off on

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 559

Page 560: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Codici di errore ASCII

Se un’istruzione porta seriale ASCII fallisce nell’esecuzione, il membro ERROR della sua struttura SERIAL_PORT_CONTROL conterrà uno dei seguenti codici di errore esadecimali:

Tipi di dati stringaI caratteri ASCII vengono memorizzati in tag che utilizzano un tipo di dati stringa.

• Si può utilizzare il tipo di dati STRINGA di default. Esso memorizza fino a 82 caratteri.

• Si può creare un nuovo tipo di dati stringa che memorizza più o meno caratteri.

Per creare un nuovo tipo di dati stringa, vedere Logix5000 Controllori Logix5000 – Procedure comuni, pubblicazione 1756-PM001.

Ciascun tipo di dati stringa contiene i seguenti membri:

Codice di errore esad.

Significato

16#2 Modem offline.

16#3 Segnale CTS interrotto durante la comunicazione.

16#4 Porta seriale in modalità Sistema.

16#A Il bit .UL era impostato prima che l’istruzione fosse eseguita. Impossibile eseguire l’istruzione.

16#C Il controllore è passato dalla modalità Run alla Modalità Program. Ciò interrompe l’esecuzione di una istruzione porta seriale ASCII ed azzera la coda.

16#D Nella finestra di dialogo delle proprietà del controllore, scheda User Protocol, sono stati modificati i parametri di dimensione buffer e modalità eco. Ciò interrompe l’esecuzione di una istruzione porta seriale ASCII ed azzera la coda.

16#E Istruzione ACL eseguita.

16#F Configurazione Porta Seriale modificata da modalità Utente a modalità Sistema. Ciò interrompe l’esecuzione di una istruzione porta seriale ASCII ed azzera la coda dell’istruzione porta seriale ASCII.

16#51 Il valore LEN del tag stringa è negativo oppure maggiore della dimensione DATA del tag stringa.

16#54 Serial Port Control Length è maggiore della dimensione del buffer.

16#55 Serial Port Control Length è negativa oppure maggiore della dimensione di Source o Destination.

560 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 561: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

Nome Tipo di dati Descrizione Note

LEN DINT numero di caratteri nella stringa

LEN si aggiorna automaticamente al nuovo conteggio dei caratteri ogni volta che:

• si usa la finestra di dialogo Browser Stringa per inserire caratteri

• si usano istruzioni che leggono, convertono o manipolano una stringa

LEN mostra la lunghezza della stringa attuale. Il membro DATA può contenere caratteri vecchi addizionali che non sono inclusi nel conteggio LEN.

DATA Matrice SINT caratteri ASCII della stringa

• Per accedere ai caratteri della stringa, indirizzare il nome del tag.

Per esempio, per accedere ai caratteri della string_1, inserire string_1.

• Ciascun elemento della matrice DATA contiene un carattere.

• Si possono creare nuovi tipi di dati stringa che memorizzano più o meno caratteri.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 561

Page 562: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

ASCII Test For Buffer Line (ABL)

L’istruzione ABL conta i caratteri nel buffer fino al primo set di caratteri di terminazione (compreso).

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione ABL in ladder. Si può accedere al valore di Character Count dal membro .POS della struttura SERIAL_PORT_CONTROL.

Struttura SERIAL_PORT_CONTROL

Operando Tipo Formato Descrizione

Channel DINT immediato

tag

0

Serial Port

Control

SERIAL_PORT_

CONTROL

tag tag che controlla l’operazione

Character Count

DINT immediato 0

Durante l’esecuzione visualizza il numero di caratteri nel buffer fino al primo set di caratteri di terminazione (compreso).

ENDNER

ASCII Test For Buffer LineChannel ?SerialPort Control ?Character Count ?

ABLtest ASCII per linea bufferChannelSerialPort ControlCharacter Count

ABLENDNER

ABL(ChannelSerialPortControl);

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione è abilitata.

.EU BOOL Il bit di coda indica che l’istruzione è entrata nella coda ASCII.

.DN BOOL Il bit di fine indica quando l’istruzione è stata eseguita, però è asincrono rispetto alla scansione logica.

.RN BOOL Il bit di esecuzione indica che l’istruzione è in corso di esecuzione.

.EM BOOL Il bit di vuoto indica quando l’istruzione è stata eseguita, però è sincrono rispetto alla scansione logica.

.ER BOOL Il bit di errore indica quando l’istruzione fallisce (genera un errore).

.FD BOOL Il bit di trovato indica che l’istruzione ha trovato il carattere/i di terminazione.

.POS DINT La posizione determina il numero di caratteri nel buffer fino al primo set di caratteri di terminazione (compreso). L’istruzione restituisce questo valore solo dopo aver trovato il carattere/i di terminazione.

.ERROR DINT L’errore contiene un valore esadecimale che identifica la causa di un errore.

562 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 563: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

Descrizione L’istruzione ABL cerca il primo set di caratteri di terminazione nel buffer. Se l’istruzione trova i caratteri di terminazione:

• imposta il bit .FD

• conta i caratteri nel buffer fino al primo set di caratteri di terminazione (compreso).

La finestra di dialogo Proprietà Controllore, scheda Protocollo utente, definisce i caratteri ASCII che l’istruzione considera come caratteri di terminazione.

Per programmare un’istruzione ABL, seguire questa procedura:

1. Configurare la porta seriale del controllore per la modalità utente e definire i caratteri da utilizzare come caratteri di terminazione.

2. Questa è un’istruzione di transizione:

• In ladder, cambia la condizione del ramo di ingresso da azzerata a impostata ogni volta che l’istruzione deve essere eseguita.

• In testo strutturato, condiziona l’ istruzione in modo che venga eseguita solo su una transizione.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

Quando la condizione del ramo passa da azzerata a impostata, l’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione conteggia i caratteri nel buffer.

Il bit .EN viene impostato.

I rimanenti bit di stato, tranne .UL, vengono azzerati.

L’istruzione tenta di immettersi nella coda ASCII.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 563

Page 564: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Esempio: Verifica continuamente il buffer per i caratteri di terminazione.

Ladder

Testo strutturato

ABL(0,MV_line);

/MV_line.EN

ENDNER

ASCII Test For Buffer LineChannel 0SerialPort Control MV_lineCharacter Count 0

ABLtest ASCII per linea bufferChannelSerialPort ControlCharacter Count

ABLENDNERMV_line

MV_line.EN

564 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 565: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

ASCII Chars in Buffer (ACB) L’istruzione ACB conteggia i caratteri nel buffer.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione ACB in ladder. Tuttavia, il valore di Character Count viene indicato accedendo al membro .POS della struttura SERIAL_PORT_CONTROL invece di inserire il valore nella lista di operandi.

Struttura SERIAL_PORT_CONTROL

Operando Tipo Formato Digitare

Channel DINT immediato

tag

0

Serial Port

Control

SERIAL_PORT_

CONTROL

tag tag che controlla l’operazione

Character Count

DINT immediato 0

Durante l’esecuzione visualizza il numero di caratteri nel buffer.

ENDNER

ASCII Chars in BufferChannel ?SerialPort Control ?Character Count ?

ACBcaratteri ASCII in bufferChannelSerialPort ControlCharacter Count

ACBENDNER

ACB(ChannelSerialPortControl);

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione è abilitata.

.EU BOOL Il bit di coda indica che l’istruzione è entrata nella coda ASCII.

.DN BOOL Il bit di fine indica quando l’istruzione è stata eseguita, però è asincrono rispetto alla scansione logica.

.RN BOOL Il bit di esecuzione indica che l’istruzione è in corso di esecuzione.

.EM BOOL Il bit di vuoto indica quando l’istruzione è stata eseguita, però è sincrono rispetto alla scansione logica.

.ER BOOL Il bit di errore indica quando l’istruzione fallisce (genera un errore).

.FD BOOL Il bit di trovato indica che l’istruzione ha trovato un carattere.

.POS DINT La posizione determina il numero di caratteri nel buffer fino al primo set di caratteri di terminazione (compreso).

.ERROR DINT L’errore contiene un valore esadecimale che identifica la causa di un errore.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 565

Page 566: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Descrizione: L’istruzione ACB conteggia i caratteri nel buffer.

Per programmare un’istruzione ACB, seguire questa procedura:

1. Configurare la porta seriale del controllore per la modalità utente.

2. Questa è un’istruzione di transizione:

• In ladder, cambia la condizione del ramo di ingresso da azzerata a impostata ogni volta che l’istruzione deve essere eseguita.

• In testo strutturato, condiziona l’ istruzione in modo che venga eseguita solo su una transizione.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio: Conteggio continuo dei caratteri nel buffer.

Ladder

Testo strutturato

ACB(0,bar_code_count);

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

Quando la condizione del ramo passa da azzerata a impostata, l’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione conteggia i caratteri nel buffer.Il bit .EN viene impostato.I rimanenti bit di stato, tranne .UL, vengono azzerati.L’istruzione tenta di immettersi nella coda ASCII.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

/bar_code_count.EN

ENDNER

ASCII Chars in BufferChannel 0SerialPort Control bar_code_countCharacter Count 0

ACB

caratteri ASCII in bufferChannelSerialPort ControlCharacter Count

ENDNERbar_code_count

ACBbar_code_count.EN

566 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 567: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

ASCII Clear Buffer (ACL) L’istruzione ACL cancella immediatamente il buffer e la coda ASCI.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione ACL in ladder.

Descrizione: L’istruzione ACL esegue immediatamente una delle seguenti azioni:

• cancella i caratteri del buffer e le istruzioni di lettura nella coda ASCII

• cancella le istruzioni di scrittura nella coda ASCII

Per programmare un’istruzione ACL, seguire questa procedura:

1. Configurare la porta seriale del controllore:

2. Per determinare se un’istruzione è stata eliminata dalla coda o interrotta, esaminare nell’istruzione appropriata quanto segue:

• bit .ER viene impostato

• il membro .ERROR è 16#E

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Operando Tipo Formato Digitare

Channel DINT immediato

tag

0

Clear Serial Port Read

BOOL immediato

tag

Per svuotare il buffer e rimuovere le istruzioni ARD e ARL dalla coda, digitare Sì.

Clear Serial Port Write

BOOL immediato

tag

Per rimuovere le istruzioni AWA e AWT dalla coda, digitare Sì.

ASCII Clear BufferChannel ?Clear Serial Port Read ?Clear Serial Port Write ?

ACLcancella buffer ASCIIChannelClear Serial Port ReadClear Serial Port Write

ACL

ACL(Channel,ClearSerialPortRead,ClearSerialPortWrite);

Se l’applicAzione Allora

usa istruzioni ARD o ARL Selezionare la modalità Utente

non usa istruzioni ARD o ARL Selezionare o la modalità Utente o la modalità Sistema

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 567

Page 568: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Esecuzione:

Esempio: Quando il controllore passa in Modalità Run, azzera il buffer e la coda ASCII.

Ladder

Testo strutturato

osri_1.InputBit := S:FS;

OSRI(osri_1);

IF (osri_1.OutputBit) THEN

ACL(0,0,1);

END_IF;

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione azzera le istruzioni e i buffer specificati.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

S:FS

ASCII Clear BufferChannel 0Clear Serial Port Read 1Clear Serial Port Write 1

ACL

cancella buffer ASCIIChannelClear Serial Port ReadClear Serial Port Write

ACL

568 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 569: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

ASCII Handshake Lines (AHL)

L’istruzione AHL consente di conoscere lo stato delle righe di controllo e di attivare o disattivare i segnali DTR e RTS.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione AHL in ladder. Tuttavia, il valore Channel Status viene indicato accedendo al membro .POS della struttura SERIAL_PORT_CONTROL invece di inserire il valore nella lista di operandi.

EN

DN

ER

ASCII Handshake LinesChannel ?AND Mask ?

??OR Mask ?

??SerialPort Control ?Channel Status(Decimal) ?

AHLASCII Handshake LinesChannelAND Mask

OR Mask

SerialPort ControlChannel Status(Decimal)

AHLEN

DN

ER

Operando Tipo Formato Digitare

Channel DINT immediato

tag

0

ANDMask DINT immediato

tag

Fare riferimento alla descrizione.

ORMask DINT immediato

tag

Serial Port Control SERIAL_PORT_CONTROL tag tag che controlla l’operazione

Channel Status (Decimal) DINT immediato 0

Durante l’esecuzione, visualizza lo stato delle linee di controllo.

Per conoscere lo stato di questa linea di controllo:

Esamina questo bit:

CTS 0

RTS 1

DSR 2

DCD 3

DTR 4

Ricevuto carattere XOFF 5

AHL(Channel,ANDMask,ORMask,SerialPortControl);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 569

Page 570: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Struttura SERIAL_PORT_CONTROL

Descrizione: L’istruzione AHL consente di:

• conoscere lo stato delle linee di controllo della porta seriale

• attivare o disattivare il segnale DTR (terminale pronto)

• attivare o disattivare il segnale RTS (richiesta di invio)

Per programmare un’istruzione AHL, seguire questa procedura:

1. Configurare la porta seriale del controllore:

2. Utilizzare la seguente tabella per scegliere i valori corretti per gli operandi ANDMask e ORMask.

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione è abilitata.

.EU BOOL Il bit di coda indica che l’istruzione è entrata nella coda ASCII.

.DN BOOL Il bit di fine indica quando l’istruzione è stata eseguita, però è asincrono rispetto alla scansione logica.

.RN BOOL Il bit di esecuzione indica che l’istruzione è in corso di esecuzione.

.EM BOOL Il bit di vuoto indica quando l’istruzione è stata eseguita, però è sincrono rispetto alla scansione logica.

.ER BOOL Il bit di errore indica quando l’istruzione fallisce (genera un errore).

.FD BOOL Il bit di trovato non riguarda questa istruzione.

.POS DINT La posizione memorizza lo stato delle linee di controllo

.ERROR DINT L’errore contiene un valore esadecimale che identifica la causa di un errore.

Se l’applicAzione Allora

usa istruzioni ARD o ARL Selezionare la modalità Utente

non usa le istruzioni ARD o ARL Selezionare o la modalità Utente o la modalità Sistema

Per commutare DTR

e per commutare RTS

Inserire questo valore ANDMask

Ed inserire questo valore ORMask

off off 3 0

on 1 2

invariato 1 0

on off 2 1

on 0 3

invariato 0 1

invariato off 2 0

on 0 2

invariato 0 0

570 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 571: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

3. Questa è un’istruzione di transizione:

• In ladder, cambia la condizione del ramo di ingresso da azzerata a impostata ogni volta che l’istruzione deve essere eseguita.

• In testo strutturato, condiziona l’ istruzione in modo che venga eseguita solo su una transizione.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esecuzione:

Tipo Codice Causa Metodo di ripristino

4 57 L’istruzione AHL fallisce nell’esecuzione perché la porta seriale è impostata per nessun’handshaking.

Uno o l’altro:

• Modificare l’impostazione di Control Line della porta seriale.

• Eliminare l’istruzione AHL.

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

Quando la condizione del ramo passa da azzerata a impostata, l’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione consente di conoscere lo stato delle linee di controllo e di attivare o disattivare i segnali DTR e RTS.

Il bit .EN viene impostato.

I rimanenti bit di stato, tranne .UL, vengono azzerati.

L’istruzione tenta di immettersi nella coda ASCII.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 571

Page 572: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Esempio: Quando get_control_line_status è impostato, l’istruzione ottiene lo stato delle linee di controllo della porta seriale e lo visualizza nell’operando Channel Status. Per visualizzare lo stato di una specifica linea di controllo, monitorare il tag SerialPort Control ed espandere il membro POS.

Ladder

Testo strutturato

osri_1.InputBit := get_control_line_status;

OSRI(osri_1);

IF (osri_1.OutputBit) THEN

AHL(0,0,0,serial_port);

END_IF;

get_control_line_status

EN

DN

ER

ASCII Handshake LinesChannel 0AND Mask 0 OR Mask 0 SerialPort Control serial_portChannel Status(Decimal) 29

AHL

ASCII Handshake LinesChannelAND Mask

OR Mask

SerialPort ControlChannel Status(Decimal)

AHLEN

DN

ER

serial_port

get_control_line_status

572 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 573: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

ASCII Read (ARD) L’istruzione ARD elimina i caratteri dal buffer e li memorizza nella Destination.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione ARD in ladder. Tuttavia, i valori Serial Port Control Length e Characters Read vengono indicati accedendo ai membri .LEN e .POS della struttura SERIAL_PORT_CONTROL invece di inserire i valori nella lista di operandi.

EN

DN

ER

ASCII Read Channel ?Destination ?

??SerialPort Control ?SerialPort Control Length ?Characters Read ?

ARDARDEN

DN

ER

ASCII ReadChannelDestination

SerialPort ControlSerialPort Control LengthLettura caratteri

Operando Tipo Formato Digitare Note

Channel DINT immediato

tag

0

Destination stringa

SINT

INT

DINT

tag tag in cui sono spostati (lettura) i caratteri:

• Per un tipo di dati stringa, inserire il nome del tag.

• Per una matrice SINT, INT, o DINT, inserire il primo elemento della matrice.

• Se si vuole confrontare, convertire o manipolare i caratteri, usare un tipo di dati stringa.

• I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Serial Port

Control

SERIAL_PORT_

CONTROL

tag tag che controlla l’operazione

Serial Port

Control Length

DINT immediato numero di caratteri da spostare nella destinazione (lettura)

• La Serial Port Control Length deve essere inferiore o uguale alla dimensione della Destination.

• Se si vuole impostare la Serial Port Control Length uguale alla dimensione della Destination, digitare 0.

Characters Read DINT immediato 0 Durante l’esecuzione, visualizza il numero dei caratteri che sono stati letti.

ARD(Channel,Destination,SerialPortControl);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 573

Page 574: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Struttura SERIAL_PORT_CONTROL

Descrizione: L’istruzione ARD elimina il numero specificato di caratteri dal buffer e li memorizza nella Destination.

• L’istruzione ARD continua l’esecuzione fino a quando ha rimosso il numero di caratteri specificato (Serial Port Control Length).

• Mentre l’istruzione ARD è in esecuzione, non viene eseguita nessuna altra istruzione ASCII Serial Port.

Per programmare un’istruzione ARD, seguire questa procedura:

1. Configurare la porta seriale del controllore per la modalità utente.

2. Utilizzare i risultati di un’istruzione ACB per attivare l’istruzione ARD. In questo modo si evita che l’istruzione ARD trattenga la coda ASCII mentre attende il numero di caratteri richiesto.

3. Questa è un’istruzione di transizione:

• In ladder, cambia la condizione del ramo di ingresso da azzerata a impostata ogni volta che l’istruzione deve essere eseguita.

• In testo strutturato, condiziona l’ istruzione in modo che venga eseguita solo su una transizione.

4. Per comandare un’azione successiva quando l’istruzione è stata eseguita, esaminare il bit EM.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione è abilitata.

.EU BOOL Il bit di coda indica che l’istruzione è entrata nella coda ASCII.

.DN BOOL Il bit di fine indica quando l’istruzione è stata eseguita, però è asincrono rispetto alla scansione logica.

.RN BOOL Il bit di esecuzione indica che l’istruzione è in corso di esecuzione.

.EM BOOL Il bit di vuoto indica quando l’istruzione è stata eseguita, però è sincrono rispetto alla scansione logica.

.ER BOOL Il bit di errore indica quando l’istruzione fallisce (genera un errore).

.FD BOOL Il bit di trovato non riguarda questa istruzione.

.LEN DINT La lunghezza indica il numero di caratteri da spostare nella destinazione (lettura).

.POS DINT La posizione visualizza il numero di caratteri che sono stati letti.

.ERROR DINT L’errore contiene un valore esadecimale che identifica la causa di un errore.

574 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 575: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

Esecuzione:

Esempio: Un lettore di codice a barre invia i codici a barre alla porta seriale (canale 0) del controllore. Ciascun codice a barre contiene 24 caratteri. Per determinare quando il controllore riceve un codice a barre, l’istruzione ACB conteggia continuamente i caratteri nel buffer. Quando il buffer contiene almeno 24 caratteri, il controllore ha ricevuto un codice a barre. L’istruzione ARD sposta il codice a barre al membro DATA del tag bag_bar_code, che è una stringa.

Ladder

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

Quando la condizione del ramo passa da azzerata a impostata, l’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzione L’istruzione elimina i caratteri dal buffer e li memorizza nella Destination.

Il bit .EN viene impostato.

I rimanenti bit di stato, tranne .UL, vengono azzerati.

L’istruzione tenta di immettersi nella coda ASCII.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

/bar_code_count.EN

ENDNER

ASCII Chars in BufferChannel 0SerialPort Control bar_code_countCharacter Count 0

ACBASCII Chars in BufferChannelSerialPort ControlCharacter Count

ACB

bar_code_count

EN

ERDN

bar_code_count.EN

Grtr Than or Eql (A>=B)Source A bar_code_count.pos

0Source B 24

GEQEN

DN

ER

ASCII ReadChannel 0Destination bag_bar_code

''SerialPort Control bar_code_readSerialPort Control Length 24Characters Read 0

ARDARDASCII ReadChannelDestination

SerialPort ControlSerialPort Control LengthLettura caratteri

bag_bar_code

bar_code_read

EN

DN

ER

Grtr Than or Eql (A>=B)Source A bar_code_count.pos

Source B

GEQ

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 575

Page 576: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Testo strutturato

ACB(0,bar_code_count);

IF bar_code_count.POS >= 24 THEN

bar_code_read.LEN := 24;

ARD(0,bag_bar_code,bar_code_read);

END_IF;

576 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 577: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

ASCII Read Line (ARL) L’istruzione ARL elimina i caratteri specificati dal buffer e li memorizza nella Destination.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione ARL in ladder. Tuttavia, i valori Serial Port Control Length e Characters Read vengono indicati accedendo ai membri .LEN e .POS della struttura SERIAL_PORT_CONTROL invece di inserire i valori nella lista di operandi.

EN

DN

ER

ASCII Read LineChannel ?Destination ?

??SerialPort Control ?SerialPort Control Length ?Characters Read ?

ARLARLASCII Read LineChannelDestination

SerialPort ControlSerialPort Control LengthCharacters Read

EN

DN

ER

Operando Tipo Formato Digitare Note

Channel DINT immediato

tag

0

Destination stringa

SINT

INT

DINT

tag tag in cui sono spostati (lettura) i caratteri:

• Per un tipo di dati stringa, inserire il nome del tag.

• Per una matrice SINT, INT, o DINT, inserire il primo elemento della matrice.

• Se si vuole confrontare, convertire o manipolare i caratteri, usare un tipo di dati stringa.

• I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Serial Port

Control

SERIAL_PORT_

CONTROL

tag tag che controlla l’operazione

Serial Port Control Length

DINT immediato numero massimo di caratteri da leggere se non vengono trovati caratteri di terminazione

• Inserire il numero massimo di caratteri che può contenere un messaggio (cioè, quando terminare la lettura se non vengono trovati caratteri di terminazione).

Per esempio, se il messaggio ha una lunghezza compresa tra 3 e 6 caratteri, inserire 6.

• La Serial Port Control Length deve essere inferiore o uguale alla dimensione della Destination.

• Se si vuole impostare la Serial Port Control Length uguale alla dimensione della Destination, digitare 0.

Characters Read DINT immediato 0 Durante l’esecuzione, visualizza il numero dei caratteri che sono stati letti.

ARL(Channel,Destination,SerialPortControl);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 577

Page 578: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Struttura SERIAL_PORT_CONTROL

Descrizione: L’istruzione ARL elimina i caratteri specificati dal buffer e li memorizza nella Destination secondo le seguenti modalità:

• L’istruzione ARL continua l’esecuzione fino a quando non rimuove:

– il primo set di caratteri di terminazione

– numero di caratteri specificato (Serial Port Control Length)

• Mentre l’istruzione ARL è in esecuzione, non viene eseguita nessuna altra istruzione ASCII porta seriale.

Per programmare un’istruzione ARL, seguire questa procedura:

1. Configurare la porta seriale del controllore:

a. Selezionare la modalità Utente.

b. Definire i caratteri da utilizzare come caratteri di terminazione.

2. Utilizzare i risultati di un’istruzione ABL per attivare l’istruzione ARL. In questo modo si evita che l’istruzione ARL trattenga la coda ASCII mentre attende i caratteri di terminazione.

3. Questa è un’istruzione di transizione:

• In ladder, cambia la condizione del ramo di ingresso da azzerata a impostata ogni volta che l’istruzione deve essere eseguita.

• In testo strutturato, condiziona l’ istruzione in modo che venga eseguita solo su una transizione.

4. Per comandare un’azione successiva quando l’istruzione è stata eseguita, esaminare il bit EM.

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione è abilitata.

.EU BOOL Il bit di coda indica che l’istruzione è entrata nella coda ASCII.

.DN BOOL Il bit di fine indica quando l’istruzione è stata eseguita, però è asincrono rispetto alla scansione logica.

.RN BOOL Il bit di esecuzione indica che l’istruzione è in corso di esecuzione.

.EM BOOL Il bit di vuoto indica quando l’istruzione è stata eseguita, però è sincrono rispetto alla scansione logica.

.ER BOOL Il bit di errore indica quando l’istruzione fallisce (genera un errore).

.FD BOOL Il bit di trovato non riguarda questa istruzione.

.LEN DINT La lunghezza indica il numero massimo di caratteri da spostare nella destinazione (cioè, quando terminare la lettura se non vengono trovati caratteri di terminazione).

.POS DINT La posizione visualizza il numero di caratteri che sono stati letti.

.ERROR DINT L’errore contiene un valore esadecimale che identifica la causa di un errore.

578 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 579: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio: Verifica continuamente il buffer per un messaggio dal terminale MessageView. Poiché ciascun messaggio termina con un ritorno a capo ($r), il ritorno a capo è configurato come il carattere di terminazione nella finestra di dialogo Proprietà Controller della scheda Protocollo Utente. Quando l’ABL trova un ritorno a capo, imposta il bit FD.

Quando l’istruzione ABL trova il ritorno a capo (MV_line.FD è impostato), il controllore ha ricevuto un messaggio completo. L’istruzione ARL rimuove i caratteri dal buffer, fino al ritorno a capo incluso, e li posiziona nel membro DATA del tag MV_msg, che è una stringa.

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

Quando la condizione del ramo passa da azzerata a impostata, l’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzione L’istruzione elimina i caratteri specificati dal buffer e li memorizza nella Destination.

Il bit .EN viene impostato.

I rimanenti bit di stato, tranne .UL, vengono azzerati.

L’istruzione tenta di immettersi nella coda ASCII.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 579

Page 580: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Ladder

Testo strutturato

ABL(0,MV_line);

osri_1.InputBit := MVLine.FD;

OSRI(osri_1);

IF (osri_1.OutputBit) THEN

mv_read.LEN := 12;

ARL(0,MV_msg,MV_read);

END_IF;

/MV_line.EN

ENDNER

ASCII Test For Buffer LineChannel 0SerialPort Control MV_lineCharacter Count 0

ABLABLASCII Test For Buffer LineChannelSerialPort ControlCharacters Count

MV_line

ENDNER

MV_line.EN

MV_line.FD

EN

DN

ER

ASCII Read LineChannel 0Destination MV_msg

''SerialPort Control MV_readSerialPort Control Length 12Characters Read 0

ARLARLASCII Read LineChannelDestination

SerialPort ControlSerialPort Control LengthCharacters Read

EN

DN

ER

MV_msg

MV_read

MV_line.FD

580 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 581: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

ASCII Write Append (AWA) L’istruzione AWA invia un numero specificato di caratteri del Tag Source ad un dispositivo seriale ed aggiunge uno o due caratteri predefiniti.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione AWA in ladder. Tuttavia, i valori Serial Port Control Length e Characters Sent vengono indicati accedendo ai membri .LEN e .POS della struttura SERIAL_PORT_CONTROL invece di inserire i valori nella lista di operandi.

EN

DN

ER

ASCII Write Append Channel ?Source ?

??SerialPort Control ?SerialPort Control Length ?Characters Sent ?

AWAAWAASCII Write AppendChannelSource

SerialPort ControlSerialPort Control LengthCharacters Sent

EN

DN

ER

Operando Tipo Formato Digitare Note

Channel DINT immediato

tag

0

Source stringa

SINT

INT

DINT

tag tag che contiene i caratteri da inviare:

• Per un tipo di dati stringa, inserire il nome del tag.

• Per una matrice SINT, INT, o DINT, inserire il primo elemento della matrice.

• Se si vuole confrontare, convertire o manipolare i caratteri, usare un tipo di dati stringa.

• I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Serial Port

Control

SERIAL_PORT_

CONTROL

tag tag che controlla l’operazione

Serial Port Control Length

DINT immediato numero di caratteri da inviare

• La Serial Port Control Length deve essere inferiore o uguale alla dimensione della Source.

• Se si vuole impostare la Serial Port Control Length uguale al numero di caratteri nella Source, digitare 0.

Characters Sent DINT immediato 0 Durante l’esecuzione, visualizza il numero di caratteri che sono stati inviati.

AWA(Channel,Source,SerialPortControl);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 581

Page 582: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Struttura SERIAL_PORT_CONTROL

Descrizione: L’istruzione AWA:

• invia il numero di caratteri specificato (Serial Port Control Length) del Tag Source al dispositivo collegato alla porta seriale del controllore

• aggiunge alla fine dei caratteri uno o due caratteri definiti nella finestra di dialogo Proprietà Controller della scheda Protocollo Utente

Per programmare un’istruzione AWA, seguire questa procedura:

1. Configurare la porta seriale del controllore:

a. L’applicazione include anche delle istruzioni ARD o ARL?

b. Definire i caratteri da aggiungere ai dati.

2. Questa è un’istruzione di transizione:

• In ladder, cambia la condizione del ramo di ingresso da azzerata a impostata ogni volta che l’istruzione deve essere eseguita.

• In testo strutturato, condiziona l’ istruzione in modo che venga eseguita solo su una transizione.

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione è abilitata.

.EU BOOL Il bit di coda indica che l’istruzione è entrata nella coda ASCII.

.DN BOOL Il bit di fine indica quando l’istruzione è stata eseguita, però è asincrono rispetto alla scansione logica.

.RN BOOL Il bit di esecuzione indica che l’istruzione è in corso di esecuzione.

.EM BOOL Il bit di vuoto indica quando l’istruzione è stata eseguita, però è sincrono rispetto alla scansione logica.

.ER BOOL Il bit di errore indica quando l’istruzione fallisce (genera un errore).

.FD BOOL Il bit di trovato non riguarda questa istruzione.

.LEN DINT La lunghezza indica il numero di caratteri da inviare.

.POS DINT La posizione visualizza il numero di caratteri che sono stati inviati.

.ERROR DINT L’errore contiene un valore esadecimale che identifica la causa di un errore.

Se Allora

sì Selezionare la modalità Utente

no Selezionare o la modalità Utente o la modalità Sistema

582 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 583: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

3. Ogni volta che l’istruzione viene eseguita, inviare sempre lo stesso numero di caratteri?

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Se Allora

sì Nella Serial Port Control Length, inserire il numero di caratteri da inviare.

no Prima che l’istruzione venga eseguita, impostare il membro LEN del tag della Source al valore del membro LEN del tag Serial Port Control.

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

Quando la condizione del ramo passa da azzerata a impostata, l’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione invia un numero specificato di caratteri ed aggiunge uno o due caratteri predefiniti.

Il bit .EN viene impostato.

I rimanenti bit di stato, tranne .UL, vengono azzerati.

L’istruzione tenta di immettersi nella coda ASCII.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 583

Page 584: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Esempio 1: Quando la temperatura supera il limite massimo superiore (temp_high è impostato), l’istruzione AWA invia un messaggio al terminale MessageView collegato alla porta seriale del controllore. Il messaggio contiene cinque caratteri dal membro DATA del tag string[1], che è una stringa. (Il $14 conta come un carattere. E’ il codice esadecimale per il carattere Ctrl-T.) L’istruzione, inoltre, invia (aggiunge) i caratteri definiti nelle proprietà del controllore. In questo esempio, l’istruzione AWA invia un ritorno a capo ($0D) indicante la fine del messaggio.

Ladder

Testo strutturato

IF temp_high THEN

temp_high_write.LEN := 5;

AWA(0,string[1],temp_high_write);

temp_high := 0;

END_IF;

temp_high

EN

DN

ER

ASCII Write AppendChannel 0Source string[1]

'$1425\1'SerialPort Control temp_high_writeSerialPort Control Length 5Characters Sent 6

AWAAWAASCII Write AppendChannelSource

SerialPort ControlSerialPort Control LengthCharacters Sent

string[1]

temp_high_write

EN

DN

ER

temp_high

584 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 585: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

Esempio 2: Quando alarm è attivo, l’istruzione AWA invia il numero specificato di caratteri in alarm_msg ed aggiunge uno o più caratteri di terminazione. Poiché il numero di caratteri in alarm_msg varia, il ramo sposta innanzitutto la lunghezza della stringa (alarm_msg.LEN) nella Serial Port Control Length dell’istruzione AWA (alarm_write.LEN). In alarm_msg, il $14 conta come un carattere. E’ il codice esadecimale per il carattere Ctrl-T.

Ladder

Testo strutturato

osri_1.InputBit := alarm;

OSRI(osri_1);

IF (osri_1.OutputBit) THEN

alarm_write.LEN := alarm_msg.LEN;

AWA(0,alarm_msg,alarm_write);

END_IF;

alarm

MoveSource alarm_msg.LEN 5Dest alarm_write.LEN 5

MOVEN

DN

ER

ASCII Write AppendChannel 0Source alarm_msg

'$1425\1'SerialPort Control alarm_writeSerialPort Control Length 5Characters Sent 6

AWAAWA

ASCII Write AppendChannelSource

SerialPort ControlSerialPort Control LengthCharacters Sent

alarm_msg

alarm_write

EN

DN

ER

MOV

MoveSource alarm_msg.LEN

Dest. alarm_write.LEN

alarm

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 585

Page 586: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

ASCII Write (AWT) L’istruzione AWT invia un numero specificato di caratteri del Tag Source ad un dispositivo seriale.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione AWT in ladder. Tuttavia, i valori Serial Port Control Length e Characters Sent vengono indicati accedendo ai membri .LEN e .POS della struttura SERIAL_PORT_CONTROL invece di inserire i valori nella lista di operandi.

EN

DN

ER

ASCII WriteChannel ?Source ?

??SerialPort Control ?SerialPort Control Length ?Characters Sent ?

AWTAWTASCII WriteChannelSource

SerialPort ControlSerialPort Control LengthCharacters Sent

DN

ER

EN

Operando Tipo Formato Digitare Note

Channel DINT immediato

tag

0

Source stringa

SINT

INT

DINT

tag tag che contiene i caratteri da inviare:

• Per un tipo di dati stringa, inserire il nome del tag.

• Per una matrice SINT, INT, o DINT, inserire il primo elemento della matrice.

• Se si vuole confrontare, convertire o manipolare i caratteri, usare un tipo di dati stringa.

• I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Serial Port

Control

SERIAL_PORT_

CONTROL

tag tag che controlla l’operazione

Serial Port Control Lenght

DINT immediato numero di caratteri da inviare

• La Serial Port Control Length deve essere inferiore o uguale alla dimensione della Source.

• Se si vuole impostare la Serial Port Control Length uguale al numero di caratteri nella Source, digitare 0.

Characters Sent DINT immediato 0 Durante l’esecuzione, visualizza il numero di caratteri che sono stati inviati.

AWT(Channel,Source,SerialPortControl);

586 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 587: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

Struttura SERIAL_PORT_CONTROL

Descrizione: L’istruzione AWT invia il numero di caratteri specificato (Serial Port Control Length) del tag Source al dispositivo collegato alla porta seriale del controllore

Per programmare un’istruzione AWT, seguire questa procedura:

1. Configurare la porta seriale del controllore:

2. Questa è un’istruzione di transizione:

• In ladder, cambia la condizione del ramo di ingresso da azzerata a impostata ogni volta che l’istruzione deve essere eseguita.

• In testo strutturato, condiziona l’ istruzione in modo che venga eseguita solo su una transizione.

3. Ogni volta che l’istruzione viene eseguita, inviare sempre lo stesso numero di caratteri?

Mnemonico Tipo di dati Descrizione

.EN BOOL Il bit di abilitazione indica che l’istruzione è abilitata.

.EU BOOL Il bit di coda indica che l’istruzione è entrata nella coda ASCII.

.DN BOOL Il bit di fine indica quando l’istruzione è stata eseguita, però è asincrono rispetto alla scansione logica.

.RN BOOL Il bit di esecuzione indica che l’istruzione è in corso di esecuzione.

.EM BOOL Il bit di vuoto indica quando l’istruzione è stata eseguita, però è sincrono rispetto alla scansione logica.

.ER BOOL Il bit di errore indica quando l’istruzione fallisce (genera un errore).

.FD BOOL Il bit di trovato non riguarda questa istruzione.

.LEN DINT La lunghezza indica il numero di caratteri da inviare.

.POS DINT La posizione visualizza il numero di caratteri che sono stati inviati.

.ERROR DINT L’errore contiene un valore esadecimale che identifica la causa di un errore.

Se l’applicazione Allora

usa istruzioni ARD o ARL Selezionare la modalità Utente

non usa le istruzioni ARD o ARL Selezionare o la modalità Utente o la modalità Sistema

Se Allora

sì Nella Serial Port Control Length, inserire il numero di caratteri da inviare.

no Prima che l’istruzione venga eseguita, spostare il membro LEN del tag della Source nel membro LEN del tag Serial Port Control.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 587

Page 588: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio 1: Quando la temperatura raggiunge il limite inferiore (temp_low è impostato), l’istruzione AWT invia un messaggio al terminale MessageView connesso alla porta seriale del controllore. Il messaggio contiene nove caratteri provenienti dal membro DATA del tag string[2], che è una stringa. (Il $14 conta come un carattere. E’ il codice esadecimale per il carattere Ctrl-T.) L’ultimo carattere è un ritorno a capo ($r), che indica la fine del messaggio.

Ladder

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

Quando la condizione del ramo passa da azzerata a impostata, l’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione invia un numero specificato di caratteri.

Il bit .EN viene impostato.

I rimanenti bit di stato, tranne .UL, vengono azzerati.

L’istruzione tenta di immettersi nella coda ASCII.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

temp_low

EN

DN

ER

ASCII WriteChannel 0Source string[2]

'$142224\01$r'SerialPort Control temp_low_writeSerialPort Control Length 9Characters Sent 9

AWTAWT

ASCII Write ChannelSource

SerialPort ControlSerialPort Control LengthCharacters Sent

string[2]

temp_low_write

EN

DN

ER

temp_low

588 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 589: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capitolo 17

Testo strutturato

osri_1.InputBit := temp_low;

OSRI(osri_1);

IF (osri_1.OutputBit) THEN

temp_low_write.LEN := 9;

AWT(0,string[2],temp_low_write);

END_IF;

Esempio 2: Quando MV_update è impostato, l’istruzione AWT invia i caratteri in MV_msg. Poiché il numero di caratteri in MV_msg varia, il ramo sposta innanzitutto la lunghezza della stringa (MV_msg.LEN) nella Serial Port Control Length dell’istruzione AWT (MV_write.LEN). In MV_msg, il $16 conta come un carattere. E’ il codice esadecimale per il carattere Ctrl-V.

Ladder

Testo strutturato

osri_1.InputBit := MV_update;

OSRI(osri_1);

IF (osri_1.OutputBit) THEN

MV_write.LEN := Mv_msg.LEN;

AWT(0,MV_msg,MV_write);

END_IF;

MV_update

MoveSource MV_msg.LEN

10Dest MV_write.LEN

10

MOVEN

DN

ER

ASCII WriteChannel 0Source MV_msg

'$161365\8\1$r'SerialPort Control MV_writeSerialPort Control Length 10Characters Sent 10

AWTAWTASCII Write ChannelSource

SerialPort ControlSerialPort Control LengthCharacters Sent

MV_msg

MV_write

EN

DN

ER

MOVMoveSource MV_msg.LEN

Dest. MV_write.LEN

MV_update

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 589

Page 590: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 17 Istruzioni Porta Seriale ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Note:

590 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 591: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 18

Istruzioni di stringhe ASCII(CONCAT, DELETE, FIND, INSERT, MID)

Introduzione Utilizzare le istruzioni di stringhe ASCII per modificare e creare stringhe di caratteri ASCII .

Per confrontare o convertire caratteri ASCII si possono anche utilizzare le seguenti istruzioni:

Se si desidera Per esempio Utilizzare questa istruzione

Disponibile in questi linguaggi

Vedere pagina

aggiungere caratteri alla fine di una stringa

aggiungere caratteri di terminazione o delimitatori ad una stringa

CONCAT ladder

testo strutturato

593

eliminare caratteri da una stringa rimuovere caratteri di testa o di controllo da una stringa

DELETE ladder

testo strutturato

595

determinare il carattere di partenza di una sottostringa

localizza un gruppo di caratteri all’interno di una stringa

FIND ladder

testo strutturato

597

inserire caratteri in una stringa crea una stringa che utilizza variabili INSERT ladder

testo strutturato

599

estrarre caratteri da una stringa estrarre informazioni da un codice a barre

MID ladder

testo strutturato

601

Se si desidera Utilizzare questa istruzione

Vedere pagina

confrontare una stringa ad un’altra CMP 204

vedere se i caratteri sono uguali a caratteri specifici EQU 209

vedere se i caratteri sono diversi da caratteri specifici NEQ 240

vedere se i caratteri sono uguali o superiori a caratteri specifici GEQ 213

vedere se i caratteri sono superiori a caratteri specifici GRT 217

vedere se i caratteri sono uguali o inferiori a caratteri specifici LEQ 221

vedere se i caratteri sono inferiori a caratteri specifici LES 225

riposizionare i byte di un tag INT, DINT, o REAL SWPB 298

trovare una stringa in una matrice di stringhe FSC 342

convertire caratteri in un valore SINT, INT, DINT, o REAL STOD 606

convertire caratteri in un valore REAL STOR 608

convertire un valore SINT, INT, DINT o REAL in una stringa di caratteri ASCII DTOS 611

convertire un valore REAL in una stringa di caratteri ASCII RTOS 613

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 591

Page 592: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 18 Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Tipi di dati stringa

Si memorizzano caratteri ASCII in tag che utilizzano un tipo di dati stringa.

• Si può utilizzare il tipo di dati STRINGA di default. Esso memorizza fino a 82 caratteri.

• Si può creare un nuovo tipo di dati stringa che memorizza più o meno caratteri.

Per creare un nuovo tipo di dati stringa, vedere Logix5000 Controllori Logix5000 – Procedure comuni, pubblicazione 1756-PM001.

Ciascun tipo di dati stringa contiene i seguenti membri:

Nome Tipo di dati Descrizione Note

LEN DINT numero di caratteri nella stringa

LEN si aggiorna automaticamente al nuovo conteggio dei caratteri ogni volta che:

• si usa la finestra di dialogo Browser Stringa per inserire caratteri

• si usano istruzioni che leggono, convertono o manipolano una stringa

LEN mostra la lunghezza della stringa attuale. Il membro DATA può contenere caratteri vecchi addizionali che non sono inclusi nel conteggio LEN.

DATA Matrice SINT caratteri ASCII della stringa

• Per accedere ai caratteri della stringa, indirizzare il nome del tag.

Per esempio, per accedere ai caratteri della string_1, inserire string_1.

• Ciascun elemento della matrice DATA contiene un carattere.

• Si possono creare nuovi tipi di dati stringa che memorizzano più o meno caratteri.

592 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 593: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID) Capitolo 18

String Concatenate (CONCAT)

L’istruzione CONCAT aggiunge caratteri ASCII alla fine di una stringa.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione CONCAT in ladder.

Descrizione: L’istruzione CONCAT combina i caratteri di Source A con quelli di Source B e colloca i risultati nella Destination.

• I caratteri da Source A vengono prima, seguiti dai caratteri di Source B.

• A meno che Source A e Destination non siano lo stesso tag, Source A rimane invariata.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

String ConcatenateSource A ? ??Source B ? ??Dest ? ??

CONCATString ConcatenateSource A ?

??Source B ?

??Dest ?

??

CONCAT

Operando Tipo Formato Digitare Note

Source A stringa tag tag che contiene i caratteri iniziali

I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Source B stringa tag tag che contiene i caratteri finali

Destination stringa tag tag dove memorizzare il risultato

CONCAT(SourceA,SourceB,Dest);

Tipo Codice Causa Metodo di ripristino

4 51 Il valore LEN del tag stringa è maggiore della dimensione di DATA del tag stringa.

1. Verificare che nessuna istruzione sia scritta nel membro LEN del tag tipo di stringa.

2. Nel valore LEN, inserire il numero di caratteri contenuto dalla stringa.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 593

Page 594: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 18 Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Esecuzione:

Esempio: Per lanciare un messaggio in un terminale MessageView, il controllore deve inviare una stringa ASCII che contiene un numero messaggio ed un numero nodo. String_1 contiene il numero messaggio. Quando add_node è impostato, l’istruzione CONCAT aggiunge i caratteri in node_num_ascii (numero nodo) alla fine dei caratteri in string_1 e quindi memorizza il risultato in msg.

Ladder

Testo strutturato

IF add_node THEN

CONCAT(string_1,node_num_ascii,msg);

add_node := 0;

END_IF;

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione concatena le stringhe.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

add_node

String ConcatenateSource A string_1

'$1423\'Source B node_num_ascii

'1'Dest msg

'$1423\1'

CONCATString ConcatenateSource A string_1

’$1423\’Source B node_num_ascii

’1’Dest msg

’$1423\1’

CONCAT

594 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 595: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID) Capitolo 18

String Delete (DELETE) L’istruzione DELETE rimuovere caratteri ASCII da una stringa.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione DELETE in ladder.

Descrizione: L’istruzione DELETE elimina (rimuove) un gruppo di caratteri dalla Source e posiziona i caratteri rimanenti nella Destination.

• La posizione Start e Quantity definiscono i caratteri da rimuovere.

• A meno che Source e Destination non siano lo stesso tag, la Source rimane invariata.

String DeleteSource ? ??Qty ? ??Start ? ??Dest ? ??

DELETEDELETEString DeleteSource ?

??Qty ?

??Start ?

??Dest ?

??

Operando Tipo formato Digitare Note

Source stringa tag tag che contiene la stringa dalla quale si vogliono eliminare caratteri

I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Quantity SINT

INT

DINT

immediato

tag

numero di caratteri da eliminare

Start più la quantità deve essere minore o uguale alla dimensione di DATA della Source.

Start SINT

INT

DINT

immediato

tag

posizione del primo carattere da eliminare

Inserire un numero tra 1 e la dimensione di DATA della Source.

Destination stringa tag tag dove memorizzare il risultato

DELETE(Source,Qty,Start,Dest);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 595

Page 596: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 18 Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esecuzione:

Esempio: Informazioni ASCII da un terminale contengono un carattere di intestazione. Dopo che il controllore ha letto i dati (term_read.EM è impostato) l’istruzione DELETE rimuove il carattere di intestazione.

Ladder

Testo strutturatoIF term_read.EM THEN

DELETE(term_input,1,1,term_text);

term_read.EM := 0;

END_IF;

Tipo Codice Causa Metodo di ripristino

4 51 Il valore LEN del tag stringa è maggiore della dimensione di DATA del tag stringa.

1. Verificare che nessuna istruzione sia scritta nel membro LEN del tag tipo di stringa.

2. Nel valore LEN, inserire il numero di caratteri contenuto dalla stringa.

4 56 Il valore Start o Quantity non è valido.

1. Verificare che il valore Start sia compreso tra 1 e la dimensione di DATA della Source.

2. Verificare che il valore di Start più la Quantity sia minore o uguale alla dimensione di DATA della Source.

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione elimina i caratteri specificati.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

term_read.EM

String DeleteSource term_input

'$0655'Qty 1

Start 1

Dest term_text

'55'

DELETEDELETEString DeleteSource term_input

’$0655’Qty 1

Start 1

Dest term_text’55’

596 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 597: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID) Capitolo 18

Find String (FIND) L’istruzione FIND localizza la posizione di partenza di una stringa specificata all’interno di un’altra stringa

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione FIND di ladder sopra descritta.

Descrizione: L’istruzione FIND ricerca la stringa Search nella stringa Source. Se l’istruzione trova la stringa Search, in corrispondenza di Result viene indicata la posizione iniziale della stringa da ricercare all’interno della stringa sorgente.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Find StringSource ? ??Search ? ??Start ? ??Result ? ??

FINDFINDFind StringSource ?

??Search ?

??Start ?

??Result ?

??

Operando Tipo Formato Digitare Note

Source stringa tag stringa da ricercare in I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Search stringa tag stringa da trovare

Start SINT

INT

DINT

immediato

tag

posizione in Source per iniziare la ricerca

Inserire un numero tra 1 e la dimensione di DATA della Source.

Result SINT

INT

DINT

tag tag che memorizza la posizione di partenza della stringa da trovare

FIND(Source,Search,Start,Result);

Tipo Codice Causa Metodo di ripristino

4 51 Il valore LEN del tag stringa è maggiore della dimensione di DATA del tag stringa.

1. Verificare che nessuna istruzione sia scritta nel membro LEN del tag tipo di stringa.

2. Nel valore LEN, inserire il numero di caratteri contenuto dalla stringa.

4 56 Il valore Start non è valido. Verificare che il valore Start sia compreso tra 1 e la dimensione di DATA della Source.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 597

Page 598: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 18 Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Esecuzione:

Esempio: Un messaggio dal terminale MessageView contiene diverse parti di informazione. Il carattere backslash [ \ ] separa ciascuna parte di informazione. Per localizzare una parte di informazione, l’istruzione FIND ricerca il carattere backslash e registra la sua posizione in find_pos.

Ladder

Testo strutturato

IF MV_read.EM THEN

FIND(MV_msg,find,1,find_pos);

MV_read.EM := 0;

END_IF;

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione cerca i caratteri specificati.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

MV_read.EM

Find StringSource MV_msg '$06324\12\1\$r'Search find

'\'Start 1

Result find_pos

5

FINDFINDFind StringSource MV_msg

’$06324\12\1\$r’Search find

’\’Start 1

Result find_pos5

598 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 599: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID) Capitolo 18

Insert String (INSERT) L’istruzione INSERT aggiunge caratteri ASCII in una determinata posizione all’interno di una stringa.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione INSERT in ladder.

Descrizione: L’istruzione INSERT somma i caratteri di Source A con quelli di Source B in una posizione specificata all’interno di Source A e colloca i risultati nella Destination.

• Start definisce dove in Source A viene aggiunto Source B.

• A meno che Source A e la Destination non siano lo stesso tag, Source A rimane invariata.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Insert StringSource A ? ??Source B ? ??Start ? ??Dest ? ??

INSERTINSERTInsert StringSource A ?

??Source B ?

??Start ?

??Dest ?

??

Operando Tipo Formato Digitare Note

Source A stringa tag stringa a cui aggiungere caratteri

I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Source B stringa tag stringa che contiene i caratteri da aggiungere

Start SINT

INT

DINT

immediato

tag

posizione in Source A per aggiungere i caratteri

Inserire un numero tra 1 e la dimensione di DATA della Source.

Result stringa tag stringa per memorizzare il risultato

INSERT(SourceA,SourceB,Start,Dest);

Tipo Codice Causa Metodo di ripristino

4 51 Il valore LEN del tag stringa è maggiore della dimensione di DATA del tag stringa.

1. Verificare che nessuna istruzione sia scritta nel membro LEN del tag tipo di stringa.

2. Nel valore LEN, inserire il numero di caratteri contenuto dalla stringa.

4 56 Il valore Start non è valido. Verificare che il valore Start sia compreso tra 1 e la dimensione di DATA della Source.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 599

Page 600: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 18 Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Esecuzione:

Esempio: Quando temp_high è impostato, l’istruzione INSERT aggiunge i caratteri in string_2 alla posizione 2 all’interno di string_1 e posiziona il risultato in string_3:

Ladder

Testo strutturato

IF temp_high THEN

INSERT(string_1,string_2,2,string_3);

temp_high := 0;

END_IF;

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione inserisce i caratteri specificati.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

temp_high

Insert StringSource A string_1

'AD'Source B string_2

'BC'Start 2

Dest string_3

'ABCD'

INSERTINSERTInsert StringSource A string_1

’AD’Source B string_2

’BC’Start 2

Dest string_3’ABCD’

600 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 601: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID) Capitolo 18

Middle String (MID) L’istruzione MID copia uno specificato numero di caratteri ASCII da una stringa e li memorizza in un’altra stringa.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione MID in ladder.

Descrizione: L’istruzione MID copia un gruppo di caratteri dalla Source e posiziona il risultato nella Destination.

• La posizione di partenza e la quantità definiscono i caratteri da copiare.

• A meno che Source e Destination non siano lo stesso tag, la Source rimane invariata.

Indicatori di stato aritmetico: non influenzati

Middle StringSource ? ??Qty ? ??Start ? ??Dest ? ??

MIDMIDMiddle StringSource ?

??Qty ?

??Start ?

??Dest ?

??

Operando Tipo Formato Digitare Note

Source stringa tag stringa da cui copiare caratteri

I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Quantity SINT

INT

DINT

immediato

tag

numero di caratteri da copiare

Start più Quantity deve essere minore o uguale alla dimensione di DATA della Source.

Start SINT

INT

DINT

immediato

tag

posizione del primo carattere da copiare

Inserire un numero tra 1 e la dimensione di DATA della Source.

Destination stringa tag stringa in cui copiare caratteri

MID(Source,Qty,Start,Dest);

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 601

Page 602: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 18 Istruzioni di stringhe ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Condizioni di errore:

Esecuzione:

Esempio: Nel trasportatore dei bagagli di un aeroporto, su ciascun bagaglio viene applicato un codice a barre. I caratteri 9–17 del codice a barre sono il numero del volo e l’aeroporto di destinazione del bagaglio. Dopo che il codice a barre è stato letto, (bag_read.EM è impostato) l’istruzione MID copia il numero del volo e l’aeroporto di destinazione nella stringa bag_flt_and_dest.

Ladder

Testo strutturato

IF bag_read.EM THEN

MID(bar_barcode,9,9,bag_flt_and_dest);

bag_read.EM := 0;

END_IF;

Tipo Codice Causa Metodo di ripristino

4 51 Il valore LEN del tag stringa è maggiore della dimensione di DATA del tag stringa.

1. Verificare che nessuna istruzione sia scritta nel membro LEN del tag tipo di stringa.

2. Nel valore LEN, inserire il numero di caratteri contenuto dalla stringa.

4 56 Il valore Start o Quantity non è valido.

1. Verificare che il valore Start sia compreso tra 1 e la dimensione di DATA della Source.

2. Verificare che il valore di Start più Quantity sia minore o uguale alla dimensione di DATA della Source.

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso. Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso. na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione copia i caratteri specificati da una stringa e li memorizza in un’altra stringa.

post-scansione La condizione del ramo di uscita viene impostata su falso. Nessuna.

bag_read.EM

Middle StringSource bag_barcode 'NWA HOP 5058 AMS 01'

Qty 9

Start 9

Dest bag_flt_and_dest '5058 AMS '

MIDMIDMiddle StringSource bag_barcode

’NWA HOP 5058 AMS 01?Qty 9

Start 9

Dest bag_flt_and_dest’5058 AMS’

602 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 603: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 19

Istruzioni di conversione ASCII(STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Introduzione Le istruzioni di conversione ASCII servono per modificare il formato dei dati.

Se si desidera Per esempio Utilizzare questa istruzione

Disponibile in questi linguaggi

Vedere pagina

convertire la rappresentazione ASCII di un valore intero in valore SINT, INT, DINT, o REAL

convertire un valore da una bilancia o altro dispositivo ASCII in un intero, così da poterlo utilizzare nella logica

STOD ladder

testo strutturato

606

convertire la rappresentazione ASCII di un valore a virgola mobile in un valore REAL

convertire un valore da una bilancia o altro dispositivo ASCII in un valore REAL così da poterlo utilizzare nella logica

STOR ladder

testo strutturato

608

convertire un valore SINT, INT, DINT o REAL in una stringa di caratteri ASCII

convertire una variabile in una stringa ASCII così da poterla inviare ad un terminale MessageView

DTOS ladder

testo strutturato

611

convertire un valore REAL in una stringa di caratteri ASCII

convertire una variabile in una stringa ASCII così da poterla inviare ad un terminale MessageView

RTOS ladder

testo strutturato

613

convertire le lettere di una stringa di caratteri ASCII in maiuscolo.

convertire un dato inserito dall’operatore in maiuscolo per poterlo ricercare in una matrice

UPPER ladder

testo strutturato

615

convertire le lettere di una stringa di caratteri ASCII in minuscolo.

convertire un dato inserito dall’operatore in minuscolo per poterlo ricercare in una matrice

LOWER ladder

testo strutturato

617

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 603

Page 604: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 19 Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Per confrontare o manipolare caratteri ASCII si possono anche utilizzare le seguenti istruzioni:

Se si desidera Utilizzare questa istruzione

Vedere pagina

aggiungere caratteri alla fine di una stringa CONCAT 593

eliminare caratteri da una stringa DELETE 595

determinare il carattere di partenza di una sottostringa FIND 597

inserire caratteri in una stringa INSERT 599

estrarre caratteri da una stringa MID 601

riposizionare i byte di un tag INT, DINT, o REAL SWPB 298

confrontare una stringa ad un’altra CMP 204

vedere se i caratteri sono uguali a caratteri specifici EQU 209

vedere se i caratteri sono diversi da caratteri specifici NEQ 240

vedere se i caratteri sono uguali o superiori a caratteri specifici GEQ 213

vedere se i caratteri sono superiori a caratteri specifici GRT 217

vedere se i caratteri sono uguali o inferiori a caratteri specifici LEQ 221

vedere se i caratteri sono inferiori a caratteri specifici LES 225

trovare una stringa in una matrice di stringhe FSC 342

604 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 605: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Capitolo 19

Tipi di dati stringa

Si memorizzano caratteri ASCII in tag che utilizzano un tipo di dati stringa.

• Si può utilizzare il tipo di dati STRINGA di default. Esso memorizza fino a 82 caratteri.

• Si può creare un nuovo tipo di dati stringa che memorizza più o meno caratteri.

Per creare un nuovo tipo di dati stringa, vedere Logix5000 Controllori Logix5000 – Procedure comuni, pubblicazione 1756-PM001.

Ciascun tipo di dati stringa contiene i seguenti membri:

Nome Tipo di dati Descrizione Note

LEN DINT numero di caratteri nella stringa

LEN si aggiorna automaticamente al nuovo conteggio dei caratteri ogni volta che:

• si usa la finestra di dialogo Browser Stringa per inserire caratteri

• si usano istruzioni che leggono, convertono o manipolano una stringa

LEN mostra la lunghezza della stringa attuale. Il membro DATA può contenere caratteri vecchi addizionali che non sono inclusi nel conteggio LEN.

DATA Matrice SINT caratteri ASCII della stringa

• Per accedere ai caratteri della stringa, indirizzare il nome del tag.

Per esempio, per accedere ai caratteri della string_1, inserire string_1.

• Ciascun elemento della matrice DATA contiene un carattere.

• Si possono creare nuovi tipi di dati stringa che memorizzano più o meno caratteri.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 605

Page 606: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 19 Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

String To DINT (STOD) L’istruzione STOD converte la rappresentazione ASCII di un intero in un valore intero o REAL.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione STOD in ladder.

Descrizione: La STOD converte la Source in un numero intero ed inserisce il risultato in Destination.

• L’istruzione converte numeri positivi e negativi.

• Se la stringa Source contiene caratteri non numerici, STOD converte la prima serie di numeri contigui:

– L’istruzione salta ogni carattere di controllo o non numerico iniziale (eccetto il segno meno davanti ad un numero).

– Se la stringa contiene gruppi multipli di numeri separati da delimitatori (per esempio, / ), l’istruzione converte soltanto il primo gruppo di numeri.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

String To DINTSource ? ??Dest ? ??

STODString To DINTSource ?

??Dest ?

??

STOD

Operando Tipo Formato Digitare Note

Source stringa tag tag che contiene il valore in ASCII

I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Destination SINT

INT

DINT

REAL

tag tag in cui memorizzare il valore intero

Se il valore Source è un numero in virgola mobile, l’istruzione converte soltanto la parte non frazionaria del numero (a prescindere dal tipo di dati di destinazione).

STOD(Source,Dest);

606 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 607: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Capitolo 19

Condizioni di errore

Esecuzione:

Esempio: Quando MV_read.EM è impostato, l’istruzione STOD converte la prima serie di caratteri numerici in MV_msg in un valore intero. L’istruzione salta il carattere di controllo iniziale ($06) e si interrompe al delimitatore ( \ ).

Ladder

Tipo Codice Causa Metodo di ripristino

4 51 Il valore LEN del tag stringa è maggiore della dimensione di DATA del tag stringa.

1. Verificare che nessuna istruzione sia scritta nel membro LEN del tag tipo di stringa.

2. Nel valore LEN, inserire il numero di caratteri contenuto dalla stringa.

4 53 Il numero in output supera i limiti del tipo di dato destinazione.

Uno o l’altro:

• Ridurre la dimensione del valore ASCII.

• Utilizzare un tipo di dati maggiore per la destinazione.

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni SC viene impostato.

La destinazione è cancellata.

L’istruzione converte la Source.

Se il risultato è zero, allora viene impostato S:Z

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

MV_read.EM

String To DINTSource MV_msg '$06324\12\1\$r'Dest MV_msg_nmbr

324

STODString To DINTSource MV_msg

’$06324\12\1\$r’Dest MV_msg_nmbr

324

STOD

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 607

Page 608: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 19 Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Testo strutturato

IF MV_read.EM THEN

STOD(MV_msg,MV_msg_nmbr);

MV_read.EM := 0;

END_IF;

String To REAL (STOR) L’istruzione STOR converte la rappresentazione ASCII di un valore in virgola mobile in un valore REAL.

Operandi:

Operandi ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione STOR in ladder.

Descrizione: STOR converte il valore Source in valore REAL ed inserisce il risultato in Destination.

• L’istruzione converte numeri positivi e negativi.

• Se la stringa Source contiene caratteri non numerici, STOR converte la prima serie di numeri contigui, incluso il punto decimale [ . ]:

– L’istruzione salta ogni carattere di controllo o non numerico iniziale (eccetto il segno meno davanti ad un numero).

– Se la stringa contiene gruppi multipli di numeri separati da delimitatori (ad esempio, / ), l’istruzione converte soltanto il primo gruppo di numeri.

Indicatori di stato aritmetico: gli indicatori di stato aritmetici sono influenzati.

String to RealSource ? ??Dest ? ??

STORString to RealSource ?

??Dest ?

??

STOR

Operando Tipo Formato Digitare Note

Source stringa tag tag che contiene il valore in ASCII

I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

Destination REAL tag tag in cui memorizzare il valore REAL

STOR(Source,Dest);

608 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 609: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Capitolo 19

Condizioni di errore:

Esecuzione:

Esempio: Dopo aver letto il peso da una bilancia (weight_read.EM è impostato) l’istruzione STOR converte i caratteri numerici in weight_ascii in un valore REAL.

Si può riscontrare una leggera differenza tra le parti frazionarie di Source e Destination.

Ladder

Tipo Codice Causa Metodo di ripristino

4 51 Il valore LEN del tag stringa è maggiore della dimensione di DATA del tag stringa.

1. Verificare che nessuna istruzione sia scritta nel membro LEN del tag tipo di stringa.

2. Nel valore LEN, inserire il numero di caratteri contenuto dalla stringa.

4 53 Il numero in output supera i limiti del tipo di dato destinazione.

Uno o l’altro:

• Ridurre la dimensione del valore ASCII.

• Utilizzare un tipo di dati maggiore per la destinazione.

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni S:C è impostato.

La destinazione è cancellata.

L’istruzione converte la Source.

Se il risultato è zero, allora viene impostato S:Z

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

weight_read.EM

String to RealSource weight_ascii

'428.259'Dest weight

428.259

STORString to RealSource weight_ascii

‘428.259’Dest weight

428.259

STOR

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 609

Page 610: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 19 Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Testo strutturato

IF weight_read.EM THEN

STOR(weight_ascii,weight);

weight_read.EM := 0;

END_IF;

610 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 611: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Capitolo 19

DINT to String (DTOS) L’istruzione DTOS produce la rappresentazione ASCII di un valore.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione DTOS in ladder.

Descrizione: L’istruzione DTOS converte la Source in una stringa di caratteri ASCII e posiziona il risultato nella Destination.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

DINT to StringSource ? ??Dest ? ??

DTOSDTOSDINT to StringSource ?

??Dest ?

??

Operando Tipo Formato Digitare Note

Source SINT

INT

DINT

REAL

tag tag che contiene il valore Se la Source è un REAL, l’istruzione lo converte in un valore DINT. Consultare Da REAL a intero a pagina 632.

Destination stringa tag tag in cui memorizzare il valore ASCII

I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

DTOS(Source,Dest);

Tipo Codice Causa Metodo di ripristino

4 51 Il valore LEN del tag stringa è maggiore della dimensione di DATA del tag stringa.

1. Verificare che nessuna istruzione sia scritta nel membro LEN del tag tipo di stringa.

2. Nel valore LEN, inserire il numero di caratteri contenuto dalla stringa.

4 52 La stringa output è più grande della destinazione. Creare un nuovo tipo di dati stringa abbastanza grande per la stringa output. Utilizzare il nuovo tipo di dati stringa come tipo di dati per la destinazione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 611

Page 612: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 19 Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Esecuzione:

Esempio: Quando temp_high è impostato, l’istruzione DTOS converte il valore in msg_num in una stringa di caratteri ASCII e posiziona il risultato in msg_num_ascii. I rami successivi inseriscono o concatenano msg_num_ascii con altre stringhe per produrre un messaggio completo per il display del terminale.

Ladder

Testo strutturato

IF temp_high THEN

DTOS(msg_num,msg_num_ascii);

temp_high := 0;

END_IF;

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione converte Source.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

temp_high

DINT to StringSource msg_num

23Dest msg_num_ascii

'23'

DTOSDTOSDINT to StringSource msg_num

23Dest msg_num_ascii

’23’

612 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 613: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Capitolo 19

REAL to String (RTOS) L’istruzione RTOS produce una rappresentazione ASCII di un valore REAL.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione RTOS in ladder.

Descrizione: L’istruzione RTOS converte la Source in una stringa di caratteri ASCII e posiziona il risultato nella Destination.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Real to StringSource ? ??Dest ? ??

RTOSRTOSReal to StringSource ?

??Dest ?

??

Operando Tipo Formato Digitare Note

Source REAL tag tag che contiene il valore REAL

Destination stringa tag tag in cui memorizzare il valore ASCII

I tipi di dati stringa sono:

• tipo di dati STRINGA di default

• qualunque nuovo tipo di dati stringa che si crea

RTOS(Source,Dest);

Tipo Codice Causa Metodo di ripristino

4 51 Il valore LEN del tag stringa è maggiore della dimensione di DATA del tag stringa.

1. Verificare che nessuna istruzione sia scritta nel membro LEN del tag tipo di stringa.

2. Nel valore LEN, inserire il numero di caratteri contenuto dalla stringa.

4 52 La stringa output è più grande della destinazione. Creare un nuovo tipo di dati stringa abbastanza grande per la stringa output. Utilizzare il nuovo tipo di dati stringa come tipo di dati per la destinazione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 613

Page 614: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 19 Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Esecuzione:

Esempio: Quando send_data è impostato, l’istruzione RTOS converte il valore in data_1 in una stringa di caratteri ASCII e posiziona il risultato in data_1_ascii. I rami successivi inseriscono o concatenano data_1_ascii con altre stringhe per produrre un messaggio completo per un display terminale.

Si può riscontrare una leggera differenza tra le parti frazionarie di Source e Destination.

Ladder

Testo strutturato

IF send_data THEN

RTOS(data_1,data_1_ascii);

send_data := 0;

END_IF;

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione converte la Source.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

send_data

Real to StringSource data_1

15.3001Dest data_1_ascii '15.3001003'

RTOSRTOSReal to StringSource data_1

15.3001Dest data_1_ascii

‘15.301003’

614 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 615: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Capitolo 19

Upper Case (UPPER) L’istruzione UPPER converte i caratteri alfabetici di una stringa in caratteri maiuscoli.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione UPPER in ladder.

Descrizione: L’istruzione UPPER converte tutte le lettere della Source in maiuscolo e posiziona il risultato nella Destination.

• I caratteri ASCII sono sensibili alle maiuscole. “A” maiuscola ($41) non è uguale ad “a” minuscola ($61).

• Se si immettono direttamente i caratteri ASCII, convertire tutti i caratteri in maiuscolo o minuscolo prima di confrontarli.

Gli eventuali caratteri della stringa Source che non sono lettere rimarranno invariati.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Operando Tipo Formato Descrizione

Source stringa tag tag che contiene i caratteri da convertire in maiuscolo

Destination stringa tag tag in cui memorizzare i caratteri in maiuscolo

UPPER(Source,Dest);

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione converte la Source in maiuscolo.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 615

Page 616: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 19 Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Esempio: Per trovare informazioni in merito ad un articolo specifico, l’operatore immette il numero di catalogo dell’articolo in un terminale ASCII. Dopo che il controllore ha letto i dati forniti dal terminale (terminal_read.EM è impostato), l’istruzione UPPER converte tutti i caratteri di catalog_number in caratteri maiuscoli e memorizza il risultato in catalog_number_upper_case. Quindi un ramo successivo effettua una ricerca all’interno di una matrice per individuare eventuali caratteri corrispondenti a quelli di catalog_number_upper_case.

Ladder

Testo strutturato

IF terminal_read.EM THEN

UPPER(catalog_number,catalog_number_upper_case);

terminal_read.EM := 0;

END_IF;

616 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 617: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Capitolo 19

Lower Case (LOWER) L’istruzione LOWER converte i caratteri alfabetici di una stringa in caratteri minuscoli.

Operandi:

Ladder

Testo strutturato

Gli operandi sono gli stessi dell’istruzione LOWER in ladder.

Descrizione: L’istruzione LOWER converte tutte le lettere della Source in minuscolo e posiziona il risultato nella Destination.

• I caratteri ASCII sono sensibili alle maiuscole. “A” maiuscola ($41) non è uguale ad “a” minuscola ($61).

• Se si immettono direttamente i caratteri ASCII, convertire tutti i caratteri in maiuscolo o minuscolo prima di confrontarli.

Gli eventuali caratteri della stringa Source che non sono lettere rimarranno invariati.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Operando Tipo Formato Descrizione

Source stringa tag tag che contiene i caratteri da convertire in minuscolo

Destination stringa tag tag in cui memorizzare i caratteri in minuscolo

LOWER(Source,Dest);

Condizione Azione ladder Azione testo strutturato

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

se la condizione del ramo di ingresso è falsa

La condizione del ramo di uscita viene impostata su falso.

na

se la condizione del ramo di ingresso è vera

L’istruzione viene eseguita.

La condizione del ramo di uscita viene impostata su vero.

na

EnableIn viene impostato na EnableIn viene sempre impostato.

L’istruzione viene eseguita.

esecuzione istruzioni L’istruzione converte la Source in minuscolo.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Nessuna.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 617

Page 618: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 19 Istruzioni di conversione ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)

Esempio: Per trovare informazioni in merito ad un articolo specifico, l’operatore immette il numero di catalogo dell’articolo in un terminale ASCII. Dopo che il controllore ha letto i dati forniti dal terminale (terminal_read.EM è impostato), l’istruzione LOWER converte tutti i caratteri di item_number in caratteri minuscoli e memorizza il risultato in item_number_lower_case. Quindi un ramo successivo effettua una ricerca all’interno di una matrice per individuare eventuali caratteri corrispondenti a quelli di item_number_lower_case.

Ladder

Testo strutturato

IF terminal_read.EM THEN

LOWER(item_number,item_number_lower_case);

terminal_read.EM := 0;

END_IF;

618 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 619: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 20

Istruzioni di debug(BPT, TPT)

Introduzione Usare le istruzioni di debug per monitorare lo stato della logica quando è in condizioni determinate dell’utente. Tali istruzioni sono compatibili solo con il software RSLogix Emulate 5000, con cui è possibile emulare un controllore Logix 5000 sul personal computer.

Breakpoints (BPT) I breakpoints fermano l’emulazione del programma quando un ramo è vero.

Operandi:

Ladder

Descrizione:

I breakpoint sono programmati con l’istruzione di uscita Breakpoint (BPT). Quando gli ingressi di un ramo che contiene un’istruzione BTP sono veri, l’istruzione BTP interrompe l’esecuzione del programma. Il software visualizza una finestra che indica che il punto di arresto si è attivato e i valori che lo hanno attivato.

Quando viene attivato un breakpoint, l’emulatore visualizza una

Se si desidera Utilizzare questa istruzione Disponibile in questi linguaggi Vedere pagina

arrestare l’emulazione del programma quando un ramo è vero

BPT ladder 619

registrare i dati selezionati quando un ramo è vero

TPT ladder 623

Operando Tipo Formato Descrizione

Format stringa tag Una stringa che imposta la formattazione per il testo che compare nella finestra di traccia-mento per il breakpoint.

Trace This BOOL, SINT, INT, DINT, REAL

tag Il tag che ha un valore che si desideravisualizzare nella finestra di tracciamento.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 619

Page 620: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 20 Istruzioni di debug (BPT, TPT)

finestra che informa che si è verificato un breakpoint. La barra del titolo della finestra mostra lo slot che contiene l’emulatore che ha incontrato il breakpoint.

Facendo clic su OK, l’emulatore riprende l’esecuzione del programma. Se le condizioni che hanno attivato il breakpoint persistono, il breakpoint si verifica nuovamente.

Inoltre, l’emulatore apre una finestra di tracciamento per il breakpoint, che visualizza le informazioni sul breakpoint e i valori.

Stringa Format

Con la stringa Format nelle istruzioni punto di tracciamento e breakpoint, è possibile controllare in che modo i tag tracciati appaiono nelle tracce o nelle finestre dei breakpoint. Il formato della stringa è mostrato di seguito:

intestazione:(testo)%(tipo)

dove intestazione è una stringa di testo che identifica il punto di tracciamento o il breakpoint, testo è una stringa che descrive il tag (o qualsiasi altro testo selezionato) e % (tipo) indica il formato del tag. Occorre un indicatore di tipo per ogni tag tracciato con l’istruzione punto di tracciamento o breakpoint.

Ad esempio, è possibile formattare una stringa di un punto di tracciamento nel modo seguente:

My tracepoint:Tag 1 = %e e Tag 2 = %d

%e formatta il primo tag tracciato come doppio valore a virgola mobile con un esponente e %d formatta il secondo tag tracciato come numero intero decimale con segno.

In questo caso, si ha un’istruzione di punto di tracciamento con due operandi Trace This (uno per REAL e uno per INT, sebbene il valore di qualsiasi tag possa essere formattato con qualsiasi indicatore).

ATTENZIONE Quando viene attivato un breakpoint, non è possibile modificare il programma finché non si consente che l’esecuzione continui. È possibile passare online con l’emulatore per osservare lo stato del progetto, ma non sarà possibile modificarlo. Se si tenta di accettare una modificare del ramo mentre un breakpoint è attivato, compare una finestra di dialogo che comunica che il controllore non è nella modalità corretta.

620 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 621: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di debug (BPT, TPT) Capitolo 20

La finestra del punto di tracciamento che ne risulta e che appare quando il punto di tracciamento viene attivata ha il seguente aspetto.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

Esempio: È possibile visualizzare molti valori di tag con l’istruzione BPT. Tuttavia, la stringa di formattazione può contenere solo 82 caratteri. Poiché la stringa di formattazione richiede due caratteri per ogni tag che si desidera nel breakpoint non è possibile tracciare più di 41 tag con un’unica istruzione BPT. Tuttavia, per separare i dati dei tag nelle tracce, occorre comprendere spazi e ulteriore formattazione, riducendo così il numero di valori di tag che un’istruzione BPT è in grado di visualizzare a molto meno di 41.

L’intestazione (il testo che precede i due punti nella stringa del formato) appare qui.

Il numero di slot indica lo slot che contiene il modulo emulatore che ha il punto di tracciamento o il breakpoint tracciato nella finestra.

Il testo per REAL (rappresentato nella stringa del formato come %e) compare qui. Il testo per INT

(rappresentato nella stringa del formato come %d) compare qui.

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera La condizione del ramo di uscita viene impostata su vero.

L’esecuzione salta al ramo che contiene l’istruzione LBL con il nome di etichetta di riferimento.

post-scansione La condizione del ramo di uscita viene impostata su falso.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 621

Page 622: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 20 Istruzioni di debug (BPT, TPT)

Questo ramo mostra un breakpoint che interrompe l’esecuzione del programma quando un valore analogico è maggiore di 3,02 o inferiore di 2,01.

Si desidera visualizzare le informazioni sul breakpoint nella stringa Format (myformat). In questo caso, la stringa del formato contiene il testo seguente:

Breakpoint:The input value is %f

Quando il breakpoint viene attivato, la finestra di tracciamento del breakpoint mostra i caratteri prima dei due punti (“Breakpoint”) nella barra del titolo della finestra. Gli altri caratteri compongono la traccia. In questo esempio, %f rappresenta il primo (e in questo caso l’unico) tag da tracciare (“analogvalue”).

Le tracce risultati appaiono come segue.

622 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 623: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di debug (BPT, TPT) Capitolo 20

Tracepoints (TPT) I punti di tracciamento registrano i dati selezionati quando un ramo è vero.

Operandi:

Ladder

Descrizione:

I punti di tracciamento sono programmati con l’istruzione di uscita Tracepoint (TPT). Quando gli ingressi di un ramo contenente un’istruzione TPT sono veri, l’istruzione TPT scrive una voce di tracciamento nel display o nel file di registro del tracciamento.

È possibile tracciare molti tag con l’istruzione TPT. Tuttavia, la stringa di formattazione può contenere solo 82 caratteri. Poiché la stringa di formattazione richiede due caratteri per ogni tag che si desidera tracciare, non è possibile tracciare più di 41 tag con un’unica istruzione TPT. Tuttavia, per separare i dati dei tag nelle tracce, occorre comprendere spazi e ulteriore formattazione, riducendo così il numero di tag che un’istruzione TPT è in grado di tracciare a molto meno di 41.

Stringa Format

Con la stringa Format nelle istruzioni punto di tracciamento e breakpoint, è possibile controllare in che modo i tag tracciati appaiono nelle tracce o nelle finestre dei breakpoint. Il formato della stringa è mostrato di seguito:

intestazione:(testo)%(tipo)

dove intestazione è una stringa di testo che identifica il punto di tracciamento o il breakpoint, testo è una stringa che descrive il tag (o qualsiasi altro testo selezionato) e %(tipo) indica il formato del tag. Occorre un indicatore di tipo per ogni tag tracciato con l’istruzione punto di tracciamento o breakpoint.

Ad esempio, è possibile formattare una stringa di un punto di tracciamento nel modo seguente:

My tracepoint:Tag 1 = %e e Tag 2 = %d

Operando Tipo Formato Descrizione

Format stringa tag Stringa che imposta la formattazione per i report del tracciamento (su schermo e registrati nel disco).

Trace This BOOL, SINT, INT, DINT, REAL

tag Il tag che si desidera tracciare.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 623

Page 624: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 20 Istruzioni di debug (BPT, TPT)

%e formatta il primo tag tracciato come doppio valore a virgola mobile con un esponente e %d formatta il secondo tag tracciato come numero intero decimale con segno.

In questo caso, si ha un’istruzione di punto di tracciamento con due operandi Trace This (uno per REAL e uno per INT, sebbene il valore di qualsiasi tag possa essere formattato con qualsiasi indicatore).

La finestra del punto di tracciamento che ne risulta e che appare quando il punto di tracciamento viene attivata ha il seguente aspetto.

.Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

Esecuzione:

L’intestazione (il testo che precede i due punti nella stringa del formato) appare qui.

Il numero di slot indica lo slot che contiene il modulo emulatore che ha il punto di tracciamento o il breakpoint tracciato nella finestra.

Il testo per REAL (rappresentato nella stringa del formato come %e) compare qui. Il testo per INT

(rappresentato nella stringa del formato come %e) compare qui.

Condizione Azione ladder

durante la prescansione La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è falsa La condizione del ramo di uscita viene impostata su falso.

se la condizione del ramo di ingresso è vera La condizione del ramo di uscita viene impostata su vero.

L’esecuzione salta al ramo che contiene l’istruzione LBL con il nome di etichetta di riferimento.

post-scansione La condizione del ramo di uscita viene impostata su falso.

624 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 625: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Istruzioni di debug (BPT, TPT) Capitolo 20

Esempio: Questo ramo attiva una traccia di tre valori analogici quando uno di essi supera un dato valore (30,01).

Si desidera visualizzare le informazioni sul punto di tracciamento nella stringa Format (myformat). In questo caso, la stringa del formato contiene il testo seguente:

Analog inputs trace:Analog inputs = %f, %f, and %f

Quando il punto di tracciamento viene attivato, la finestra di tracciamento del breakpoint mostra i caratteri prima dei due punti (“Analog inputs trace”) nella barra del titolo. Gli altri caratteri compongono la traccia. In questo esempio, %f rappresenta i tag da tracciare (“analogvalue1,” “analogvalue2,” e “analogvalue3”).

Le tracce risultati appaiono come segue.

Quando questa traccia viene registrata nel disco, i caratteri prima dei due punti compaiono nelle tracce.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 625

Page 626: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Capitolo 20 Istruzioni di debug (BPT, TPT)

Questo indica quale punto di tracciamento ha provocato ogni voce di tracciamento. Questo è un esempio di voce di tracciamento. “Analog inputs trace:” è il testo di intestazione della stringa di formato del punto di tracciamento.

Analog inputs trace:Analog inputs = 31.00201, 30.282000, e 30.110001

626 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 627: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice A

Attributi comuni

Introduzione Questa appendice descrive gli attributi comuni alle istruzioni Logix.

Valori immediati Ogni volta che si immette un valore immediato (costante) in formato decimale (ad es., –2, 3), il controllore memorizza il valore utilizzando 32 bit. Se si immette un valore in una radice non decimale, ad esempio in formato binario o esadecimale, e non si specificano tutti i 32 bit, il controllore inserisce uno zero nei bit non specificati (riempimento con zeri).

Conversioni di dati Le conversioni di dati hanno luogo quando nella propria programmazione si utilizzano tipi di dati misti:

Per informazioni su Vedere pagina

Valori immediati 627

Conversioni di dati 627

ESEMPIO Riempimento con zeri dei valori immediati

Se si immette Il controllore memorizza

–1 16#ffff ffff (–1)

16#ffff (–1) 16#0000 ffff (65535)

8#1234 (668) 16#0000 029c (668)

2#1010 (10) 16#0000 000a (10)

Quando si programma in Le conversioni possono avere luogo quando

Editor per la logica ladder Si utilizzano tipi di dati misti per i parametri di un’istruzione

Blocco funzione Vengono collegati due parametri aventi tipi di dati diversi

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 627

Page 628: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice A Attributi comuni

Le istruzioni vengono eseguite più rapidamente e richiedono meno memoria se tutti gli operandi dell’istruzione usano:

• Lo stesso tipo di dati

• Un tipo di dati ottimale:

– Nella sezione “Operandi” di ciascuna istruzione contenuta in questo manuale, il tipo di dati ottimale viene riportato in grassetto.

– DINT e REAL rappresentano di norma i tipi di dati ottimali.

– La maggior parte delle istruzioni in blocco funzione supporta un solo tipo di dati (quello ottimale) per i propri operandi.

Se si mischiano tipi di dati diversi e si utilizzano tag di tipo non ottimale, il controllore converte i dati in base alle seguenti regole

• Uno qualsiasi degli operandi è un valore REAL?

• Al termine dell’esecuzione di un’istruzione, il risultato (un valore DINT o REAL) viene convertito nel tipo di dati della destinazione, se necessario.

Non è possibile specificare un tag BOOL in un’istruzione che opera su tipi di dati interi o REAL.

Poiché la conversione dei dati richiede ulteriore tempo e memoria, è possibile incrementare l’efficienza dei programmi come segue:

• utilizzando lo stesso tipo di dati nell’istruzione

• riducendo al minimo l’utilizzo dei tipi di dati SINT o INT

In sintesi, utilizzare nelle istruzioni tutti tag DINT o REAL insieme a valori immediati.

Le seguenti sezioni illustrano in che modo vengono convertiti i dati quando si utilizzano tag SINT o INT o tipi di dati misti.

Se Gli operandi di ingresso (ad es., origine, tag di un’espressione, limite) vengono convertiti in

sì REAL

no DINT

628 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 629: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Attributi comuni Appendice A

Da SINT o INT a DINT

Per le istruzioni che convertono valori SINT o INT in valori DINT, il metodo di conversione viene descritto nelle sezioni “Operandi” del manuale.

Il seguente esempio mostra i risultati della conversione di un valore mediante estensione del segno e riempimento con zeri.

Dato che i valori immediati vengono sempre riempiti con zeri, la conversione di un valore SINT o INT può produrre risultati imprevisti. Nell’esempio seguente, il confronto è falso perché la sorgente A, un valore INT, viene convertito tramite un’estensione di segno, mentre la sorgente B, un valore immediato, è riempito con zeri.

Il metodo di conversione Converte i dati inserendo

Estensione del segno il valore del bit più a sinistra (il segno del valore) in ciascuna posizione bit alla sinistra dei bit esistenti fino a raggiungere 32 bit.

Riempimento con zeri zeri alla sinistra dei bit esistenti fino a raggiungere 32 bit

Il valore 2#1111_1111_1111_1111 (–1)

Viene convertito in questo valore mediante estensione del segno

2#1111_1111_1111_1111_1111_1111_1111_1111 (–1)

Viene convertito in questo valore mediante riempimento con zeri

2#0000_0000_0000_0000_1111_1111_1111_1111 (65535)

der Logic Listing - Total number of rungs: 3

EqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B 2#1111_1111_1111_1111

EQU

42093

UgualeSorgente A remote_rack_1:I.Data[0]

2#1111_1111_1111_1111Sorgente B 2#1111_1111_1111_1111

EQU

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 629

Page 630: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice A Attributi comuni

Se si utilizza un tag SINT o INT e un valore immediato in un’istruzione che converte i dati mediante estensione del segno, usare uno di questi metodi per gestire i valori immediati:

• Specificare qualunque valore immediato nella radice decimale

• Se si immette il valore in una radice non decimale, specificare tutti i 32 bit del valore immediato. A tal fine, immettere il valore del bit più a sinistra in ogni posizione bit alla sua sinistra fino a raggiungere 32 bit.

• Creare un tag per ogni operando e utilizzare lo stesso tipo di dati in tutta l’istruzione. Per assegnare un valore costante, procedere in uno dei seguenti modi:

– Immettere il valore costante in uno dei tag

– Aggiungere un’istruzione MOV che sposti il valore in uno dei tag.

• Usare un’istruzione MEQ per verificare solo i bit richiesti

I seguenti esempi mostrano due metodi per combinare un valore immediato con un tag INT. In entrambi gli esempi vengono verificati i bit di un modulo I/O 1771 per stabilire se tutti i bit sono attivi. Poiché la parola dati di ingresso di un modulo I/O 1771 è un tag INT, è molto più semplice usare un valore costante a 16 bit.

ESEMPIO Utilizzo di un tag INT con un valore immediato

Dato che remote_rack_1:I.Data[0] è un tag INT, anche il valore di confronto viene immesso come tag INT.

ESEMPIO Utilizzo di un tag INT con un valore immediato

Dato che remote_rack_1:I.Data[0] è un tag INT, il valore di confronto viene prima spostato in int_0, anch’esso un tag INT. L’istruzione EQU confronterà quindi i due tag.

EqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B int_0 2#1111_1111_1111_1111

EQU

42093

2#1111_1111_1111_1111

MoveSource 2#1111_1111_1111_1111 Dest int_0 2#1111_1111_1111_1111

MOVEqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B int_0 2#1111_1111_1111_1111

EQU

42093

630 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 631: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Attributi comuni Appendice A

Da intero a REAL

Il controllore memorizza i valori REAL in formato numerico a virgola mobile a singola precisione IEEE. Viene utilizzato un bit per il segno del valore, 23 bit per il valore della base e otto bit per l’esponente (in totale 32 bit). Se in un’istruzione si utilizzano come ingressi un tag di interi (SINT, INT o DINT) e un tag REAL, il controllore converte il valore intero in valore REAL prima dell’esecuzione dell’istruzione stessa.

• Un valore SINT o INT viene sempre convertito nello stesso valore REAL.

• Un valore DINT può non essere convertito nello stesso valore REAL:

– Un valore REAL usa fino a 24 bit per il valore della base (23 bit memorizzati più un bit “nascosto”).

– Un valore DINT usa fino a 32 bit per il valore (1 per il segno e 31 per il valore).

– Se il valore DINT richiede più di 24 bit significativi, potrebbe non essere convertito nello stesso valore REAL. In questo caso, il controllore esegue un arrotondamento al valore REAL più vicino utilizzando 24 bit significativi.

Da DINT a SINT o INT

Per convertire un valore DINT in un valore SINT o INT, il controllore tronca la parte superiore del valore DINT e, se necessario, imposta l’indicatore di stato di overflow. Il seguente esempio mostra il risultato di una conversione da DINT a SINT o INT.

ESEMPIO Conversione di un valore DINT in un valore INT e SINT

Il valore DINT Viene convertito nel valore inferiore

16#0001_0081 (65.665) INT: 16#0081 (129)

SINT: 16#81 (–127)

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 631

Page 632: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice A Attributi comuni

Da REAL a intero

Per convertire un valore REAL in un valore intero, il controllore arrotonda la parte frazionaria e tronca la parte superiore della parte non frazionaria. In caso di perdita di dati, il controllore imposta l’indicatore di stato di overflow. I numeri vengono arrotondati come segue:

• I numeri diversi da x,5 vengono arrotondati al numero intero più vicino

• X,5 viene arrotondato al numero pari più vicino.

Il seguente esempio mostra il risultato della conversione di valori REAL in valori DINT.

ESEMPIO Conversione di valori REAL in valori DINT

IMPORTANTE Gli indicatori di stato aritmetico vengono impostati in base al valore memorizzato. Le istruzioni che di norma non influenzano le parole chiave di stato aritmetico potrebbero farlo se vi è una conversione di tipo a causa dell’utilizzo di tipi di dati misti per i parametri dell’istruzione. La conversione di tipo imposta le parole chiave di stato aritmetico.

Il valore REAL Viene convertito nel valore DINT

–2,5 –2

–1,6 –2

–1,5 –2

–1,4 –1

1,4 1

1,5 2

1,6 2

2,5 2

632 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 633: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice B

Attributi di un blocco funzione

Introduzione Questa appendice tratta aspetti riguardanti unicamente le istruzioni di un blocco funzione. Consultare le informazioni presenti in questa appendice per comprendere appieno la modalità di funzionamento delle routine del blocco funzione.

Selezione degli elementi del blocco funzione

Per controllare un dispositivo, utilizzare i seguenti elementi:

Usare la seguente tabella per selezionare gli elementi del blocco funzione:z

IMPORTANTE Quando si programma con blocchi funzione, limitare l’intervallo di unità ingegneristiche a +/–10+/–15 dato che i calcoli interni a virgola mobile vengono eseguiti usando la virgola mobile a singola precisione. Le unità ingegneristiche che non rientrano in questo intervallo possono compromettere la precisione, se i risultati si avvicinano ai limiti della virgola mobile a singola precisione (+/–10+/–38).

riferimento ingresso (IREF) blocco funzione

connettore filo uscita (OCON)

riferimento uscita (OREF)

connettore filoingresso (ICON)

Se si desidera Usare

fornire un valore da un dispositivo di ingresso o un tag un riferimento ingresso (IREF)

inviare un valore a un dispositivo di uscita o un tag un riferimento uscita (OREF)

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 633

Page 634: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice B Attributi di un blocco funzione

Aggancio dati Se si utilizza un IREF per specificare i dati di ingresso di un’istruzione del blocco funzione, i dati contenuti nell’IREF vengono agganciati per la scansione della routine del blocco funzione. L’IREF aggancia dati dei tag di ambito programma e di ambito controllore. Il controllore aggiorna tutti i dati IREF all’inizio di ciascuna scansione.

In questo esempio, il valore di tagA viene memorizzato all’inizio dell’esecuzione della routine. Il valore memorizzato viene usato nell’esecuzione di Block_01. Lo stesso valore memorizzato viene anche utilizzato nell’esecuzione di Block_02. Se il valore di tagA varia durante l’esecuzione della routine, il valore memorizzato di tagA nell’IREF rimane invariato fino alla successiva esecuzione della routine stessa.

eseguire un’operazione su valori di ingresso o produrre valori di uscita

un blocco funzione

trasferire dati tra blocchi funzioni quando sono:

• lontani sulla stesso foglio

• su fogli diversi nella stessa routine

un connettore filo di uscita (OCON) e connettore filo di ingresso (ICON)

disperdere i dati in diversi punti della routine un connettore filo di uscita (OCON) e più connettori filo di ingresso (ICON)

Se si desidera Usare

IREF

tagA

Block_01

Block_02

634 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 635: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Attributi di un blocco funzione Appendice B

Questo esempio è uguale a quello riportato sopra. Il valore di tagA viene memorizzato solo una volta all’inizio dell’esecuzione della routine. La routine utilizza questo valore memorizzato per tutta l’esecuzione.

A partire dalla versione 11 del software RSLogix 5000, è possibile utilizzare lo stesso tag in più IREF e in un OREF nella stessa routine. Dato che i valori dei tag negli IREF vengono agganciati ad ogni scansione della routine, tutti gli IREF useranno lo stesso valore, anche se un OREF ottiene un valore di tag diverso durante l’esecuzione della routine. In questo esempio, se tagA ha un valore di 25,4 quando la routine avvia l’esecuzione di questa scansione, e Block_01 modifica il valore di tagA in 50,9, il secondo IREF collegato a Block_02 continuerà a usare il valore di 25,4 quando Block_02 eseguirà questa scansione. Il nuovo valore tagA di 50,9 non verrà usato da nessun IREF in questa routine fino all’avvio della scansione successiva.

tagA

Block_01

Block_02

tagA

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 635

Page 636: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice B Attributi di un blocco funzione

Ordine di esecuzione Il software di programmazione RSLogix 5000 determina automaticamente l’ordine di esecuzione dei blocchi funzione di una routine quando l’utente:

• verifica una routine in blocchi funzione

• verifica un progetto contenente una routine in blocchi funzione

• scarica un progetto contenente una routine in blocchi funzione

L’ordine di esecuzione viene definito cablando tra loro i blocchi funzione e indicando il flusso di dati su qualunque filo di feedback localizzato, se necessario.

Se i blocchi funzione non sono cablati tra loro, non è importante quale blocco viene eseguito per primo poiché non vi è alcun flusso di dati tra blocchi.

Se i blocchi vengono cablati in sequenza, l’ordine di esecuzione va dall’ingresso all’uscita. Gli ingressi di un blocco richiedono che i dati siano disponibili prima che il controllore possa eseguire il blocco stesso. Ad esempio, il blocco 2 deve essere eseguito prima del blocco 3, dato che le uscite del blocco 2 alimentano gli ingressi del blocco 3.

L’ordine di esecuzione si riferisce unicamente ai blocchi cablati tra loro. Il seguente esempio è particolarmente appropriato, dato che i due gruppi di blocchi non sono cablati tra loro. I blocchi di un gruppo specifico vengono eseguiti nell’ordine adeguato in relazione ai blocchi del gruppo stesso.

1 2 3

1 3 5

2 4 6

636 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 637: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Attributi di un blocco funzione Appendice B

Risoluzione di un loop

Per creare un loop di feedback intorno a un blocco, cablare un pin di uscita del blocco a un pin di ingresso dello stesso blocco. Il seguente esempio è corretto. Il loop contiene un unico blocco, pertanto l’ordine di esecuzione non è importante.

Se un gruppo di blocchi si trova in un loop, il controllore non è in grado di determinare quale blocco debba essere eseguito per primo. In altre parole, non è in grado di risolvere il loop.

Per identificare quale blocco eseguire per primo, contrassegnare il filo di ingresso che crea il loop (il filo di feedback) con l’indicatore Assume Data Available. In questo esempio, il blocco 1 utilizza l’uscita del blocco 3 prodotta nella precedente esecuzione della routine.

L’indicatore Assume Data Available definisce il flusso di dati all’interno del loop. La freccia indica che i dati servono come dati in ingresso nel primo blocco del ciclo.

Questo pin di ingresso utilizzaun’uscita che il blocco haprodotto nella scansione

precedente.

?? ?

1 2 3

Questo pin di ingresso utilizzaun’uscita che il blocco 3 ha

prodotto nella scansioneprecedente.

Indicatore Assume Data Available

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 637

Page 638: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice B Attributi di un blocco funzione

Non contrassegnare tutti i fili di un loop con l’indicatore Assume Data Available.

Risoluzione del flusso di dati tra due blocchi

Se si usano due o più fili per collegare due blocchi, usare gli stessi indicatori di flusso di dati per tutti i fili tra i due blocchi.

Quanto segue è corretto Quanto segue non è corretto

L’indicatore Assume Data Available definisce il flusso di dati all’interno del ciclo.

Il controllore non è in grado di risolvere il loop perché tutti i fili usano l’indicatore Assume Data Available.

Indicatore Assume Data Available

21 ??

Quanto segue è corretto Quanto segue non è corretto

Nessun filo usa l’indicatore Assume Data Available.

Entrambi i fili usano l’indicatore Assume Data Available.

Un filo usa l’indicatore Assume Data Available e l’altro no.

Indicatore Assume Data Available

638 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 639: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Attributi di un blocco funzione Appendice B

Creazione di un ritardo di una scansione

Per produrre un ritardo di una scansione tra blocchi, usare l’indicatore Assume Data Available. Nell’esempio seguente, il blocco 1 viene eseguito per primo. Utilizza l’uscita del blocco 2 che è stata prodotta nella scansione precedente della routine.

Riepilogo

In sintesi, una routine in blocchi funzione viene eseguita in questo ordine:

1. Il controllore aggancia tutti i valori dei dati contenuti negli IREF.

2. Il controllore esegue gli altri blocchi funzione nell’ordine determinato dalla modalità di cablaggio.

3. Il controllore scrive uscite negli OREF.

2 1

Indicatore Assume Data Available

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 639

Page 640: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice B Attributi di un blocco funzione

Risposte dei blocchi funzione a condizioni di overflow

In generale, le istruzioni in blocchi funzione che mantengono la cronologia non aggiornano la cronologia stessa con valori ±NAN o ±INF quando si verifica un overflow. Ogni istruzione ha una delle seguenti risposte a una condizione di overflow:

Risposta 1:

I blocchi eseguono il proprio algoritmo e verificano eventuali valori nel risultato ±NAN o ±INF. Se ±NAN o ±INF, il blocco colloca in uscita ±NAN o ±INF.

Risposta 2:

Blocchi con limitazione dell’uscita eseguono il proprio algoritmo e verificano eventuali valori nel risultato ±NAN o ±INF. I limiti dell’uscita sono definiti dai parametri di ingresso HighLimit e LowLimit. Con ±INF, il blocco colloca in uscita un risultato limitato. Con ±NAN, i limiti dell’uscita non vengono usati e il blocco colloca in uscita ±NAN.

Risposta 3:

La condizione di overflow non è applicabile. Queste istruzioni hanno di norma un’uscita booleana.

ALM NTCH

DEDT PMUL

DERV POSP

ESEL RLIM

FGEN RMPS

HPF SCRV

LDL2 SEL

LDLG SNEG

LPF SRTP

MAVE SSUM

MAXC TOT

MINC UPDN

MSTD

MUX

HLL

INTG

PI

PIDE

SCL

SOC

BAND OSRI

BNOT RESD

BOR RTOR

BXOR SETD

CUTD TOFR

D2SD TONR

D3SD

DFF

JKFF

OSFI

640 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 641: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Attributi di un blocco funzione Appendice B

Modalità di temporizzazione

Queste istruzioni di controllo processo e controllo assi supportano diverse modalità di temporizzazione.

Vi sono tre diverse modalità di temporizzazione:

DEDT

DERV

HPF

INTG

LDL2

LDLG

LPF

NTCH

PI

PIDE

RLIM

SCRV

SOC

TOT

Modalità di temporizzazione

Descrizione

periodica La modalità periodica è la modalità predefinita ed è adatta alla maggior parte delle applicazioni di controllo. Si consiglia di collocare le istruzioni che usano questa modalità in una routine eseguita in un task periodico. Il tempo delta (DeltaT) dell’istruzione è determinato come segue:

Se l’istruzione viene eseguita in

Delta è uguale a

Task periodico Periodo del task

Evento o task continuo

Tempo trascorso dall’esecuzione precedente

Il controllore tronca il tempo trascorso ai millisecondi interi (ms). Ad esempio, se il tempo trascorso = 10,5 ms, il controllore imposta DeltaT = 10 ms.

L’aggiornamento dell’ingresso del processo deve essere sincronizzato con l’esecuzione del task o campionato a una velocità di 5–10 volte superiore all’esecuzione del task stesso, al fine di ridurre al minimo l’errore di campionamento tra l’ingresso e l’istruzione.

campionamento multiplo Nella modalità di campionamento multiplo, il tempo delta (DeltaT) usato dall’istruzione è il valore scritto nel parametro OversampleDT dell’istruzione stessa. Se l’ingresso del processo ha un valore di registrazione cronologica, utilizzare la modalità di campionamento in tempo reale.

Aggiungere logica al proprio programma per controllare il momento di esecuzione dell’istruzione. Ad esempio, è possibile usare un temporizzatore impostato al valore OversampleDeltaT per controllare l’esecuzione usando l’ingresso EnableIn dell’istruzione.

L’ingresso del processo deve essere campionato a una velocità di 5–10 volte superiore all’esecuzione dell’istruzione, al fine di ridurre al minimo l’errore di campionamento tra l’ingresso e l’istruzione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

641
Page 642: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice B Attributi di un blocco funzione

Le istruzioni basate sul tempo richiedono un valore costante di DeltaT per consentire all’algoritmo di controllo di calcolare correttamente l’uscita del processo. Se DeltaT varia, vi sarà una discontinuità nell’uscita del processo. La gravità della discontinuità dipende dall’istruzione e dall’intervallo di variazione di DeltaT. La discontinuità si verifica se:

• l’istruzione non viene eseguita durante una scansione.

• l’istruzione viene eseguita più volte durante un task.

• il task è in esecuzione e la frequenza di scansione del task stesso o il tempo di campionamento dell’ingresso del processo varia.

• l’utente modifica la modalità della base tempo durante l’esecuzione del task.

• il parametro Order viene modificato su un blocco filtro durante l’esecuzione del task. Modificando il parametro Order, viene selezionato un algoritmo di controllo diverso all’interno dell’istruzione.

campionamento in tempo reale

Nella modalità di campionamento in tempo reale, il tempo delta (DeltaT) utilizzato dall’istruzione è la differenza tra due valori di registrazione cronologica corrispondenti agli aggiornamenti dell’ingresso del processo. Utilizzare questa modalità quando l’ingresso del processo ha una registrazione cronologica associata ai propri aggiornamenti e occorre un coordinamento preciso.

Il valore di registrazione cronologica viene letto dal nome di tag immesso per il parametro RTSTimeStamp dell’istruzione. Di norma, questo nome di tag è un parametro del modulo di ingresso associato all’ingresso del processo.

L’istruzione confronta il valore RTSTime configurato (tempo di aggiornamento previsto) con il DeltaT calcolato per stabilire se ogni aggiornamento dell’ingresso del processo viene letto dall’istruzione. Se DeltaT non rientra in 1 millisecondo del tempo di configurazione, l’istruzione imposta il bit di stato RTSMissed per indicare un problema di lettura degli aggiornamenti per l’ingresso del modulo.

Modalità di temporizzazione

Descrizione

642 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 643: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Attributi di un blocco funzione Appendice B

Parametri di istruzione comuni per le modalità di temporizzazione

Le istruzioni che supportano le modalità di base tempo presentano i seguenti parametri di ingresso e uscita:

Parametri di ingresso

Parametro di ingresso

Tipo di dati Descrizione

TimingMode DINT Seleziona la modalità di esecuzione della temporizzazione.

Valore: Descrizione:

0 modalità periodica

1 modalità di campionamento multiplo

2 modalità di campionamento in tempo reale

valido = da 0 a 2

default = 0

Quando TimingMode = 0 e il task è periodico, viene abilitata la temporizzazione periodica e DeltaT viene impostato alla frequenza di scansione del task. Quando TimingMode = 0 e il task è continuo, viene abilitata la temporizzazione periodica e DeltaT corrisponde al tempo trascorso dall’ultima esecuzione dell’istruzione.

Quando TimingMode = 1, viene abilitata la temporizzazione di campionamento multiplo e DeltaT viene impostato al valore del parametro OversampleDT.

Quando TimingMode = 2, viene abilitata la temporizzazione di campionamento in tempo reale e DeltaT è la differenza tra il valore attuale e il valore precedente della registrazione cronologica letto tramite il modulo associato all’ingresso.

Se TimingMode non è valido, l’istruzione imposta il bit appropriato in Status.

OversampleDT REAL Tempo di esecuzione per la temporizzazione di campionamento multiplo. Il valore usato per DeltaT è espresso in secondi. Se TimingMode = 1, allora OversampleDT = 0,0 disabilita l’esecuzione dell’algoritmo di controllo. Se il valore non è valido, l’istruzione imposta DeltaT = 0,0 e il bit appropriato in Status.

valido = da 0 a 4194,303 secondi

default = 0,0

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 643

Page 644: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice B Attributi di un blocco funzione

Parametri di uscita

RTSTime DINT Tempo di aggiornamento del modulo per la temporizzazione di campionamento in tempo reale. Il tempo di aggiornamento DeltaT previsto è espresso in millisecondi. Il tempo di aggiornamento è di norma il valore utilizzato per configurare il tempo di aggiornamento del modulo. Se il valore non è valido, l’istruzione imposta il bit appropriato in Status e disabilita la verifica RTSMissed.

valido = da 1 a 32 767 ms

default = 1

RTSTimeStamp DINT Valore di registrazione cronologica del modulo per la temporizzazione di campionamento in tempo reale. Valore di registrazione cronologica corrispondente all’ultimo aggiornamento del segnale di ingresso. Questo valore viene usato per calcolare DeltaT. Se il valore non è valido, l’istruzione imposta l’appropriato bit in Status, disabilita l’esecuzione dell’algoritmo di controllo e la verifica RTSMissed.

valido = da 1 a 32 767 ms (a capo da 32 767 a 0)

1 conteggio = 1 millisecondo

default = 0

Parametro di ingresso

Tipo di dati Descrizione

Parametro di uscita Tipo di dati Descrizione

DeltaT REAL Tempo trascorso tra gli aggiornamenti. Si tratta del tempo trascorso, in secondi, usato dall’algoritmo di controllo per calcolare l’uscita del processo.

Modalità periodica: DeltaT = frequenza di scansione del task se il task è periodico, DeltaT = tempo trascorso dall’ultima esecuzione dell’istruzione se il task è continuo

Campionamento multiplo: DeltaT = OversampleDT

Campionamento in tempo reale: DeltaT = (RTSTimeStampn – RTSTimeStampn-1)

Status DINT Stato del blocco funzione.

TimingModeInv (Status.27)

BOOL Valore TimingMode non valido.

RTSMissed (Status.28) BOOL Usato solo nella modalità di campionamento in tempo reale. Impostato quando ABS | DeltaT – RTSTime | > 1 (,001 secondi).

RTSTimeInv (Status.29)

BOOL Valore RTSTime non valido.

RTSTimeStampInv (Status.30)

BOOL Valore RTSTimeStamp non valido.

DeltaTInv (Status.31) BOOL Valore DeltaT non valido.

644 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 645: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Attributi di un blocco funzione Appendice B

Prospetto delle modalità di temporizzazione

Lo schema seguente mostra in che modo un’istruzione determina la modalità di temporizzazione adeguata.

TimingMode = 2TimingMode = 1TimingMode = 0

Definizione modalità di base tempo

Temporizzazione in tempo realeTemporizzazione di campionamento multiplo

Temporizzazione periodica

Definizione tipo di task

Task periodico Evento o task continuo

DeltaT = OversampleDT

Se DeltaT < 0 o DeltaT > 4194,303 secondi, l’istruzione imposta DeltaT = 0,0 e il bit appropriato in Status.

Se DeltaT > 0, l’istruzione viene eseguita.

DeltaT = RTSTimeStampn – RTSTimeStampn-1

Se DeltaT > 0, l’istruzione viene eseguita.

Se |RTSTIME – DeltaT| > 1, l’istruzione imposta il bit RTSMissed in Status.

DeltaT = frequenza di scansione del task

Se DeltaT > 0, l’istruzione viene eseguita.

DeltaT = tempo trascorso dall’ultima esecuzione.

Se DeltaT > 0, l’istruzione viene eseguita.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 645

Page 646: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice B Attributi di un blocco funzione

Controllo Programma/Operatore

Diverse istruzioni supportano il concetto di controllo Programma/Operatore, tra cui:

• Enhanced Select (ESEL)

• Totalizer (TOT)

• Enhanced PID (PIDE)

• Ramp/Soak (RMPS)

• Discrete 2-State Device (D2SD)

• Discrete 3-State Device (D3SD)

Il controllo Programma/Operatore consente di controllare queste istruzioni contemporaneamente sia dal programma utente che da un dispositivo di interfaccia operatore. Nel controllo Programma, l’istruzione viene controllata dagli ingressi Programma dell’istruzione stessa; nel controllo Operatore, l’istruzione viene controllata dagli ingressi Operatore dell’istruzione.

Il controllo Programma o Operatore viene stabilito usando i seguenti ingressi:

Per stabilire se un’istruzione si trova in controllo Programma o Operatore, esaminare l’uscita ProgOper. Se ProgOper è impostato, l’istruzione si trova in controllo Programma; se ProgOper è azzerato, l’istruzione si trova in controllo Operatore.

Se entrambi i bit di richiesta di ingresso sono impostati, il controllo Operatore ha la precedenza sul controllo Programma. Ad esempio, se ProgProgReq e ProgOperReq sono entrambi impostati, l’istruzione passa al controllo Operatore.

Ingresso Descrizione

.ProgProgReq Richiesta programma di passare al controllo Programma.

.ProgOperReq Richiesta programma di passare al controllo Operatore.

.OperProgReq Richiesta operatore di passare al controllo Programma.

.OperOperReq Richiesta operatore di passare al controllo Operatore.

646 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 647: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Attributi di un blocco funzione Appendice B

Gli ingressi di richiesta Programma hanno la precedenza sugli ingressi di richiesta Operatore. Ciò consente di usare gli ingressi ProgProgReq e ProgOperReq per “bloccare” un’istruzione nel controllo desiderato. Ad esempio, ipotizziamo che un’istruzione Totalizer venga sempre usata nel controllo Operatore e che il programma utente non controlli mai l’esecuzione o l’arresto del totalizzatore stesso. In questo caso, si potrebbe cablare un valore letterale di 1 in ProgOperReq. Ciò impedirebbe all’operatore di inserire il totalizzatore in controllo Programma impostando OperProgReq da un dispositivo di interfaccia operatore.

Dato che l’ingresso ProgOperReq è sempre impostato, premendo il pulsante “Program” sulla maschera (per impostare l’ingresso OperProgReg) non si ha alcun effetto. Di norma, l’impostazione di OperProgReq inserisce TOT in controllo Programma.

Se si cabla un “1” in ProgOperReq, il programma utente richiederà sempre che TOT sia in controllo Operatore.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 647

Page 648: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice B Attributi di un blocco funzione

In maniera analoga, l’impostazione costante di ProgProgReq può “bloccare” l’istruzione in controllo Programma. Ciò è utile per sequenze di avvio automatiche in cui si desidera che il programma controlli l’azione dell’istruzione senza il rischio che un operatore prenda inavvertitamente il controllo dell’istruzione stessa. In questo esempio, il programma imposta l’ingresso ProgProgReq durante l’avvio, quindi lo azzera una volta che l’avvio è stato completato. Una volta azzerato l’ingresso ProgProgReq, l’istruzione rimane in controllo Programma finché non riceve una richiesta di modifica. Ad esempio, l’operatore potrebbe impostare l’ingresso OperOperReq da una maschera per assumere il controllo dell’istruzione. Il seguente esempio mostra come bloccare un’istruzione in controllo Programma.

Gli ingressi di richiesta operatore per un’istruzione vengono sempre azzerati dall’istruzione al momento dell’esecuzione. Ciò consente alle interfacce operatore di funzionare con queste istruzioni semplicemente impostando il bit di richiesta modalità desiderato. Non è necessario programmare l’interfaccia operatore affinché reimposti i bit di richiesta. Ad esempio, se un’interfaccia operatore imposta l’ingresso OperAutoReq per un’istruzione PIDE, al momento dell’esecuzione l’istruzione PIDE stabilisce la risposta appropriata e azzera OperAutoReq.

Gli ingressi di richiesta Programma non vengono solitamente azzerati dall’istruzione, essendo di norma cablati come ingressi nell’istruzione stessa. Se l’istruzione azzera questi ingressi, l’ingresso viene impostato di nuovo dall’ingresso cablato. Vi possono essere situazioni in cui si desidera utilizzare altra logica per impostare le richieste Programma in modo tale che vengano azzerate dall’istruzione. In questo caso, è possibile impostare l’ingresso ProgValueReset e l’istruzione azzererà sempre gli ingressi di richiesta di modalità Programmazione al momento dell’esecuzione.

Quando StartupSequenceActive è impostato, l’istruzione PIDE viene inserita in controllo Programma e nella modalità Manual. Il valore StartupCV viene usato come uscita del ciclo.

648 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 649: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Attributi di un blocco funzione Appendice B

In questo esempio viene usato un ramo di logica ladder di un’altra routine per agganciare con un singolo impulso un ProgAutoReq a un’istruzione PIDE premendo un pulsante. Poiché l’istruzione PIDE azzera automaticamente le richieste di modalità Programmazione, non è necessario scrivere logica ladder per azzerare ProgAutoReq dopo l’esecuzione della routine; l’istruzione PIDE riceverà solo una richiesta di passare ad Auto ogni volta che il pulsante viene premuto.

Quando si preme il pulsante TIC101AutoReq, agganciare con un singolo impulso ProgAutoReq all’istruzione PIDE TIC101. TIC101 è stato configurato con l’ingresso ProgValueReset impostato, pertanto l’istruzione PIDE azzera automaticamente ProgAutoReq al momento dell’esecuzione.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 649

Page 650: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice B Attributi di un blocco funzione

Note:

650 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 651: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C

Programmazione in testo strutturato

Introduzione Questa appendice descrive aspetti che riguardano unicamente la programmazione in testo strutturato. Consultare le informazioni presenti in questa appendice per comprendere appieno la modalità di esecuzione della programmazione in testo strutturato.

Sintassi del testo strutturato

Il testo strutturato è un linguaggio di programmazione testuale che utilizza istruzioni per definire l’azione da eseguire.

• Il testo strutturato non distingue tra maiuscole e minuscole.

• Utilizzare tabulazioni e ritorni a capo (righe separate) per rendere più semplice la lettura del testo strutturato. Le tabulazioni e i ritorni a capo non influenzano l’esecuzione del testo strutturato.

Il testo strutturato non distingue tra maiuscole e minuscole. Può contenere i seguenti componenti:

Per informazioni su Vedere pagina

Sintassi del testo strutturato 651

Assegnazione 653

Espressioni 655

Istruzioni 662

Costrutti 663

Commenti 679

Termine Definizione Esempi

assegnazione

(vedere pagina 653)

Usare un’assegnazione per assegnare valori ai tag.

L’operatore := è l’operatore di assegnazione.

Concludere l’assegnazione con un punto e virgola “;”.

tag := espressione;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 651

Page 652: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

espressione

(vedere pagina 655)

Un’espressione fa parte di un’istruzione completa di assegnazione o costrutto. Un’espressione restituisce un numero (espressione numerica) o uno stato vero o falso (espressione booleana).

Un’espressione contiene:

tag Area definita della memoria in cui vengono memorizzati i dati (BOOL, SINT,INT,DINT, REAL, stringa).

valore1

immediato Valore costante. 4

operatore Simbolo o mnemonico che specifica un’operazione all’interno di un’espressione.

tag1 + tag2

tag1 >= valore1

funzione Quando viene eseguita, una funzione restituisce un valore. Usare le parentesi per racchiudere l’operando di una funzione.

Sebbene la loro sintassi sia simile, le funzioni differiscono dalle istruzioni, dato che le funzioni possono essere usate solo nelle espressioni. Le istruzioni non possono essere usate nelle espressioni.

funzione(tag1)

istruzione

(vedere pagina 662)

Un’istruzione è un enunciato indipendente.

Un’istruzione utilizza le parentesi per racchiudere i propri operandi.

A seconda dell’istruzione, vi possono essere uno, più operandi o nessuno.

Quando viene eseguita, un’istruzione restituisce uno o più valori che fanno parte di una struttura di dati.

Concludere l’istruzione con un punto e virgola “;”.

Sebbene la loro sintassi sia simile, le istruzioni differiscono dalle funzioni, dato che le istruzioni non possono essere usate nelle espressioni. Le funzioni possono essere usate solo nelle espressioni.

istruzione();

istruzione(operando);

istruzione(operando1, operando2,operando3);

Termine Definizione Esempi

652 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 653: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

Assegnazione Usare un’assegnazione per modificare il valore memorizzato in un tag. L’assegnazione ha la seguente sintassi:

tag := espressione ;

dove:

costrutto

(vedere pagina 663)

Istruzione condizionale usata per attivare un codice di testo strutturato (ovvero altre istruzioni).

Concludere il costrutto con un punto e virgola “;”.

IF...THEN

CASE

FOR...DO

WHILE...DO

REPEAT...UNTIL

EXIT

commento

(vedere pagina 679)

Testo che spiega o chiarisce le azioni di una sezione di testo strutturato.

• Usare i commenti per semplificare l’interpretazione del testo strutturato.

• I commenti non influenzano l’esecuzione del testo strutturato.

• I commenti possono apparire ovunque nel testo strutturato.

//commento

(*inizio commento . . . fine commento*)

/*inizio commento . . . fine commento*/

Termine Definizione Esempi

Componente Descrizione

tag rappresenta il tag che riceve il nuovo valore

il tag deve essere BOOL, SINT, INT, DINT o REAL

:= simbolo dell’assegnazione

espressione rappresenta il nuovo valore da assegnare al tag

Se tag è del tipo dati: Usare questo tipo di espressione:

BOOL Espressione booleana

SINT

INT

DINT

REAL

Espressione numerica

; Termina l’assegnazione

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 653

Page 654: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

Il tag conserva il valore assegnato finché questo non viene modificato da un’altra assegnazione.

L’espressione può essere semplice, come un valore immediato o un altro nome tag, oppure può essere complessa e comprendere diversi operatori e/o funzioni. Per ulteriori dettagli, vedere la sezione successiva “Espressioni“ a pagina 655.

Specificare un’assegnazione non ritentiva

L’assegnazione non ritentiva è diversa dalla normale assegnazione descritta in precedenza, dato che il tag di un’assegnazione non ritentiva viene reimpostato a zero ogni volta che il controllore:

• entra in modalità Esecuzione

• abbandona il passo di un SFC se si configura l’SFC per l’Automatic reset. Ciò vale solo se si inserisce l’assegnazione nell’azione del passo o si utilizza l’azione per richiamare una routine di testo strutturato tramite un’istruzione JSR.

L’assegnazione non ritentiva presenta la seguente sintassi:

tag [:=] espressione ;

dove:

Componente Descrizione

tag rappresenta il tag che riceve il nuovo valore

il tag deve essere BOOL, SINT, INT, DINT o REAL

[:=] è il simbolo dell’assegnazione non ritentiva

espressione rappresenta il nuovo valore da assegnare al tag

Se tag è del tipo dati: Usare questo tipo di espressione:

BOOL Espressione booleana

SINT

INT

DINT

REAL

Espressione numerica

; Termina l’assegnazione

654 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 655: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

Assegnare un carattere ASCII a una stringa

Usare l’operatore di assegnazione per assegnare un carattere ASCII a un elemento del membro DATA di un tag stringa. Per assegnare un carattere, specificare il valore del carattere o il nome tag, il membro DATA e l’elemento del carattere. Ad esempio:

Per aggiungere o inserire una stringa di caratteri in un tag stringa, usare una delle seguenti istruzioni stringa ASCII:

Espressioni Un’espressione è un nome di tag, un’equazione o un confronto. Per scrivere un’espressione, utilizzare uno dei seguenti elementi:

• nome del tag che memorizza il valore (variabile)

• numero da immettere direttamente nell’espressione (valore immediato)

• funzioni, ad esempio: ABS, TRUNC

• operatori, ad esempio: +, –, <, >, And, Or

Nella scrittura delle espressioni, attenersi alle seguenti regole generali:

• Usare qualunque combinazione di caratteri maiuscoli e minuscoli. Ad esempio, sono accettabili queste tre varianti di “AND”: AND, And, and.

• Per esigenze più complesse, usare le parentesi per raggruppare espressioni all’interno di espressioni. In questo modo l’espressione è più semplice da leggere e viene eseguita nella sequenza desiderata. Vedere “Determinare l’ordine di esecuzione“ a pagina 661.

Questo è corretto Questo non è corretto

string1.DATA[0]:= 65; string1.DATA[0]:= A;

string1.DATA[0]:= string2.DATA[0]; string1 := string2;

Per Utilizzare questa istruzione

aggiungere caratteri alla fine di una stringa CONCAT

inserire caratteri in una stringa INSERT

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 655

Page 656: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

Nel testo strutturato si utilizzano due tipi di espressioni:

espressione booleana : Espressione che produce il valore BOOL di 1 (vero) o 0 (falso).

• Un’espressione booleana utilizza tag booleani, operatori relazionali e operatori logici per confrontare valori o verificare se le condizioni sono vere o false. Ad esempio, tag1>65.

• Un’espressione booleana semplice può essere composta da un unico tag booleano.

• Di norma, le espressioni booleane vengono usate per condizionare l’esecuzione di altra logica.

espressione numerica: Espressione che calcola un intero o un valore a virgola mobile.

• Un’espressione numerica utilizza operatori aritmetici, funzioni aritmetiche e operatori bit per bit. Ad esempio, tag1+5.

• L’espressione numerica viene spesso nidificata all’interno di un’espressione booleana. Ad esempio, (tag1+5)>65.

Utilizzare la seguente tabella per scegliere gli operatori per le espressioni:

Se si desidera Allora

Calcolare un valore aritmetico “Usare funzioni e operatori aritmetici“ a pagina 657.

Confrontare due valori o stringhe “Usare operatori relazionali“ a pagina 658.

Verificare se le condizioni sono vere o false “Usare operatori logici“ a pagina 660.

Confrontare i bit nei valori “Utilizzo di operatori bit per bit“ a pagina 661.

656 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 657: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

Usare funzioni e operatori aritmetici

Nelle espressioni aritmetiche è possibile combinare più operatori e funzioni.

Gli operatori aritmetici calcolano i nuovi valori.

Le funzioni aritmetiche eseguono operazioni matematiche. Specificare una costante, un tag non booleano o un’espressione per la funzione.

Per Usare questo operatore

Tipo di dati ottimale

somma + DINT, REAL

sottrazione/negazione – DINT, REAL

moltiplicazione * DINT, REAL

esponente (x alla y) ** DINT, REAL

divisione / DINT, REAL

modulo-divide MOD DINT, REAL

Per Usare questa funzione Tipo di dati ottimale

valore assoluto ABS (espressione_numerica) DINT, REAL

arcocoseno ACOS (espressione_numerica) REAL

arcoseno ASIN (espressione_numerica) REAL

arcotangente ATAN (espressione_numerica) REAL

coseno COS (espressione_numerica) REAL

da radianti a gradi DEG (espressione_numerica) DINT, REAL

logaritmo naturale LN (espressione_numerica) REAL

logaritmo in base 10 LOG (espressione_numerica) REAL

da gradi a radianti RAD (espressione_numerica) DINT, REAL

seno SIN (espressione_numerica) REAL

radice quadrata SQRT (espressione_numerica) DINT, REAL

tangente TAN (espressione_numerica) REAL

troncare TRUNC (espressione_numerica) DINT, REAL

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 657

Page 658: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

Ad esempio:

Usare operatori relazionali

Gli operatori relazionali confrontano due valori o stringhe per fornire un risultato vero o falso. Il risultato di un’operazione relazionale è un valore booleano:

Utilizzare i seguenti operatori relazionali:

Utilizzare questo formato ESEMPIO

Per questa situazione Si scriverebbe

valore1 operatore valore2 Se gain_4 e gain_4_adj sono tag DINT e la specifica dell’utente indica: “Aggiungere 15 a gain_4 e memorizzare il risultato in gain_4_adj.”

gain_4_adj := gain_4+15;

operatore valore1 Se alarm e high_alarm sono tag DINT e la specifica dell’utente indica: “Negare high_alarm e memorizzare il risultato in alarm.”

alarm:= -high_alarm;

funzione(espressione_numerica) Se overtravel e overtravel_POS sono tag DINT e la specifica dell’utente indica: “Calcolare il valore assoluto di overtravel e memorizzare il risultato in overtravel_POS.”

overtravel_POS := ABS(overtravel);

valore1 operatore funzione((valore2+valore3)/2)

Se adjustment e position sono tag DINT, sensor1 e sensor2 sono tag REAL e la specifica dell’utente indica: “Determinare il valore assoluto della media di sensor1 e sensor2, aggiungere adjustment e memorizzare il risultato in position.”

position := adjustment + ABS((sensor1 + sensor2)/2);

Se il confronto è Il risultato è

vero 1

falso 0

Per il confronto: Usare questo operatore

Tipo di dati ottimale

uguale = DINT, REAL, stringa

minore di < DINT, REAL, stringa

minore di o uguale <= DINT, REAL, stringa

maggiore di > DINT, REAL, stringa

maggiore di o uguale a >= DINT, REAL, stringa

diverso <> DINT, REAL, stringa

658 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 659: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

Ad esempio:

Modalità di valutazione delle stringhe

I valori esadecimali dei caratteri ASCII determinano se una stringa è minore o maggiore di un’altra stringa.

• Quando le due stringhe sono ordinate come in un elenco telefonico, l’ordine delle stringhe determina quale è la maggiore.

• Le stringhe sono uguali se i loro caratteri corrispondono.

• I caratteri distinguono tra maiuscole e minuscole. “A” maiuscola ($41) non è uguale ad “a” minuscola ($61).

Per il valore decimale e il codice esadecimale di un carattere, vedere il retro copertina di questo manuale.

Utilizzare questo formato Esempio

Per questa situazione Si scriverebbe

valore1 operatore valore2 Se temp è un tag DINT e la specifica dell’utente indica: “Se temp è minore di 100°, allora…”

IF temp<100 THEN...

tagstringa1 operatore tagstringa2

Se bar_code e dest sono tag stringa e la specifica dell’utente indica: “Se bar_code è uguale a dest, allora…”

IF bar_code=dest THEN...

car1 operatore car2

Per immettere un carattere ASCII direttamente nell’espressione, inserire il valore decimale del carattere.

Se bar_code è un tag stringa e la specifica dell’utente indica: “Se bar_code.DATA[0] è uguale ad ‘A’, allora…”

IF bar_code.DATA[0]=65 THEN...

tag_booleano := espressioni_booleane

Se count e length sono tag DINT, done è un tag booleano e la specifica dell’utente indica: ”Se count è maggiore di o uguale a length, il conteggio termina.”

done := (count >= length);

Caratteri ASCII Codici Esadecimali

1ab $31$61$62

1b $31$62

a $41

AB $41$42

B $42

a $61

AB $61$62

maggiore

minore

AB < B

a > B

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 659

Page 660: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

Usare operatori logici

Gli operatori logici consentono di verificare se più condizioni sono vere o false. Il risultato di un’operazione logica è un valore booleano:

Utilizzare i seguenti operatori logici:

Ad esempio:

Se il confronto è Il risultato è

vero 1

falso 0

Per Usare questo operatore

Tipo di dati

AND logico &, AND BOOL

OR logico OR BOOL

OR logico esclusivo XOR BOOL

complemento logico NOT BOOL

Utilizzare questo formato ESEMPIO

Per questa situazione Si scriverebbe

TagBooleano Se photoeye è un tag booleano e la specifica dell’utente indica: “Se photoeye è attivo, allora…”

IF photoeye THEN...

NOT TagBooleano Se photoeye è un tag booleano e la specifica dell’utente indica: “Se photoeye non è attivo, allora…”

IF NOT photoeye THEN...

espressione1 & espressione2 Se photoeye è un tag booleano, temp è un tag DINT e la specifica dell’utente indica: “Se photoeye è attivo e temp è minore di 100°, allora…”.

IF photoeye & (temp<100) THEN...

espressione1 OR espressione2 Se photoeye è un tag booleano, temp è un tag DINT e la specifica dell’utente indica: “Se photoeye è attivo o temp è minore di 100°, allora…”.

IF photoeye OR (temp<100) THEN...

espressione1 XOR espressione2 Se photoeye1 e photoeye2 sono tag booleani e la specifica dell’utente indica: “Se:

• photoeye1 è attivo mentre photoeye2 non è attivo o

• photoeye1 non è attivo mentre photoeye2 è attivo

allora…”

IF photoeye1 XOR photoeye2 THEN...

TagBooleano := espressione1 & espressione2

Se photoeye1 e photoeye2 sono tag booleani, open è un tag booleano e la specifica dell’utente indica: “Se photoeye1 e photoeye2 sono entrambi attivi, impostare open su vero”.

open := photoeye1 & photoeye2;

660 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 661: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

Utilizzo di operatori bit per bit

Gli operatori bit per bit manipolano i bit di un valore in base a due valori.

Ad esempio:

Determinare l’ordine di esecuzione

Le operazioni scritte in un’espressione vengono eseguite in un ordine definito, non necessariamente da sinistra a destra.

• Operazioni di ordine uguale vengono eseguite da sinistra a destra.

• Se un’espressione contiene più operatori o funzioni, raggruppare le condizioni tra parentesi “( )”. Ciò assicura il corretto ordine di esecuzione e rende più semplice la lettura dell’espressione.

Per Usare questo operatore

Tipo di dati ottimale

AND di bit &, AND DINT

OR di bit OR DINT

OR di bit esclusivo XOR DINT

complemento di bit NOT DINT

Utilizzare questo formato ESEMPIO

Per questa situazione Si scriverebbe

valore1 operatore valore2 Se input1, input2 e result1 sono tag DINT e la specifica dell’utente indica: “Calcolare il risultato bit per bit di input1 e input2. Memorizzare il risultato in result1.”

result1 := input1 AND input2;

Ordine Operazione

1. ( )

2. funzione (…)

3. **

4. − (negare)

5. NOT

6. *, /, MOD

7. +, – (sottrazione)

8. <, <=, >, >=

9. =, <>

10. &, AND

11. XOR

12. OR

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 661

Page 662: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

Istruzioni Il testo strutturato può utilizzare anche le normali istruzioni. Consultare la Tabella indice all’inizio del manuale per un elenco delle istruzioni disponibili in testo strutturato. L’istruzione in testo strutturato viene eseguita a ogni scansione. Un’istruzione in testo strutturato all’interno di un costrutto viene eseguita ogni volta che le condizioni del costrutto sono vere. Se le condizioni del costrutto sono false, le istruzioni all’interno del costrutto non vengono sottoposte a scansione. Non vi è alcuna condizione di ramo o transizione di stato che attivi l’esecuzione.

Ciò differisce dalle istruzioni in blocco funzione che utilizzano EnableIn per attivare l’esecuzione. Le istruzioni in testo strutturato vengono eseguite come se EnableIn fosse sempre impostato.

Ciò differisce anche dalle istruzioni in logica ladder che utilizzano la condizione del ramo di ingresso per attivare l’esecuzione. Alcune istruzioni ladder vengono eseguite solo quando la condizione del ramo di ingresso passa da falsa a vera. Si tratta di istruzioni ladder di transizione. Nel testo strutturato, le istruzioni vengono eseguite ogni volta che vengono sottoposte a scansione, a meno che l’esecuzione non venga condizionata in precedenza.

Ad esempio, l’istruzione ABL è un’istruzione ladder di transizione. In questo esempio, l’istruzione ABL viene eseguita solo in una scansione in cui tag_xic passa da azzerato a impostato. L’istruzione ABL non viene eseguita quando tag_xic rimane impostato o quando tag_xic viene azzerato.

Nel testo strutturato, se si scrive questo esempio come:

IF tag_xic THEN ABL(0,serial_control);

END_IF;

l’istruzione ABL verrà eseguita ad ogni scansione in cui tag_xic è impostato, non solo quando tag_xic passa da azzerato a impostato.

662 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 663: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

Se si desidera che l’istruzione ABL venga eseguita solo quando tag_xic passa da azzerato a impostato, è necessario condizionare l’istruzione in testo strutturato. Usare un’istruzione One Shot per attivare l’esecuzione.

Costrutti I costrutti possono essere programmati come elementi indipendenti o nidificati all’interno di altri costrutti.

Alcune parole chiave sono riservate all’uso futuro

Questi costrutti non sono disponibili:

• GOTO

• REPEAT

Il software RSLogix 5000 non consente di utilizzarli come nomi di tag né costrutti.

osri_1.InputBit := tag_xic;

OSRI(osri_1);

IF (osri_1.OutputBit) THEN

ABL(0,serial_control);

END_IF;

Se si desidera Usare questo costrutto Disponibile in questi linguaggi Vedere pagina

eseguire un’azione se o quando si verificano condizioni specifiche

IF...THEN testo strutturato 664

scegliere cosa fare in base a un valore numerico

CASE...OF testo strutturato 667

eseguire un’azione un numero specifico di volte prima di eseguire qualunque altra azione

FOR...DO testo strutturato 670

continuare a eseguire un’azione finché alcune condizioni sono vere

WHILE...DO testo strutturato 673

continuare a eseguire un’azione finché una condizione non diventa vera

REPEAT...UNTIL testo strutturato 676

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 663

Page 664: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

IF...THEN Usare IF…THEN per eseguire un’azione se o quando si verificano condizioni specifiche.

Operandi:

Testo strutturato

Descrizione: La sintassi è:

Per usare ELSIF o ELSE, seguire queste linee guida:

1. Per operare una scelta tra diversi gruppi di istruzioni possibili, aggiungere una o più istruzioni ELSIF.

• Ogni ELSIF rappresenta un percorso alternativo.

• Specificare il numero di percorsi ELSIF necessario.

• Il controllore esegue il primo IF o ELSIF vero e ignora il resto delle istruzioni ELSIF ed ELSE.

2. Per eseguire un’azione quando tutte le condizioni IF o ELSIF sono false, aggiungere un’istruzione ELSE.

Operando Tipo Formato Digitare

espressione_booleana

BOOL tag

espressione

Tag booleano o espressione booleana che restituisce un valore booleano (espressione booleana)

IF espressione_booleana THEN

<istruzione>;

END_IF;

IF espressione_booleana1 THEN

<istruzione>; istruzioni da eseguire quando espressione_booleana1 è vera

.

.

.

facoltativo

ELSIF espressione_booleana2 THEN

<istruzione>; istruzioni da eseguire quando espressione_booleana2 è vera

.

.

.

facoltativoELSE

<istruzione>; istruzioni da eseguire quando entrambe le espressioni sono false.

.

.

END_IF;

664 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 665: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

La seguente tabella presenta una sintesi di diverse combinazioni di IF, THEN, ELSIF ed ELSE.

Indicatori di stato aritmetico non influenzati

Condizioni di errore: nessuna

Esempio 1: IF…THEN

Esempio 2: IF…THEN…ELSE

[:=] indica al controllore di azzerare spia quando il controllore:

• entra in modalità Run

• abbandona il passo di un SFC se si configura l’SFC per il reset automatico. Ciò vale solo se si inserisce l’assegnazione nell’azione del passo o si utilizza l’azione per richiamare una routine di testo strutturato tramite un’istruzione JSR.

Se si desidera E Usare questo costrutto

eseguire un’azione se o quando le condizioni sono vere

non eseguire alcuna azione se le condizioni sono false

IF…THEN

eseguire un’azione diversa se le condizioni sono false

IF…THEN…ELSE

scegliere tra istruzioni alternative (o gruppi di istruzioni) in base alle condizioni di ingresso

non eseguire alcuna azione se le condizioni sono false

IF…THEN…ELSIF

assegnare istruzioni predefinite se tutte le condizioni sono false

IF…THEN…ELSIF…ELSE

Per Immettere questo testo strutturato

SE scarti > 3 allora IF scarti > 3 THEN

trasportatore = off (0) trasportatore:= 0;

allarme = on (1) allarme:= 1;

END_IF;

Per Immettere questo testo strutturato

Se contatto di direzione nastro = avanti (1) allora IF direzione_nastro THEN

spia = off spia := 0;

Altrimenti spia = on ELSE

spia [:=] 1;

END_IF;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 665

Page 666: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

Esempio 3: IF…THEN…ELSIF

[:=] indica al controllore di azzerare Valvola.Zucchero quando il controllore:

• entra in modalità RUN

• abbandona il passo di un SFC se si configura l’SFC per il reset automatico. Ciò vale solo se si inserisce l’assegnazione nell’azione del passo o si utilizza l’azione per richiamare una routine di testo strutturato tramite un’istruzione JSR.

Esempio 4: IF…THEN…ELSIF…ELSE

Per Immettere questo testo strutturato

Se finecorsa livello minimo zucchero = basso (on) e finecorsa livello massimo zucchero = non alto (on), allora

IF Zucchero.Basso & Zucchero.Alto THEN

valvola ingresso = aperta (on) Valvola.Zucchero[:=] 1;

Finché finecorsa livello massimo zucchero = alto (off) ELSIF NOT(Zucchero.Alto) THEN

Valvola.Zucchero:= 0;

END_IF;

Per Immettere questo testo strutturato

Se temperatura serbatoio > 100 IF temp.serbatoio > 200 THEN

allora pompa = lenta pompa.veloce :=1; pompa.lenta :=0; pompa.off :=0;

Se temperatura serbatoio > 200 ELSIF temp.serbatoio> 100 THEN

allora pompa = veloce pompa.veloce :=0; pompa.lenta :=1; pompa.off :=0;

altrimenti pompa = off ELSE

pompa.veloce :=0; pompa.lenta :=0; pompa.off :=1;

END_IF;

666 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 667: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

CASE...OF Usare CASE per scegliere quale azione eseguire in base a un valore numerico.

Operandi:

Testo strutturato

Descrizione: La sintassi è:

Operando Tipo Formato Digitare

espressione_

numerica

SINT

INT

DINT

REAL

tag

espressione

tag o espressione che restituisce un numero (espressione numerica)

selettore SINT

INT

DINT

REAL

immediato stesso tipo di espressione_numerica

IMPORTANTE Se si utilizzano valori REAL, usare un intervallo di valori per un selettore, dato che un valore REAL ha più probabilità di rientrare in un intervallo di valori rispetto a un unico valore esattamente corrispondente a un valore specifico.

CASE espressione_numerica OF

selettore1: istruzione;

selettoreN: istruzione;

ELSE

istruzione;

END_CASE;

CASE espressione_numerica OF

specificare tutti i valori diselettore alternativi(percorsi) necessari

selettore1 :

<istruzione>;...

istruzioni da eseguire quando espressione_numerica = selettore1

selettore2 :

<istruzione>;...

istruzioni da eseguire quando espressione_numerica = selettore2

selettore3 :

<istruzione>;...

istruzioni da eseguire quando espressione_numerica = selettore3

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 667

Page 668: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

Consultare la tabella alla pagina seguente per un elenco di valori di selettore validi.

La sintassi per l’immissione di valori di selettore è la seguente:

Il costrutto CASE è simile a un’istruzione di commutazione nei linguaggi di programmazione C o C++. Tuttavia, con il costrutto CASE il controllore esegue solo le istruzioni associate al primo valore corrispondente del selettore. L’esecuzione viene sempre interrotta dopo le istruzioni di quel selettore e passa all’istruzione END_CASE.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore: nessuna

facoltativo

ELSE

<istruzione> ;...

istruzioni da eseguire quando espressione_numerica ≠ qualunque selettore

END_CASE;

Quando il selettore è Digitare

un valore valore: istruzione

più valori distinti valore1, valore2, valoreN : <istruzione>

Usare una virgola (,) per separare ciascun valore.

un intervallo di valori valore1..valoreN : <istruzione>

Usare due puntini di sospensione (..) per identificare l’intervallo.

valori distinti più un intervallo di valori

valorea, valoreb, valore1..valoreN : <istruzione>

668 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 669: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

Esempio:

[:=] indica al controllore di azzerare anche i tag “apertura” quando il controllore:

• entra in modalità RUN

• abbandona il passo di un SFC se si configura l’SFC per il reset automatico. Ciò vale solo se si inserisce l’assegnazione nell’azione del passo o si utilizza l’azione per richiamare una routine di testo strutturato tramite un’istruzione JSR.

Per Immettere questo testo strutturato

Se numero ricetta = 1 allora CASE numero_ricetta OF

Ingrediente A apertura 1 = aperta (1) 1: Ingrediente_A.Apertura_1 :=1;

Ingrediente B apertura 4 = aperta (1) Ingrediente_B.Apertura_4 :=1;

Se numero ricetta = 2 o 3 allora 2,3: Ingrediente_A.Apertura_4 :=1;

Ingrediente A apertura 4 = aperta (1) Ingrediente_B.Apertura_2 :=1;

Ingrediente B apertura 2 = aperta (1)

Se numero ricetta = 4, 5, 6 o 7 allora 4..7: Ingrediente_A.Apertura_4 :=1;

Ingrediente A apertura 4 = aperta (1) Ingrediente_B.Apertura_2 :=1;

Ingrediente B apertura 2 = aperta (1)

Se numero ricetta = 8, 11, 12 o 13 allora 8,11..13 Ingrediente_A.Apertura_1 :=1;

Ingrediente A apertura 1 = aperta (1) Ingrediente_B.Apertura_4 :=1;

Ingrediente B apertura 4 = aperta (1)

Altrimenti tutte le aperture = chiuse (0) ELSE

Ingrediente_A.Apertura_1 [:=]0;

Ingrediente_A.Apertura_4 [:=]0;

Ingrediente_B.Apertura_2 [:=]0;

Ingrediente_B.Apertura_4 [:=]0;

END_CASE;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 669

Page 670: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

FOR…DO Usare il ciclo FOR…DO per eseguire un’azione un numero specifico di volte prima di eseguire un’altra azione.

Operandi:

Testo strutturato

Operando Tipo Formato Descrizione

count SINT

INT

DINT

tag tag per la memorizzazione della posizione di conteggio nell’esecuzione di FOR…DO

initial_ value

SINT

INT

DINT

tag

espressione

immediato

deve restituire un numero

specifica il valore iniziale per il conteggio

final_ value

SINT

INT

DINT

tag

espressione

immediato

specifica il valore finale per il conteggio; determina quando uscire dal ciclo

increment SINT

INT

DINT

tag

espressione

immediato

(facoltativo) valore di incremento del conteggio per ogni ciclo

Se non si specifica un incremento, il conteggio viene incrementato di 1.

FOR conteggio:= valore_iniziale TO valore_finale BY incremento DO

<istruzione>;

END_FOR;

IMPORTANTE Non creare un numero eccessivo di iterazioni all’interno del ciclo in una singola scansione.

• Il controllore non esegue altre istruzioni della routine finché non completa il ciclo.

• Se il tempo necessario per completare il ciclo è maggiore del timer di watchdog per l’attività, si verificherà un errore grave.

• Provare a utilizzare un costrutto diverso, ad esempio IF...THEN.

670 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 671: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

Descrizione: La sintassi è:

I seguenti diagrammi mostrano come viene eseguito il ciclo FOR...DO e come un’istruzione EXIT produce un’uscita anticipata dal ciclo.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

FOR conteggio := valore_ iniziale

TO valore_finale

facoltativo { BY incremento Se non si specifica un incremento, il ciclo viene incrementato di 1.

DO

<istruzione>;

facoltativo

IF espressione_booleana THEN

EXIT; Se vi sono condizioni in cui si desidera uscire anticipatamente dal ciclo, usare altre istruzioni, ad esempio un costrutto IF...THEN, per condizionare un’istruzione EXIT.

END_IF;

END_FOR;

istruzione 1

istruzione 2

istruzione 3

istruzione 4

Eseguito x numero di volte?

no

resto della routine

istruzione 1

istruzione 2

istruzione 3

istruzione 4

Uscire?

Eseguito x numero di volte?

no

resto della routine

Il ciclo FOR…DO viene eseguito un numero specifico di volte.

Per arrestare il ciclo prima che il conteggio raggiunga l’ultimo valore, utilizzare un’istruzione EXIT.

no

Si verifica un errore grave se Tipo errore Codice errore

il ciclo del costrutto è troppo lungo 6 1

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 671

Page 672: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

Esempio 1:

Esempio 2:

Per Immettere questo testo strutturato

Azzerare i bit 0–31 in una matrice di BOOL:

1. Inizializzare il tag subscript a 0.

2. Azzerare array[ subscript ]. Ad esempio, quando subscript = 5, azzerare array[5].

3. Aggiungere 1 a subscript.

4. Se subscript è ≤ di 31, ripetere 2 e 3.

Altrimenti, arrestare.

For subscript:=0 to 31 by 1 do

array[subscript] := 0;

End_for;

Per Immettere questo testo strutturato

Un tipo di dati definito dall’utente (struttura) memorizza le seguenti informazioni su un articolo dell’inventario

• ID del codice a barre dell’articolo (tipo dati stringa)

• Quantità dell’articolo in magazzino (tipo dati DINT)

Una matrice della struttura descritta sopra contiene un elemento per ogni articolo dell’inventario. Si desidera cercare un prodotto specifico nella matrice (utilizzare il suo codice a barre) e determinare la quantità in magazzino.

1. Ottenere le dimensioni (numero di articoli) della matrice Inventory (inventario) e memorizzare il risultato in Inventory_Items (articoli inventario) (tag DINT).

2. Inizializzare il tag position a 0.

3. Se Barcode corrisponde all’ID di un articolo nella matrice, allora:

a. Impostare il tag Quantity tag = Inventory[position].Qty. In questo modo si avrà la quantità dell’articolo presente in magazzino.

b. Fine.

Barcode è un tag stringa che memorizza il codice a barre dell’articolo cercato. Ad esempio, quando position = 5, confrontare Barcode con Inventory[5].ID.

4. Aggiungere 1 a position.

5. Se position è ≤ di (Inventory_Items –1), ripetere 3 e 4. Poiché i numeri di elemento iniziano a 0, l’ultimo elementoequivale al numero di elementi nella matrice meno 1.

Altrimenti, arrestare.

SIZE(Inventory,0,Inventory_Items);

For position:=0 to Inventory_Items – 1 do

If Barcode = Inventory[position].ID then

Quantity := Inventory[position].Qty;

Exit;

End_if;

End_for;

672 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 673: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

WHILE…DO Utilizzare WHILE…DO per continuare a eseguire un’azione finché alcune condizioni sono vere.

Operandi:

Testo strutturato

Descrizione: La sintassi è:

Operando Tipo Formato Digitare

espressione_booleana

BOOL tag

espressione

Tag booleano o espressione booleana che restituisce un valore booleano

WHILE espressione_booleana DO

<istruzione>;

END_WHILE;

IMPORTANTE Non creare un numero eccessivo di iterazioni all’interno del ciclo in una singola scansione.

• Il controllore non esegue altre istruzioni della routine finché non completa il ciclo.

• Se il tempo necessario per completare il ciclo è maggiore del timer di watchdog per l’attività, si verificherà un errore grave.

• Provare a utilizzare un costrutto diverso, ad esempio IF...THEN.

WHILE espressione_booleana1 DO

<istruzione>; istruzioni da eseguire mentre espressione_booleana1 è vera

facoltativo

IF espressione_booleana2 THEN

EXIT; Se vi sono condizioni in cui si desidera uscire anticipatamente dal ciclo, usare altre istruzioni, ad esempio un costrutto IF...THEN, per condizionare un’istruzione EXIT.

END_IF;

END_WHILE;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 673

Page 674: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

I seguenti diagrammi mostrano come viene eseguito il ciclo WHILE...DO e come un’istruzione EXIT produce un’uscita anticipata dal ciclo.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esempio 1:

Mentre espressione_booleana è vera, il controllore esegue solo le istruzioni all’interno del loop WHILE…DO.

Per arrestare il ciclo prima che le condizioni diventino vere, usare un’istruzione EXIT.

istruzione 1

istruzione 2

istruzione 3

istruzione 4

Uscire?

Espressione booleana

vero

falso

resto della routine

no

istruzione 1

istruzione 2

istruzione 3

istruzione 4

Espressione booleana

vero

falso

resto della routine

Si verifica un errore grave se Tipo errore Codice errore

il ciclo del costrutto è troppo lungo 6 1

Per Immettere questo testo strutturato

Il ciclo WHILE...DO valuta prima le proprie condizioni. Se le condizioni sono vere, il controllore esegue le istruzioni all’interno del ciclo.

Vi è una differenza rispetto al ciclo REPEAT...UNTIL, dato che il ciclo REPEAT...UNTIL esegue le istruzioni nel costrutto e quindi stabilisce se le condizioni sono vere prima di eseguire di nuovo le istruzioni. Le istruzioni di un ciclo REPEAT...UNTIL vengono sempre eseguite almeno una volta. Le istruzioni di un ciclo WHILE...DO potrebbero non essere mai eseguite.

pos := 0;

While ((pos <= 100) & structarray[pos].value <> targetvalue)) do

pos := pos + 2;

String_tag.DATA[pos] := SINT_array[pos];

end_while;

674 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 675: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

Esempio 2:

Per Immettere questo testo strutturato

Spostare caratteri ASCII da una matrice SINT a un tag stringa (in una matrice SINT ogni elemento contiene un carattere.) Arrestare quando si raggiunge il ritorno a capo.

1. Inizializzare Element_number a 0.

2. Contare il numero di elementi in SINT_array (matrice contenente i caratteri ASCII) e memorizzare il risultato in SINT_array_size (tag DINT).

3. Se il carattere a SINT_array[element_number] = 13 (valore decimale del ritorno a capo), arrestare.

4. Impostare String_tag[element_number] = il carattere a SINT_array[element_number].

5. Aggiungere 1 a element_number. In questo modo, il controllore verifica il carattere successivo in SINT_array.

6. Impostare il membro Length di String_tag = element_number. Viene così memorizzato il numero di caratteri fino a quel momento in String_tag.

7. Se element_number = SINT_array_size, arrestare. Si è alla fine della matrice e questa non contiene un ritorno a capo.

8. Andare al 3.

element_number := 0;

SIZE(SINT_array, 0, SINT_array_size);

While SINT_array[element_number] <> 13 do

String_tag.DATA[element_number] := SINT_array[element_number];

element_number := element_number + 1;

String_tag.LEN := element_number;

If element_number = SINT_array_size then

exit;

end_if;

end_while;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 675

Page 676: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

REPEAT…UNTIL Utilizzare il ciclo REPEAT…UNTIL per continuare a eseguire un’azione finché le condizioni non diventano vere.

Operandi:

Testo strutturato

Descrizione: La sintassi è:

Operando Tipo Formato Digitare

espressione_booleana

BOOL tag

espressione

Tag booleano o espressione booleana che restituisce un valore booleano (espressione booleana)

REPEAT

<istruzione>;

UNTIL espressione_booleana

END_REPEAT;

IMPORTANTE Non creare un numero eccessivo di iterazioni all’interno del ciclo in una singola scansione.

• Il controllore non esegue altre istruzioni della routine finché non completa il ciclo.

• Se il tempo necessario per completare il ciclo è maggiore del timer di watchdog per l’attività, si verificherà un errore grave.

• Provare a utilizzare un costrutto diverso, ad esempio IF...THEN.

REPEAT

<istruzione>; istruzioni da eseguire mentre espressione_booleana1 è falsa

facoltativo

IF espressione_booleana2 THEN

EXIT; Se vi sono condizioni in cui si desidera uscire anticipatamente dal ciclo, usare altre istruzioni, ad esempio un costrutto IF...THEN, per condizionare un’istruzione EXIT.

END_IF;

UNTIL espressione_booleana1

END_REPEAT;

676 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 677: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

I seguenti diagrammi mostrano come viene eseguito il ciclo REPEAT...UNTIL e come un’istruzione EXIT produce un’uscita anticipata dal ciclo.

Indicatori di stato aritmetico: non influenzati

Condizioni di errore:

Esempio 1:

Mentre espressione_booleana è falsa, il controllore esegue solo le istruzioni all’interno del ciclo REPEAT…UNTIL.

Per arrestare il ciclo prima che le condizioni diventino false, usare un’istruzione EXIT.

istruzione 1istruzione 2istruzione 3istruzione 4…

Espressione booleana

falso

vero

resto della routineEspressione booleana

falso

vero

resto della routine

istruzione 1istruzione 2istruzione 3istruzione 4…Uscire? sì

no

Si verifica un errore grave se Tipo errore Codice errore

il ciclo del costrutto è troppo lungo 6 1

Per Immettere questo testo strutturato

Il ciclo REPEAT...UNTIL esegue le istruzioni del costrutto e quindi stabilisce se le condizioni sono vere prima di eseguire di nuovo le istruzioni.

Vi è una differenza rispetto al ciclo WHILE...DO, dato che il ciclo WHILE...DO valuta prima le proprie condizioni. Se le condizioni sono vere, il controllore esegue le istruzioni all’interno del ciclo. Le istruzioni di un ciclo REPEAT...UNTIL vengono sempre eseguite almeno una volta. Le istruzioni di un ciclo WHILE...DO potrebbero non essere mai eseguite.

pos := –1;

REPEAT

pos := pos + 2;

UNTIL ((pos = 101) OR (structarray[pos].value = targetvalue))

end_repeat;

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 677

Page 678: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

Esempio 2:

Per Immettere questo testo strutturato

Spostare caratteri ASCII da una matrice SINT a un tag stringa (in una matrice SINT ogni elemento contiene un carattere.) Arrestare quando si raggiunge il ritorno a capo.

1. Inizializzare Element_number a 0.

2. Contare il numero di elementi in SINT_array (matrice contenente i caratteri ASCII) e memorizzare il risultato in SINT_array_size (tag DINT).

3. Impostare String_tag[element_number] = il carattere a SINT_array[element_number].

4. Aggiungere 1 a element_number. In questo modo, il controllore verifica il carattere successivo in SINT_array.

5. Impostare il membro Length di String_tag = element_number. Viene così memorizzato il numero di caratteri fino a quel momento in String_tag.

6. Se element_number = SINT_array_size, arrestare. Si è alla fine della matrice e questa non contiene un ritorno a capo.

7. Se il carattere a SINT_array[element_number] = 13 (valore decimale del ritorno a capo), arrestare.

Altrimenti, andare al 3.

element_number := 0;

SIZE(SINT_array, 0, SINT_array_size);

Repeat

String_tag.DATA[element_number] := SINT_array[element_number];

element_number := element_number + 1;

String_tag.LEN := element_number;

If element_number = SINT_array_size then

exit;

end_if;

Until SINT_array[element_number] = 13

end_repeat;

678 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 679: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Programmazione in testo strutturato Appendice C

Commenti Usare i commenti per semplificare l’interpretazione del testo strutturato.

• I commenti consentono di usare linguaggio naturale per descrivere il funzionamento del testo strutturato.

• I commenti non influenzano l’esecuzione del testo strutturato.

Per aggiungere commenti al testo strutturato:

Per aggiungere un commento Utilizzare uno di questi formati

su una riga //commento

(*commento*)

/*commento*/

alla fine di una riga di testo strutturato

in una riga di testo strutturato (*commento*)

/*commento*/

su più righe (*inizio commento . . . fine commento*)

/*inizio commento . . . fine commento*/

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 679

Page 680: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Appendice C Programmazione in testo strutturato

Ad esempio:

Formato Esempio

//commento All’inizio di una riga

//Verifica direzione nastro trasportatore

IF direzione_nastro THEN...

Alla fine di una riga

ELSE //Se nastro fermo, imposta spia allarme

spia := 1;

END_IF;

(*commento*) Apertura.Zucchero[:=]1;(*apri apertura*)

IF Zucchero.Basso(*livello minimo LS*)& Zucchero.Alto(*livello massimo LS*)THEN...

(*Controlla la velocità della pompa di ricircolo. La velocità dipende dalla temperatura nel serbatoio.*)

IF temp.serbatoio> 200 THEN...

/*commento*/ Apertura.Zucchero[:=]0;(*chiudi apertura*)

IF codice_barre=65 /*A*/ THEN...

/*Ottiene il numero di elementi nella matrice inventario e memorizza il valore nel tag Voci_Inventario*/

SIZE(Inventorio,0,Voci_Inventario);

680 Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 681: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice analitico

Aabilitazione interrupt utente 448addizione 250aggancio dati 634allarme digitale 30allarmi 496AND booleano 314AND di bit 302arcocoseno 524arcoseno 521arcotangente 527aritmetica e logica di file 331ASCII

assegnazione di testostrutturato 655

assegnazionecarattere ASCII 655non ritentiva 654ritentiva 653

assume data available 637, 638, 639attributi

conversione di tipi di dati 627valori immediati 627

attributi comuni 627conversione di tipi di dati 627valori immediati 627

aziona task evento 458azzera 296

BBAND 314banda morta 506bias dell’uscita 507BNOT 323BOR 317break 467BXOR 320

Ccache

connessione 170calcolo 246cancella buffer ASCII 567caratteri ASCII in buffer 565carica FIFO 388carica LIFO 400carica sequenziatore 422CASE 667codici di errore

istruzione MSG 150codici errore

ASCII 560

codici prodotto 178commenti

testo strutturato 679compensazione anticipata 507concatenazione stringhe 593condizioni di overflow 640configurazione 156

istruzione MSG 156istruzione PID 494

confronto 204confronto bit di file 472connessione

cache 170connettore

diagramma a blocchi funzione 633connettore filo ingresso 633connettore filo uscita 633contare in modo decrementale 130contare in modo incrementale 126controllo Programma/Operatore

panoramica 646conversione di tipi di dati 627conversione in BCD 548conversione in interi 551conversione in scala 497copiare 350copiatura sincrona 350coseno 515costrutto

testo strutturato 663count up/down 134

Dda DINT a stringa 611da REAL a stringa 613da stringa A DINT 606da stringa a REAL 608descrizione

testo strutturato 679deviazione standard 370diagramma a blocchi funzione

creazione di un ritardo di scansione 639

risoluzione del flusso di dati tra blocchi 638

risoluzione di un loop 637selezione elementi 633

dimensione in elementi 375disabilitazione interrupt utente 448distribuisci campo di bit 290distribuisci campo di bit con

Target 293diverso 240divisione 259divisione modulo 264documento

testo strutturato 679

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 682: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

682 Indice analitico

Eelementi

istruzione SIZE 375eliminare stringhe 595esecuzione, ordine 636esponenziale 538espressione

espressione booleanatesto strutturato 655

espressione numericatesto strutturato 655

ordine di esecuzionetesto strutturato 661

testo strutturatofunzione 657operatori aritmetici 657operatori bit a bit 661operatori logici 660operatori relazionali 658panoramica 655

espressione booleanatesto strutturato 655

espressione numerica 655espressioni

formato 206, 248, 341, 347operatori validi 206, 248, 340, 347ordine delle operazioni 207, 249, 341,

348etichetta 428, 619, 623examine if open 78

Ffine temporanea 444FOR…DO 670funzione

testo strutturato 657

Ggradi 542

IICON 633IF...THEN 664imposta valore di sistema 173indicatori di

stato aritmeticooverflow 640

inserisci stringhe 599IREF 633istruzione ABL 562istruzione ABS 275istruzione ACB 565istruzione ACL 567

istruzione ACS 524istruzione ADD 250istruzione AFI 450istruzione AHL 569istruzione ALMA 42istruzione ALMD, istruzioni di allarmi ed

eventiALMD 30

istruzione AND 302istruzione ARD 573istruzione ARL 577istruzione ASN 521istruzione ATN 527istruzione AVE 360istruzione AWA 581istruzione AWT 586istruzione BRK 467istruzione BSL 380istruzione BSR 384istruzione BTD 290istruzione BTDT 293istruzione CLR 296istruzione CMP 204istruzione CONCAT 593istruzione COP 350istruzione COS 515istruzione CPS 350istruzione CPT 246istruzione CTU 126istruzione CTUD 134istruzione DDT

modalità di ricerca 481operandi 479

istruzione DEG 542istruzione DELETE 595istruzione di attivazione task

evento 458istruzione di fine transizione 452istruzione di uscita immediata 198istruzione DIV 259istruzione DTOS 611istruzione DTR 486istruzione EOT 452istruzione EQU 209istruzione EVENT 458istruzione FAL

modalità operativa 326operandi 331

istruzione FBCmodalità di ricerca 474operandi 472

istruzione FFL 388istruzione FFU 394istruzione FIND 597istruzione FLL 356istruzione FOR 464istruzione FRD 551istruzione FSC

modalità operativa 326operandi 342

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 683: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice analitico 683

istruzione GEQ 213istruzione GRT 217istruzione GSV

oggetti 176operandi 173

istruzione INSERT 599istruzione IOT 198Istruzione JMP 428istruzione JMP 619, 623istruzione JSR 430istruzione JXR

struttura di controllo 442istruzione LBL 428, 619, 623istruzione LEQ 221istruzione LES 225istruzione LFL 400istruzione LFU 406istruzione LIM 229istruzione LN 532istruzione LOG 535istruzione LOWER 617istruzione MCR 446istruzione MEQ 235istruzione MID 601istruzione MOD 264Istruzione MOV 281istruzione MSG 156

codici di errore 150connessione con cache 170metodo di comunicazione 169operandi 142regole di programmazione 172struttura 142

istruzione MUL 256Istruzione MVM 283Istruzione MVMT 286istruzione NEG 272istruzione NOP 451istruzione NOT 311istruzione ONS 86istruzione OR 305istruzione OSF 92istruzione OSFI 97istruzione OSR 89istruzione OSRI 94istruzione OTE 80istruzione OTL 82istruzione OTU 84istruzione pausa SFC 454istruzione PID

allarmi 496banda morta 506bias dell’uscita 507compensazione anticipata 507configurazione 494conversione in scala 497messa a punto 495

operandi 489istruzione RAD 545istruzione RES 139istruzione RET 430, 468istruzione ripristina SFC 456istruzione RTO 110istruzione RTOR 122istruzione RTOS 613istruzione SBR 430istruzione sempre falso 450istruzione SFP 454istruzione SFR 456istruzione SIN 512istruzione SIZE 375istruzione SQI 414istruzione SQL 422istruzione SQO 418istruzione SQR 268istruzione SRT 365istruzione SSV

oggetti 176operandi 173

istruzione STOD 606istruzione STOR 608istruzione SUB 253Istruzione SWPB 298istruzione TAN 518istruzione TND 444istruzione TOD 548istruzione TOF 106istruzione TOFR 118istruzione TON 102istruzione TONR 114istruzione TRN 553istruzione UID 448istruzione UIE 448istruzione UPPER 615istruzione XIO 78istruzione XOR 308istruzione XPY 538istruzioni

allarmi ed eventi 29bit 75calcolo 245confronto 203contatore 101controllo programma 427conversione 541conversione ASCII 603conversione matematica 541conversione stringhe 603debug 619for/break 463input/output 141logiche 279manipolazione stringhe 591manipolazione stringhe ASCII 591

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 684: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

684 Indice analitico

matrice movimento 279porta seriale 557porta seriale ASCII 557scorrimento 379sequenziatore 413speciali 471timer 101trigonometriche 511

istruzioni ASCIIABL 562ACB 565ACL 567AHL 569ARD 573ARL 577AWA 581AWT 586CONCAT 593DELETE 595DTOS 611FIND 597INSERT 599LOWER 617MID 601RTOS 613STOD 606STOR 608SWPB 298UPPER 615

istruzioni CTD 130istruzioni di allarmi ed eventi

accesso programmatico 68ALMA, allarme analogico 42buffer degli allarmi 67configurazione 61esecuzione degli allarmi del controllore

71soppressione o disabilitazione degli

allarmi 70stato allarme 67testo di un messaggio 64

istruzioni di bitintroduzione 75ONS 86OSF 92OSFI 97OSR 89OSRI 94OTE 80OTL 82OTU 84XIO 78

istruzioni di calcoloABS 275ADD 250CPT 246DIV 259formato dell’espressione 248, 341introduzione 245MOD 264MUL 256NEG 272operatori validi 248, 340ordine delle operazioni 249, 341SQR 268SUB 253

istruzioni di confrontoCMP 204EQU 209formato dell’espressione 206, 347GEQ 213GRT 217introduzione 203LEQ 221LES 225LIM 229MEQ 235NEQ 240operatori validi 206, 347ordine delle operazioni 207, 348

istruzioni di contatoriCTD 130CTU 126CTUD 134introduzione 101RES 139

istruzioni di controllo programmaAFI 450EOT 452evento 458introduzione 427JMP 428, 619, 623JSR 430LBL 428, 619, 623MCR 446NOP 451RET 430SBR 430TND 444UID 448UIE 448

istruzioni di conversioneDEG 542FRD 551introduzione 541RAD 545TOD 548TRN 553

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 685: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice analitico 685

istruzioni di conversione matematicaDEG 542FRD 551introduzione 541RAD 545TOD 548TRN 553

istruzioni di conversione stringheDTOS 611introduzione 603LOWER 617RTOS 613STOD 606STOR 608SWPB 298UPPER 615

istruzioni di debug 619istruzioni di I/O

GSV 173introduzione 141IOT 198MSG 142SSV 173

istruzioni di manipolazione stringheCONCAT 593DELETE 595FIND 597INSERT 599introduzione 591MID 601

istruzioni di matematica avanzataintroduzione 531LN 532LOG 535XPY 538

istruzioni di matriceAVE 360BSL 380BSR 384COP 350CPS 350DDT 479FAL 331FBC 472FFL 388FFU 394file/varie 325FLL 356FSC 342LFL 400LFU 406

modalità operativa 326RES 139scorrimento 379sequenziatore 413SIZE 375SQI 414SQL 422SQO 418SRT 365STD 370

istruzioni di movimentoBTD 290BTDT 293CLR 296introduzione 279MOV 281MVM 283MVMT 286

istruzioni di movimento/logicheBAND 314BNOT 323BOR 317BXOR 320

istruzioni di scorrimentoBSL 380BSR 384FFL 388FFU 394introduzione 379LFL 400LFU 406

istruzioni di timerintroduzione 101RES 139RTO 110RTOR 122TOF 106TOFR 118TON 102TONR 114

istruzioni file. Vedere istruzioni di matrici

istruzioni for/breakBRK 467FOR 464introduzione 463RET 468

istruzioni logicheAND 302introduzione 279NOT 311OR 305XOR 308

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 686: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

686 Indice analitico

istruzioni NEQ 240istruzioni porta seriale

ABL 562ACB 565ACL 567AHL 569ARD 573ARL 577AWA 581AWT 586introduzione 557

istruzioni sequenziatoreintroduzione 413SQI 414SQL 422SQO 418

istruzioni specialiDDT 479DTR 486FBC 472introduzione 471PID 489SFP 454SFR 456

istruzioni STD 370istruzioni trigonometriche

ACS 524ASN 521ATN 527COS 515introduzione 511SIN 512TAN 518

Llettura ASCII 573lettura linea ASCII 577limite 229LOG

base 10 535naturale 532

logaritmo in base 10 535logaritmo naturale 532loop di feedback

diagramma a blocchi funzione 637loop non risolto

diagramma a blocchi funzione 637lower case 617

Mmaggiore di 217maggiore di o uguale a 213maschere 487media 360messa a punto 495messaggio 142

connessioni cache 170regole di programmazione 172

minore di 225minore di o uguale a 221modalità continua 326modalità di ricerca 474, 481modalità di temporizzazione 641modalità discreta 327modalità incrementale 329modalità operativa 326moltiplicazione 256movimento 281

Nnegazione 272nessuna operazione 451NOT booleano 323NOT di bit 311

OOCON 633oggetti

CONTROLLER 177CONTROLLERDEVICE 178CST 179DF1 181FAULTLOG 184istruzione GSV/SSV 176MESSAGE 185MODULE 187MOTIONGROUP 188PROGRAM 189ROUTINE 190SERIALPORT 190TASK 192WALLCLOCKTIME 194

oggetto CONTROLLER 177oggetto CONTROLLERDEVICE 178oggetto CST 179oggetto DF1 181oggetto FAULTLOG 184oggetto MESSAGE 185oggetto MODULE 187

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 687: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice analitico 687

oggetto MOTIONGROUP 188oggetto PROGRAM 189oggetto ROUTINE 190oggetto SERIALPORT 190oggetto TASK 192oggetto WALLCLOCKTIME 194one shot 86one shot falling 92one shot falling with input 97one shot rising 89one shot rising with input 94operatore 206, 248, 340, 347

ordine di esecuzionetesto strutturato 661

operatori aritmeticitesto strutturato 657

operatori bit a bittesto strutturato 661

operatori logicitesto strutturato 660

operatori matematicitesto strutturato 657

operatori relazionalitesto strutturato 658

OR booleano 317OR di bit 305OR di bit esclusivo 308OR esclusivo booleano 320ordina 365ordine delle operazioni 207, 249, 341, 348ordine di esecuzione 636

espressione di testo strutturato 661OREF 633ottieni valore di sistema 173output energize 80output latch 82output unlatch 84

Ppost-scansione

testo strutturato 654proporzionale, integrale e

derivativo 489

Rradianti 545radice quadrata 268REPEAT…UNTIL 676reset 139reset controllo master 446retentive timer on 110retentive timer on with reset 122ricerca e confronta file 342ricerca stringhe 597riempi file 356

riferimento ingresso 633riferimento uscita 633righe handshake ASCII 569rileva diagnostica 479ritardo scansione

diagramma a blocchi funzione 639ritorno 430, 468

Ssalta a subroutine 430salto 428, 619, 623scarica FIFO 394scarica LIFO 406scrittura ASCII 586scrittura con aggiunta ASCII 581seno 512sequenziatore di ingresso 414sequenziatore di uscita 418sottrazione 253sovrapposizione 192sposta bit a destra 384sposta bit a sinistra 380spostamento con maschera 283spostamento mascherato

con target 286status

TASK 192stringa

valutazione nel testo strutturato 659

stringa intermedia 601struttura COMPARE 473, 480struttura CONTROL 332, 380, 384, 389, 395,

400, 401, 407struttura COUNTER 126, 130struttura di CONTROL 342struttura di controllo 361, 365, 370, 414,

418, 422, 442struttura FBD_ COMPARE 210, 214, 218,

222, 226, 241struttura FBD_ LIMIT 230struttura FBD_BIT_FIELD_

DISTRIBUTE 293struttura FBD_BOOLEAN_AND 314struttura FBD_BOOLEAN_NOT 323struttura FBD_BOOLEAN_OR 317struttura FBD_BOOLEAN_XOR 320struttura FBD_CONVERT 548, 551struttura FBD_COUNTER 134struttura FBD_LOGICAL 303, 306, 309, 312struttura FBD_MASK_ EQUAL 236struttura FBD_MASKED_MOVE 286struttura FBD_MATH 251, 254, 257, 260,

265, 273, 539struttura FBD_MATH_ADVANCED 269,

276, 512, 516, 519, 521, 524, 527, 532, 536, 542, 545

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 688: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

688 Indice analitico

struttura FBD_ONESHOT 94, 97struttura FBD_TIMER 114, 118, 122struttura FBD_TRUNCATE 553struttura messaggio 142struttura PID 490struttura RESULT 473, 480struttura SERIAL_PORT_CONTROL 558,

560, 562, 565, 570, 574, 578, 582, 587

struttura STRINGA 559, 592, 605struttura TIMER 102, 106, 110strutture

COMPARE 473, 480CONTROL 332, 342, 361, 365, 370, 380,

384, 389, 395, 400, 401, 407, 414, 418, 422

COUNTER 126, 130FBD_BIT_FIELD_DISTRIBUTE 293FBD_BOOLEAN_AND 314FBD_BOOLEAN_NOT 323FBD_BOOLEAN_OR 317FBD_BOOLEAN_XOR 320FBD_COMPARE 210, 214, 218, 222, 226,

241FBD_CONVERT 548, 551FBD_COUNTER 134FBD_LIMIT 230FBD_LOGICAL 303, 306, 309, 312FBD_MASKED_MOVE 286FBD_MASK_EQUAL 236FBD_MATH 251, 254, 257, 260, 265,

273, 539FBD_MATH_ADVANCED 269, 276, 512,

516, 519, 521, 524, 527, 532, 536, 542, 545

FBD_ONESHOT 94, 97FBD_TIMER 114, 118, 122FBD_TRUNCATE 553istruzione RES 139MESSAGE 142PID 490RESULT 473, 480SERIAL_PORT_CONTROL 558, 560, 562,

565, 570, 574, 578, 582, 587STRING 559, 592, 605stringa 559, 592, 605TIMER 102, 106, 110

subroutine 430swap byte 298

Ttangente 518TASK

attivazione tramite tag consumato 198

aziona task evento 458configurazione programmatica 192monitoraggio 192

task eventoattivazione tramite istruzione EVENT 458attivazione tramite tag

consumato 198configurazione 192

test ASCII per linea buffer 562testo strutturato

assegnare un carattere ASCII 655assegnazione 653assegnazione non ritentiva 654CASE 667commenti 679componenti 651costrutti 663espressione 655espressione numerica 655FOR…DO 670funzione 657IF...THEN 664operatori aritmetici 657operatori bit a bit 661operatori logici 660operatori relazionali 658REPEAT…UNTIL 676valutazione delle stringhe 659WHILE…DO 673

timeoutconfigurazione di task evento 192

timer off delay 106timer off delay with reset 118timer on delay 102timer on delay with reset 114tipo di dati stringa 559, 592, 605transizione dati 486tronca 553

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 689: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Indice analitico 689

Uuguale a 209uguale mascherato 235upper case 615uscita

abilitazione o disabilitazione dell’elaborazione alla fine del task 192

aggiornamento immediato 198uscita immediata 198uso di tipi di dati misti 627

Vvalore assoluto 275valori immediati 627

WWHILE…DO 673

XX alla potenza di Y 538

Pubblicazione 1756-RM003K-IT-P – Luglio 2008

Page 690: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Codici dei caratteri ASCII

Carattere Dec. Esad.

[ctrl-@] NUL 0 $00

[ctrl-A] SOH 1 $01

[ctrl-B] STX 2 $02

[ctrl-C] ETX 3 $03

[ctrl-D] EOT 4 $04

[ctrl-E] ENQ 5 $05

[ctrl-F] ACK 6 $06

[ctrl-G] BEL 7 $07

[ctrl-H] BS 8 $08

[ctrl-I] HT 9 $09

[ctrl-J] LF 10 $l ($0A)

[ctrl-K] VT 11 $0B

[ctrl-L] FF 12 $0C

[ctrl-M] CR 13 $r ($0D)

[ctrl-N] SO 14 $0E

[ctrl-O] SI 15 $0F

[ctrl-P] DLE 16 $10

[ctrl-Q] DC1 17 $11

[ctrl-R] DC2 18 $12

[ctrl-S] DC3 19 $13

[ctrl-T] DC4 20 $14

[ctrl-U] NAK 21 $15

[ctrl-V] SYN 22 $16

[ctrl-W] ETB 23 $17

[ctrl-X] CAN 24 $18

[ctrl-Y] EM 25 $19

[ctrl-Z] SUB 26 $1A

ctrl-[ ESC 27 $1B

[ctrl-\] FS 28 $1C

ctrl-] GS 29 $1D

[ctrl-^] RS 30 $1E

[ctrl-_] US 31 $1F

SPACE 32 $20

! 33 $21

“ 34 $22

# 35 $23

$ 36 $24

% 37 $25

& 38 $26

‘ 39 $27

( 40 $28

) 41 $29

* 42 $2A

+ 43 $2B

, 44 $2C

- 45 $2D

. 46 $2E

/ 47 $2F

0 48 $30

1 49 $31

2 50 $32

3 51 $33

4 52 $34

5 53 $35

6 54 $36

7 55 $37

8 56 $38

9 57 $39

: 58 $3A

; 59 $3B

< 60 $3C

= 61 $3D

> 62 $3E

? 63 $3F

Carattere Dec. Esad.

@ 64 $40

a 65 $41

B 66 $42

c 67 $43

D 68 $44

e 69 $45

f 70 $46

g 71 $47

h 72 $48

i 73 $49

j 74 $4A

k 75 $4B

l 76 $4C

m 77 $4D

n 78 $4E

o 79 $4F

p 80 $50

q 81 $51

r 82 $52

s 83 $53

T 84 $54

u 85 $55

v 86 $56

w 87 $57

X 88 $58

y 89 $59

z 90 $5A

[ 91 $5B

\ 92 $5C

] 93 $5D

^ 94 $5E

_ 95 $5F

Carattere Dec. Esad.

‘ 96 $60

a 97 $61

b 98 $62

c 99 $63

d 100 $64

e 101 $65

f 102 $66

g 103 $67

h 104 $68

i 105 $69

j 106 $6A

k 107 $6B

l 108 $6C

m 109 $6D

n 110 $6E

o 111 $6F

p 112 $70

q 113 $71

r 114 $72

s 115 $73

t 116 $74

u 117 $75

v 118 $76

w 119 $77

X 120 $78

y 121 $79

z 122 $7A

{ 123 $7B

| 124 $7C

} 125 $7D

~ 126 $7E

DEL 127 $7F

Carattere Dec. Esad.

Page 691: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE
Page 692: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Assistenza Rockwell Automation

Rockwell Automation fornisce informazioni tecniche sul web per assistere i clienti nell’utilizzo dei prodotti. Collegandosi al sito http://support.rockwellautomation.com, è possibile consultare manuali tecnici, una knowledge base di Domande frequenti, note tecniche e applicative, codici campione e collegamenti ai service pack del software nonché utilizzare la funzione MySupport personalizzabile per ottimizzare l’utilizzo di questi strumenti.

Per ricevere ulteriore assistenza tecnica telefonica per l’installazione, la configurazione e la ricerca guasti, sono disponibili i programmi di assistenza TechConnect. Per maggiori informazioni, rivolgersi al distributore o al rappresentante Rockwell Automation di zona, oppure consultare il sito web http://support.rockwellautomation.com.

Assistenza per l’installazione

Se si riscontra un problema relativo ad un modulo hardware entro le prime 24 ore dall’installazione, si prega di consultare le informazioni contenute in questo manuale. Per ottenere assistenza per la configurazione e la messa in servizio del modulo, è inoltre possibile contattare l’Assistenza Clienti:

Restituzione di prodotti nuovi non funzionanti

Rockwell collauda tutti i prodotti per garantirne la completa funzionalità al momento della spedizione dall’impianto di produzione. Tuttavia, nel caso il prodotto non fosse funzionante e dovesse essere restituito, procedere come segue:

Back Cover

Stati Uniti 1.440.646.3223Lunedì – Venerdì, 8–17 Ora della costa orientale

Fuori dagli Stati Uniti

Per qualsiasi problema di assistenza tecnica, si prega di contattare il rappresentante Rockwell Automation di zona.

Stati Uniti Rivolgersi al proprio distributore. Per completare la procedura di reso è necessario fornire al distributore il numero di pratica attribuito dall’Assistenza Clienti (chiamare il numero telefonico sopra indicato per ottenerne uno).

Fuori dagli Stati Uniti

Per la procedura di reso, si prega di contattare il rappresentante Rockwell Automation di zona.

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 691Sostituisce la pubblicazione 1756-RM003I-IT-P – Gennaio 2007 Copyright © 2008 Rockwell Automation, Inc. Tutti i diritti riservati. Stampato negli U.S.A.

Page 693: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE
Page 694: 1756-RM003K-IT, Istruzioni generali per controllori Logix5000 · 2012-03-20 · Identifica informazioni importanti per la buona applicazione e comprensione del prodotto. ATTENZIONE

Pubblicazione 1756-RM003K-IT-P – Luglio 2008 Anno 693

Titolo PubblicazioneTipo di pubblicazione


Recommended