logic lab manual

221
Manuale utente Rev. 4.0 - Marzo 2012

Upload: rivoletto

Post on 20-Dec-2015

364 views

Category:

Documents


44 download

DESCRIPTION

Logic Lab Manual

TRANSCRIPT

Manuale utente

Rev. 4.0 - Marzo 2012

II LogicLab manuale utente

LogicLab manuale utente

Rev. 4.0 - 23-03-2012

Published by Axel S.r.l.

Via del Cannino, 3

21020 Crosio della Valle (VA)

© Axel S.r.l. 2010.

All Rights Reserved.

LogicLab manuale utente III

Contents

1. Visione di insieme 1

1.1 Area di lavoro 1

1.1.1 Lafinestradioutput 2

1.1.2 La barra di stato 2

1.1.3 La barra dei documenti 2

1.1.4 Lafinestrawatch 3

1.1.5 Lafinestradellelibrerie 3

1.1.6 Lafinestradilavoro 5

1.1.7 Editor del codice sorgente 6

2. Quick start 7

2.1 Setupprocedura 7

2.2 Usare l’IDE 8

2.3 Unesempiopiu’complesso 13

3. Usare l’ambiente 15

3.1 Personalizzazione del Layout 15

3.2 Toolbars 15

3.2.1 Mostrare/nascondere le barre 15

3.2.2 Spostarelebarre 15

3.3 Lefinestrefisse 16

3.3.1 Mostrare/nasconderelefinestredistrumenti 16

3.3.2 Spostarelefinestredistrumenti 18

3.4 Lavorareconlefinestre 19

3.4.1 La barra document 19

3.4.2 Ilmenuwindow 20

3.5 Modalita’ schermo intero 20

3.6 Opzionid’ambiente 21

4. Gestire i progetti 23

4.1 Creareunnuovoprogetto 23

4.2 Caricareilprogettodalsistematarget 23

4.3 Salvareilprogetto 25

4.3.1 Mantenerelemodifichealprogetto 25

4.3.2 Salvare in una diversa locazione 25

4.4 Gestireiprogettiesistenti 26

4.4.1 AprireunprogettoesistentediLogicLab 26

4.4.2 Modificareilprogetto 26

4.4.3 Chiudereilprogetto 26

IV LogicLab manuale utente

4.5 Distribuireiprogetti 26

4.6 Opzionidelprogetto 27

4.7 Selezionare il sistema target 28

4.8 Lavorare con le librerie 28

4.8.1 Il gestore della libreria 28

4.8.2 Esportareadunalibreria 30

4.8.3 Importaredaunalibreriaoun’altrafonte 31

5. Gestire gli elementi del progetto 33

5.1 Program Organization Units 33

5.1.1 Creare una nuova Program Organization Unit 33

5.1.2 ModificarelePOUs 34

5.1.3 Cancellare le POU 36

5.1.4 Criptareilcodicesorgente 36

5.2 Variabili 37

5.2.1 Variabili globali 37

5.2.2 Variabili locali 43

5.3 Task 44

5.3.1 Assegnareunprogrammaaduntask 44

5.3.2 Configurazionedeitask 45

5.4 Tipididatiderivati 45

5.4.1 Typedef 45

5.4.2 Strutture 47

5.4.3 Enumerativi 49

5.4.4 Subrange 50

5.5 Navigareilprogetto 52

5.5.1 Objectbrowser 53

5.5.2 RicercaconilcomandoFindinproject 61

5.6 Lavorare con le estensioni di LogicLab 63

6. Modificareilcodicesorgente 65

6.1 Editor Instruction List (IL) 65

6.1.1 Modificarelefunzioni 65

6.1.2 RiferimentoaglioggettiPLC 65

6.1.3 Locazione automatica dell’errore 66

6.1.4 Segnalibri 66

6.2 Editor Structured Text (ST) 66

6.2.1 CreareemodificareoggettiST 66

6.2.2 Modificarelefunzioni 67

6.2.3 RiferimentoadoggettiPLC 67

6.2.4 Locazione automatica dell’errore 67

LogicLab manuale utente V

6.2.5 Segnalibri 67

6.3 Editor Ladder Diagram (LD) 68

6.3.1 Creare un nuovo documento LD 68

6.3.2 Aggiungere/rimuoverenetwork 68

6.3.3 Etichettareinetwork 69

6.3.4 Inserire i contatti 69

6.3.5 Inserire le uscite 70

6.3.6 Inserire i blocchi 71

6.3.7 Modificareleproprieta’delleusciteedeicontatti 71

6.3.8 Modificareinetwork 71

6.3.9 Modificareleproprieta’deiblocchi 71

6.3.10 Acquisireinformazionidaunblocco 72

6.3.11 Rilevazione automatica dell’errore 72

6.4 Editor Function Block Diagram (FBD) 72

6.4.1 Creare un nuovo documento FBD 72

6.4.2 Aggiungere/rimuoverenetwork 72

6.4.3 Etichettareinetwork 73

6.4.4 Inserire e connettere i blocchi 73

6.4.5 Modificareinetwork 74

6.4.6 Modificareleproprieta’deiblocchi 74

6.4.7 Acquisireinformazionisuunblocco 75

6.4.8 Rilevazione automatica dell’errore 75

6.5 Editor Sequential Function Chart (SFC) 75

6.5.1 Creare un nuovo documento SFC 75

6.5.2 Inserire un nuovo elemento SFC 75

6.5.3 Connettere elementi SFC 76

6.5.4 Assegnareun’azioneadunostep 76

6.5.5 Specificareunacostante/variabilecomecondizionediunatransizione 77

6.5.6 Assegnare codice condizionale ad una transizione 78

6.5.7 Specificareladestinazionediunjump 79

6.5.8 ModificareunnetworkSFC 80

6.6 Editor delle variabili 80

6.6.1 Aprireuneditordivariabili 80

6.6.2 Creare una nuova variabile 81

6.6.3 Modificarelevariabili 82

6.6.4 Cancellare le variabili 84

6.6.5 Ordinare le variabili 85

6.6.6 Copiarelevariabili 85

7. Compilare 87

7.1 Compilareilprogetto 87

7.1.1 Caricareunfileimmagine 87

VI LogicLab manuale utente

7.2 Outputdelcompilatore 88

7.2.1 Erroridelcompilatore 88

7.3 CompilatoreCommand-line 90

8. Lanciare l’applicazione 91

8.1 Impostarelacomunicazione 91

8.1.1 Salvarel’ultimaportadicomunicazioneusata 93

8.2 Stato on-line 93

8.2.1 Stato della connessione 93

8.2.2 Statodell’applicazione 93

8.3 Eseguireildownloaddell’applicazione 94

8.3.1 Controllare il codice sorgente scaricato 94

8.4 Simulazione 96

9. Debug 97

9.1 Finestra Watch 97

9.1.1 Aprireechiuderelafinestrawatch 97

9.1.2 Aggiungereoggettiallafinestrawatch 98

9.1.3 Rimuovere una variabile 101

9.1.4 Aggiornamento dei valori 101

9.1.5 Cambiareilformatodiundato 102

9.1.6 Lavorareconunawatchlist 103

9.2 Oscilloscopio 104

9.2.1 Aprireechiuderel’oscilloscopio 105

9.2.2 Aggiungerevociall’oscilloscopio 106

9.2.3 Eliminare una variabile 108

9.2.4 Variabilidiesempio 108

9.2.5 Controllare i dati acquisiti e visualizzarli 109

9.2.6 Cambiareilpollingrate 115

9.2.7 Salvareestampareilgrafico 116

9.3 Modalitàdimodificaedebug 117

9.4 Debug live 118

9.4.1 Animazione SFC 119

9.4.2 Animazione LD 119

9.4.3 Animazione FBD 120

9.4.4 Animazione IL e ST 120

9.5 Trigger 120

9.5.1 Finestra dei Trigger 120

9.5.2 Debugconlafinestratirgger 127

9.6 Triggergrafici 138

9.6.1 Finestradeitriggergrafici 138

LogicLab manuale utente VII

9.6.2 Debugconlafinestradeitriggergrafici 144

10. Elementi LogicLab 155

10.1 Elementi dei menu 155

10.1.1 Menufile 155

10.1.2 Menu Edit 156

10.1.3 MenuView 156

10.1.4 Menu Project 157

10.1.5 Menu Debug 158

10.1.6 Menu Communication 158

10.1.7 Menu Scheme 159

10.1.8 Menu Variables 160

10.1.9 MenuDefinitions 160

10.1.10 MenuWindow 160

10.1.11 MenuHelp 160

10.2 Elementi Toolbars 160

10.2.1 Toolbarprincipale 161

10.2.2 Toolbar FBD 162

10.2.3 Toolbar LD 163

10.2.4 Toolbar SFC 164

10.2.5 Toolbar Project 165

10.2.6 ToolbarNetwork 166

10.2.7 Toolbar Debug 166

11. Riferimenti di linguaggio 167

11.1 Elementi comuni 167

11.1.1 Elementi base 167

11.1.2 Tipididatielementari 167

11.1.3 Tipididatoderivati 168

11.1.4 Costanti letterali 170

11.1.5 Variabili 171

11.1.6 Program Organization Units 175

11.1.7 Funzioni standard IEC 61131-3 177

11.2 Instruction List (IL) 191

11.2.1 Sintassi e semantica 191

11.2.2 Operatoristandard 192

11.2.3 Chiamateafunzionieblocchidifunzione 193

11.3 Function Block Diagram (FBD) 194

11.3.1 Rappresentazionedilineeeblocchi 194

11.3.2 Direzionediflussoneinetwork 194

11.3.3 Valutazionedeinetwork 195

11.3.4 Elementi di controllo dell’esecuzione 196

11.4 Ladder Diagram (LD) 197

VIII LogicLab manuale utente

11.4.1 Powerrails 197

11.4.2 Elementi Link e stati 198

11.4.3 Contatti 199

11.4.4 Uscite 199

11.4.5 Operatori,funzionieblocchifunzioni 200

11.5 Structured Text (ST) 201

11.5.1 Espressioni 201

11.5.2 Dichiarazioni in ST 202

11.6 Sequential Function Chart (SFC) 207

11.6.1 Step 207

11.6.2 Transition 209

11.6.3 Regole di evoluzione 210

11.7 Estensioni di linguaggio in LogicLab 212

11.7.1 Macro 212

11.7.2 Puntatori 213

LogicLab manuale utente 1

1. VISIONE DI INSIEME

LogicLabèun IEC61131-3 IntegratedDevelopmentEnvironment che supporta l’interaseriedilinguaggidefinitidallostandard.

Perilsupportodell’utenteintutteleattivitàcoinvoltenellosviluppodiun’applicazione,LogicLab include:

- editordelcodicesorgentetestualeperilinguaggidiprogrammazioneInstructionList(abbreviato,IL)eStructuredText(abbreviato,ST)(vedicap.6);

- editordelcodicesorgentegraficoperi linguaggidiprogrammazioneLadderDiagram(abbreviato, LD), Function Block Diagram (abbreviato, FBD), e il Sequential Function-Chart(abbreviato,SFC)(vedicap.6);editordelcodicesorgentegraficoperilinguaggidiprogrammazioneLadderDiagram(abbreviato,LD),FunctionBlockDiagram(abbre-viato,FBD),eilSequentialFunctionChart(abbreviato,SFC)(vedicap.6);

- un compilatore, che traduce direttamente in codicemacchina le applicazioni scrittesecondolostandardIEC,evitandoilbisognodiuntraduttorerun-time,permettendol’esecuzionedelprogrammailpiùvelocementepossibile(vedicap.7);

- unsistemadicomunicazionechepermetteildownloaddell’applicazionealtargetenvi-ronment(vedicap.8);

- unriccosetdistrumentididebug,chevarianodaunafinestrawatchfacilmenteutiliz-zabileastrumentipiùpotenti,chepermettonodicampionareidatichecambianove-locementedirettamentesultargetenvironment,assicurandoun’informazioneaccurataedaffidabile(vedicap.9)

1.1 AREA DI LAVORO

LafigurasottostantemostraunesempiodellospaziodilavoroLogicLab,includendomoltedellesuecomponentipiùusate.

Workspacewindow

Source code editors Watchwindow

Outputwindow

Document bar

Librarywindow Status bar

2 LogicLab manuale utente

Iparagrafiseguentimostranounapanoramicadiquestielementi.

1.1.1 LA FINESTRA DI OUTPUT

LafinestradiOutputèilluogoincuiLogicLabmostraisuoimessaggidioutput.Questafinestracontienequattroschede:Build, Find in project, Debug e Resources.

Build

IlpannelloBuildmostral’outputdelleseguentiattività:

- aperturadiunprogetto; - compilazionediunprogetto; - downloadcodiceaduntarget.

Find in project

QuestopannellomostrairisultatidellaricercaconFind in project.

Debug

IlpannelloDebugmostraleinformazionisulleattivitàdidebugavanzate(peresempio,ibreakpoint).

Resources

IlpannelloResourcesmostraimessaggilegatialtargetspecificoconcuiLogicLabsistaconnettendo.

1.1.2 LA BARRA DI STATO

La barra Statusmostranellapartesinistralostatodell’applicazione,euncomandoani-matocheriportalostatodellacomunicazionenellapartedestra.

1.1.3 LA BARRA DEI DOCUMENTI

La barra Documentelencal’insiemedeidocumentiapertialmomentoperlamodificainLogicLab.

LogicLab manuale utente 3

1.1.4 LA FINESTRA WATCH

LafinestraWatchèunodeinumerosistrumentididebugfornitidaLogicLab.Traglialtristrumentididebugèimportantemenzionarel’oscilloscopio(vediparagrafo9.2),itriggerelamodalitàdidebuglive(vediparagrafo9.4).

1.1.5 LA FINESTRA DELLE LIBRERIE

LafinestraLibrarycontieneunaseriedipannellidiversi,cherientranonellecategoriespiegateneiparagrafiseguenti.

E’possibilescegliere lamodalitàdivisualizzazionecliccando il tastodestrodelmouse.Nella modalità View list,ciascunelementoèrappresentatodalnomeedall’icona.In-vece, nella modalità View detailsappareunatabella,ognirigadellaqualeèassociataadunodeglielementiinseriti.Quest’ultimamodalitàmostrainoltreilType(Operatore/Funzione) e la descrizione di ciascun elemento.

Cliccandocol tastodestrounodeglielementidiquestopannello,ecliccandosuccessi-vamente Object Propertiesnellafinestradidialogo,appareunafinestracontenenteulterioriinformazionisuglielementiselezionati(tipidiinputeoutputsupportati,nomedeipinsdiinputeoutput,ecc.).

1.1.5.1 OPERATORS AND STANDARD BLOCKS

Questopannelloelencaglielementidellinguaggiobase,comeglioperatorielefunzionidefinitidallostandardIEC61131-3.

4 LogicLab manuale utente

1.1.5.2 TARGET VARIABLES

Questopannelloelencatuttelevariabilidisistema,chiamateanchevariabilideltarget,chesonol’interfacciatrailfirmwareeilcodicediapplicazionePLC.

1.1.5.3 TARGET BLOCKS

Questopannelloelencatuttelefunzionidisistemaeiblocchifunzionedisponibilisultar-getdevicespecifico.

1.1.5.4 PANNELLI INCLUSI NELLA LIBRERIA

Ipannellidescrittineiparagrafiprecedentisonosolitamentesempredisponibilinellafine-stra Library.Tuttavia,altripannellipossonoessereaggiuntiaquestafinestra,unoperognilibreriainclusanelprogettoLogicLabincorso.Peresempio,l’immaginesottomostraunprogettoLogicLabcheincludeduelibrerie,basic.pll e thermmodel .pll (vedi anche paragrafo4.7).

LogicLab manuale utente 5

1.1.6 LA FINESTRA DI LAVORO

LafinestraWorkspaceèformatadatrepannellidistinti,comemostratonellafigurase-guente.

1.1.6.1 PROGETTO

IlpannelloProject contiene una serie di cartelle:

- Program, Function blocks, Functions: ciascuna cartella contiene le Program Ora-ganizationUnits(abbreviatoinPOUs-vediparagrafo5.1)deltipospecificatonelnomedella cartella.

- Global Variables: è ulteriormente suddiviso in Variables, I/O Variables, Con-stants e Retain Variables.Ognicartellacontienelevariabiliglobalideltipospecifi-catonelnomedellacartella(vediparagrafo5.2).

- Tasks:questavoceelencaitaskdelsistemaeiprogrammiassociatiadognitask(vediparagrafo5.3).

1.1.6.2 DEFINIZIONI

IlpannelloDefinitions contiene ledefinizionidi tutti i tipididatidefinitidall’utente,comelestruttureoitipienumerativi.

1.1.6.3 RISORSE

IcontenutidelpannelloResourcesdipendonodaltargetdeviceconcuiLogicLabsistarelazionando:puòincludereelementidiconfigurazione,schemi,wizard,ecc.

6 LogicLab manuale utente

1.1.7 EDITOR DEL CODICE SORGENTE

L’ambientediprogrammazioneLogicLabincludeunsetdieditorpergestire,modificareestampareifilesorgentescrittiinunodeicinquelinguaggidiprogrammazionedefinitidallostandardIEC61131-3(vedicap.6).

Ladefinizionedellevariabili localieglobalièsupportatadaspecificieditorsimiliadunfoglioelettronico.

LogicLab manuale utente 7

2. QUICK START

Questocapitoloèunaguidachevi introdurràpassoperpassoall’usodell’ambientedisviluppoLogicLab.

Sareteguidatiattraversotutti icompitichedovreteassolverepergestireemonitorareunasempliceapplicazionePLC.

Gliesempidiquestocapitolosiriferisconoaduntargetvirtuale,VPLC1, che è installato insiemeaLogicLabdurantelaproceduradisetup.

2.1 SETUP PROCEDURA

PerinstallareLogicLab,seguirelasempliceproceduraseguente:

1) Chiuderetutteleapplicazioniinfunzionesulsistema.

2) Aprire ilfilediesecuzionedisetupdiLogicLabeseguire le istruzione indicatenelsetupwizard.

LaproceduradisetupaggiungeilseguentemenuStart.

LacartelladiLogicLabnelfilesystemhalaseguentestruttura.

8 LogicLab manuale utente

2.2 USARE L’IDE

Leseguentiistruzionimostranocomecreare,gestireedeseguireildebugdiunsempliceprogrammaPLCdiLogicLab.IlprogrammaèscrittoinlinguaggioSTedeseguitodiret-tamente sulla vostra macchina. Un target virtuale, VPLC1, è stato installato durante la proceduradisetup.VPLC1emulauncontrollerprogrammabilesemplicefornitodeldigitalee dell’ analogico I/O.

1) Lanciare LogicLab dal menu Start.

2) QuandoLogicLabèlanciatoperlaprimavolta,nonvengonomostratetuttelefinestreelebarred’applicazione.E’possibilepersonalizzarelospaziodilavorodiLogicLabattraverso il menu View.

3) Percreareunnuovoprogetto,selezionareNew project dal menu File.

LogicLab manuale utente 9

4) Inserireilnomedelnuovoprogetto(peresempio,PlcExample) e selezionare la car-telladidestinazione,poipremereOK.Perquestoprogettoèstatoselezionatoiltargetvirtuale VPLC1.LospaziodilavorodiLogicLabhaoral’aspettomostratonellafiguradelpassaggio2(ovverosonomostratituttiglioperatorielevariabiliditarget,illogodellostatusdiprecompilazioneèapparsonellafinestradioutput).

5) Peraggiungereunnuovoprogrammavuotoalprogetto,selezionareNew program dal menu Project > New object.

ScegliereillinguaggioST,inserireilnomedelnuovoprogramma(peresempio,Main) epremereOK.

E’inoltrepossibileassegnarequiilprogrammaadunodeitaskdisponibili.

10 LogicLab manuale utente

LogicLabmostraora lafinestradimodificadell‘oggettoMain program. In alto c’è l’editordellevariabililocali.L’editordellevariabilipermettediaggiungere,rimuovere,copiareeincollareledefinizionidellevariabili.

Ilcodicedell’editortestualeèposizionatonellapartebassadellafinestra.

6) Inserire una nuova variabile locale premendo il tasto Insert record nella barra Project.Altrimenti,èpossibileusarel’opzioneInsert del menu Variables.

7) Modificareilnome(peresempio,Counter)ediltipodivariabile.Undoppioclicksulcampotypeaprelafinestradidialogodiselezionedeltipo.ScegliereiltipodidatoINT.

8) ImplementareunsemplicecounterinlinguaggioST,comemostratosotto.

9) Peressereeseguito,ilprogrammaMain deve essere assegnato ad un task.

NellafinestraWorkspace, cliccare col tasto destro sul task Sloweselezionarel’opzio-ne Add program.Siaprelafinestrapop-upObject browser.

LogicLab manuale utente 11

10) Selezionare ilprogrammaMainepremereOK.L’immaginesottomostra lafinestraWorkspacedopochel’operazioneèstatacompletataconsuccesso.

11) Selezionare Simulation mode dal menu Debug.

RinominateilvostrospaziodilavoroVPLC1comePLCExampleWspepremereOK.

12 LogicLab manuale utente

12) VPLC1èunsoftwarecheemulaunsemplicecontrolloalogicaprogrammabilefornitodidigitaleedianalogicoI/O.Epossibileinteragireconilsimulatorecomespiegatonel manuale di SimuLab o brevemente nella scheda Resources.

Lo stato del VPLC1I/OèdisponibileinLogicLabcomeleTarget variables elencate nellafinestraLibrary.

13) Connettere LogicLab a VPLC1tramitel’appositotastonellabarrad’applicazione.

14) Premere F7(oselezionarel’opzioneProject-Compiledalmenu)percompilarel’ap-plicazione.Verificarechelacompilazionefiniscacon0 warnings – 0 errors, altri-menticorreggereglierroriecompilarenuovamente.

15) Eseguireildownloaddelcodicemediantel’appositocomandosullabarradelleappli-cazioni.

Il PLC ora è in esecuzione su VPLC1. Potete vedere nella barra in basso di LogicLab l’indicazione Source ok - Connected.

16) AprirelafinestraWatch attraverso il menu View,poiselezionarelavariabilenell’editordeltestoconundoppioclickprenderlaetrascinarlanellafinestraWatch.

LafinestraWatch mostra il valore della variabile Counter che dovrebbe incrementare progressivamente.

LogicLab manuale utente 13

Sietearrivatiallafinediquestasemplicemacompleta(modifica-compilazione-download-debug) sessione di lavoro con LogicLab.

Altripassaggicheoccorrefareperacquisireunaconoscenzapiùprofondadellostrumentosonol’usodialtrilinguaggi,blocchidifunzione&funzione,variabiliglobali,librerie,debugintemporealeecosìvia.Lesezioniseguentidiquestomanualevifornirannoleinforma-zioni necessarie.

2.3 UN ESEMPIO PIU’ COMPLESSO

Nella sotto directory SampleProjects\SampledellavostrainstallazioneLogicLabpotetetrovareunesempiopiùcomplessodiVPLC1,chevioffreunapanoramicadituttiecinquei linguaggi IEC 61131-3.

Peraprireilprogettousarel’opzioneFile-Open projectdelmenueaprirePLC1Sample.ppjs o selezionarlo da Example projects nellapaginadibenvenuto.

14 LogicLab manuale utente

LogicLab manuale utente 15

3. USARE L’AMBIENTE

QuestocapitolomostracometrattarecoinumerosielementiUIdicuiLogicLabècompo-sto,perpermettervidiprogrammarel’IDEnelmodopiùadattoalvostrospecificopro-gettodisviluppo.

3.1 PERSONALIZZAZIONE DEL LAYOUT

IllayoutdellospaziodilavorodiLogicLabpuòessereliberamentepersonalizzatosecondole vostre esigenze.

LogicLabsipreoccupadisalvarelaconfigurazionedellayoutall’uscitadall’applicazione,permantenerelevostrepreferenzeinsessionidilavorodifferenti.

3.2 TOOLBARS

3.2.1 MOSTRARE/NASCONDERE LE BARRE

Permostrare(onascondere)unbarradiapplicazione,aprireilmenuView>Toolbars e selezionare labarrad’applicazionedesiderata (peresempio, labarraFunction Block Diagram).

Labarrad’applicazioneèoravisibile(nascosta).

3.2.2 SPOSTARE LE BARRE

E’possibilemuovereunabarrad’applicazionecliccandosullasuapartesinistraepoipren-dendolaetrascinandolafinoadestinazione.

16 LogicLab manuale utente

Labarradiapplicazionecomparenellanuovaposizione.

E’inoltrepossibilecambiarelaformadellabarrad’applicazione,daorizzontaleaverticale,siapremendoiltastoShiftsiaspostandolabarravicinoalbordoverticalediunafinestraqualsiasi.

E’anchepossibilerenderemobilelabarradelleapplicazioni,siapremendoiltastoCTRL siaspostandolabarraviadaunqualsiasibordodellafinestra.

3.3 LE FINESTRE FISSE

3.3.1 MOSTRARE/NASCONDERE LE FINESTRE DI STRUMENTI

IlmenuafinestraView>Toolpermettedimostrare(onascondere)unafinestrastrumen-to(adesempio,lafinestraOutput).

LogicLab manuale utente 17

Lafinestrastrumentoèoravisibile(onascosta).

18 LogicLab manuale utente

3.3.2 SPOSTARE LE FINESTRE DI STRUMENTI

Permuovereunafinestrastrumento,cliccaresulsuonome(nellapartealtadellafinestra)equindiprenderlaetrascinarlaadestinazione.

E’possibilerenderemobilelafinestrastrumentocliccandoduevoltesulsuonome,pre-mendo il tasto CTRLospostandolafinestrastrumentodaibordidellafinestraprincipale.

Unafinestrastrumentopuòessereridimensionatacliccandoetrascinandoisuoibordifinoal raggiungimento della dimensione desiderata.

LogicLab manuale utente 19

3.4 LAVORARE CON LE FINESTRE

LogicLabpermettediaprirenumerosieditordicodicesorgente,cosìchelospaziodilavo-ropotrebberisultarepiuttostodisordinato.

Si può facilmente navigare attraverso queste finestre grazie alla barra Document e al menu Window.

3.4.1 LA BARRA DOCUMENT

La barra Documentpermettedipassaredauneditorapertoall’altro,cliccandosemplice-mentesulnomecorrispondente.

SipuòmostrareonasconderelabarraDocumentconl’opzionedelmenuaventelostessonome, nel menu View>Toolbars.

20 LogicLab manuale utente

3.4.2 IL MENU WINDOW

Il menu Window è alternativo alla barra Document:elencatuttiglieditorapertiepermettedipassaredall’unoall’altro.

Inaggiunta,questomenuforniscedeicomandichepermettonodirendereautomatichealcunemansionibase,comelachiusuradituttelefinestre.

3.5 MODALITA’ SCHERMO INTERO

Per facilitare la codifica dell’applicazione, potrebbe essere utile passare alla modalitàschermo intero. Inquestamodalità, l’editordelcodicesorgenteestende lepropriedi-mensioniatuttal’areadilavoro,rendendopiùsemplicel’attivitàdimodificadelcodice,soprattuttoquandosonocoinvoltilinguaggidiprogrammazionegrafici(LD,FBD,eSFC).

E’possibileattivareedisattivarelamodalitàschermointeroconl’opzioneFull screen del menu ViewocolcomandocorrispondentedellabarraMain.

LogicLab manuale utente 21

3.6 OPZIONI D’AMBIENTE

Cliccando su Options.. nel menu File,appareunafinestradidialogomulti-tabcheper-mettedipersonalizzarealcuneopzionidiLogicLab.

General

Salvataggio automatico: se la casella Enable Autosave è selezionata, LogicLab salva di tantointantol’interoprogetto.E’possibilespecificarel’intervallodiesecuzionediquestafunzioneimmettendoilnumerodiminutichesivuolefarintercorreretraunsalvataggioautomatico e l’altro nella casella di testo Autosave interval.

Graphic Editor

QuestopannellopermettedimodificareleproprietàdeglieditordelcodicesorgenteLD,FBD e SFC.

Text Editors

Language

Sipuòcambiarelalinguadell’ambienteselezionandoneunanuovanellalistamostratainquestopannello.

Dopoaverselezionatolanuovalingua,premereSelecteconfermarecliccandosuOK. Il cambiamentosaràeffettivodallasuccessivaaperturadiLogicLab.

Tools

Sipossonoaggiungerefinoa16comandialmenuTools.Questicomandipossonoesse-reassociatiaqualsiasiprogrammachesaràinfunzionesulvostrosistemaoperativo.E’inoltrepossibilespecificareunargomentoperognicomandoaggiuntoalmenuTools. La proceduraseguentemostracomeaggiungereunostrumentoalmenu.

22 LogicLab manuale utente

1) Digitare l’intero percorso del file eseguibile dello strumento nella casella di testoCommand.Altrimenti, sipuòspecificare ilnomedelfileselezionandolodaWindowsExplorer,chesiaprecliccandosultastoBrowse.

2) Nella casella Arguments,digitaregliargomenti–seneesistono-datrasferirealco-mandoeseguibilemenzionatoalpassaggio1.Ricordaredisepararliconunospazio.

3) Inserire in Menu string il nome che si vuole dare allo strumento che si sta aggiun-gendo.QuestaèlastringacheverràvisualizzatanelmenuTools.

4) Premere Addperinserireeffettivamenteilnuovocomandonelmenuadatto.

5) PremereOKperconfermareoCancelperannullare.

Peresempio,presumiamochesivogliaaggiungerelacalcolatrice di Windows al menu Tools:

- Riempireicampidellafinestradidialogocomemostrato.

- Premere Add. Il nome dato al nuovo strumento è ora visualizzato nella lista di caselle nellapartesuperioredelpannello

ed anche nel menu Tool.

LogicLab manuale utente 23

4. GESTIRE I PROGETTI

QuestocapitolosifocalizzasuiprogettiLogicLab.

Unprogettocorrispondeadun’applicazionePLCeincludetuttiglielementirichiestiperfarfunzionarequestaapplicazionesultargetdevice,compresoilsuocodicesorgente,ilinkallelibrerie,leinformazionisultargetdeviceecosìvia.

Iparagrafiseguentispieganocomelavorarepropriamenteconiprogettieiloroelementi.

4.1 CREARE UN NUOVO PROGETTO

Periniziareunnuovoprogetto,cliccareNew project nel menu Filedellafinestraprin-cipalediLogicLab.LostessocomandoèdisponibilenellabarraMaine,senonèapertonessunprogetto,nellaWelcomepagediLogicLab.Ciòfaapparirelafinestradidialogoseguente.

E’richiesto l’inserimentodelnomedelnuovoprogettonelcampoName. La stringa che vieneinseritasaràancheilnomedellacartellacheconterràtuttiifilechecompongonoilprogettoLogicLab.IlnomedelpercorsonelcampoDirectoryindicalaposizionedide-faultdiquestacartella.

Target selectionpermettedispecificareiltargetdevicechefaràfunzionareilprogetto.

Perfinire,sipuòrendereilprogettocase-sensitiveattivandolarelativaopzione.Notareche,perdefault,questaopzionenonèattiva,inconformitàconlostandardIEC61131-3:sesiscegliedicreareunprogettocase-sensitivequestononsaràpiùconformeallostandard.

Unavoltacheladecisionedicreareunnuovoprogettoèstataconfermataeleinforma-zionirichiestesonostatefornite,LogicLabcompletal’operazione,creandoladirectoryeifiledelprogetto;aquestopuntoilprogettoèaperto.

LalistadeidevicedacuièpossibileselezionareiltargetperilprogettochesistacreandodipendedaicontenutidelcatalogodeitargetdevicedisponibiliperLogicLab.

Semancailtargetdesiderato,osièlanciatol’eseguibiledisetupsbagliatooccorrelancia-reunsetupseparatoresponsabiledell’aggiornamentodelcatalogo.Intuttiedueicasi,èconsigliabilecontattareilfornitoredell’hardwareperaveresupporto.

4.2 CARICARE IL PROGETTO DAL SISTEMA TARGET

Asecondadeltargetdeviceconcuicisistainterfacciando,potetecaricareunprogettodilavoro di LogicLab direttamente dal target.

24 LogicLab manuale utente

Percaricareilprogettodaltargetdevice,seguirelaseguenteprocedura:

1) Selezionare la voce Import project from target nel menu File.

2) SelezionareiltargetdevicedaconnetteredallalistamostratanellafinestraTarget list.

3) Impostarelacomunicazione(perdettaglivederelasezioneImpostarelacomunica-zione).

4) E’possibiletestarelaconnessioneconiltargetdevice.

LogicLabprovaadaprirelaconnessioneeriportailrisultatodeltest.

LogicLab manuale utente 25

5) Confermarel’operazione.

Quandol’applicazioneècaricatacorrettamente,ilprogettovieneapertoperlemo-difiche.

4.3 SALVARE IL PROGETTO

4.3.1 MANTENERE LE MODIFICHE AL PROGETTO

Quandosiapportaunaqualsiasimodificaalprogetto(peresempio,siaggiungeunanuovaProgramOrganizationUnit)occorresalvareilprogettopermantenereilcambiamento.

Persalvareilprogetto,èpossibileselezionarelavocecorrispondentedelmenuFile o della barra Main.

4.3.2 SALVARE IN UNA DIVERSA LOCAZIONE

Quandononsivuole(ononsipuò,adesempioperchéilfileèinsolalettura)riscrivereilfileprogetto,sipuòsalvarelaversionemodificatadelprogettoinunaposizionealternati-va, selezionando Save project as… dal menu File.

LogicLab richiede di selezionare la nuova destinazione (che deve essere una directory vuota),poisalvaunacopiadelprogettoinquellaposizioneeapreilfiledelnuovoprogettopereventualimodifiche.

26 LogicLab manuale utente

4.4 GESTIRE I PROGETTI ESISTENTI

4.4.1 APRIRE UN PROGETTO ESISTENTE DI LOGICLAB

Peraprireunprogettoesistente,cliccaresuOpen project nel menu FiledellafinestraLogicLabprincipale,onellabarraMain, o nella Welcome page(quandononèapertones-sunprogetto).Ciòfaapparireunafinestradidialogo,chepermettedicaricareladirectorycontenenteilprogettoeselezionareilfilediprogettorelativo.

4.4.2 MODIFICARE IL PROGETTO

Permodificareunelementodiunprogetto,bisognaprimaaprirequestoelementoclic-candoduevoltesulsuonome,chesipuòtrovarenavigandolastrutturaadalberodellalinguettadinavigazionedelprogetto,sullabarraWorkspace.

Cliccandoduevoltesulnomedell’oggettochesivuolemodificare,siapreuneditorcoe-renteconiltipodioggetto:peresempio,quandosicliccaduevoltesulnomediunaPOUdi unprogetto, vienemostrato l’appropriato editor del codice sorgente; cliccandoduevolte il nome di una variabile locale, viene mostrato l’editor delle variabili.

E’importantenotarecheLogicLabimpediscediapplicaremodificheaglielementidiunprogetto,quandopersistealmenounadelleseguenticondizioni:

- Nonèpossibilemodificarealcunoggettodelprogettoinmodalitàdebug

- Nonèpossibilemodificareunoggettodiunalibreriainclusa,mentresipuòmodificareunoggettoimportatodaunalibreria.

- Ilprogettoèapertoinmodalitàsolalettura(vedereprogetto).

4.4.3 CHIUDERE IL PROGETTO

Sipuòterminarelasessionedilavorosiachiudendoesplicitamenteilprogettosiauscen-dodaLogicLab.Inentrambiicasi,quandocisonomodifichenonancorasalvatesufile,LogicLabrichiededisceglieresesalvareomenotalimodifiche.

Perchiudereilprogetto,selezionarelavoceClose project dal menu File;LogicLabmo-stra la Welcome page,permettendodiiniziarerapidamenteunanuovasessionedilavoro.

4.5 DISTRIBUIRE I PROGETTI

Quandoc’èlanecessitàdicondividereunprogettoconunaltrosviluppatoreèpossibileinviareounacopiadeifiledelprogettoounredistributablesourcemodule(RSM)gene-rato da LogicLab.

Nelprimocaso,ilnumerodifilechesidevecondivideredipendedalformatodelfiledelprogetto:

- PLCfilesingolodiprogetto(estensionefile.ppjs):ilfiledelprogettocontienetutteleinformazionirichiesteperfarfunzionarel’applicazione(ammessochelosviluppatorericeventeabbiauntargetdeviceappropriatodisponibile)compresi imodulidicodicesorgente,cosìcheoccorracondivideresoloilfile.ppjs.

- PLCfilemultiplodiprogetto(estensionefile.ppjx o .ppj):ilfilediprogettocontienesoloilinkaimodulidicodicesorgentechecompongonoilprogetto,iqualisonomemorizzaticomefilesingolinelladirectorydelprogetto.Occorrecondividerel’interadirectory.

LogicLab manuale utente 27

Altrimenti,èpossibilegenerareunmodulodicodicesorgenteridistribuibile(RSM)tramitelavocecorrispondentedelmenuProjectodellabarrad’applicazione.

LogicLabnotificailnomedelfileRSMepermettediscegliereseproteggereilfileconunapasswordomeno.Scegliendodiproteggereilfile,LogicLabrichiederàdiinserirelapas-sword.

TIvantaggidelformatodelfileRSMsono:

- ilcodicesorgenteècodificatoincodicebinario,quindinonpuòesserelettodaterzepartichenonutilizzanoLogicLab,garantendountrasferimentoinretepiùsicuro;

- puòessereprotetto conunapassword, cheverrà richiestadaLogicLabalmomentodell’aperturadelfile;

- trattandosidiunfilebinario,lasuadimensioneèridotta.

4.6 OPZIONI DEL PROGETTO

E’possibilemodificarealcuneproprietàbasichedelprogetto,comeilnomeelaversionedell’applicazione,nellafinestracheapparedopoaverselezionatolavoceOptions… nel menu Project.

L’informazionequiinseritasaràvisualizzatainognidocumentostampatoepotràessereinoltre scaricata sul target device.

28 LogicLab manuale utente

4.7 SELEZIONARE IL SISTEMA TARGET

Potrebbeesserenecessariotrasferireun’applicazionePLCsuuntargetdevicediversodaquellopercuiilcodiceerastatoinizialmentescritto.SeguireleistruzionisottostantiperadattareilproprioprogettoLogicLabalnuovotargetdevice.

1) Cliccare Select target nel menu ProjectdellafinestraprincipalediLogicLab.Ciòfaràapparirelaseguentefinestradidialogo.

2) Selezionare uno dei target device elencati nella casella combinata.

3) Cliccare Changeperconfermare,Cancelperabbandonare.

4) Confermando,LogicLabmostralafinestradidialogoseguente.

Premere Yespercompletarel’operazione,Noperabbandonare.

Premendo Yes,LogicLabfaràl’aggiornamentodelprogettoperfarlofunzionarecolnuovotarget.Faràancheunacopiadibackupdeifiledelprogettoinunasottodi-rectoryinseritanelladirectorydelprogetto,inmodochesipossariportareindietrol’operazionerimpiazzandomanualmente(peres.usandoWindowsExplorer)ifiledelprogettoconlacopiadibackup.

4.8 LAVORARE CON LE LIBRERIE

LelibreriesonounpotentestrumentopercondividereoggettitraiprogettidiLogicLab.Lelibreriesononormalmentememorizzateinspecificifilesorgente,conestensione.pll.

4.8.1 IL GESTORE DELLA LIBRERIA

IlgestoredellalibreriaelencatuttelelibrerieinclusealmomentoinunprogettoLogicLab.

LogicLab manuale utente 29

Permette inoltre di inserire o rimuovere librerie. Per accedere al gestore della libreria, cliccare Library manager nel menu Project.

4.8.1.1 INCLUDERE UNA LIBRERIA

LaseguenteproceduramostracomeinserireunalibreriainunprogettoLogicLabcheri-sultiintuttiglioggettidellalibreriadivenutidisponibiliperilprogettocorrente.

Inserireunalibreriasignificachevieneaggiuntoalprogettocorrenteunriferimentoalfile.plldellalibreria,echevienefattaunacopialocaledellalibreria.E’opportunonotarechenonèpossibilemodificareglielementidiunalibreriainserita,adifferenzadeglioggettiimportati.

Sesivuolecopiareospostareunprogettocheincludeunaopiùlibrerie,accertarsicheiriferimentiaquestelibreriesianosemprevalidinellanuovaposizione.

1) Cliccare Library manager nel menu Project,aprendocosìlafinestradidialogoLi-brary manager.

2) Premere il tasto Add,chefaràapparireunafinestradidialogoesplorativaperpermet-terediselezionareilfile.plldellalibreriachesidesideraaprire.

3) Unavoltatrovatoilfile.pll,aprirlotramiteildoppioclickoppurepremendoiltastoOpen.Ilnomedellalibreriaeilsuopercorsosonooravisualizzatiinunanuovarigaallafinedell’elencodellacasellabianca.

4) Ripetereipassaggi1,2e3perognilibreriachesidesiderainserire.

5) Unavoltaterminatol’inserimento,premereOkperconfermareoCancelper

abbandonare.

4.8.1.2 RIMUOVERE UNA LIBRERIA

Laproceduraseguentemostracomerimuovereunalibreriainseritadalprogettocorrente.Bisognaricordarecherimuoverelalibrerianonsignificacancellarla,maeliminareilrife-rimentodelprogettoadessa.

1) Cliccare Library Manager nel menu ProjectdellafinestraprincipalediLogicLab;siapriràlafinestradidialogoLibrary manager.

30 LogicLab manuale utente

2) Selezionare la libreria che si desidera rimuovere cliccando una volta sul suo nome. Il tasto Remove è ora abilitato.

3) Cliccare il tasto Remove; il riferimento alla libreria selezionata sparirà dall’elencoProject library.

4) Ripeterel’operazionepertuttelelibreriechesidesiderarimuovere.Altrimenti,perrimuoverle tutte, cliccare su Remove all.

5) Unavoltafinitodirimuoverelelibrerie,premereOKperconfermareoCancelpernonapportarenessunamodifica.

4.8.2 ESPORTARE AD UNA LIBRERIA

E’possibileesportareunoggettodaunprogettocorrentementeapertoadunalibreria,perrenderetaleoggettodisponibileperaltriprogetti.Laproceduraseguentemostracomeesportareoggettiadunalibreria.

1) Cercarel’oggettochesivuoleesportarenavigandolastrutturaadalberodellaschedaprogettodellabarraWorkspace,poicliccareunavoltasulnomedell’oggetto.

2) Cliccare Export object to library nel menu Project.Ciòfaràapparirelafinestradi dialogo seguente.

3) Inserirelalibreriadidestinazionespecificandolaposizionedelsuofile.pll.Sipuòfare:

- Digitandol’interonomedelpercorsonelcaselladitestobianca;

- cliccando il tasto Browse,peraprireunafinestradidialogoesplorativocheper-mette di navigare il disco e la rete.

4) SipuòsceglieredicriptareilcodicesorgentedellaPOUchesistaesportando,perproteggerelapropriaproprietàintellettuale.

5) Premere Okperconfermarel’operazione,altrimentipremereCancelperabbandona-re.

Senelpassaggio3dellaprocedurasiinserisceilnomediunfile.pll non esistente, Logi-cLabcreailfile,creandoquindiancheunanuovalibreria.

LogicLab manuale utente 31

4.8.2.1 CANCELLARE L’ESPORTAZIONE AD UNA LIBRERIA

Almomento,nonèpossibileannullarel’esportazioneadunalibreria.L’unicomodoperrimuovere un oggetto è creare un’altra libreria contenente tutti gli oggetti di quella cor-rente, meno l’oggetto che si vuole eliminare.

4.8.3 IMPORTARE DA UNA LIBRERIA O UN’ALTRA FONTE

E’possibileimportareunoggettodaunalibreriaperusarlonelprogettocorrente.Quandosiimportaunprogettodaunalibreria,lacopialocaledell’oggettoperdeilriferimentoallalibreriaoriginaleeappartieneesclusivamentealprogettocorrente.Perquestomotivo,èpossibilemodificareoggettiimportati,adifferenzadeglioggettidellelibrerieinserite.

CisonoduemodiperottenereunaPOUdaunalibreria.Laproceduraseguentemostracomeimportareoggettidaunalibreria.

1) Cliccare Import object from library dal menu Project.Ciòfaràapparireunafi-nestradidialogoesplorativachepermettediselezionareilfile.pll della libreria che sivuoleaprire.

2) Unavoltatrovatoilfile.pll,aprirlocoldoppioclickopremendoiltastoOpen.Lafi-nestradidialogoesplorativadellalibreriaappariràinprimopiano.Ciascunaschedadellafinestracontieneunalistadioggettidiuntipocoerenteconiltitolodellascheda.

3) Selezionarelaschedadeltipodioggettochesivuoleimportare.E’anchepossibilesvolgereunasemplicericercadeglioggettidiognischedausandoiFilters. Notare comunquecheallelibrerieèapplicabilesoloilfiltroName. Per usarlo, selezionare una scheda,poi immettere ilnomedell’oggettodesiderato,usandoanche il jolly*, se necessario.

4) Selezionarel’oggettochesivuoleimportare,poipremereiltastoImport object.

5) Una volta finito di importare oggetti, premere indifferentementeOK o Cancel perchiuderelafinestradinavigazionedellaLibrary.

4.8.3.1 CANCELLARE L’IMPORTAZIONE DA UNA LIBRERIA

QuandosivuoleimportareunoggettoinunprogettoLogicLab,nonsifaaltrochecreareunacopialocalediquell’oggetto.Perquestomotivo,èsufficientecancellarel’oggettolo-calepercancellarel’importazionedaunalibreria.

32 LogicLab manuale utente

LogicLab manuale utente 33

5. GESTIRE GLI ELEMENTI DEL PROGETTO

Questocapitolomostracomerelazionarsiconglielementichecompongonounprogetto,ovvero:ProgramOrganizationUnits(POUs),task,tipididatiderivati,evariabili.

5.1 PROGRAM ORGANIZATION UNITS

QuestoparagrafomostracomeaggiungerenuovePOUsalprogetto,comemodificarleerimuoverle.

5.1.1 CREARE UNA NUOVA PROGRAM ORGANIZATION UNIT

1) Selezionare la voce New object dal menu Project..

2) Specificarequale tipodiPOUsivuolecrearecliccandosuunadellevocidel sottomenucheappare.

3) SelezionareillinguaggiochesivuoleusareperimplementarelaPOU.

Inserire il nome del nuovo modulo.

4) Confermarel’operazionepremendoOK.

AltrimentisipuòcreareunanuovaPOUdiuntipospecifico(programma,bloccofunzioneofunzione)cliccandocoltastodestrosullavocecorrispondentedell’alberodelprogetto.

34 LogicLab manuale utente

5.1.1.1 ASSEGNAZIONE DI UN PROGRAMMA AD UN TASK IN FASE DI CREAZIONE

LogicLabdàlapossibilitàdiassegnareunnuovoprogrammaaduntaskcontestualmenteallasuacreazione:selezionareiltaskacuiassegnareilprogrammadallalistamostratanella selezione Task dellafinestra New program.

5.1.2 MODIFICARE LE POUS

TuttelePOUdiunprogettosonoelencatenellecartellePrograms, Function blocks e Function della scheda Project della barra Workspace.

LaproceduraseguentemostracomemodificareilcodicesorgentediunaPOUesistente.

1) AprirelacartellanellaschedaProjectdellospaziodilavorochecontienel’oggettochesivuolemodificarecliccandoduevoltesulnomedellacartella.

2) Cliccareduevoltesulnomedell’oggettochesivuolemodificare.L’editorrelativosiapriràpermettendodimodificareilcodicesorgentedellaPOU.

LogicLab manuale utente 35

Per cambiare il nome della POU:

1) Aprirel’editorObject propertiesdelmenucontestualecheapparecliccandocolta-stodestrosulnomedellaPOUnell’alberodelprogetto(altrimenti,selezionarelavocedel menu Projectcorrispondente).

2) Modificareilnomedell’oggettoeconfermare.

Infine,potetecreareunacopiadellaPOUnelseguentemodo:

1) Selezionare Duplicate dal menu contestuale (o dal menu Project).

2) InserireilnomedellanuovaPOUeconfermare.

36 LogicLab manuale utente

5.1.3 CANCELLARE LE POU

SeguirelaseguenteproceduraperrimuovereunaPOUdalvostroprogetto:

1) Dalla casella Projectdellospaziodilavoroaprirelacartellacontenentel’oggettochesi vuole cancellare cliccando due volte sul nome della cartella.

2) Cliccarecoltastodestrosulnomedell’oggettochesidesideracancellare.Appariràunmenucontestualeriferitoall’oggettoselezionato.

3) Cliccare su Delete objectnelmenucontestuale,poiconfermarel’operazionepre-mendo Yes.

5.1.4 CRIPTARE IL CODICE SORGENTE

PotrestevolernascondereilcodicesorgentediunaopiùPOU.

LogicLabvipermettedicriptarelePOUeproteggerleconunapassword.

PercriptareunaPOU,seguireiseguentipassaggi:

1) CliccarecoltastodestrosulnomedellaPOUnell’alberodelprogettoescegliereCrypt dal menu contestuale..

2) Inserireduevoltelapassword(perevitareiproblemichepotrebberosorgeredaer-roridibattitura)econfermarel’operazione.

LogicLab manuale utente 37

PerdecriptareunaPOU,cliccarecoltastodestrosulnomedellaPOUnell’alberodelpro-getto e scegliere Decrypt dal menu contestuale.

LogicLabvirichiederàdiinserirelapassword.

E’possibilesceglieredicriptaretuttelePOUnoncriptateconunasolaoperazione:

lastessapasswordsaràvalidapertuttiglioggetti.

5.2 VARIABILI

Esistono due classi di variabili in LogicLab: variabili globali e variabili locali.

Questoparagrafomostracomeaggiungerealprogetto,modificareerimuoveresialeva-riabili globali che quelle locali.

5.2.1 VARIABILI GLOBALI

Levariabiliglobalipossonoesserevisualizzateeconsultatedaqualsiasimodulodelpro-getto.

5.2.1.1 CLASSI DI VARIABILI GLOBALI

Levariabiliglobalisonoelencatenell’alberodelprogetto,nellacartellaGlobal varia-bles,dovesonoulteriormenteclassificate,secondoleloroproprietà,invariabiliAutoma-tiche,variabiliMapped,CostantievariabiliRetain.

- LevariabiliAutomaticheincludonotuttelevariabilicheilcompilerallocaautomatica-menteinunaposizioneappropriatadellamemoriadeltargetdevice.

- LevariabiliMapped,invece,hannounindirizzoassegnatonelsistemalogicodiindirizzodeltargetdevice,chedeveesserespecificatodallosviluppatore.

- LevariabiliCostantisonoquellechelosviluppatoredichiaracomeaventil’attributoCON-STANT,cosìchenonpossanoesserescritte.

- LevariabiliRetainsonoquellechelosviluppatoreindicacomeaventil’attributoRETAIN, cosicchèilorovalorisonomemorizzatiinun’areadellamemoriapersistentedeltargetdevice.

38 LogicLab manuale utente

5.2.1.2 GRUPPI DI VARIABILI GLOBALI

E’possibilecategorizzareulteriormente l’insiemedivariantiglobali raggruppandolese-condocriterispecificidiapplicazione.Perdefinireunnuovogruppo,seguirelaseguenteprocedura:

1) Selezionare Group dal menu Variables(notarechequestomenuèdisponibilesolose l’editor Global variablesèaperto).

2) InserireilnomedelnuovogruppodivariabiliepremereAdd.

3) E’orapossibileusareilgruppodivariabilinelladichiarazionedinuovevariabiliglobali.

5.2.1.3 CREARE UNA NUOVA VARIABILE GLOBALE

Applicarelaseguenteproceduraperavereunanuovavariabileglobale:

1) Selezionare New object dal Project menu.

2) Selezionare New variabledalmenucheappare.

LogicLab manuale utente 39

3) Scegliere la classe della variabile che si vuole creare (variabile Automatica, variabile Mapped,CostanteovariabileRetain).

4) Inserire ilnomedellavariabile(tenerepresenteche icaratteri ‘?’, ’.’, ’/’ecosìvianonpossonoessereutilizzati:lavariabiledeveavereunidentificatoreIEC61131-3valido).

5) Specificareiltipodivariabiledigitandolo

o selezionandolo dall’elenco che LogicLab mostra quando si clicca sul tasto Browse.

40 LogicLab manuale utente

6) Sesivuoledichiarareunarray,sipuòspecificarnelamisura.

7) E’inoltrepossibileassegnareilvaloreinizialeallavariabile.

8) Infine,sipuòaggiungereunabrevedescrizioneepoiconfermarel’operazione.

SesicreaunavariabileMapped,sidovràspecificarel’indirizzodellavariabiledurantelasuadefinizione.Perfareciò,seguireleindicazioni:

- Cliccaresultastoperaprirel’editordell’indirizzoeinserireilvaloredesiderato.

LogicLab manuale utente 41

- Selezionare dall’elenco che LogicLab mostra l’area di memoria che si vuole usare: lo strumentosceglieràautomaticamentel’indirizzodellaprimaposizioneliberadimemoriadi quest’area.

5.2.1.4 MODIFICARE UNA VARIABILE GLOBALE

Permodificareunavariabileglobaleesistente:

1) Aprire la cartella che contiene la variabile che si desideramodificaredalla casellaProjectdellospaziodilavoro.

2) Cliccareduevoltesulnomedellavariabiledamodificare:l’editordellevariabiliglobalisiaprirà,permettendolamodifica.

42 LogicLab manuale utente

Per cambiare solamente il nome della variabile:

1) Aprirel’editorVariable propertiesdalmenucontestualecheapparecliccandocoltastodestrosulnomedellavariabilenell’alberodelprogetto(oselezionarelavocecorrispondentedelmenuProject).

2) Cambiareilnomedellavariabileeconfermare.

Infine,sipuòcreareunduplicatodellavariabileinquestomodo:

1) Selezionare Duplicate variable dal menu contestuale (o dal menu Project).

2) Inserireilnomedellanuovavariabileeconfermare.

5.2.1.5 CANCELLARE UNA VARIABILE GLOBALE

Seguirelaseguenteprocedurapereliminareunavariabileglobaledalproprioprogetto:

1) AprirelacartellachecontienelavariabilechesivuoleeliminaredallacasellaProjec dellospaziodilavoro.

LogicLab manuale utente 43

2) Cliccarecol tastodestrosulnomedellavariabiledacancellare.Appariràunmenucontestualeriferitoallavariabileselezionata.

3) Cliccare su Delete variablenelmenucontestuale,poipremereYesperconfermare.

5.2.2 VARIABILI LOCALI

Levariabili localisonodichiarateall’internodiunaPOU(programma,funzioneobloccofunzione),ilmoduloèl’unicoelementodelprogettochepuòriferirsiedaccedereadesse.

Levariabililocalisonoelencatenell’alberodelprogettosottoallaPOUcheledichiara(soloquandolasuddettaPOUèapertaperlamodifica),dovesonoulteriormenteclassificatesecondolaclasseacuiappartengono(peresempiovariabiliinputoinout).

Percreare,modificareecancellarelevariabililocalioccorreaprirelaPOUpermodificaree usare l’editor variabili locali.

44 LogicLab manuale utente

Fareriferimentoallasezionecorrispondentediquestomanualeperulterioridettagli(vediparagrafo6.6.1.2).

5.3 TASK

5.3.1 ASSEGNARE UN PROGRAMMA AD UN TASK

Leggereleistruzionisottostantipersaperecomefareeseguireunprogrammaadunde-terminato task.

1) I task a disposizione sono elencati nella casella Project della finestraWorkspace.Cliccarecoltastodestrosulnomedeltaskchesivuolecheeseguailprogrammaescegliere Add program dal menu contestuale.

2) Selezionaredallalistacheappareilprogrammachesivuolefareseguirealtaskeconfermare.

LogicLab manuale utente 45

3) Ilprogrammaèoraassegnatoaltask,comesipuòvederenell’alberodelprogetto.

Notarecheèpossibileassegnarepiùdiunprogrammaadunamansione.Dalmenucon-testualesipuòclassificareed,incaso,rimuovereiprogrammiassegnatiallemansioni.

5.3.2 CONFIGURAZIONE DEI TASK

Asecondadeltargetdeviceconcuicisistainterfacciando,potrebbeesserepossibilecon-figurareleimpostazionideitaskdelPLC.

1) Selezionare la voce Task configurationdalmenucontestualecheapparenellafi-nestradipop-upseprementeconiltastodestrodelmousesulnomedeltaskchesivuoleconfigurare.

2) NellafinestraTask configurationsipuòmodificareilperiododiesecuzionedeltask.

5.4 TIPI DI DATI DERIVATI

La sezione DefinitionsdellafinestraWorkspacepermettedidefinireitipididatiderivati.

5.4.1 TYPEDEF

Iparagrafiseguentimostranocomegestireletypedef.

46 LogicLab manuale utente

5.4.1.1 CREARE UN NUOVO TYPEDEF

Percreareunanuovatypedefseguirelaproceduraseguente:

1) cliccare col tasto destro sulla cartella Typedefs e scegliere New Typedef dal menu contestuale.

2) Digitareilnomedellatypedef.

3) Selezionareiltipopercuisistadefinendounalias.

LogicLab manuale utente 47

(sesivuoledefinireunaliasperunarray,scegliereladimensionedell’array).

4) Inserireunadescrizionesignificativa(selosidesidera)econfermarel’operazione.

5.4.1.2 MODIFICARE UN TYPEDEF

LetypedefdelprogettosonoelencatesottolacartellaTypedefs.Permodificareunatype-defbastacliccareduevoltesulnome.

5.4.1.3 CANCELLARE UN TYPEDEF

Percancellareunatypedef,seguirelaseguenteprocedura:

1) CliccarecoltastodestrosulnomedellatypedefescegliereDelete dal menu conte-stuale.

2) Confermarelascelta.

5.4.2 STRUTTURE

Iparagrafiseguentimostranocomegestirelestrutture.

48 LogicLab manuale utente

5.4.2.1 CREARE UNA NUOVA STRUTTURA

Seguirelaproceduraseguentepercreareunanuovastruttura:

1) Cliccare col tasto destro sulla cartella Structures e scegliere New structure dal menu contestuale.

2) Digitare il nome della struttura.

3) Inserireunadescrizionesignificativaeconfermarel’operazione.

5.4.2.2 MODIFICARE UNA STRUTTURA

Lestrutturedelprogettosonoelencatesotto lacartellaStructures.Permodificare lastruttura(peresempio,definirneicampi)cliccareduevoltesulsuonome.

5.4.2.3 CANCELLARE UNA STRUTTURA

Seguirelaproceduraseguentepercancellareunastruttura:

1) Cliccare col tasto destro sul nome della struttura e selezionare Delete dal menu con-testuale.

LogicLab manuale utente 49

2) Confermarelascelta.

5.4.3 ENUMERATIVI

Iseguentiparagrafimostranocomegestireglienumerativi.

5.4.3.1 CREARE UN NUOVO ENUMERATIVO

Seguirelaproceduraseguentepercreareunnuovoenumerativo.

1) Cliccare col tasto destro sulla cartella Enumerations e scegliere New enumeration dal menu contestuale.

2) Digitare il nome dell’enumerativo.

3) Inserireunadescrizionesignificativaeconfermarel’operazione.

5.4.3.2 MODIFICARE UN ENUMERATIVO

GlienumeratividelprogettosonoelencatisottolacartellaEnumerations.Permodificareun’enumerativo(peresempio,perdefinireisuoivalori),cliccareduevoltesulsuonome.

50 LogicLab manuale utente

5.4.3.3 CANCELLARE UN ENUMERATIVO

Seguirelaproceduraseguentepercancellareunenumerativo:

1) Cliccare col tasto destro sul nome dell’enumerativo e scegliere Delete dal menu con-testuale.

2) Confermarelascelta.

5.4.4 SUBRANGE

Ilparagrafoseguentemostracomegestireunsubrange.

5.4.4.1 CREARE UN NUOVO SUBRANGE

Seguirelaproceduraseguentepercreareunnuovosubrange:

1) Cliccare col tasto destro sulla cartella Subranges e scegliere New subrange dal menu contestuale.

LogicLab manuale utente 51

2) Digitare il nome del subrange.

3) Scegliereiltipodisubrange.

4) Inserire un valore minimo e un valore massimo.

5) Inserireunadescrizionesignificativa(opzionale)econfermarel’operazione.

52 LogicLab manuale utente

5.4.4.2 MODIFICARE UN SUBRANGE

IsubrangedelprogettosonoelencatinellacartellaSubranges.Permodificarlebastaclic-care due volte sul loro nome.

5.4.4.3 CANCELLARE UNA SOTTOCATEGORIA

Seguirelaproceduraseguentepercancellareunsubrange:

1) Cliccare con il tasto destro sul nome del subrange e selezionare Delete dal menu contestuale.

2) Confermarel’operazione.

5.5 NAVIGARE IL PROGETTO

Iprogettipossonodiventareenormi,eccoperchéLogicLab fornisceduestrumentiperricercareunoggettoall’internodelprogetto:lacomponenteObject browserelacompo-nente Find in project.

LogicLab manuale utente 53

5.5.1 OBJECT BROWSER

LogicLabfornisceunostrumentomanualepernavigareglioggettidelprogetto:l’Object browser.

Questostrumentoèdipendentedalcontesto,questoimplicacheiltipodioggettichepos-sonoessereselezionatiecheleoperazionidisponibilisuglioggettisonodiversiasecondadel contesto in cui ci si trova.

L’Object browser puòessereapertoinquestitremodi:

- Modalità Browser.

- Modalità Import object.

- Modalità Select object.

L’interazione dell’utente con l’Object browserèprincipalmentelastessapertutteetrelemodalitàedèdescrittanelprossimoparagrafo.

5.5.1.1 CARATTERISTICHE COMUNI ED USO DELL’OBJECT BROWSER

Questasezionedescrivelecaratteristicheel’usodell’Object browser che sono comuni a tutte le modalità con cui l’ Object browserpuòessereutilizzato.

Objectsfilter

Questisonoifiltriprincipalidell’Object browser.L’utentepuòabilitarne(disabilitarne)unotraidisponibili.

InquestoesempiosonoselezionatiifiltriPrograms, Function Blocks e Functions cosìoggettidiquestotiposonoriportatinellalistadioggetti.

54 LogicLab manuale utente

Variables e User typespossonoessereselezionatidall’utentemainquestoesempioglioggettidiquestotipononsonomostratinellalistadioggetti.Operators, Standard functions, Local variables, e Basic types nonpossonoessereselezionatidall’utente(a causa del contesto).

L’utentepuòinoltrecliccaresulbottoneCheck all perselezionareinunavoltatuttiglioggettidisponibiliopuòcliccaresulbottoneCheck none perdeselezionareinunavoltasola tutti gli oggetti.

Otherfilters

Glioggettiselezionatipossonoinoltreesserefiltratipernome,posizione,libreriaetipodivariabile.

Ifiltrisonotuttiadditivievengonoapplicatiimmediatamentedopol’impostazione.

Nome

Funzione Filtra gli oggetti in base al loro nome.

Insieme dei valori validi Tutte le stringhe di caratteri.

Uso

Digitareunastringapervisualizzarel’oggettospecificoilcuinomecorrispondeallastringa.

Usareilcaratterejolly*pervisualizzaretuttiglioggettiil cui nome contiene la stringa della casella di testo Name. Digitare*sesivuoledisabilitareilfiltro.

Premere Enter quandolaeditboxhailfocusopremeresul bottone OK vicinoallaeditboxperapplicareilfiltro..

Applicabilea Tuttiitipidioggetto.

LogicLab manuale utente 55

Posizione del simbolo

Funzione Filtraglioggettiinbaseallaloroposizione.

Insieme di valori validi

All, Project, Target, Library, Aux. Sources.

Uso

All=disabilitaquestofiltro.

Project= oggetti dichiarati in LogicLab.

Target=oggettifirmware.

Library= oggetti contenuti in una libreria. In questo caso, utilizzarecontemporaneamenteancheilfiltroLibrary, descritto in seguito.

Auxsources=mostrasolofontiaux.

Applicabilea Tuttiitipidioggetti.

Librerie

Funzioni

Completailgradodispecificazionediunaricercasuglioggetti contenuti nelle librerie. Il valore di questo controllo èrilevantesoloseilfiltroSymbol locationèimpostatosuLibrary.

Insieme di valori validi

All, libraryname1, libraryname2, ...

UsoAll= mostra gli oggetti contenuti in una libreria qualunque.

LibrarynameN= mostra solo gli oggetti contenuti nella libreria chiamata librarynameN.

Applicabilea Tuttiitipidioggetto.

56 LogicLab manuale utente

Tipi di variabili

Funzioni Filtra le variabili globali e le variabili di sistema (dette anchevariabilidelfirmware)inbaseallorotipo.

Insieme di valori validi

All, Normal, Constant, Retain

Uso

All= mostra tutte le variabili globali e di sistema.

Normal= mostra solo le variabili globali normali.

Constant= mostra solo le costanti.

Retain= mostra solo le variabili retain.

Applicabilea Variabili.

LogicLab manuale utente 57

Lista di oggetti

Object list mostratuttiglioggettifiltrati.Lalistapuòessereordinatainmanieraascen-denteodiscendentecliccandosull’intestazionedellacolonna.E’inoltrepossibileordinareglioggettiperName, Type, or Description.

Facendodoppioclicksuunoggetto,l’utentepuòeseguireleoperazionididefaultassocia-te (le azioni sono le stesse delle azioni dei bottoni di OK, Import object, o Open source).

Quandoèpermessalaselezionemultipladeglioggetti,sonovisibiliibottoniSelect all e Select none.

E’possibileselezionaretuttiglioggetticliccandosulbottoneSelect all. Select none

deseleziona tutti gli oggetti.

Ipulsantisonoabilitatisealmenounoggettoèselezionatonellalista.

58 LogicLab manuale utente

Ridimensionare

Lafinestrapuòessereridimensionata,ilcursorecambialungoilbordodellafinestradidialogoepermetteall’utentediridimensionarelafinestra.

QuandovieneriapertalafinestradidialogoObject browser tiene la stessa dimensione eposizionedell’utilizzoprecedente.

Chiuderelafinestra

PerchiuderelafinestraObject browser sonodisponibilidueopzioni:

- Premereilbottonevicinoallafinedelbordodestrodellabarradeltitolo.

- Premere il bottone Cancel/OK.

5.5.1.2 USARE UN OBJECT BROWSER COME UN BROWSER

Perusare l ‘Object browser in questo modo, cliccare su Object browser nel menu Project. Questo faapparireunafinestradidialogocheconsentedinavigaretragliog-gettidelprogettoattualmenteaperto.

Oggetti disponibili

Inquestamodalitàsipossonoelencareglioggettidiquestotipo:

- Program.

- Function Block.

- Function.

- Variables.

- Usertype.

QuestioggettipossonoessereselezionatiodeselezionatidallasezioneObjects filter permostrareonascondereglioggettinellalista.

Altritipidioggetti(Operator,Standardfunction,Localvariables,Basictypes)nonpossonoesserenavigatiinquestocontestocosìquestisonodeselezionatienonabilitati.

Operazioni disponibili

LogicLab manuale utente 59

Leoperazionidisponibiliinquestamodalitàsono:

Opensource,operazionipredefinitesuldoppioclickdiunoggetto

Function Aprel’editorconcuièstatocreatol’oggettoselezionatoevisualizza il relativo codice sorgente.

Use

Sel’oggettoèunprogrammaounafunzioneounfunctionblock,questobottoneapreilrelativoeditordicodicesorgente.

Sel’oggettoèunavariabile,questobottoneaprel’editordelle variabili.

Selezionarel’oggettoilcuieditorsivuoleaprire,quindipremeresulbottoneOpen source.

Esportare in una libreria

Function Peresportareunoggettoadunalibreria.

Use Selezionarel’oggettochesivuoleesportare,quindipremereilbottoneExport to library.

Cancellare gli oggetti

Function Permette di eliminare un oggetto.

Use Selezionare l’oggetto che si vuole eliminare, quindi premereilbottoneDelete object.

Selezione multipla

Laselezionemultiplaèpermessaperquestemodalità,sonovisibiliibottoniSelect all e Select none.

5.5.1.3 USARE L’OBJECT BROWSER PER IMPORTARE

L’ Object browser èancheusatopersupportarel’importazionedioggettinelprogettoda una libreria esterna desiderata. Selezionare Import object from library dal menu Project, quindi scegliere la libreria desiderata.

60 LogicLab manuale utente

Oggetti disponibili

In questa modalità

Inquestamodalitàsipossonoelencareglioggettidiquestotipo:

- Program.

- Function block.

- Function.

- Variables.

- Usertypes.

QuestioggettipossonoessereselezionatiodeselezionatinellasezioneObjects filter permostrareonascondereglioggettinellalista.

Altritipidioggetti(Operator,Standardfunctions,Localvariables,Basictypes)nonposso-noessereimportatiquindisonodisabilitatiedeselezionati.

Operazioni disponibili

L’unicaoperazionesupportatainquestamodalitàèImport objects. E’ possibileimpor-tareglioggettiselezionatifacendoclicsulpulsanteImport objectsofacendodoppioclicsu uno degli oggetti della lista.

Selezione multipla

Inquestamodalitàèdisponibilelaselezionemultipla,sonovisibiliibottoniSelect all e Select none.

5.5.1.4 USARE L’OBJECT BROWSER PER L’OGGETTO SELECTION

LafinestraObjectbrowserèutilizzabilepermolteoperazionicherichiedonolaselezionedi un singolo oggetto PLC.

Cosìl’Objectbrowserpuòessereusatoperselezionareilprogrammadaaggiungereaduntask,perselezionareiltipodiunavariabile,perselezionareunoggetto,perselezionareunoggettodacercarenelprogetto,etc...

Oggetti disponibili

Glioggettidisponibilisonostrettamentedipendentidalcontesto,peresempionell’ope-razionediassegnamentodiunprogrammaaduntaskisolioggettidisponibilisonoglioggettideiprogrammi.

E’possibilechenontuttiglioggettidisponibilisianoselezionatiinmodopredefinito.

Operazioni disponibili

Inquestomodoèpossibileselezionareunsingolooggettofacendodoppioclicksullalistao cliccando sul bottone OK, quindilafinestravieneautomaticamentechiusa.

Selezione multipla

Laselezionemultiplaperquestamodalitànonèdisponibile.IbottoniSelect all e Se-lect none non sono visibili.

LogicLab manuale utente 61

5.5.2 RICERCA CON IL COMANDO FIND IN PROJECT

Il comando Find in projectrecuperatuttelericorrenzediunaspecificastringadica-ratterenelprogetto.Seguirelaprocedurasottostanteperutilizzarelostrumentocorret-tamente.

1) Cliccare Find in project.. nel menu Edit o nella barra Main.

Ciòfaràapparirelaseguentefinestradidialogo.

2) Nella casella di testo Find what, digitare il nome dell’oggetto che si vuole cercare.

62 LogicLab manuale utente

Altrimenti, cliccare il tasto Browse alla destra della casella di testo, e selezionare il nome dell’oggetto dalla lista di tutte le voci esistenti.

3) Selezionare uno dei valori elencati nella casella di selezione Location,perspecificareunarestrizionesullaposizionedell’oggettodaricercare.

4) La cornice chiamata Filters contiene sette caselline, ciascuna delle quali, se eviden-ziata,permettelaricercadellastringaacuil’oggettosiriferisce.

5) SpuntareMatch whole word onlyperricercaresololaparolaperintero.

6) SpuntareMatch casepereffettuare la ricerca facendodistinzionetraMaiuscoleeMinuscole.

7) Premere Findperavviarelaricerca,altrimenticliccaresuCancelperabbandonare.

LogicLab manuale utente 63

IrisultativerrannoriportatinellacasellaFind in projectdellafinestraOutput.

5.6 LAVORARE CON LE ESTENSIONI DI LOGICLAB

LafinestraWorkspacediLogicLabpotrebbeincludereunasezioneicuicontenutidipendo-nocompletamentedaltargetdeviceconcuiIDEstainteragendo:ilpannelloResources.

SeilpannelloResourcesèvisibile,sipuòavereaccessoadalcunecomponentiaggiuntiverelativealtargetdevice(elementidiconfigurazione,schemi,wizard,ecosìvia).

Le informazioni relativeaquesti componentipossonoessere trovate inundocumentoseparato:fareriferimentoalfornitoredell’hardwareperidettagli.

64 LogicLab manuale utente

LogicLab manuale utente 65

6. MODIFICARE IL CODICE SORGENTE

Editor PLC

LogicLabcomprendecinqueeditordicodicesorgente,chesupportanol’interagammadilinguaggidiprogrammazione IEC61131-3: InstructionList (IL),StructuredText (ST),Ladder Diagram (LD), Function Block Diagram (FBD) e Sequential Function Chart (SFC).

Inaggiunta,LogicLabcomprendeuneditoragrigliaperforniresupportoall’utentenelladefinizionedellevariabili.

Questocapitoloèdedicatoatuttiquestieditor.

6.1 EDITOR INSTRUCTION LIST (IL)

L’editorILpermettedicodificareemodificarelePOUutilizzandoIL(InstructionList),unodei linguaggi ammessi in IEC.

6.1.1 MODIFICARE LE FUNZIONI

L’editorILèfornitodifunzionicomuniallamaggiorpartedeglieditorfunzionantisuunapiattaformaWindows,ovvero:

- selezione del testo.

- Operatori Cut, Copy e Paste.

- Funzioni Find and Replace.

- Drag-and-dropdeltestoselezionato.

LamaggiorpartediquestefunzionièaccessibiledalmenuEdit o dalla barra Main.

6.1.2 RIFERIMENTO AGLI OGGETTI PLC

Sec’èlanecessitàdiaggiungerealcodiceILunriferimentoadunoggettoPLCesistente,sonopossibilidueopzioni::

- Digitare direttamente il nome dell’oggetto PLC.

- Trascinarlo in una posizione adatta. Per esempio, le variabili globali possono esserepresedallafinestraWorkspace,mentreglioperatoristandardelefunzioniincorporatepossonoesseretrascinatedallafinestraLibrary,mentrelevariabililocalipossonoes-sere selezionate dall’editor delle variabili locali.

66 LogicLab manuale utente

6.1.3 LOCAZIONE AUTOMATICA DELL’ERRORE

L’editorILmostraautomaticamenteanchelaposizionedeglierroridelcompilatore.Persaperedovesièverificatounerrorediquestotipo,cliccareduevoltesullalineadierrore

corrispondentesullabarraOutput.

6.1.4 SEGNALIBRI

E’possibileimpostareisegnalibripersegnalarelarigamaggiormentefrequentatodelfilesorgente.Unavoltacheilsegnalibroèposizionato,losipuòraggiungereconunsemplicecomandodellatastiera.E’inoltrepossibilerimuoverlounavoltachenonsiapiùnecessa-rio.

6.1.4.1 IMPOSTARE UN SEGNALIBRO

Spostareilpuntodiinserzionesullalineaincuisivuoleposizionareilsegnalibro,poipre-mere CTRL+F2. La linea sarà evidenziata a margine con un cerchio azzurro.

6.1.4.2 SALTARE AD UN SEGNALIBRO

PremereripetutamenteF2,finoalraggiungimentodellalineadesiderata.

6.1.4.3 RIMUOVERE UN SEGNALIBRO

Spostareilcursoreinunpuntoqualunquesullalineacontenenteilsegnalibro,poipremere

CTRL+F2.

6.2 EDITOR STRUCTURED TEXT (ST)

L’editorSTpermettedicodificareemodificarelePOUutilizzandoST(StructuredText),uno dei linguaggi ammessi in IEC.

6.2.1 CREARE E MODIFICARE OGGETTI ST

VederelasezioneCreareemodificarePOU(paragrafi5.1.1e5.1.2).

LogicLab manuale utente 67

6.2.2 MODIFICARE LE FUNZIONI

L’editorSTèfornitodifunzionicomuniallamaggiorpartedeglieditorfunzionantisuunapiattaformaWindows,ovvero:

- Selezione del testo.

- Operatori Cut, Copy, e Paste.

- Funzioni Find e Replace.

- Drag-and-dropdeltestoselezionato.

LamaggiorpartediquestefunzionièaccessibiledalmenuEdit o dalla barra Main.

6.2.3 RIFERIMENTO AD OGGETTI PLC

Sec’èlanecessitàdiaggiungerealcodiceSTunriferimentoadunoggettoPLCesistente,sonopossibilidueopzioni:

- Digitare direttamente il nome dell’oggetto PLC.

- Trascinarlo in una posizione adatta. Per esempio, le variabili globali possono esserepresedallafinestraWorkspace,mentreglioperatoristandardelefunzioniincorporatepossonoesseretrascinatedallafinestraLibrary,mentrelevariabililocalipossonoes-sere selezionate dall’editor delle variabili locali.

6.2.4 LOCAZIONE AUTOMATICA DELL’ERRORE

L’editorSTmostraautomaticamenteanchelaposizionedeglierroridelcompilatore.PersaperedovesièverificatounerrorediquestotipocliccareduevoltelalineadierrorecorrispondentesullabarraOutput.

6.2.5 SEGNALIBRI

E’possibileimpostareisegnalibripersegnalarelerighemaggiormentefrequentatedelfile sorgente. Una volta che il segnalibro è posizionato, lo si può raggiungere con unsemplicecomandodellatastiera.E’inoltrepossibilerimuoverlounavoltachenonsiapiùnecessario.

6.2.5.1 IMPOSTARE UN SEGNALIBRO

Spostareilpuntodiinserzionesullalineaincuisivuoleposizionareilsegnalibro,poipre-mere CTRL+F2. La linea sarà evidenziata a margine con un cerchio azzurro.

6.2.5.2 SALTARE AD UN SEGNALIBRO

PremereripetutamenteF2,finoalraggiungimentodellalineadesiderata.

6.2.5.3 RIMUOVERE UN SEGNALIBRO

Spostareilcursoreinunpuntoqualunquesullalineacontenenteilsegnalibro,poipreme-re CTRL+F2.

68 LogicLab manuale utente

6.3 EDITOR LADDER DIAGRAM (LD)

L’editorLDpermettedicodificareemodificarelePOUutilizzandoLD(LadderDiagram),uno dei linguaggi ammessi in IEC.

6.3.1 CREARE UN NUOVO DOCUMENTO LD

VederelasezioneCreareemodificarePOU(paragrafi5.1.1e5.1.2).

6.3.2 AGGIUNGERE/RIMUOVERE NETWORK

OgniPOUcodificata inLDconsiste inunasequenzadinetwork.Unnetworkèdefinitocomeunsetmassimodielementigraficiinterconnessi.Leestremitàaltaebassadiogninetworksonofissatedaduelineedritte,mentreogninetworkèdelimitatoasinistradauntastogrigioinrilievochecontieneilnumerodelnetwork.

SuogninetworkLDsonorappresentati ipowerrailsdidestraedisinistra,secondoleindicazione del linguaggio LD.

SulnuovoLDnetworkunalineaorizzontaleunisceiduepowerrails.E’definita“powerlink”. Su questo link devono essere sistemati tutti gli elementi LD (contatti, uscite e bloc-chi).

Sulnetworksipossonoeseguireleseguentioperazioni:

- Peraggiungereunnuovonetwork,cliccareNetwork>New nel menu Scheme,opremereuno dei tasti equivalenti sulla barra Network.

- Perassegnareun’etichettaadunnetworkselezionato,eseguireilcomandoNetwork>Label del menu Scheme.Questo renderàpossibile raggiungeredirettamente ilnetworketi-chettato.

- Pervisualizzareunagrigliadisfondocheaiutiadallineareglioggetti,premereView grid sulla barra Network.

- Peraggiungereuncommento,premereiltastoCommand nella barra FBD.

LogicLab manuale utente 69

6.3.3 ETICHETTARE I NETWORK

Sipuòmodificarel’ordinediesecuzioneusualedeinetworkattraversoun’istruzionejump,chetrasferisceilcontrollodelprogrammaadunnetworketichettato.Perassegnareun’e-tichettaadunnetwork,cliccareduevolteiltastogrigioinrilievocheportailnumerodelnetwork,asinistra.

Ciò faràapparireunafinestradidialogo,dovesaràpossibiledigitare l’etichettachesivuoleassociarealnetworkselezionato..

PremendoOK,l’etichettasaràstampatanell’angoloinaltoasinistradelnetworkselezio-nato.

6.3.4 INSERIRE I CONTATTI

Perinserirenuovicontattisulnetworkseguireunadiquesteopzioni:

- Selezionare un contatto, un blocco o una connessione. Selezionare il modo di inseri-mentotraserialeoparallelo(usandoiltastodellabarraLD o il menu Scheme). Inserire ilcontattoappropriato(usandoiltastoLD della barra, Scheme>Object>Newol’opzionenelmenudipop-up).Per l’inserimentoseriale, il nuovocontattoverrà inseritonellapartedestradelcontatto/bloccoselezionatoonelmezzodellaconnessioneselezionataasecondadiqualesial’elementoselezionatoprimadell’inserimento.Perl’inserimentoparallelo,possonoessereselezionatipiùcontatti/blocchiprimadell’inserimento.Ilnuo-vocontattoverràinquestocasoposizionatoallafinedelbloccodiselezione.

70 LogicLab manuale utente

- Trascinareunavariabilebooleananellaposizionedesideratasopraadunaconnessione.Peresempio,levariabiliglobalipossonoesserepresedallafinestraWorkspace,mentrelevariabililocalidall’editordivariabililocali.Appariràlafinestradidialogomostrataquisotto,erichiederàdidefinireselavariabiledebbaessereinseritacomecontatto,uscitaovariabile(comeglischemiFBD).Scegliereiltipodicontattoappropriato.Icontattiinserititramiteiltrascinamentosonosempreinseritiinserie.

6.3.5 INSERIRE LE USCITE

Perinserirenuoveuscitesuunnetworkprocederecomesegue:

- Premere uno dei tasti di uscita nella barra LD. La nuova uscita sarà inserita e collegata al powerraildidestra.Sesonogiàpresentidelleuscitenelnetwork,lanuovauscitasaràaggiuntaparallelamenterispettoalleprecedenti.

- Trascinareunavariabilebooleanasulnetwork.Peresempio,levariabiliglobalipossonoesserepresedallafinestraWorkspace, mentre le variabili locali dall’editor di variabili locali.Appariràlafinestradidialogomostrataquisotto,erichiederàdidefinireselava-riabiledebbaessereinseritacomecontatto,uscitaovariabile.Scegliereiltipodiuscitaappropriato.

LogicLab manuale utente 71

6.3.6 INSERIRE I BLOCCHI

Glioperatori,lefunzionieiblocchifunzionepossonoessereinseritiinunnetworkLD nei modi seguenti:

- Sulpowerlink,comecontattieuscite.

- Fuoridalpowerlink(perfareciò,seguireleindicazionideiblocchiFBD).

Perinserireiblocchisulnetworkseguireunadelleseguentiopzioni:

- Selezionare un contatto, una connessione o un blocco e cliccare Object>New nel menu Scheme.

- Selezionareuncontatto,unaconnessioneounbloccoepremere il tastoNew block nella barra FBD.Ciòfaràcomparireunafinestradidialogocheelencatuttiglioggettidelprogetto;scegliereunadellevocidell’elenco.Seilbloccoèunacostante,un’istruzionereturnoun’ istruzione jump,èpossibilepremeredirettamente i tasti corrispondentisulla barra FBD.

- Trascinarel’oggettoselezionato(dallafinestraWorkspace,dallafinestraLibraries o dall’editor variabili locali) sulla connessione desiderata.

Ipinsinaltosarannoconnessialpowerlink.IpinsEN/ENOdovrebberoessereattivatiprimadell’inserimento.

6.3.7 MODIFICARE LE PROPRIETA’ DELLE USCITE E DEI CONTATTI

Iltipodicontatto(normale,negato)odiuscita(normale,negata,sempreaccesa,semprespenta)puòesserecambiatoattraversounadelleseguentioperazioni:

- Doppioclicksull’elemento(contattoouscita).

- Selezionarel’elementoepoipremereEnter.

- Selezionarel’elemento,attivareilmenudipop-upcoltastodestrodelmouse,poisele-zionare Properties.

Appariràun’appositafinestradidialogo.SelezionareiltipodielementodesideratodellalistapresentataepremereOK.

6.3.8 MODIFICARE I NETWORK

L’editorLDèfornitodifunzionicomuniallamaggiorpartediapplicazionegrafichefunzio-nantisullapiattaformaWindows,ovvero:

- Selezione di un blocco.

- SelezionediunsetdiblocchipremendoiltastoShift+Right e disegnando una cornice che includa i blocchi da selezionare.

- OperazionidiCut, Copy e Paste sia di un singolo blocco sia di un set di blocchi.

- Drag-and-drop.

TuttelefunzioninominatesonoaccessibilitramiteilmenuEdit o la barra Main.

6.3.9 MODIFICARE LE PROPRIETA’ DEI BLOCCHI

- Cliccare Increment pins + nel menu Scheme,opremereiltastoInc pins nella barra FBD,peraumentareilnumerodipinsdiinputdialcunioperatoriefunzioniincorporate.

72 LogicLab manuale utente

- Cliccare Enable EN/ENOpinsnelmenuScheme,opremereiltastoEN/ENO nella barra FBD,pervisualizzareipinsinputeoutputabilitati.

- Cliccare Object. Instance name nel menu Scheme,opremereiltastoFBD properties nella barra FBD,percambiareilnomedell’istanzadiunbloccofunzione.

6.3.10 ACQUISIRE INFORMAZIONI DA UN BLOCCO

E’semprepossibileinformarsisuunbloccoaggiuntoadundocumentoLDselezionandoloecompiendounadelleseguentioperazioni:

- Cliccare Object>Open source nel menu Scheme,opremereiltastoView source nella barra FBD,peraprireilcodicesorgentediunblocco.

- Cliccare Object properties nel menu Scheme,opremereiltastoFBD properties nella barra FBD,pervedereleproprietàeipinsdiinputeoutputdelbloccoselezionato.

6.3.11 RILEVAZIONE AUTOMATICA DELL’ERRORE

L’editorLDmostraautomaticamenteanchelaposizionedeglierroridelcompilatore.Perraggiungereilbloccodovel’errorehaavutoluogo,cliccareduevoltesullalineacorrispon-dente dell’errore nella barra Output.

6.4 EDITOR FUNCTION BLOCK DIAGRAM (FBD)

L’editorFBDpermettedicodificareemodificarelePOUusandoFBD(FunctionBlockDia-gram), uno dei linguaggi ammessi in IEC.

6.4.1 CREARE UN NUOVO DOCUMENTO FBD

Vederelasezione“CreareemodificarelePOU”(paragrafi5.1.1e5.1.2).

6.4.2 AGGIUNGERE/RIMUOVERE NETWORK

OgniPOUcodificatainFBDècompostadaunasequenzadinetwork.Unnetworkèdefinitocomeuninsiememassimodielementigraficiinterconnessi.Leestremitàaltaebassadiogninetworksonofissatedaduelineedritte,mentreasinistraogninetworkèdelimitatodauntastogrigioinrilievochecontieneilnumerodelnetwork.

LogicLab manuale utente 73

Sulnetworksipossonoeseguireleseguentioperazioni:

- Peraggiungereunnuovonetwork,cliccareNetwork>New nel menu Scheme,opremereuno dei tasti equivalenti nella barra Network.

- Perassegnareun’etichettaadunnetworkselezionato,eseguireilcomandoNetwork>Label del menu Scheme.Questo renderàpossibile raggiungeredirettamente ilnetworketi-chettato.

- Pervisualizzareunagrigliadisfondocheaiutiadallineareglioggetti,premereView grid sulla barra Network.

- Peraggiungereuncommento,premereComment sulla barra FBD.

6.4.3 ETICHETTARE I NETWORK

Sipuòmodificarel’ordinediesecuzioneusualedeinetworkattraversoun’istruzionejump,chetrasferisceilcontrollodelprogrammaadunnetworketichettato.Perassegnareun’e-tichettaadunnetwork,cliccareduevolteiltastogrigioinrilievocheportailnumerodelnetwork,sullasinistra.

Ciò faràapparireunafinestradidialogo,dovesaràpossibiledigitare l’etichettachesivuoleassociarealnetworkselezionato.

PremendoOK,l’etichettasaràstampatanell’angoloinaltoasinistradelnetworkselezio-nato.

6.4.4 INSERIRE E CONNETTERE I BLOCCHI

Questoparagrafomostracomecostruireunnetwork.

Aggiungereunbloccoalnetworkvuoto,conunadelleseguentioperazioni:

- Cliccare Object>New nel menu Scheme.

- Premere sul tasto New blocknellabarraFBD,ciòfaràcomparireunafinestradidialogocheelencatuttiglioggettidelprogetto,sceglierepoiunavocedallalista.Seilbloccoèunacostante,unreturnstatementounjumpstatementsipuòsemplicementecliccaresuitasticorrispondentinellabarraFBD.

- Trascinarel’oggettoselezionatonellaposizionedesiderata.Peresempio,levariabiliglo-balipossonoesserepresedallafinestraWorkspace,mentreglioperatoristandardelefunzioniincorporatepossonoesseretrascinatedallafinestraLibraries, mentre le va-riabililocalipossonoessereselezionatedall’editordellevariabililocali.

74 LogicLab manuale utente

Ripeterefinoachenonsisonoaggiuntituttiiblocchichecostruirannoilnetwork.

Aquestopunto,connettereiblocchi:

- Cliccare Connection mode nel menu Edit,opremereiltastoConnection della barra FBD,opremeresemplicementelabarraspaziatricedellatastiera.Cliccareunavoltailpinsorgente,poispostareilcursoresulpindidestinazione:l’editorFBDcreaunacon-nessione tra i due.

- Sesivoglionoconnetteredueblocchichehannounacorrispondenzadipinsuno-a-uno,sipuòabilitarelamodalitàdiautoconnessionecliccandoAutoconnect nel menu Sche-meopremendoiltastoAutoconnect nella barra Network.Prenderepoiidueblocchietrascinarli l’unovicinoall’altrocosicché ipinscorrispondenticoincidano.L’editorFBDtraccia automaticamente le connessioni.

Cancellando un blocco, le sue connessioni non saranno rimosse automaticamente, ma di-venteranno non valide ed evidenziate in rosso. Cliccare Delete invalid connection nel menu Scheme o digitare CTRL+B sulla tastiera.

6.4.5 MODIFICARE I NETWORK

L’editorFBDè fornitodi funzionicomuniallamaggiorpartedelleapplicazionegrafichefunzionantisullapiattaformaWindows,ovvero:

- selezione di un blocco.

- SelezionediunsetdiblocchipremendoiltastoShift +leftedisegnareunacorniceche include i blocchi da selezionare.

- OperazionidiCut, Copy e Paste di un singolo blocco o di un set ti blocchi.

- Drag-and-drop.

TuttelefunzioninominatesonoaccessibilitramiteilmenuEdit o la barra Main.

6.4.6 MODIFICARE LE PROPRIETA’ DEI BLOCCHI

- Cliccare Increment pins + nel menu Scheme,opremereiltastoInc pins nella barra FBD,perincrementareilnumerodipinsdiinputdialcunioperatoriefunzioniincorpo-rate.

- Cliccare Enable EN/ENO pins nel menu Scheme,opremereiltastoEN/ENO nella barra FBD,pervisualizzarelepinsinputeoutputabilitate.

LogicLab manuale utente 75

- Cliccare Object>Instance name nel menu Scheme,opremereiltastoFBD properties nella barra FBDpercambiareilnomedellaricorrenzadelbloccofunzione.

6.4.7 ACQUISIRE INFORMAZIONI SU UN BLOCCO

E’semprepossibileinformarsisuunbloccoaggiuntoadundocumentoFBDselezionando-loecompiendounadelleseguentioperazioni:

- Cliccare Object>Open source nel menu Scheme,opremereiltastoView source nella barraFBD,peraprireilcodicesorgentediunblocco.

- Cliccare Object properties nel menu Scheme,opremereiltastoFBD properties nella barra FBD,pervedereleproprietàeipinsdiinputeoutputdelbloccoselezionato.

6.4.8 RILEVAZIONE AUTOMATICA DELL’ERRORE

L’editorFBDmostraautomaticamenteanchelaposizionedeglierroridelcompilatore.Perraggiungereilbloccodovel’errorehaavutoluogo,cliccareduevoltesullalineacorrispon-dente dell’errore nella barra Output.

6.5 EDITOR SEQUENTIAL FUNCTION CHART (SFC)

L’editorSFCpermettediicodificareemodificarelePOUusandoSFC(SequentialFunctionChart) uno dei linguaggi ammessi in IEC.

6.5.1 CREARE UN NUOVO DOCUMENTO SFC

Vederelasezione“CreareemodificarelePOU”(paragrafi5.1.1e5.1.2).

6.5.2 INSERIRE UN NUOVO ELEMENTO SFC

Cisipuòavvalereindifferentementediunadelleseguentiprocedure:

- CliccareObject>NewnelmenuScheme,poiselezionareiltipodinuovoelemento(azio-ne, transizione o salto).

- Premere il tasto New step, Add transition o Add jump della barra SFC.

Inognicasoilpuntatoredelmousecambiain:

perglistep;

perletransazioni;

perisalti.

76 LogicLab manuale utente

6.5.3 CONNETTERE ELEMENTI SFC

SeguirelaproceduraseguenteperconnettereblocchiSFC:

- Cliccare Connection mode nel menu Edit,opremereiltastoConnection nella barra FBD,opremeresemplicementelabarraspaziatricedellatastiera.Cliccareunavoltasulpinsorgente,poispostareilcursoresulpindidestinazione:l’editorSFCcreaunacon-nessione tra i due.

- Altrimenti,sipuòabilitareilmododiautoconnessionecliccandoAutoconnect nel menu Scheme, o cliccando il tasto Autoconnect nella barra Network.Prenderepoiiduebloc-chi,etrascinarliunovicinoall’altrocosicchéipinsrispettivicoincidano,ciòfaràsìchel’editor SFC tracci automaticamente la connessione.

6.5.4 ASSEGNARE UN’AZIONE AD UNO STEP

Questo paragrafo spiega come rendere effettiva un’azione e come assegnarla ad unostato.

6.5.4.1 SCRIVERE IL CODICE DI UN’AZIONE

Periniziarel’implementazionediun’azione,occorreaprireuneditor.Fareciòseguendouna di queste istruzioni:

- Cliccare Code object>New action nel menu Scheme.

- CliccarecoltastodestrosulnomedellaPOUSFCnellafinestraWorkspace.AppariràunmenucontestualedacuisipotràscegliereilcomandoNew action.

Intuttiedueicasi,LogicLabmostraunafinestradidialogocomequesta.

Selezionare uno dei linguaggi e digitare il nome della nuova azione nella casella di testo chesitrovaallafinedellafinestradidialogo.ConfermarepremendoOKouscirepremendoCancel.

Premendo OK,LogicLabapreautomaticamentel’editorassociatoallinguaggioselezionatonellafinestradidialogoprecedenteesipotràdigitareilcodicedellanuovaazione.

Notarechenonèpossibiledichiararenuovevariabili locali,poichéilmodulochesistamodificandoèuncomponentedelmoduloSFCoriginale.LavisibilitàdellevariabililocalisiestendeatutteleazionietransizionichefannopartedeldiagrammaSFC.

LogicLab manuale utente 77

6.5.4.2 ASSEGNARE UN’AZIONE AD UNO STEP

Una volta terminato di scrivere il codice, cliccare due volte sullo stato a cui si vuole asse-gnareilnuovostep.Appariràunafinestradidialogo.

Dalla lista mostrata nel box Code N, selezionare,selostepèattivo,ilnomedell’azioneche si vuole eseguire.

Sipuòanchescegliere,dallalistamostratanelboxCode P (Pulse), il nome dell’azione chesivuoleeseguireognivoltachelostepdiventaattivo(l’azionevieneeseguitasoloall’attivazionedellostep,indipendentementedalnumerodeiciclideglistepcherimango-noattivi).Confermarel’assegnamentopremendoOK.

NelloschemaSFC,leassegnazionidiazioniastepsonorappresentatedaletteresullbloc-codellostep:

- azione N con la lettera Nnell’angoloinaltoadestra;

- azione P con la lettera P nell’angolo in basso a destra.

Sesiavràbisognosuccessivamentedimodificareilcodicesorgentedell’azione,basteràcliccare due volte su questo simbolo. Altrimenti, cliccare due volte sul nome dell’azione nella cartella ActionsdellafinestraWorkspace.

6.5.5 SPECIFICARE UNA COSTANTE/VARIABILE COME CONDIZIONE DI UNA TRANSIZIONE

Comeaffermatonellasezionedelriferimentodellinguaggio,unatransizionepuòessereassegnataattraversounacostante,unavariabile,unsegmentodicodice.Questoparagra-fospiegacomeusareiprimidue,mentreilcodicecondizionalesaràtrattatonelprossimoparagrafo.

78 LogicLab manuale utente

Prima di tutto cliccare due volte sulla transizione a cui si vuole assegnare una condizione. Ciòfaràapparirelaseguentefinestradidialogo.

Selezionare Truesesivuolechequestatransizionesiacostantementeverificata,False se sivuolecheilprogrammaPLCcontinuiadeseguireilbloccoprecedente.

Altrimenti, selezionando VariablelatransizionedipenderàdalvaloredellavariabileBo-oleana.Cliccaresullapartecorrispondenteperrenderedisponibilelacaselladitestoallasuadestra,eperspecificareilnomedellavariabile.

Perquestoscopo,èpossibileservirsidell’objectbrowser,chesipuòrichiamarepremendoil tasto Browse mostrato qui sotto.

Premere OKperconfermareoCancelperabbandonaresenzaapplicareicambiamenti.

6.5.6 ASSEGNARE CODICE CONDIZIONALE AD UNA TRANSIZIONE

Questoparagrafomostracomespecificareunacondizioneattraversounsegmentodico-dice, e come assegnarlo ad una transizione.

6.5.6.1 SCRIVERE IL CODICE DI UNA TRANSIZIONE

Iniziareaprendouneditor,seguendounadelleseguentiprocedure:

- cliccare Code object>New transition nel menu Scheme.

- CliccarecoltastodestrosulnomedellaPOUSFCnellafinestraWorkspace,poiselezio-nare il comando New transitiondalmenucontestualecheapparirà.

Inentrambiicasi,LogicLabmostraunafinestradidialogocomequellamostratainfigura.

NotarechesipuòusarequalunquelinguaggiopercodificareunacondizionetranneSFC.Selezionare uno dei linguaggi e digitare il nome della nuova condizione nella casella di testoallafinedellafinestradidialogo.PoiconfermarecliccandoOK o abbandonare con Cancel.

LogicLab manuale utente 79

Premendo OK,LogicLabapreautomaticamentel’editorassociatoallinguaggioselezionatonellafinestradidialogoprecedenteesaràpossibiledigitareilcodicedellanuovacondi-zione.

Notareanchechenonèpossibiledichiararenuovevariabili,poichéilmodulochesistamodificandofapartedelmoduloSFCoriginale,cheèlaPOUincuipossonoesseredi-chiarate le variabili locali. La visibilità delle variabili locali si estenderà a tutte le azioni e transizionichefannopartedeldiagrammaSFC.

6.5.6.2 ASSEGNARE UNA CONDIZIONE AD UNA TRANSIZIONE

Una volta terminato di scrivere il codice, cliccare due volte sullo stato a cui si vuole asse-gnarelanuovacondizione.Appariràunafinestradidialogo.

Selezionareilnomedellacondizionechesivuoleassegnareaquestostato.ConfermarepremendoOK.

Se successivamente si avrà bisogno dimodificare il codice sorgente della condizione,cliccare due volte sul nome della transizione nella cartella Transitions della finestraWorkspace.

6.5.7 SPECIFICARE LA DESTINAZIONE DI UN JUMP

Perspecificarelostepdidestinazionediunjump,cliccareduevoltesulbloccodijumpnellospazioChart.Ciòfaràapparireunafinestradidialogosimileaquellamostratasot-to,cheelencailnomedituttiglistatiesistenti.Selezionarelostatodidestinazione,poiconfermarepremendoOKoabbandonarepremendoCancel.

80 LogicLab manuale utente

6.5.8 MODIFICARE UN NETWORK SFC

L’editorSFCèfornitodifunzionicomuniallamaggiorpartediapplicazionegrafichefun-zionantisullapiattaformaWindows,ovvero:

- selezione di un blocco.

- SelezionediunsetdiblocchipremendoCTRL+ tasto destro.

- Operazioni di Cut,Copy e Paste sia di un singolo blocco sia di un set di blocchi.

- Drag-and-drop.

AlcunediquestefunzionisonoaccessibilitramiteilmenuEdit o la barra Main.

6.6 EDITOR DELLE VARIABILI

LogicLabcomprendeuneditorgraficosiaperlevariabiliglobalicheperquellelocalichefornisceun’interfacciasempliceperdichiarareemodificarelevariabili:lostrumentosioccupadellatraduzionedeicomponentidiquestieditorincodicesorgenteIEC61131-3sintatticamente corretto.

Peresempio,considerareicomponentidell’editorvariabiliglobalirappresentatonellase-guentefigura.

Ilcodicesorgentecorrispondenteavràquestoaspetto:

VAR_GLOBAL

gA : BOOL := TRUE;

gB : ARRAY[ 0..4 ] OF REAL;

gC AT %MD60.20 : REAL := 1.0;

END_VAR

VAR_GLOBAL CONSTANT

gD : INT := -74;

END_VAR

6.6.1 APRIRE UN EDITOR DI VARIABILI

6.6.1.1 APRIRE L’EDITOR DELLE VARIABILI GLOBALI

Peraprirel’editorvariabiliglobali,cliccareduevoltesuGlobal variables nell’albero del progetto.

LogicLab manuale utente 81

6.6.1.2 APRIRE L’EDITOR DELLE VARIABILI LOCALI

Peraprirel’editorvariabililocali,apriresemplicementelaPOUdicuilevariabilicheside-sideramodificaresonolocali.

6.6.2 CREARE UNA NUOVA VARIABILE

Per creare una nuova variabile, si può cliccare sulla voceInsert record nella barra Project.

Altrimenti, accedere al menu Variables e scegliere Insert.

82 LogicLab manuale utente

6.6.3 MODIFICARE LE VARIABILI

Seguirelaproceduraseguentepermodificareladichiarazionediunavariabileinuneditordivariabili(tuttiipassaggiseguentisonoopzionalienormalmentesisalterannodurantelamodificadiunavariabile):

1) Modificareilnomedellavariabileinserendoilnuovonomenellacellacorrispondente.

2) Cambiare il tipodivariabile,editandoilnomedeltiponellacellacorrispondenteocliccaresulpulsanteeselezionareiltipodesideratodall’elencochecompare.

3) Modificare l’indirizzodellavariabile cliccandosul tastonellacella corrispondenteeinserendo le informazionirichiestenellafinestrachecompare.Notareche, incasodivariabiliglobali,questaoperazionepotrebbecambiarelaposizionedellavariabilenell’alberodelprogetto.

LogicLab manuale utente 83

4) Nelcasodivariabiliglobali,èpossibileassegnarelavariabileadungruppo,selezio-nandolodallalistachesiaprecliccandosullacellacorrispondente.Questaoperazionecambieràlaposizionedellavariabilenell’alberodelprogetto.

5) Scegliereselavariabileèunarrayono;seloè,modificareladimensionedellava-riabile.

6) Modificareivaloriinizialidellavariabile:cliccaresultastonellacellacorrispondenteeinserireivalorinellafinestrachecompare.

84 LogicLab manuale utente

7) Assegnareunattributoallavariabile(peresempio,CONSTANT o RETAIN), selezionan-dolodallalistachesiaprecliccandosullacellacorrispondente.

8) Digitareladescrizionedellavariabilenellacellacorrispondente.Notareche,nelcasodivariabiliglobali,questaoperazionepotrebbecambiarelaposizionedellavariabilenell’alberodelprogetto.

9) Salvareilprogettopermantenereicambiamentifattialladichiarazionedellavaria-bile.

6.6.4 CANCELLARE LE VARIABILI

Percancellareunaopiùvariabili,selezionarlenell’editor:sipossonousareitastiCTRL o SHIFTperselezionarepiùelementi.

CliccarepoisuDelete nella barra Project.

Altrimenti,sipuòaccederealmenuVariables e scegliere Delete.

LogicLab manuale utente 85

NotarechenonsipuòcancellareilRESULT di una FUNCTION IEC61131-3.

6.6.5 ORDINARE LE VARIABILI

E’ possibile ordinare le variabili nell’editor cliccando sull’intestazione della colonna delcampochesidesiderautilizzarecomecriteriodiordinamento.

6.6.6 COPIARE LE VARIABILI

L’editorvariabilipermettedicopiareeincollareelementirapidamente.SipossonousarelescorciatoiedellatastieraoaccedereaquestecomponentidalmenuEdit.

86 LogicLab manuale utente

LogicLab manuale utente 87

7. COMPILARE

LacompilazioneconsistenelprendereilcodicesorgentePLCetradurloautomaticamenteincodicebinario,chepuòessereeseguitodalprocessoredeltargetdevice.

7.1 COMPILARE IL PROGETTO

Primadiiniziarelacompilazioneeffettiva,assicurarsichealmenounprogrammasiastatoassegnato ad un task.

Quandononsussistequestapre-condizione,lacompilazionegeneraunmessaggiodier-roresignificativo.

Percominciarelacompilazione,cliccaresuCompile nella barra Project.

Altrimenti,sipuòscegliereCompile dal menu ProjectopremereF7 sulla testiera.

LogicLabsalvaautomaticamentetuttiicambiamentialprogettoprimadiiniziarelacom-pilazione.

7.1.1 CARICARE UN FILE IMMAGINE

Prima di compiere la compilazione effettiva, il compilatore necessita di caricare il fileimmagine(imgfile)checontienelamappadimemoriadeltargetdevice.Seiltargetèconnessoalmomentodell’iniziodellacompilazione,ilcompilatorecercheràilfileimmagi-nedirettamenteneltargetstesso.Altrimenti,caricheràlacopialocaledelfileimmaginedallacartelladilavoro.Seiltargetdevicenonèconnessoenonc’ècopialocaledelfileimmagine, lacompilazionenonpuòavvenire:sarànecessarioconnettersiaduntargetdeviceoperativo.

88 LogicLab manuale utente

7.2 OUTPUT DEL COMPILATORE

Se è stato completato il passaggio precedente, il compilatore compie la compilazioneeffettivaestampaunreportnellabarraOutput.L’ultimastringadelreporthailformatoseguente:

m warnings, n errors

Informal’utentedelrisultatodellacompilazione.

Condizione Descrizione

n>0 Erroridicompilazione.IlcodicePLCcontieneunoopiùerrorigravi,chenonpossonoessereaggiratidalcompilatore.

n=0, m>0

Warningdicompilazione.IlcodicePLCcontieneunoopiùerroriminori,cheilcompilatoreindividuaeaggiraautomaticamente.SiècomunqueinformaticheilprogrammaPLCpuòcomportarsiinunamanieradiversadaquellachecisiaspetta:sièspronatiadeliminarequestiwarningmodificandoericompilandol’applicazionefinchénonapparenessunmessaggiodiwarning.

n=m=0 IlcodicePLCèinteramentecorretto,lacompilazioneèeseguita.Sidovrebbesemprelavorarecon0warning,0error.

7.2.1 ERRORI DEL COMPILATORE

Quandol’applicazionecontieneunoopiùerrori,nellafinestraOutputvengonoriportatealcuneprezioseinformazioniperognunodiquestierrori.

Comesipuòvedere,l’informazionecomprende:

- ilnomedellaPOUchepresental’errore;

- ilnumerodellalineadelcodicesorgenteincuil’erroresièverificato;

- se si tratta di un errore bloccante (error)odiunwarningcheilcompilatorepuòaggi-rare (warning);

- ilcodicedell’errore;

LogicLab manuale utente 89

- la descrizione dell’errore.

Fareriferimentoall’appositasezioneperladescrizionedeglierroridelcompilatore.

Cliccando due volte sul messaggio di errore nella barra Output,LogicLabapreilcodicesorgente ed evidenzia la linea contenente l’errore.

Saràquindipossibilerisolvereilproblemaericompilare.

90 LogicLab manuale utente

7.3 COMPILATORE COMMAND-LINE

IlcompilatorediLogicLabpuòessereusatoindipendentementedall’IDE:nelladirectoryLogicLab,sitrovaunfileeseguibilechiamato“Command-linecompiler”,chepuòessererichiamato(peresempioinunfilebatch)connumeroseopzioni.

Perottenereleinformazionisullasintassieleopzionidiquestostrumentodicommand-line,lanciareilfileeseguibilesenzaparametri.

LogicLab manuale utente 91

8. LANCIARE L’APPLICAZIONE

Pereseguireildownloadeildebugdell’applicazione,ènecessariostabilireunaconnessio-necoltargetdevice.Questocapitolosifocalizzasulleoperazionirichiesteperconnettersialtargetdeviceedeseguireildownloaddell’applicazione,mentrel’ampiagammadistru-mentididebugverrannodescrittiinuncapitoloseparato(vedicapitolo9).

8.1 IMPOSTARE LA COMUNICAZIONE

Per stabilire una comunicazione col target device, assicurarsi che sia collegato corretta-mente(tuttiicavidevonoessereattaccati,ilnetworkconfiguratocorrettamente,ecc…).

Seguirelaproceduraseguenteperimpostareestabilirelaconnessionealtargetdevice:

1) Cliccare su Settings nel menu CommunicationdellafinestraprincipalediLogicLab.Questofaràapparirelaseguentefinestradidialogo.

Gli elementi presenti nella lista dei protocolli di comunicazione dipendono dai fileeseguibilidi setup fatti funzionaresulPC(riferirsial fornitoredell’hardwareseunprotocollochedovevaesserepresentenellalistanoncompare).

2) SelezionareilprotocolloappropriatoerenderloattivopremendoilbottoneActivate.

92 LogicLab manuale utente

3) Compilaretuttileimpostazionispecifichedelprotocollo(peresempiol’indirizzodeltimeoutdicomunicazione–ovveroperquantotempoLogicLabdeveaspettareunarispostadaltargetprimadiriportareunmessaggiodierrore).

4) Applicareicambiamentiapportatialleimpostazionidicomunicazione.

E’orapossibilestabilirelacomunicazionecliccandosuConnect nel menu Communication, opremendoiltastoConnect nella barra Project.

LogicLab manuale utente 93

8.1.1 SALVARE L’ULTIMA PORTA DI COMUNICAZIONE USATA

Quandosiconnetteuntargetdeviceusandounaportaseriale(portaCOM),disolitosiusasemprelastessaportapertuttiidevice(moltiPCmodernihannounasolaportaCOM).

Potetesalvarel’ultimaportaCOMutilizzataèlasciarecheLogicLabusiquestaportapersovrascrivereleimpostazionidelprogetto:questafunzionesirilevaparticolarmenteutilequandosicondividonoprogetticonaltrisviluppatori,chepossonousareporteCOMdiffe-rentiperconnettersialtargetdevice.

PersalvareleimpostazionidellaportaCOM,abilitarel’opzioneUse last port nel menu File > Options.

8.2 STATO ON-LINE

8.2.1 STATO DELLA CONNESSIONE

Lostatodellacomunicazioneèmostratoinunapiccolacasellavicinaalbordodestrodellabarra Status.

Senonsihaancoraprovatoastabilireunaconnessione,lostatodellacomunicazioneèimpostatosuNot connected.

Provando a connettersi al target device, lo stato di comunicazione diventa uno dei se-guenti:

- Error:lacomunicazionenonpuòesserestabilita,controllaresiailinkfisicicheleim-postazionidicomunicazione.

- Connected: la comunicazione è stata stabilita.

8.2.2 STATO DELL’APPLICAZIONE

Vicinoallostatodellacomunicazionec’èunaltropiccoloriquadrochefornisceinformazio-nisullostatodell’applicazioneattualmenteinesecuzionesultargetdevice.

QuandolostatodiconnessioneèConnected, lostatodell’applicazioneassumeunodeiseguenti valori.

- No code:nessunaapplicazioneèeseguitasultargetdevice.

94 LogicLab manuale utente

- Diff. code:l’applicazioneattualmenteinesecuzionesultargetdevicenonèlastessadiquellaapertanell’IDE;inoltrenonèdisponibilenessunainformazionedidebuginli-neaconl’applicazione:ivalorimostratinellafinestrawatchonell’oscilloscopiononsonorealielamodalitàdebugnonpuòessereattivata.

- Diff. code, Symbols OK:l’applicazioneattualmenteinesecuzionesultargetdevicenonèlastessadiquellaattualmenteapertanell’IDE;tuttaviasonodisponibilialcuneinformazioni di debug (per esempio, perché l’applicazione è stata precedentementescaricatadaltargetdevicedallostessoPC): ilvaloremostratonellafinestrawatchonell’oscilloscopiosonoreali,malamodalitàdebugnonpuòessereancoraattivata.

- Source OK:l’applicazioneattualmenteinesecuzionesultragetdeviceèlastessaattual-menteapertasull’IDE:lamodalitàdebugpuòessereattivata.

8.3 ESEGUIRE IL DOWNLOAD DELL’APPLICAZIONE

Un’ applicazione PLC compilata deve essere scaricata al target device inmodo che ilprocessorelaesegua.QuestoparagrafomostracomeinviareuncodicePLCaduntargetdevice.NotarecheLogicLabpuòeseguireildownloaddelcodicealtargetdevicesolosequest’ultimoècollegatoalPCsucuiLogicLabstafunzionando.Vederelasezionecorri-spondenteperidettagli.

Pereseguire ildownloaddell’applicazione,cliccaresul tastocorrispondentenellabarraProject.

In alternativa, scegliere Download code dal menu Project opremereiltastoF5.

LogicLabcontrollacheilprogettononabbiadeicambiamentinonsalvati.Inquestocaso,comincialacompilazionedell’applicazioneautomaticamente.Allafineilcodicebinarioèinviatoaltargetdevice,cheesegueunresetautomaticoallafinedellatrasmissione.Orailcodiceinviatoèeffettivamenteeseguitodalprocessoredeltargetdevice.

8.3.1 CONTROLLARE IL CODICE SORGENTE SCARICATO

Seilcodicesorgentedell’applicazionevienescaricatoinsiemealcodicebinarioono,di-pendedaltargetdeviceconcuicisistainterfacciando:alcunideviceospitanoilcodicesorgentedell’applicazionenellaloromemoria,inmododipermettereallosviluppatoredicaricareilprogettoinunmomentosuccessivo.

Inquestocaso,potetecontrollarealcuniaspettidelprocessodidownloaddelcodicesor-gente,comespiegatonelparagrafoseguente.

LogicLab manuale utente 95

8.3.1.1 INTERROMPERE IL DOWNLOAD DEL CODICE SORGENTE

Alfinediaccelerareilciclodisviluppo,siconsigliadidisabilitareildownloaddelcodicesorgente: deselezionare la voce Source code download nel menu Communication.

Quandosifermalosviluppodell’applicazione,èpossibileriattivareildownloaddelcodicesorgente cliccando sulla stessa voce del menu.

Quandocisidisconnettedaltargetdevice,LogicLabcontrollasel’applicazioneattualmen-teinesecuzionesultargeteilcodicesorgentedisponibileabordocoincidono,avvisandovise non lo sono.

8.3.1.2 PROTEGGERE IL CODICE SORGENTE CON UNA PASSWORD

Siconsigliadiproteggereilcodicesorgentescaricatosultargetdeviceconunapassword,cosìcheLogicLabnonapriràilprogettoscaricatoselapaswordinseritanonsaràcorretta.

AprirelafinestraProject options (menu ... Project > Options)eimpostarelapas-sword.

96 LogicLab manuale utente

Sipuòanchesceglieredidisabilitarelapassword.

8.4 SIMULAZIONE

Asecondadeltargetconcuicisistainterfacciando,sipuòessereingradodisimularel’esecuzione dell’applicazione PLC con l’ambiente di simulazione integrato di LogicLab:SimuLab.

Per avviare la simulazione, basta cliccare sulla voce corretta della barra Project.

Fareriferimentoalmanualedi<<Simulation>>perottenereinformazionisucomecon-trollare la simulazione.

LogicLab manuale utente 97

9. DEBUG

LogicLabforniscenumerosistrumentididebug,cheaiutanolosviluppatoreacontrollaresel’applicazionesicomportacomevolutooppureno.

Tuttiquestistrumentididebugfondamentalmentepermettonoallosviluppatoredivedereilvaloredellevariabiliselezionatementrel’applicazionePLCstafunzionando.

GlistrumentididebugdiLogicLabpossonoessereraggruppatiindueclassi:

- Strumentididebugasincroni.Leggonoivaloridellevariabiliselezionatedallosviluppa-tore con richieste successive inviate al target device. Tanto gli strumenti di debug (in esecuzionesulPC)quanto,potenzialmente,iltaskresponsabiledirispondereaquesterichieste(sultargetdevice)eseguonoindipendentementedall’applicazionePLC.Quindinoncisonogaranziedisincronismo,inrelazioneall’esecuzionedell’applicazionePLC,suivalorididuedistintevariabilicampionateallostessomomento(unoopiùcicliPLCpotrebberointercorreretrailcampionamentodellaprimavariabileequellodellasecon-da);perlastessaragione,l’evoluzionedelvalorediunasingolavariabilenonèaffida-bile,soprattuttoquandocambiavelocemente.

- Strumentididebugsincroni.RichiedonoladefinizionediuntriggernelcodicePLC.Ag-giornano simultaneamente tutte le variabili a loro assegnate ogni volta che l’esecuzione dell’applicazionePLCraggiungeiltrigger,poichénessun’altraistruzionepuòessereese-guitafinchéilvalorediognivariabileèstatoaggiornato.Comerisultato,glistrumentididebugsincronisopperisconoallelimitazionicaratteristichediquelliasincroni.

Questocapitolomostracomeeseguireildebugdell’applicazioneusandosiaglistrumentisincroni che quelli asincroni.

9.1 FINESTRA WATCH

LafinestraWatchpermettedimonitorareivaloriattualidiunsetdivariabili.Essendounostrumentoasincrono,lafinestraWatch non garantisce la sincronizzazione dei valori. Per questomotivo,leggendoivaloridellevariabilinellafinestraWatch è bene ricordare che sussistelapossibilitàchepossanoriferirsiaciclidiesecuzionedifferentidaltaskcorri-spondente.

LafinestraWatchcontieneunavoceperciascunavariabilecheabbiamoaggiuntoadessa.LeinformazionimostratenellafinestraWatchcomprendonoilnomedellavariabile,ilsuovalore,ilsuotipoelasuaposizionenell’applicazionePLC.

9.1.1 APRIRE E CHIUDERE LA FINESTRA WATCH

PeraprirelafinestraWatch, cliccare sul bottone Watch della barra Main.

PerchiuderelafinestraWatch, cliccare ancora sul bottone Watch.

98 LogicLab manuale utente

In alternativa, cliccare sul bottone Closesull’angoloinaltoadestradellafinestraWatch.

Inentrambiicasi,chiuderelafinestraWatchsignificasemplicementenasconderla,nonreimpostarla.Aprovadiciò,chiudendoeriaprendolafinestraWatch si noterà che contie-nesemprelevariabiliaggiunteadessa.

9.1.2 AGGIUNGERE OGGETTI ALLA FINESTRA WATCH

Pervedereunavariabile,occorreprimaaggiungerlaallalistawatch.

Notareche,adifferenzadellefinestretriggeredellafinestraGraphic trigger,èpos-sibileaggiungereallafinestraWatchtuttelevariabilidelprogetto,senzapreoccuparsididove sono dichiarate.

9.1.2.1 AGGIUNGERE UNA VARIABILE DA UN EDITOR DI CODICE SORGENTE PER I LINGUAGGI TESTUALE

Seguirelaproceduraseguenteperaggiungereunavariabiledauneditordicodicesorgen-tetestuale(come,ILorST)allafinestraWatch: selezionare una variabile cliccando due voltesudiessaetrascinarlanellafinestraWatch.

Lastessaprocedurafunzionapertuttelevariabilichesivoglionoinserire.

9.1.2.2 AGGIUNGERE UNA VARIABILE DA UN EDITOR DI CODICE SORGENTE PER I LINGUAGGI GRAFICI

Seguirelaproceduraseguenteperaggiungereunavariabiledauneditordicodicesorgen-tegrafico(LD,FBDoSFC)allafinestraWatch:

1) Premere il bottone Watch sulla barra FBD.

2) CliccaresulbloccocherappresentalavariabilechesivuolechesiamostratanellafinestraWatch.

LogicLab manuale utente 99

3) Appariràunafinestradidialogocheelencatuttelericorrenzedifinestredidebugat-tualmenteesistenti,chiedendoqualedebbariceverel’oggettosulqualesihaappenacliccato.

PermostrarelavariabilenellafinestraWatch,premereWatchepoiOK.

Il nome della variabile, il valore e la locazione sono ora visualizzate in una nuova riga della finestraWatch.

Lastessaprocedurasiapplicaatuttelevariabilichesivoglionocontrollare.

UnavoltainseritenellafinestraWatch tutte le variabili che si vogliono visualizzare, clic-care sul tasto Select/MovedellabarraFBD:ilcursoretorneràallasuaformaoriginale.

100 LogicLab manuale utente

9.1.2.3 AGGIUNGERE UNA VARIABILE DA UN EDITOR DI VARIABILI

Per aggiungere una variabile alla finestra Watch, selezionare il record corrispondentedell’editorvariabiliefaredrag-and-dropnellafinestraWatch

opremereF8.

9.1.2.4 AGGIUNGERE UNA VARIABILE DALL’ALBERO DEL PROGETTO

PeraggiungereunavariabileallafinestraWatch,selezionarlanell’alberodelprogettoefaredrag-and-dropnellafinestraWatch

opremereF8.

LogicLab manuale utente 101

9.1.2.5 AGGIUNGERE UNA VARIABILE DELLA BARRA DELLA FINESTRA WATCH

Peraggiungereunavariabileèanchepossibilecliccaresull’appositavocedellabarrain-ternadellafinestraWatch.

Digitare(oselezionarenavigandoisimbolidelprogetto)ilnomedellavariabileelasuaposizione(doveèstatadichiarata).

9.1.3 RIMUOVERE UNA VARIABILE

AffinchéunavariabilenonsiapiùmostratanellafinestraWatch, selezionarla cliccando sul suonomeepremereiltastoDel.

9.1.4 AGGIORNAMENTO DEI VALORI

9.1.4.1 OPERAZIONI NORMALI

Considerarel’esempioseguente.

102 LogicLab manuale utente

IlmanagerdellafinestraWatchleggeperiodicamenteilvaloredellevariabilidallamemo-ria.

Tuttavia,quest’azioneavvieneinmodoasincrono,quindipuòsuccederecheuntaskapri-oritàpiùaltamodifichiilvaloredialcunedellevariabilimentrequestesonolette.Quindi,allafinedelprocessodiaggiornamento,ivalorimostratinellafinestrapotrebberoriferirsia stati di esecuzione diversi del codice PLC.

9.1.4.2 TARGET DISCONNESSO

Se il target device è sconnesso, la colonna Valuecontienetrepuntini.

9.1.4.3 OGGETTO NON TROVATO

SeilcodicePLCcambiaeLogicLabnonriesceariportarelaposizionedimemoriadiunoggettonellafinestraWatch, la colonna Valueconterràtrepuntini.

ProvandoadaggiungereallafinestraWatch un simbolo che non è stato allocato, LogicLab darà il seguente messaggio d’errore.

9.1.5 CAMBIARE IL FORMATO DI UN DATO

QuandosiaggiungeunavariabileallafinestraWatch, LogicLab riconosce automaticamen-teilsuotipo(interosenzasegno,interoconsegno,virgolamobile,esadecimale)emostraregolarmente il suo valore. Inoltre, se la variabile è a virgola mobile , LogicLab gli assegna unnumerodecimaledidefault.

Tuttavia,cipotrebbeesserebisognodistamparelavariabileinunformatodifferente.

LogicLab manuale utente 103

PerimpostareunaltroformatodiversodaquelloassegnatodaLogicLab,premereiltastoFormat valuedellabarradiapplicazione.

Scegliereilformatoeconfermarel’operazione.

9.1.6 LAVORARE CON UNA WATCH LIST

E’possibilesalvarecomefileilsetdellevocinellafinestraWatch,perpoterfacilmenteri-memorizzare lo status di questo strumento di debug in una sessione di lavoro successiva.

Persalvarel’elenco,seguirequestaprocedura:

1) CliccaresullavocecorrispondentenellabarraWatch window.

2) Inserireilnomedelfileesceglierelasuadestinazionenelfilesystem.

104 LogicLab manuale utente

Percaricareunawatchlist,procederecomesegue:

1) CliccaresullavocecorrispondentedellabarraWatch window.

2) Navigareilfilesystemeselezionareilfilewatchlist.

IlsetdisimbolidellawatchlistvieneaggiuntoallafinestraWatch.

9.2 OSCILLOSCOPIO

L’Oscilloscopiopermetteditracciarel’evoluzionedeivaloridiunsetdivariabili.Essendounostrumentoasincrono,l’Oscilloscopionongarantiscelasincronizzazionedellacampio-natura.

LogicLab manuale utente 105

Aprendol’OscilloscopioappareunanuovafinestravicinoalbordodestrodellacornicediLogicLab.Questaèl’interfacciaperavereaccessoallefunzionididebugchel’Oscilloscopiometteadisposizione.L’Oscilloscopioèformatodatreelementi,comemostratoquisotto.

Labarradiapplicazionepermettedicontrollaremeglio l’Oscilloscopio.Unadescrizionedettagliatadiciascuncomandoverràdatapiùavantiinquestocapitolo.

L’area Chart include numerose voci:

- Plot: area contenente la curva delle variabili.

- Cursoriverticali:cursoricheidentificanoduelineeverticalidistinte.Ivaloridiciascunavariabileall’intersezioneconquestelineesonoriportatinellecolonnecorrispondenti.

- Barradiscorrimento:selascaladell’assexètroppolargapermostraretuttiicampio-namentinell’areaPlot,labarradiscorrimentopermettedimuoversiavantieindietrolungo l’asse orizzontale.

Lapartepiùbassadell’Oscilloscopioèunatabellachepresentaunarigaperognivariabile.

9.2.1 APRIRE E CHIUDERE L’OSCILLOSCOPIO

Peraprirel’Oscilloscopio,cliccaresulbottoneAsync sulla barra Main.

Perchiuderel’Oscilloscopio,cliccarenuovamentesulbottoneAsync.

106 LogicLab manuale utente

Altrimenti, cliccare sul tasto Closenell’angoloinaltoadestradellafinestradell’Oscillo-scopio.

Inentrambiicasi,chiuderel’Oscilloscopiosignificasemplicementenasconderlo,nonre-settarlo.Aprovadiciò,aprendonuovamentel’Oscilloscopiodopoaverlochiuso,sivedràancora il tracciato della curva delle variabili aggiunte ad esso.

9.2.2 AGGIUNGERE VOCI ALL’OSCILLOSCOPIO

Per tracciare l’evoluzione del valore di una variabile sarà necessario aggiungerla all’Oscil-loscopio.

Notareche,adifferenzadellefinestretriggeredellafinestraGraphic trigger,èpossi-bileaggiungereall’Oscilloscopiotuttelevariabilidelprogetto,senzapreoccuparsididovesono dichiarate.

9.2.2.1 AGGIUNGERE UNA VARIABILE DA UN EDITOR DI CODICE SORGENTE TESTUALE

Seguirelaproceduraseguenteperaggiungereunavariabiledauneditordicodicesorgen-tetestuale(ILoST)all’Oscilloscopio:selezionareunavariabilecliccandoduevoltesudiessaetrascinarlanellafinestraOscilloscopio.

Lastessaprocedurafunzionapertuttelevariabilichesivoglionoinserire.

9.2.2.2 AGGIUNGERE UNA VARIABILE DA UN EDITOR DI CODICE SORGENTE GRAFICO

Seguirelaproceduraseguenteperaggiungereunavariabiledauneditordicodicesorgen-tegrafico(LD,FBDoSFC)all’Oscilloscopio:

1) Premere il tasto Watch nella barra FBD.

LogicLab manuale utente 107

2) Cliccaresulbloccocherappresentalavariabilechesivuolechesiamostratanell’O-scilloscopio.

3) Appariràunafinestradidialogocheelencatutte lericorrenzedifinestredidebugattualmenteesistenti,chiedendoqualedebbariceverel’oggettosulqualesièappenacliccato.

Selezionare OscilloscopeepremereOK. Il nome della variabile è ora visualizzato nella colonna Track.

Lastessaprocedurasiapplicaatuttelevariabilichesivoglionointrodurre.

Unavoltainseritenell’Oscilloscopiotuttelevariabilichesivoglionovisualizzare,cliccaresul tasto Select/Move della barra FBD:ilcursoretorneràallasuaformaoriginale.

9.2.2.3 AGGIUNGERE UNA VARIABILE DA UN EDITOR DI VARIABILI

Peraggiungereunavariabileall’Oscilloscopio,selezionareilrecordcorrispondentedell’e-ditorvariabiliepoiprenderloetrascinarlonell’Oscilloscopio

opremereiltastoF10 e scegliere Oscilloscopedallalistadifinestredidebugchecom-pare.

108 LogicLab manuale utente

9.2.2.4 AGGIUNGERE UNA VARIABILE DALL’ALBERO DEL PROGETTO

Peraggiungereunavariabileall’Oscilloscopio,selezionarlanell’alberodelprogettoepoiprenderlaetrascinarla

opremereiltastoF10 e scegliere Oscilloscopedallalistadifinestredidebugchecom-pare.

9.2.3 ELIMINARE UNA VARIABILE

Perrimuovereunavariabiledall’Oscilloscopio,selezionarlacliccandosudiessaepremereil tasto Del.

9.2.4 VARIABILI DI ESEMPIO

9.2.4.1 OPERAZIONE NORMALE

Considerarel’esempioseguente.

LogicLab manuale utente 109

Ilmanagerdell’Oscilloscopioleggeperiodicamenteilvaloredellevariabilidallamemoria.

Tuttavia,quest’azioneavviene inmodoasincrono,quindipuòsuccederecheuntaskaprioritàpiùaltamodifichiilvaloredialcunedellevariabilimentrequestesonolette.Quin-di,allafinedelprocessodicampionamento,idatiassociatiallostessovaloredell’assexpotrebberoriferirsiastatidiesecuzionediversidelcodicePLC.

9.2.4.2 TARGET DISCONNESSO

Seiltargetdeviceèsconnesso,lecurvedellevariabilicoinvoltesibloccherannofinoaquando verrà restaurata la comunicazione.

9.2.5 CONTROLLARE I DATI ACQUISITI E VISUALIZZARLI

L’Oscilloscopiocontieneunabarradiapplicazioniconparecchicomandi,chepossonoes-sereusatipercontrollareilprocessodiacquisizioneeilmodoincuiidativengonomo-strati.Questoparagrafosifocalizzasuquesticomandi.

Notare che tutti i comandi della barra sono disattivati se non è stata aggiunta nessuna variabileall’Oscilloscopio.

9.2.5.1 INIZIARE E FERMARE L’ACQUISIZIONE DEI DATI

Aggiungendounavariabileall’Oscilloscopio,l’acquisizionedidatiparteimmediatamente.

110 LogicLab manuale utente

Tuttavia,èpossibilesospenderel’acquisizionecliccandosuPause acquisition.

Lacurvasiblocca(mentreilprocessodiacquisizionedeidaticontinuainsottofondo)finoa che non si clicca su Restart acquisition.

Perfermarel’acquisizionecliccaresuStop acquisition.

In questo caso, cliccando su Restart acquisition, l’evoluzione del valore della variabile ètracciatodallalineadipartenza.

9.2.5.2 IMPOSTARE LA SCALA DEGLI ASSI

AprendoOscilloscopio,LogicLabapplicaunascaladidefaultagliassi.Tuttavia,sesivuoleimpostareunascaladiversa,seguirequestaprocedura:

1) Aprireleproprietàdelgraficocliccandosullavocecorrispondentedellabarra.

LogicLab manuale utente 111

2) Impostarelascaladell’asseorizzontale,cheècomuneatutteletracce.

3) Perognivariabile,èpossibilespecificareunascaladistintaperl’asseverticale.

4) Confermareleimpostazioni.Ilgraficosiadatteràperrifletterelanuovascala.

112 LogicLab manuale utente

E’inoltrepossibilezoommareconrispettosiadell’asseorizzontalechediquelloverticale.

Inpiù,sipuòadattarevelocementelascaladell’asseorizzontale,diquelloverticaleodientrambiper includeretutti icampionamenti,cliccandosullavocecorrispondentedellabarra.

LogicLab manuale utente 113

9.2.5.3 DIVISIONE VERTICALE

Guardandol’evoluzionedidueopiùvariabili,sipotrebbevolerdividereleduetracce.Perquesto risultato, cliccare sulla voce Vertical split nella barra Oscilloscope.

9.2.5.4 VISUALIZZARE I SINGOLI CAMPIONI

Cliccando sulla voce Show samples nella barra Oscilloscope, lo strumento evidenzia i valori singoli riscontrati durante l’acquisizione dei dati.

Sipuòcliccareancorasullastessavoce,pertornareallamodalitàdivisualizzazionedidefault.

114 LogicLab manuale utente

9.2.5.5 PRENDERE MISURE

L’Oscilloscopiocontieneduebarredimisurazione,chepossonoesseresfruttateperpren-derealcunemisuresulgrafico;permostrarleenasconderle,cliccaresullavoceShow me-asure bars della barra Oscilloscope.

Permisurareunintervalloditempotradueeventi,spostareunabarrasulpuntodelgra-ficochecorrispondealprimoeventoel’altrasulpuntochecorrispondealsecondo.

L’intervalloditempotraleduebarreèmostratonell’angoloinaltoasinistradelgrafico.

Si puòusareunabarradimisurazioneancheper leggere il valoredi tutte le variabilinell’Oscilloscopioinundeterminatomomento:muoverelabarrasulpuntodelgraficochecorrispondeall’istantechesivuoleanalizzare.

LogicLab manuale utente 115

Nellatabellasottoalgrafico,sipossonoleggereivaloridituttelevariabiliinunparticolaremomento.

9.2.5.6 IMPOSTAZIONI DELL’OSCILLOSCOPIO

E’possibilepersonalizzareulteriormentel’aspettodell’OscilloscopiocliccandosullavoceGraph propertiesnellabarradiapplicazioni.

Nellafinestrachecompare,sceglieresevisualizzareBackground grid, Time slide bar e Track listoppureno.

9.2.6 CAMBIARE IL POLLING RATE

LogicLabinviaperiodicamenterichiestealtargetdevice,perleggereidatitracciatinell’O-scilloscopio.

Ilpollingratepuòessereconfiguratoseguendolaproceduraseguente:

1) cliccare Graph properties.

116 LogicLab manuale utente

2) NellafinestracheapparemodificareSampling polling rate.

3) Confermarel’operazione.

Notarechelarateeffettivadipendedallaperformancedeltargetdevice(inparticolare,dallaperformancedellasuamansionedicomunicazione).SipuòleggerelarateeffettivanellafinestraOscilloscope settings.

9.2.7 SALVARE E STAMPARE IL GRAFICO

LogicLabpermettedimantenerel’acquisizionesiasalvandoidatisuunfilesiastampandounavisualizzazionedeidatitracciatinell’Oscilloscopio.

9.2.7.1 SALVARE I DATI SU UN FILE

E’possibilesalvareicampionamentiacquisitidall’Oscilloscopioinunfile,perpoterliulte-riormente analizzare con altri strumenti.

1) Fermarel’acquisizioneprimadisalvareidatiinunfile.

2) Cliccare su Save tracks data into file della barra Oscilloscope.

3) Sceglieretraiformatididatidisponibiliperl’esportazione:OSC èunsemplicefileditesto,contenentetempoevalorediognicampione;OSCX èunfileXML,cheincludeinformazionipiùcomplete,chepotrannoessereanalizzateconaltritool,fornitisepa-ratamente da LogicLab.

4) Scegliereilnomedelfileeladirectorydidestinazione,poiconfermarel’operazione.

LogicLab manuale utente 117

9.2.7.2 STAMPARE IL GRAFICO

Seguirequestaproceduraperstampareunavistadeidatitracciatinell’Oscilloscopio:

1) sospendereofermarel’acquisizione.

2) Muoverelabarradiscorrimentodell’assedeitempiesistemarelozoom,perinclude-renellavisualeglielementichesivoglionostampare.

3) Cliccare su Print graph.

9.3 MODALITÀ DI MODIFICA E DEBUG

AnchesesialafinestraWatch sia l’Oscilloscope non utilizzano il codice sorgente, tutti glialtristrumentididebugsì:quindi,LogicLabrichiedeallosviluppatoredipassareallamodalitàdidebug,dovelemodifichealcodicesorgentenonsonopermesse,primadipo-ter accedere a questi strumenti.

Perattivareedisattivarelamodalitàdebug,cliccaresullavocecorrispondentedellabarraDebug.

Altrimenti, scegliere Debug mode nel menu Project.

118 LogicLab manuale utente

La barra status mostra se la modalità debug è attiva o no.

Notarechenonèpossibileaccedereallamodalitàdebugse lostatusdiconnessioneèdiverso da Connected.

9.4 DEBUG LIVE

LogicLabpuòmostrareun’animazioneesaustivadell’attualeevariabilestatodiesecu-zioneneltempodiunaPOUcodificatainqualunquelinguaggiodiprogrammazioneIEC61131-3.

Perattivareedisattivarelamodalitàdebuglive,cliccaresullavocecorrispondentedellabarra Debug

o scegliere Live debug mode dal menu Project.

LogicLab manuale utente 119

9.4.1 ANIMAZIONE SFC

Come spiegatonella sezionedi riferimentodel linguaggio, unaPOUSFCè strutturatacome un set di stati, ciascuno dei quali è attivo o inattivo a seconda del momento. Una voltaavviato,questostrumentodidebugspecificodellinguaggioSFC,animaidocumentiSFC evidenziando gli stati attivi.

Animazione OFF Animazione ON

Nellacolonnadisinistra,èmostrataunapartediunnetworkSFC,conildiagrammadianimazioneimpostatosuoff.Nellacolonnadidestraèmostratalastessapartedinetworkquandolamodalitàdebugliveèattiva.Lafiguradellacolonnadidestramostracheglistati S1 e S3 sono attivi, mentre Init, S2 e S4 sono inattivi.

NotarecheilmanagerdianimazioneSFCtestaperiodicamentelostatodituttiglistati,el’utentenonpuòmodificareilperiododicampionamento.Perquestomotivo,puòcapitarecheunostatorimangaattivoperunperiododitempotroppocortodaesserevisualizzatosul video.

Ilfattocheunostatononsiamaievidenziatononimplicachel’azionenonvengaeseguita,mapotrebbesemplicementesignificarecheilratedicampionamentoètroppolentopercaptarel’esecuzione.

9.4.1.1 DEBUG DI AZIONI E CONDIZIONI

ComespiegatonelriferimentoallinguaggioSFC,unosteppuòessereassegnatoadun’a-zione,eunatransizioneaduncodicedicondizione.AzioniecondizionipossonoesserecodificateinunodeilinguaggiIEC61131-3.Glistrumentididebugperqualsiasievenien-zapossonoessereutilizzatiall’internodiciascunaazione/condizione,comesefosserounaPOU isolata.

9.4.2 ANIMAZIONE LD

Nella modalità debug live, gli schemi Ladder Diagram sono animati evidenziando i contatti eleusciteconvaloretrue(nell’esempio,i1ei2).

120 LogicLab manuale utente

Notarecheilmanagerdell’animazioneLDtestaperiodicamentelostatodituttiglielemen-ti.Puòcapitarecheunelementorimangatrueperunperiododitempotroppocortodaesserevisualizzatosulvideo.Ilfattocheunelementononsiamaievidenziatononimplicacheilsuovalorenondiventamaitrue(ilratedicampionamentopotrebbeesseretroppolento).

9.4.3 ANIMAZIONE FBD

Nella modalità debug live, LogicLab mostra i valori di tutte le variabili visibili direttamente nell’editordicodicesorgentegrafico.

QuestofunzionasiaperillinguaggioFBDcheperquelloLD.

Notare che, anche questo strumento è asincrono.

9.4.4 ANIMAZIONE IL E ST

Lamodalitàdebuglivesiapplicaancheaglieditordicodicesorgentetestuale(quellidiILeST).Sipossonofacilmentevedereivaloridiunavariabileposizionandosicolmousesopradiessa.

9.5 TRIGGER

9.5.1 FINESTRA DEI TRIGGER

Lo strumento Trigger window permettediselezionareuninsiemedivariabiliedisincro-nizzarleinunaspecialefinestrapop-up.

LogicLab manuale utente 121

9.5.1.1 PRE CONDIZIONI PER APRIRE UNA FINESTRA DI TRIGGER

Nessuna necessità di compilazione dedicata

ItooldidebugdiLogicLabfunzionanoarun-time.Diconseguenza,adifferenzadialtrilinguaggidiprogrammazionecomeilC++,ilcompilatorenonrichiedediindicaresesup-portareonofinestreditrigger:datouncodicePLC,ilrisultatodelcompilatoreèunicoenon vi è distinzione tra versione debug e release.

Memoria disponibile

UnafinestraditriggeroccupaunsegmentodiareacodicePLCdidimensionebendefinita.Ovviamenteperfarpartireunafinestratrigger,ènecessariochesiadisponibileunasuffi-cientequantitàdimemoria,altrimentiappariràunmessaggiodierrore.

Incompatibilitàconlefinestreditriggergrafici

Unafinestraditriggergraficooccupal’interospazioliberodiareacodicePLC.

Quindi,unavoltachetalestrumentodidebugèstatoavviato,nonèpossibileaggiungerenessunafinestraditrigger,eunmessaggiodierrorevienevisualizzatosesitentadiav-viareneunanuova.Unavoltachelafinestradiattivazionegraficasaràchiusa,lefinestredi trigger saranno di nuovo abilitate.

Sinotichetuttelefinestreditriggeresistenticontinuanoalavorarenormalmente.Nonèsemplicementepossibileaggiungernedinuove.

9.5.1.2 TOOLBAR DELLA FINESTRA DEI TRIGGER

L’iconadellafinestradeitriggerfapartedellabarraDebug ed è abilitata solo se LogicLab è in modalità debug.

Bottone Comando Descrizione

Set/Remove trigger

Peravviareuntrigger,selezionareilpuntodelcodice PLC dove inserire il relativo trigger e premerequestobottone.

Eseguirelastessaproceduraperrimuovereiltrigger:perchiuderedefinitivamenteunafinestradi debug, cliccare un volta sul blocco istruzione doveèstatoinseritoiltrigger,quindipremerenuovamente questo bottone.

Graphic trace

QuestobottonefunzionaesattamentecomequellosopraSet/Remove trigger, salvo che viene apertaunafinestraditriggergrafici.Puòessereusatoallostessomodoancheperrimuovereuntriggergrafico.

Tastishortcut:premereShift + F9 è equivalente chepremeresulbottone.

Remove all triggers

Premendo questo bottone tutti i trigger ed i trigger graficiesistentivengonorimossisimultaneamente.

Tastishortcut:premereCtrl+Shift+F9 è equivalentechepremeresulbottone

Trigger list

Questobottoneapreunafinestraconl’elencodituttelefinestretriggeresistenti.

Tastishortcut:premereCtrl+I è equivalente che premeresulbottone.

122 LogicLab manuale utente

Ognirecordsiriferisceadunafinestretrigger,siagraficochetestuale.Latabellaseguentespiegailfunzionamentodiciascuncampo.

Campo Descrizione

TypeT:finestratrigger.

G:finestratriggergrafici.

Module

Nomedelprogramma,funzioneobloccofunzionedoveiltriggerèposizionato.Seilmoduloèunfunctionblock,questocampocontieneilnomedeltipo,nondell’istanzaperlaqualesièinstallatoiltrigger.

LinePer i linguaggi testuali (IL, ST) indica la linea su cui è posizionatotrigger.Perglialtrilinguaggiilvaloreèsempre-1.

9.5.1.3 INTERFACCIA UTENTE

L’impostazionediuntriggerprovocalavisualizzazionediunapop-up,questaèl’interfac-ciaperaccedereallefunzionididebugchelafinestratriggerrendedisponibili.E’compo-sta da tre elementi, come mostrato qui sotto.

Caption bar

La barra Caption dellafinestrapop-upmostrainformazionisullaposizionedeltriggercheprovocal’aggiornamentodellafinestradelleVariables, quandoèraggiuntadalproces-sore.

Il testo nella barra Caption hailseguenteformato:

Trigger n° X at ModuleName#Location

LogicLab manuale utente 123

dove

X Identificatoreditrigger.

ModuleName Nomedelprogramma,funzioneobloccofunzionedoveiltriggerèposizionato.

Location

Posizione esatta del trigger, all’interno del modulo ModuleName.

Se ModuleName è in IL, Location hailseguenteformato.

N1

Altrimenti, se il ModuleName è in FBD, diventa:

N2$BT:BID

dove:

N1 = numero di linea dell’istruzione

N2 =numeronetwork

BT =tipodiblocco(operando,funzione,bloccofunzione,etc.)

BID=identificazionedelblocco

Sezione controlli

Questafinestradidialogoconsenteall’utentedicontrollaremeglioilrefreshdellafinestraditriggerperotteneremaggioriinformazionisulcodice.UnadescrizionedettagliatadellefunzionidiognicontrolloèdatanellasezionecontrolliTrigger window (vedi 9.5.2.11).

In tutti i comandi tranne Ac, il bottone Accumulator display,nonèaccessibilefinoaquandoalmenounavariabileètrascinatadentrolafinestradebug.

Sezione variabili

LapartepiùbassadellafinestraDebug èunatabellacompostadaunarigaperogniva-riabile trascinata dentro.

Ognirigahaquattrocampi:ilnomedellavariabile,ilsuovalore,iltipo,elaposizione(@task:ModuleName) letti dalla memoria durante l’ultimo aggiornamento.

124 LogicLab manuale utente

9.5.1.4 FINESTRA TRIGGER: INFORMAZIONE SU DRAG AND DROP

Pervedereunavariabile,ènecessariocopiarlanellapartebassadellafinestraDebug.

Questasezioneèunatabellacompostadaunarigaperognivariabiletrascinatadentro.Potetetrascinaredentrolafinestratriggersolovariabililocalialmodulodoveavetepo-sizionato il relativo trigger,ovariabileglobaleoparametro.Nonpotete trascinareunavariabiledichiaratainunaltroprogramma,funzioneobloccofunzione.

9.5.1.5 AGGIORNAMENTO DEI VALORI

Siconsideriilseguenteesempio.

Ilvaloredellevariabilivieneaggiornatoognivoltachevieneattivatoilwindowmanager,ognivoltacheilprocessoreeseguele istruzionisegnatedaunafrecciaverde.Tuttaviaèpossibileimpostareicontrolliinmododaottenerel’aggiornamentodellevariabilisoloquandoitriggersoddisfanolecondizionidefinite.

Si noti che il valore della variabile nella colonna Symbol èlettodallamemoriaappenaprimadell’istruzionemarcatacon il simbolodi trigger(inquestocaso: l’istruzioneallalinea5)eimmediatamentedopol’istruzioneprecedente(linea4)acuièstataassegnata.

Dunque,nell’esempioprecedentelasecondaistruzioneSTnonèstataancoraeseguitaquando il nuovo valore di avienelettodallamemoriaperesserevisualizzatonellafinestradi trigger.

Perciòilvaloredia è 1.

9.5.1.6 FINESTRA DEI CONTROLLI

Questoparagrafotrattaicontrollidellafinestratrigger,chepermettediavereunavisio-nemiglioredellavorodiquestostrumentodidebug,peraveremaggioriinformazionisulcodice.

Icontrollidellafinestratriggeragisconoinmododefinitosulcomportamentodellafine-stra,indipendentementedaltipodimodulo(ILoFBD)doveiltriggerèstatoinserito.

Tutti i controlli ad eccezione di Accumulator display nonsonoaccessibilifinoaquandoalmenounavariabileètrascinatadentrolafinestradelleVariables.

Icontrollidellafinestrasonoresiaccessibiliall’utenteattraversolapartegrigiasuperioredellafinestradidebug.

LogicLab manuale utente 125

Bottoni Comando Descrizione

Start/Stop

Questocontrolloèusatoperavviareunasessionedi trigger.

Seiltriggerèavviatosulsistemapotetepremerequestobottoneperforzarel’arresto.Incasocontrario la sessione viene automaticamente fermataquandovieneraggiuntaunacondizione.Aquestopuntopotetepremerequestobottoneperavviare un’altra sessione di trigger.

Single step execution

Questocontrolloèusatopereseguireunsingolostepdeltrigger.E’abilitatosoloquandonon ci sono sessioni attive del trigger e None è selezionato. Sono considerate condizioni specifiche.Finital’esecuzionedelsingolostepdel trigger, la sessione viene automaticamente stoppata.

Accumulator display

Questocontrolloaggiungel’Accumulator alla listadellevariabiligiàtrascinatedentrolafinestratrigger.Vieneaggiuntaunanuovarigaallafinedella tabella delle variabili, contenente la stringa Accumulator nella colonna Symbol, il valore dell’accumulatore nella colonna Value, Type non èspecificatoeLocation è settato a livello globale comemostratonellafiguraseguente.

126 LogicLab manuale utente

Per rimuovere l’accumulatore dalla tabella, cliccare sul suo nome nella colonna Symbol, e premereiltastoDel.

QuestocontrollopuòesseremoltoutileseuntriggerèstatoinseritoinunadichiarazioneST,perchépermettediconoscerequalevalorevienescrittonellavariabiledidestinazione,durantel’esecuzionecorrentedeltask.E’possibileottenerelostessorisultatospostandoiltriggerall’istruzionesuccessivasegnatadaunafrecciaverde.

Contatore dei Trigger

Questocontrollodisolaletturacontaquantevolteilgestoredellafinestradebugèstataattivata,daquandolafinestraèstatainstallata.

Ilgestoredellefinestreripristinaautomaticamentequestocontatoretuttelevoltecheunanuova sessione di trigger viene attivata.

Stato dei Trigger

Questocontrollodisola letturamostralostatodellafinestradiDebug.Puòassumereiseguenti valori.

Iltriggernonsièverificatodurantelacorrenteesecuzionedeltask.

Iltriggersièverificatodurantelacorrenteesecuzionedeltask.

Il sistema non sta eseguendo il trigger. Il trigger non è stato fattopartireoppureèstatofermatodall’utenteoppuresièverificataunacondizionedistop.

La comunicazione con il target è stata interrotta, lo stato della finestratriggernonpuòesseredeterminato.

Condizionidefinitedall’utente

Sevienedefinitaunacondizioneusandoquestocontrollo, ilvalorenellafinestraDebug vieneaggiornatotuttelevoltecheilgestoredellefinestrevieneattivatoelecondizionidefinitedell’utentesonovere.

Dopoavereinseritounacondizione,ilcontrollovisualizzalasuaespressionesemplificata.

Contatori

Questocontrollopermettedidefinirecondizionisulcontatoredeitrigger.

Lafinestratriggerpuòessereinunodeiseguentitrestati.

- None:nonèstatoavviatonessuncontatore,quindinonsonostatespecificatecondizionisul trigger.

LogicLab manuale utente 127

- For:partendoalpresuppostocheavetedatoilvaloreN come limite del contatore, il gestoredellefinestreaggiunge1 al valore corrente del contatore e aggiorna il valore di questavariabileognivoltachelafinestradebugèattivata.Tuttavia,quandoilcontatoreè uguale ad N,lafinestrasmettediaggiornareivalori,ecambialostatovisualizzandoStop.

- After:partendoalpresuppostocheavetedatoilvaloreN come limite del contatore, il gestoredellefinestrefaripartireilcontatoreeaggiunge1 al suo valore corrente ogni voltacheèattivato.LafinestrarimanesullostatoReady e non aggiorna il valore delle suevariabilifinoaquandoilcontatoreraggiungeN.

9.5.2 DEBUG CON LA FINESTRA TIRGGER

9.5.2.1 INTRODUZIONE

Lostrumentofinestratriggerpermetteall’utentediselezionareuninsiemedivariabiliediavereillorovalorevisualizzatoeaggiornatoinmodosincronosuunafinestrapop-up.AdifferenzadellafinestraWatch, lafinestratriggeraggiornasimultaneamentetutte levariabili che contiene, ogni volta che sono attivate.

9.5.2.2 APRIRE UNA FINESTRA TRIGGER DA UN MODULO IL

SupponiamodiessereinunmoduloIL,checontengaleseguentiistruzioni.

Supponiamoanchechevoleteconoscereilvaloredib, d e k,appenaprimachevengaeseguita l’istruzione ST k.Perfarequestospostareilcursoresullariga12.

QuindièpossibilefareclicksulbottoneSet/Remove trigger sulla barra Debug.

opremereiltastoF9.

Inognicaso,unafrecciaverdeapparevicinoalnumerodellalinea,evieneapertalare-lativafinestratriggerpop-up.NontutteleistruzioniILsupportanoitrigger.Peresempio,nonèpossibileinserireuntriggerall’iniziodiunarigachecontieneun’istruzioneJMP.

9.5.2.3 AGGIUNGERE UNA VARIABILE AD UNA FINESTRA TRIGGER DA UN MODULO IL

Pervedereilvalorediunavariabile,ènecessarioaggiungerlaallafinestratrigger.Perfarequesto,selezionareunavariabilefaredoppioclick,etrascinarladentrolafinestradelleVariables,ilrettangoloinbassobiancodellafinestrapop-up.Ilnomedellavariabileap-pareoranellacolonnaSymbol.

128 LogicLab manuale utente

Applicarelastessaprocedurapertuttelevariabilichesivoglionocontrollare.

9.5.2.4 APRIRE UNA FINESTRA TRIGGER DA UN MODULO FBD

SupponiamodiavereunmoduloFBD,checontengaleseguentiistruzioni.

SupponiamoanchedivolereconoscereilvalorediC, D e K,appenaprimachevengaese-guita l’istruzione ST k.

Sapendochenonsipuòmaiinserireuntriggerinunbloccocherappresentaunavariabilecome

poteteselezionareilprimobloccodisponibileprecedentelavariabileselezionata.Nell’e-sempiodellafigurasopra,potetespostareilcursorealnetwork3epremereilbloccoADD.

PotetepremereilbottoneSet/Remove trigger sulla barra Debug

opremereiltastoF9.

Inognicaso,ilcoloredelbloccoselezionatodiventagrigio,inmezzoalbloccoappareuncerchiobiancoconunnumerodentroelarelativafinestratriggerpop-upappare.

LogicLab manuale utente 129

All’attodipreprocessareilcodicesorgenteFBD,ilcompilatorelotraduceinistruzionidilinguaggio IL. L’istruzione ADD al network3èestesoa:

LD k

ADD 1

ST k

QuandoaggiungeteuntriggerinunbloccoFBD,doveteposizionareiltriggerprimadellaprimaistruzionedelsuocodiceILequivalente.

9.5.2.5 AGGIUNGERE UNA VARIABILE AD UNA FINESTRA TRIGGER DA UN MODULO FBD

Pervedereilvalorediunavariabile,bisognaaggiungerlaallafinestratrigger.Supponiamoche si vuole controllare il valore della variabile k delcodiceFBDnellafigurasottostante.

Aquestoproposito,premereilbottoneWatch nella barra FBD.

Il cursore diventerà come il seguente.

Oraèpossibilefareclicsulbloccocherappresentalavariabilechedesideratevengavi-sualizzatanellafinestratrigger.

Nell’esempiochestiamoconsiderando,cliccareilblocco.

Appareunafinestradidialogoconl’elencoditutteleistanzecorrentiesistentidellafine-stradebug,echiedequaledevericeverel’oggettocheaveteappenacliccato.

130 LogicLab manuale utente

Alfinedivisualizzarelavariabilek nellafinestratrigger,selezionareilsuoriferimentonella colonna Debug windowspoipremereOK. Il nome della variabile èorastampatonella colonna Symbol.

Applicarelastessaprocedurapertuttelevariabilichesivoglionocontrollare.

UnavoltaaggiunteallafinestraGraphic watch tutte le variabili che si vogliono osservare, potetepremereilbottoneconilcursorenormale,cosìilcursoreriprenderàlasuaformaoriginale.

LogicLab manuale utente 131

9.5.2.6 APRIRE UNA FINESTRA TRIGGER DA UN MODULO LD

SupponiamodiavereunmoduloLD,checontengaleseguentiistruzioni.

Potete inserire un trigger su un blocco come il seguente.

Inquestocaso,vengonoapplicatelestesseregoleusateperinserireuntriggerinunmo-dulo FBD su un contatto

o un’uscita.

Inquestocaso,seguireleistruzionidellinguaggioST.Supponiamodivolerconoscereilvaloredialcunevariabilituttelevoltecheilprocessoreraggiungeilnetworknumero1.

Perprimacosapremereunodeglioggettichecompongonoilnetworknumero1.Orapo-tete cliccare sul bottone Set/Remove trigger della barra Debug.

InalternativapotetepremeresultastoF9.

Inognicaso,ilpulsantegrigioinrilievocontenenteilnumerodelnetworkritornaverdeeuncerchiobiancoconilnumerodeltriggerapparenelmezzodelbottone,mentreapparelarelativapop-up.

132 LogicLab manuale utente

AdifferenzadeglialtrilinguaggisupportatidaLogicLab,LDnonpermettediinserireuntriggerinunsingolocontattooinun’uscita, inquantopermettediselezionaresolounnetworkintero.Quindilevariabilinellafinestratriggersarannoaggiornatetuttelevoltecheilprocessoreraggiungeràl’iniziodelnetworkselezionato.

9.5.2.7 AGGIUNGERE UNA VARIABILE AD UNA FINESTRA TRIGGER DA UN MODULO LD

Pervedereilvalorediunavariabile,ènecessarioaggiungerlanellafinestratrigger.Sup-poniamodivolercontrollareilvaloredellavariabileb nelcodiceLDrappresentatonellafiguraseguente.

Aquestoproposito,premereilbottoneWatch nella barra FBD.

Il cursore diventa come il seguente.

Orapotetepremerel’oggettocherappresentalavariabilechevoletemostrarenellafine-stra trigger.

Appareunafinestradidialogoconl’elencoditutteleistanzecorrentiesistentinellafine-stradebugechiedequaledevericeverel’oggettocheaveteappenacliccato.

LogicLab manuale utente 133

Per visualizzare la variabile B nellafinestratrigger,selezionare ilsuoriferimentonellacolonna Debug window epremereOK.

IlnomedellavariabileèorastampatanellacolonnaSymbol.

Applicarelastessaproceduraatuttelevariabilichesivoglionocontrollare.

UnavoltaaggiunteallafinestraGraphic watch tutte le variabili che si vogliono osservare, potetepremereilbottoneNormal cursor,cosìsiripristinalaformaoriginaledelcursore.

9.5.2.8 APRIRE UNA FINESTRA TRIGGER DA UN MODULO ST

SupponiamodiavereunmoduloST,checontengaleseguentiistruzioni.

Supponiamoinoltredivolerconoscereilvaloredie, d e f, appenaprimachevengaeseguita l’istruzione

f := f+ SHR( d, 16#04 )

Perfarequestospostareilcursoreallalinea6.

QuindipremereilpulsanteSet/Remove trigger sulla barra Debug.

opremereiltastoF9.

Inentrambiicasi,appariràunafrecciaverdevicinoalnumerodellalineaesiapriràlarelativafinestrapop-up.

134 LogicLab manuale utente

NontutteleistruzioniSTsupportanoitrigger.Peresempio,nonèpossibileposizionareuntrigger su una linea che contiene una terminazione come END_IF, END_FOR, END_WHILE, etc..

9.5.2.9 AGGIUNGERE UNA VARIABILE AD UNA FINESTRA TRIGGER DA UN MODULO ST

Pervedereilvaloredellevariabili,ènecessarioaggiungerlainunafinestratrigger.Aque-stoproposito,selezionareunavariabile,facendodoppioclicksudiessa,quinditrascinarladentrolafinestradelleVariables,nellapartebiancainbassonellafinestrapop-up.IlnomedellavariabileoraapparenellacolonnaSymbol.

Applicarelastessaproceduraatuttelevariabilichesivoglionocontrollare.

9.5.2.10 RIMUOVERE UNA VARIABILE DALLA FINESTRA TRIGGER

Sesidesideracheunavariabilenonvengavisualizzatapiùnellafinestratrigger,selezio-narla,cliccandosulsuonomeunavolta,quindipremereiltastoDel.

9.5.2.11 USARE I CONTROLLI

Questoparagrafotrattaicontrollidellafinestratrigger,checonsentonodivisionareme-glioilfunzionamentodellostrumentodebugperaveremaggioriinformazionisulcodiceinteressato.

Loscopoprincipaledeicontrollidellafinestratriggerècheconsentedidefiniremaggiorilimitisuicontrolli,cosìchelevariabilinellafinestraVariables vengano aggiornate quan-doilprocessoreraggiungelaposizionedeltriggerequestacondizioneèsoddisfatta.

LogicLab manuale utente 135

Abilitare i controlli

Quandosiimpostauntrigger,tuttiglielementinellafinestraControl sono disabilitati.

Infatti,nonèpossibileaccedereaicontrolli,adeccezionedeldisplayAccumulator,finoa quando almenouna variabile verrà trascinata nella finestraDebug. Quando questoaccadràverràavviatoautomaticamenteiltriggerelafinestraControls cambierà, come mostrato nell’immagine seguente.

Itriggerpossonoessereavviatiostoppaticonl’appositobottone.

Fissare il numero degli aggiornamenti

Sevoleteaggiornare le variabili laprimavolta che lafinestra siaavviata, selezionareNone,epremereilbottonestepsingolo,incasocontrarioimpostareilcontatoread1 e selezionare For.

SevoleteaggiornarelevariabiliperunnumerodicampioniX apartiredall’attivazionedellacondizioneditrigger,impostareilcontatoreadX e selezionare For.

SevoletecheivalorisianoaggiornatisolodopounnumerodicampioniYapartiredall’at-tivazionedellacondizioneditrigger,impostareilcontatoreadY e selezionare After.

Leimpostazionirelativeaitriggereallelorocondizionidiventanoattivequandoiltriggervienefattoripartire.

Guardare l’accumulatore

ComeindicatonelcapitoloAggiornamentodeivalori(vedi9.5.1.5),quandosiinserisceuntriggersuunalineadiistruzione,sistabiliscechelevariabilinellarelativafinestradide-bugsarannoaggiornateognivoltacheilprocessoreraggiungeràquestaposizione,primachel’istruzionevengaeseguita.Inalcunicasi,peresempioquandoiltriggerèposizionatoprimadiun’istruzioneST,puòessereutileconoscereilvaloredell’accumulatore.Ciòcon-sentediprevederel’esitodell’istruzionecheverràeseguitadopochetuttelevariabilinellafinestratriggersarannostateaggiornate.Peraggiungerel’accumulatoreallafinestradeitrigger, cliccare sul bottone Accumulator display.

Definireunacondition

Questocontrolloconsenteall’utentediimpostareunacondizionesulleoccorrenzediuntrigger.Didefault,questacondizioneèimpostataaTRUEeivalorinellafinestradebugsonoaggiornatituttelevoltecheilgestoredellafinestraèattivato.

Se volete una restrizione sulmeccanismo degli aggiornamenti, potete specificare unacondizionecliccandosull’appositobottone.

136 LogicLab manuale utente

Premendoilbottonesiapreunafinestraditesto,dovepoterscrivereilcodiceILcheim-postalacondizione.

Unavoltascrittalacondizione,premereilbottoneOK peristallarlaopremereilbottoneEscpercancellarel’operazione.

Sesiscegliediistallarla,ilvalorenellafinestradebugèaggiornatotuttelevoltechesiattivailgestoredellafinestraelecondizionidefinitedall’utentesonovere.

Unaespressionesemplificatadellacondizioneappareoranelcontrollo.

Permodificarla,premerenuovamentesulbottoneindicato.

Apparelafinestraditesto,contenenteiltestoscrittoprecedentementeechepoteteoramodificare.

Perrimuoverecompletamenteunacondizionedefinitadall’utente,eliminarel’interocodi-ceILnellafinestraditestoepremereOK.

Dopol’esecuzionedellacondizione,l’accumulatoredeveessereditipoBooleano(TRUE o FALSE),altrimentisiverificheràunerroredicompilazione.

Solo levariabiliglobalie levariabili trascinateall’internodellafinestrapossonoessereusateperlecondizioni.

Ovvero, tutte le variabili locali al modulo dove il trigger è stato originariamente inserito sonofuoriportata,senonsonostatetrascinatedentrolafinestradebug.Nellafinestradellecondizioninonpossonoesseredichiaratenuovevariabili.

9.5.2.12 CHIUDERE LA FINESTRA TRIGGER E RIMUOVERE UN TRIGGER

Questapaginawebsioccupadicosasipuòfarequandositerminaunasessionedidebugconunafinestraditrigger.Èpossibilesceglieretraleseguentiopzioni.

- Chiuderelafinestradeitrigger.

- Rimuovere il trigger.

- Rimuovere tutti i trigger.

Notarecheleazionielencatesopraproduconorisultatimoltodiversi.

Chiuderelafinestradeitrigger

Seavetefinitodiosservareunaseriedivariabilitramiteunafinestraditrigger,siconsigliadichiuderelafinestraDebug senza rimuovere il trigger.

LogicLab manuale utente 137

Sesipremeilbottonesull’angoloinaltroadestra,sinascondelafinestra,mentreilge-storedellefinestreeilrelativotriggercontinuanoafunzionare.

Difatti,sesidesideraripristinareildebugconunafinestratriggerprecedentementena-scosta,bastaaprirelafinestraTrigger list,selezionarelarigachesiriferisceallafine-stra trigger e cliccare sul bottone Open.

Lafinestraappariràconivaloridellevariabiliedeicontatorideitriggeraggiornati,comesenonfossestatachiusa.

Rimuovere un trigger

Sesceglietequestaopzione,rimuoveretecompletamenteilcodicesiadallafinestrachedaisuoitrigger.Aquestoproposito,aprirelafinestraTrigger list, selezionare la riga corrispondenteallafinestratriggerchesivuoleeliminare,epremereilbottoneRemove.

Inalternativa,potetespostareilcursoresullalinea(seilmoduloèinILoST)ocliccareilblocco(seilmoduloèinFBDoLD)doveèstatoinseritoiltrigger.OrapremereilbottoneSet/Remove trigger nella barra Debug.

138 LogicLab manuale utente

Rimuovere tutti i trigger

Potete rimuovere tutti i trigger esistenti in una volta sola, senza selezionare i record, clic-cando sul bottone Remove all.

9.6 TRIGGER GRAFICI

9.6.1 FINESTRA DEI TRIGGER GRAFICI

Lafinestradeitriggergraficipermettediselezionareuninsiemedivariabili,dicampionar-leinmodosincronoediaverelalorocurvavisualizzatainunaspecialefinestrapop-up.

Ilcampionamentodellevariabiliavvieneognivoltacheilprocessoreraggiungelaposizio-ne (cioè le istruzioni - se il linguaggio è IL o ST - o il blocco se il linguaggio è FBD o LD ) del trigger.

9.6.1.1 PRE-CONDIZIONI PER APRIRE UNA FINESTRA DI TRIGGER GRAFICI

Nessuna necessità di compilazione dedicata

TuttiglistrumentididebugdiLogicLaboperanoarun-time.Cosìadifferenzadialtrilin-guaggidiprogrammazionecomeC++,ilcompilatorenonhabisognodisaperesesuppor-tareomenolafinestradeitrigger:datouncodicePLC,l’uscitadelcompilatoreèunica,enon vi è alcuna distinzione tra la versione di debug e di rilascio.

Memoria disponibile

Unafinestradi triggergrafici richiedetutto lospaziodimemoria liberanelsettoredelcodicedell’applicazione.

Ovviamenteperavviareunafinestratriggerènecessariocheunasufficientequantitàdimemoriasiadisponibile,altrimentigenereràunerrore.

9.6.1.2 INTERFACCIA DELLA FINESTRA DEI TRIGGER GRAFICI

L’impostazionediuntriggergraficoprovocal’aperturadiunafinestrapop-up,chiamataInterface. Questaèlastessainterfacciaperaccedereallefunzionididebugchelafi-nestradeitriggergraficirendedisponibile.E’compostadaunaseriedielementi,comemostrato qui sotto.

Variables window

Chart area

CaptionbarControls bar

LogicLab manuale utente 139

The caption bar

La barra Caption incimaallafinestrapop-upmostrainformazionisullaposizionedeltrig-gernellaqualevengonocampionatelevariabilielencatenellafinestraVariables.

Iltestoneltitolohailseguenteformato:

ModuleName#Location

Dove

ModuleName Nomedelprogramma,funzione,obloccofunzionedoveiltriggerèstatoposizionato.

Location

Posizione esatta del trigger, all’interno del modulo ModuleName.

Se ModuleName è in IL, ST, Location hailseguenteformato:

N1

Altrimenti, se ModuleName è in FBD, LD, diventa:

N2$BT:BID

N1 = istruzioni sul numero della riga

N2 =numerodelnetwork

BT =tipodiblocco(operatore,funzione,bloccofunzione,etc.)

BID=identificatoredelblocco

La barra dei controlli

Questafinestradidialogopermettedicontrollaremeglioillavorodellafinestradeitriggergrafici.Unadescrizionedettagliatadelle funzionidiognicontrolloèdatanellasezioneControllideitriggergrafici(vedi9.6.1.5).

Areadelgrafico

L’area Chart include sei oggetti:

1) Plot: area che contiene la traccia attuale della curva delle variabili trascinate.

2) Campionidaacquisire:numerodicampionicollezionaticon lafinestragestoredeitrigger.

3) Cursoreorizzontale:ilcursorevieneidentificatoconunalineaorizzontale.Ilvalorediognivariabileall’incrocioconquestalineaèriportatonellacolonnahorz cursor.

4) Cursoreblu:ilcursorevieneidentificatoconunalineaverticale.Ilvalorediciascunavariabilechesiintersecaconquestalineaèriportatonellacolonnaleft cursor.

5) Cursorerosso:ilcursorevieneidentificatoconunalineaverticale.Ilvalorediciascu-navariabilechesiintersecaconquestalineaèriportatonellacolonnaleft cursor.

6) Barradiscorrimento:selascaladell’assexètroppograndepervisualizzaretuttiicampioninell’areaPlot, la barra di scorrimento consente di scorrere avanti e indietro lungo l’asse orizzontale.

Lafinestradellevariabili

QuestasezioneinbassoallafinestraDebug èunatabellacompostadaunarigaperognivariabile.Ognirigacontienediversicampidescrittineldettaglionellasezionediinforma-zionedelDraganddrop.

140 LogicLab manuale utente

9.6.1.3 FINESTRA TRIGGER GRAFICI: INFORMAZIONI DRAG AND DROP

PerguardareunavariabileènecessariocopiarlanellasezioneinferioredellafinestraDe-bug.

Finestra variabili

QuestasezioneinferioredellafinestraDebug èunatabellacompostadaunarigaperognivariabilechevoiavetetrascinatoall’interno.Ognirigahadiversicampi,comemostratonellafiguraseguente.

Campo Descrizione

Track Nome della variabile.

Um Unità di misura.

Min value Valore minimo del set di record.

Max value Valore massimo del set di record.

Cur value Valore corrente della variabile.

v/div

Howmanyengineeringunitsarerepresentedbyaunitofthey-axis(i.e.thespacebetweentwoticksonthevertical axis).

Quanteunitàingegneristichesonorappresentatedaunaunitàdell’assey(cioèlospaziotraduelineeorizzontalidelgrafico).

Blue cursor Valore della variabile all’intersezione con la linea identificataconilcursoreblu.

Red cursor Valore della variabile all’intersezione con la linea identificataconilcursorerosso.

LogicLab manuale utente 141

Campo Descrizione

Horz cursor Valore della variabile all’intersezione con la linea identificataconilcursoreorizzontale.

Notarechepotetetrascinaredentrolafinestradeitriggergraficisololevariabililocalialmodulodoveaveteposizionatoiltriggerrelativoolevariabiliglobalioiparametri.Nonpotete trascinare le variabili dichiarate inun’altroprogrammao le funzioni o i blocchifunzione.

9.6.1.4 CAMPIONI DI VARIABILI

Considerareilseguenteesempio.

Ilvaloredellavariabileècampionatotuttelevoltechelafinestravieneattivata,cioèognivolta che il processoreesegue l’istruzione segnatadalla freccia verde.Tuttaviapoteteimpostareicontrolliinmododaaverelevariabilicampionateanchequandoiltriggersod-disfaulterioricondizionidilimitidefiniti.

Il valore delle variabili nella colonna Track èlettadallamemoriaappenaprimadell’istru-zionesegnataeimmediatamentedopol’istruzioneprecedente.

9.6.1.5 FINESTRA CONTROLLI TRIGGER GRAFICI

QuestoparagrafotrattaicontrollidellafinestraGraphic trigger.IcontrollipermettonodispecificareindettaglioquandoLogicLabdovrebbecampionarelevariabiliaggiunteallafinestraVariables.

Icontrollidellafinestradeitriggergraficiagisconoinmododefinitosulcomportamentodellafinestra,indipendentementeperiltipodimodulo(IL,ST,FBDoLD)doveiltriggerrelativo è stato inserito.

L’utentepuòaccedereallafinestradeicontrolliattraversolabarraControls dellafinestradebug.

Bottone Comando Descrizione

Start graphic trace

Quandosipremequestobottone,inizial’acquisizione. Ora se l’acquisizione è avviata e il bottonevienepremutonuovamente,siarrestailprocessodiraccoltadelcampioneesiripristinanoituttiidatiacquisitifinoadora.

Enable/Disable cursors

Iduecursori(cursorerosso,cursoreblu)possonoesserevistiespostatilungoilproprioassefinoaquandoilbottoneèpremuto.Premerenuovamente il bottone se si vogliono nascondere simultaneamente tutti i cursori.

Show samplesQuestocontrolloèusatopermettereinevidenzailpuntoesattoincuilevariabilivengonoattivateaciascuncampione.

Split variables

Quandopremuto,questocontrollodividel’assey in tanti segmenti quante sono le variabili trascinate nell’area, in modo che il diagramma di ciascuna variabile viene disegnato in una banda distinta.

142 LogicLab manuale utente

Bottone Comando Descrizione

Show all valuesE’usatoperriempirelafinestradelgraficocontuttiivaloricampionatiperlavariabileselezionatanel record corrente.

Horizontal Zoom In and Zoom Out

Lozoomavantièun’operazionecherendelecurvenell’area Chart piùgrandisulloschermo,inmododa vedere maggiori dettagli. Lo zoom in dietro è un’operazionecherendelecurvepiùpiccolesulloschermo,inmododapoterlevederleperintero.Lozoom orizzontale agisce solo sull’asse orizzontale.

Horizontal show all

Questocontrolloèusatopercentrareorizzontalmenteunsetdirecordcampionati.Cosìcheilprimocampioneverràposizionatosulmarginesinistroel’ultimosaràposizionatosulmarginedestrodellafinestragrafica.

Vertical Zoom In and Zoom Out Vertical Zoom agisce solo sull’asse verticale.

Vertical show all

Questocontrolloèusatopercentrareverticalmenteunsetdirecordcampionati.Cosìcheilvaloremassimodelcampioneverràposizionatovicinoalmargineinaltoeilvalorepiùbassoverràposizionatosulmargineinferioredellafinestragrafica.

Graphic trigger window properties

Premendoquestobottoneappariràunafinestradidialogo,chepermettediimpostareleopzionigeneraliriguardantileazionidellafinestradeitriggergrafici.Dalmomentocheleopzionichepoteteimpostaresonoabbastanzanumerose,sonotrattateinunasezioneaparte.

Print chart Premerequestobottoneperstamparel’areaChart elafinestradelle Variables.

Save chart Premerequestobottonepersalvarel’areadelgrafico.

Contatore trigger

Questocontrolloinsolaletturavisualizzaduenumericonilseguenteformato:X/Y.

X indicaquantevoltelafinestradebugèstataattivatadaquandoiltriggergraficoèstatoinstallato.

Yrappresentailnumerodeicampionicheiltriggergraficoharaccoltoprimadifermarel’acquisizione dei dati e disegnare le curve.

Stato del Trigger

QuestocontrollodisolaletturamostralostatodellafinestraDebug.Puòavereiseguentivalori.

Nessuncampioneraccolto,datocheiltriggernonsièancoraverificatodurantel’esecuzionecorrente.

LogicLab manuale utente 143

Campioniraccolti,iltriggersièverificatodurantel’esecuzionedell’attività corrente.

Ilcontatoreditriggerindicacheunnumerodicampionièstatoraccoltosoddisfandolarichiestadell’utenteoivincolidellamemoria,quindiilprocessodiacquisizionevienefermato.

La comunicazione con il target è stata interrotta, lo stato della finestratriggernonpuòesseredeterminata.

9.6.1.6 FINESTRA OPZIONI TRIGGER GRAFICO

Peraprirelaschedadelleopzioni,premereilbottoneProperties sulla barra Controls. Facendoquestosiapriràlaseguentefinestradidialogo.

Generale

Controlli

Controllo Descrizione

Show grid Spuntarequestocontrollopervisualizzareunagrigliasullosfondodell’areaChart.

Show time bar

Labarradiscorrimentonellaparteinferioredell’areaChart èdisponibilefinoaquandoquestoboxsaràspuntato.

Show tracks list

LafinestradelleVariables èmostratafinoaquandoquestoboxsaràspuntato,altrimentil’areaChart si estenderàfinoallafinedellafinestradeltriggergrafico.

Valori

Controllo Descrizione

Horizontal scale Numerodicampioniperunitàdell’assex.Conunità

dell’assexsiintendelospaziotraduelineeverticalisullagrigliadisfondo.

144 LogicLab manuale utente

Controllo Descrizione

Buffer size

Numerodicampionidaacquisire.Quandosiaprelaschedadelleopzioni,dopoaveretrascinatotuttelevariabilichesivoglionocontrollare,inquestocamposipuòleggereunnumerodidefault,cherappresentailnumeromassimodeicampionichesipossonoraccogliereperognivariabile.E’quindipossibiledigitareunnumeromaggioreoinferioreaquellodidefault.

Tracce

Questaschedapermettedidefinirealcuneproprietàgrafichedellatracciadiciascunava-riabile. Per selezionare una variabile, cliccare sul nome nella colonna Track list.

Controllo Descrizione

Unit Unitàdimisura,stampatasullatabelladellafinestradelle Variables.

Value/divΔvaloreperunitàdell’assey.Conunitàdell’asseysiintendelospaziotraduelineeorizzontalisullagrigliadisfondo.

Hide Selezionarequestaopzionepernascondereletracceselezionatesulgrafico.

Premere Apply perrenderelemodificheeffettive,opremereOKperapplicarelemodificheechiuderelafinestra.

Condizionidefinitedall’utente

Sesidefinisceunacondizioneusandoquestocontrollo,ilprocessodicampionamentononpartiràfinoaquandoquestacondizionenonsaràsoddisfatta.Notareche,adifferenzadellafinestratrigger,unavoltainiziatal’acquisizionedidati,icampionisonoprelevatiognivoltachevieneattivatalafinestra,indipendentementechelacondizionesiavaraono.

Dopoavereinseritounacondizione,ilcontrollovisualizzalasuaespressionesemplificata.

9.6.2 DEBUG CON LA FINESTRA DEI TRIGGER GRAFICI

Lostrumentodellafinestraditriggergraficipermettediselezionareuninsiemedivaria-bili,diaverlecampionateinmodosincronoediaverele lorocurvevisualizzateinunaspecialefinestra.

9.6.2.1 APRIRE UNA FINESTRA DI TRIGGER GRAFICI CON UN MODULO IL

SupponiamodiavereunmoduloIL,echecontengaleseguentiistruzioni.

LogicLab manuale utente 145

Supponiamoinoltredivolereconoscereilvaloredib, d, e k,appenaprimachevengaeseguita l’istruzione ST k.Perfareciò,spostareilcursoreallalinea12.

QuindipremereilbottoneGraphic trace sulla barra Debug.

Unafrecciaverdeapparevicinoalnumerodellalinealelafinestraditriggergraficiappare.

NontutteleistruzioniILsupportanoitrigger.Peresempio,nonèpossibileposizionareuntrigger all’inizio di una linea che contiene un’istruzione JMP.

9.6.2.2 AGGIUNGERE UNA VARIABILE AD UNA FINESTRA DI TRIGGER GRAFICI DA UN MODULO IL

Perottenereildiagrammadiunavariabiletracciata,ènecessarioaggiungerlanellafine-stradei triggergrafici.Aquestoscopo,selezionareunavariabile, facendodoppioclicksudiessaetrascinarlanellafinestraVariables. LavariabileoraapparirànellacolonnaTrack.

Applicarelastessaprocedurapertuttelevariabilichesivoglionocontrollare.

Unavoltachelaprimavariabilevieneimmessainunatracciagrafica,siapreautomati-camentelafinestraGraphic properties epermetteall’utentediimpostarecampionievisualizzareproprietà.

146 LogicLab manuale utente

9.6.2.3 APRIRE LA FINESTRA DI TRIGGER GRAFICI DA UN MODULO FBD

SupponiamodiavereunmoduloFBD,echecontengaleseguentiistruzioni.

Supponiamoinoltredivolerconoscere ilvaloredic, d, e k,appenaprimachevengaeseguita l’istruzione ST k.

Nonsipuòmai impostareun trigger inunbloccocherappresentaunavariabilecomequesta

selezionareilprimobloccodisponibileprecedenteallavariabileselezionata.Nell’esempiodellafigurasopra,sidevespostareilcursorealnetwork3epremereilbloccoADD.

Orapremereilbottone Graphic trace nella barra Debug.

Questoprovocailcambiamentodicoloredelbloccoselezionatochediventaverde,uncer-chioverdeconilnumeroIDdeltriggerapparenelmezzodelbloccoelarelativafinestratriggerappare.

LogicLab manuale utente 147

QuandosipreprocessailcodicesorgenteFBD,ilcompilatoretraduceleistruzioniinlin-guaggio IL. L’istruzione ADD alnetwork3èampliataa:

LD k

ADD 1

ST k

QuandosiaggiungeuntriggerinunbloccoFBD,siposizionaeffettivamenteiltriggerpri-madellaprimaistruzionedelsuocodiceequivalenteIL.

9.6.2.4 AGGIUNGERE UNA VARIABILE AD UNA FINESTRA DI TRIGGER GRAFICI DA UN MODULO FBD

Perguardareildiagrammadiunavariabile,ènecessarioaggiungerlaallafinestratrigger.SupponiamodivolervederelatracciadellavariabilekdelcodiceFBDnellafiguraseguen-te.

Aquestoproposito,premereilbottoneWatch nella barra FBD.

Il cursore diventa come il seguente.

Orasipuòpremereilbloccocherappresentalavariabilechesivuolevederenellafinestradeitriggergrafici.

Nell’esempiochestiamoconsiderandofareclicksulblocco.

Appareunafinestradidialogocheelencatutteleistanzeattualmenteesistentidellafi-nestradebugechiedequalediquestedevericeverel’oggettocheaveteappenacliccato.

Per tracciare le curve della variabile k, selezionare Graphic Trace nella colonna Debug windows,quindipremereOK. IlnomedellavariabileèorastampatonellacolonnaTrack.

148 LogicLab manuale utente

Applicarelastessaproceduraatuttelevariabilichesivoglionocontrollare.

UnavoltaaggiunteallafinestraGraphic watch tutte le variabili che si vogliono osservare, potetepremereilbottoneNormal cursor, pertornarealcursoreoriginale.

Unavoltachelaprimavariabilevieneimmessainunatracciagrafica,lafinestraGraphic propertiesèautomaticamentemostrataepermetteall’utentediimpostareicampionievisualizzareproprietà.

9.6.2.5 APRIRE UNA FINESTRA DI TRIGGER GRAFICI DA UN MODULO LD

SupponiamodiavereunmoduloLDechecontengaleseguentiistruzioni.

Poteteposizionareuntriggerinunbloccocomeilseguente.

InquestocasoapplicarelestesseregoleusateperinserireuntriggergraficoinunmoduloFBD su un contatto

LogicLab manuale utente 149

o uscita

Inquestocaso,seguireleistruzioni.Supponiamodivolerconoscereilvaloredialcunevariabilituttelevoltecheilprocessoreraggiungeilnetworknumero1.

Fareclicksuundodeglielementichecompongonoilnerworknr.1,quindipremereilbot-tone Graphic trace sulla barra Debug.

Questoprovocailcambiodicoloredelbottonegrigioinrilievocontenenteilnumerodelnetwork,chediventaverde,uncerchiobiancoconall’internounnumeroapparenelmez-zodelbottoneelafinestradeitriggergraficiappare.

NotarecheadifferenzadeglialtrilinguaggisupportatidaLogicLab,LDnonpermettediinserireuntriggerprimadiunsingolocontattoounuscita,inquantopermettediselezio-naresolounnetworkintero.CosìlevariabilinellafinestraGraphic triggersaràcampio-natatuttelevoltecheilprocessoreraggiungeràl’iniziodelnetworkselezionato.

9.6.2.6 AGGIUNGERE UNA VARIABILE AD UNA FINESTRA DI TRIGGER GRAFICI DA UN MODULO LD

Pervedereildiagrammadiunavariabile,ènecessarioaggiungerlaallafinestraGraphic trigger. SupponiamochesivuolevederelatracciadellavariabilebnelcodiceLDrap-presentatonellafigurasotto.

Aquestoproposito,premereilbottoneWatch nella barra FBD.

Il cursore diventerà come il seguente.

150 LogicLab manuale utente

Orapotetepremerel’oggettocherappresentalavariabilechesivuolemostrarenellafi-nestra Graphic trigger.

Appariràunafinestradidialogoconl’elencoditutteleistanzeesistentidellafinestrade-bugechiedequalediquestedevericeverel’oggettocheaveteappenacliccato.

Per tracciare le curve della variabile b, selezionare Graphic trace nella colonna Debug windows,quindipremereOK.IlnomedellacolonnaèorastampatosullacolonnaTrack.

Applicarelastessaproceduraatuttelevariabilichesivoglionocontrollare.

UnavoltaaggiuntetuttelevariabilichesivoglionoosservareallafinestraGraphic watch, sipuòpremerenuovamentesulbottoneNormal cursor,inmododaripristinarelaformaoriginale del cursore.

Unavoltachelaprimavariabileèstatatrascinatainunatracciagrafica,lafinestraGraphic propertiesèautomaticamentemostrataepermettediimpostareicampionievisualiz-zareproprietà.

9.6.2.7 APRIRE UNA FINESTRA DI TRIGGER GRAFICI DA UN MODULO ST

SupponiamodiavereunmoduloSTechecontengaleseguentiistruzioni.

Supponiamoinoltredivolerconoscereilvaloredie, d, e f,appenaprimachel’istruzione

f := f+ SHR( d, 16#04 )

siaeseguita.Perfarequesto,spostareilcursoreallalinea6.

QuindipremereilbottoneGraphic trace sulla barra Debug.

LogicLab manuale utente 151

Unafrecciaverdeapparevicinoalnumerodellalinea,elafinestraGraphic trigger si apre.

NontutteleistruzioniStsupportanoitrigger.Peresempio,nonèpossibileposizionareuntrigger su una linea che contiene un terminatore come END_IF, END_FOR, END_WHILE, etc.

9.6.2.8 AGGIUNGERE UNA VARIABILE AD UNA FINESTRA DI TRIGGER GRAFICI DA UN MODULO ST

Perottenereildiagrammadiunavariabiletracciata,ènecessarioaggiungerlaallafinestraGraphic trigger. Aquestoproposito,selezionarelavariabile,facendodoppioclickequinditrascinarlanellafinestraVariables, cheèlapartebiancainbassodellafinestrapop-up.LavariabileoraapparenellacolonnaTrack.

Applicarelastessaproceduraatuttelevariabilichesivoglionocontrollare.

Unavoltachelaprimavariabileèstatatrascinatainunatracciagrafica,lafinestraGraphic propertiesèautomaticamentemostrataepermettediimpostareicampionievisualiz-zareproprietà.

9.6.2.9 RIMUOVERE UNA VARIABILE DA UNA FINESTRA DI TRIGGER GRAFICI

SesivuolerimuovereunavariabiledallafinestraGraphic trigger, selezionarla cliccan-dosulsuonome,quindipremereiltastoDel.

9.6.2.10 USARE I CONTROLLI

Questoparagrafotrattaicontrollidellafinestradeitriggergrafici,chepermettedimiglio-rareilcontrollodellavorodellostrumentodebug,inmododaottenereulterioriinforma-zioni sul codice sotto controllo.

Abilitare i controlli

Quandosiimpostauntrigger,tuttiglielementisullabarraControl sono abilitati. Potete iniziare l’acquisizione dei dati cliccando il bottone Start graphic trace acquisition.

152 LogicLab manuale utente

Sesidefinisceunacondizione,cheèattualmentefalsa,l’acquisizionedeidatinonparte,anchesesipremel’appositopulsante.

Alcontrario,unavoltachelacondizionediventavera,l’acquisizioneiniziaecontinuafinoa quando non viene rilasciato il bottone Start graphic trace acquisition, indipen-dentemente dalla condizione che sia ancora vera o no.

Se si rilascia il bottone Start graphic trace acquisition primachetuttiicampioninecessarisianostatiacquisiti, ilprocessodiacquisizionesi fermaetutti idati raccoltisarannopersi.

Definireunacondizione

Questocontrolloconsenteall’utentediimpostareunacondizionesuquandoiniziarel’ac-quisizione.Perimpostazionepredefinita,questacondizioneèimpostataatrueel’acqui-sizioneinizianonappenasipremeilbottoneEnable/Disable acquisition. Da questo momentoilvaloredellevariabilinellafinestraDebugècampionatotuttelevoltechesiverificailtrigger.

Perspecificareunacondizione,aprirelaschedaConditiondellafinestradidialogoOp-tions, quindipremereilseguentebottone.

Siapreunafinestraditesto,dovepoterscrivereilcodiceILcheimpostalecondizioni.

Unavoltafinitodiscrivereilcodicedellacondizione,premereilbottoneOK perinstallare,opremereilbottoneEscpercancellare.Ilcampionamentononpartiràfinoaquandoilbottone Start graphic trace acquisition saràpremutoelecondizionidefinitedall’u-tentesarannovere.Un’espressionesemplificatadellacondizioneappareoranelcontrollo.

Permodificarlapremerenuovamenteilrelativobottone.

Lafinestradi testoappare, contenente il testooriginariamentescritto, chepoteteoramodificare.Per rimuoverecompletamenteunacondizionedefinitadall’utente,premerenuovamentesulpulsantemenzionato,eliminarel’interocodiceILnellafinestraditesto,quindipremereOK.

LogicLab manuale utente 153

Dopol’esecuzionedellacondizione,l’accumulatoredeveessereditipoBoolean(TRUE o FALSE),incasocontrariosiverificaunerroredelcompilatore.Possonoessereusatenelcodicedellacondizionesolovariabiliglobalielevariabilitrascinatedellafinestra.

Vale a dire che tutte le variabili locali al modulo dove il trigger è stato originariamente inseritosonofuoriportatasenonsonostateprecedentementetrascinatenellafinestraDebug.Inoltrenonpossonoesseredichiaratenuovevariabili.

Impostare la scala degli assi

- x-axis

Quando l’acquisizione è completata, LogicLab traccia le curve delle variabili trascinateregolandol’assexinmodochetuttiidatisianoinseritinellafinestraChart. Se si vuole applicareunascaladifferente,aprirelaschedaGeneraldellafinestradidialogoGraph properties,digitareunnumeronellacellarelativalascalaorizzontale,quindiconferma-repremendoApply.

- y-axis

E’ possibilemodificare la scala della traccia di ciascuna variabile attraverso la schedaTracks listdellafinestradidialogoGraph properties. Altrimenti, se non si necessita dispecificareesattamenteunascala,poteteusareicontrolliZoom In e Zoom Out.

9.6.2.11 CHIUDERE LA FINESTRA DEI TRIGGER GRAFICI E RIMUOVERE IL TRIGGER

Allafinediunasessionedidebugconlafinestradeitriggergraficipotetesceglieretraleseguentiopzioni:

- ChiuderelafinestraGraphic trigger.

- Rimuovere il trigger.

- Rimuovere tutti i trigger.

Chiuderelafinestradeitriggergrafici

SeavetefinitoditracciareildiagrammadiuninsiemedivariabilipermezzodellafinestraGraphic trigger,siconsigliadichiuderelafinestradiDebug senza rimuovere il trigger. Sesipreme ilbottonenell’angolo inaltoadestra, sinasconde lafinestraInterface, mentrelafinestramanagereilrelativotriggercontinuanoalavorare.

Difatti,sepoisivuoleripristinarelafinestraGraphic triggerchesinascondevainpre-cedenza:

- aprirelafinestraTrigger list;

- selezionareilrecord(tipoG);

- cliccare il bottone Open.

La finestra Interface appare con il contatore del trigger correttamente aggiornato, comesenonfossemaistatochiuso.

Rimuovere un trigger

Sesiscegliequestaopzione,sirimuovecompletamenteilcodicesiadellafinestramana-gerchedelsuotrigger.Aquestoproposito:

- aprirelafinestraTrigger list;

- selezionareilrecord(tipoG);

- premereilbottoneRemove.

Oppure,sipuòspostareilcursoresullalinea(seilmoduloèinIL),ocliccaresulblocco(seilcodiceèinFBD)doveaveteposizionatoiltrigger.OrapremereilbottoneGraphic trace nella barra Debug.

Rimuovere tutti i trigger

Inalternativa,poteterimuoveretuttiitriggerinunasolavolta,indipendentementedairecord selezionati, cliccando sul bottone Remove all triggers.

154 LogicLab manuale utente

LogicLab manuale utente 155

10. ELEMENTI LOGICLAB

10.1 ELEMENTI DEI MENU

NelletabelleseguentièriportatalalistadituttiicomandiLogicLab.Tuttavia,poichéLo-gicLabhaun’interfacciamulti-document(MDI),sipossonotrovarealcunicomandidisabi-litatioaddiritturamenunondisponibili,asecondadiqualedocumentoècorrentementeattivo.

10.1.1 MENU FILE

Comando Descrizione

New project PermettedicreareunnuovoprogettoLogicLab.

Open project PermettediaprireunprogettoLogicLabesistente.

View project ApreunprogettoLogicLabesistenteinsolalettura.

Save project

Uguale a Save All,masalvaancheilfileppj. Notare che tuttelemodifichealprogettoLogicLabsonoprimaapplicatesolo in memoria, è necessario eseguire il comando Save Projectperrenderelemodifichepermanenti.

Save project As Richiededispecificareilnuovonomeelanuovaposizionediunprogetto,esalvaquiunacopiadituttiifiledelprogetto.

Close project Richiedesesivoglionosalvareicambiamenti,poichiudeilprogettoattivo.

New text file Apreunnuovofilegenericoditestovuoto.

Open file

Apreunfileesistente,qualunquesialasuaestensione.Ilfileèmostratonell’editortestuale.Comunque,aprendounfiledelprogetto,siapreancheilprogettoLogicLabacuiquestoèriferito.

Save Permettedisalvareildocumentodellafinestracorrentementeattiva.

Close Chiudeildocumentodellafinestracorrentementeattiva.

Options AprelafinestradidialogoProgramming environment options.

PrintMostraunafinestradidialogochepermettediimpostareleopzionidistampaestampareildocumentodellafinestracorrentemente attiva.

Print previewMostraun’immaginenelvideocheriproducefedelmentequellochesiottienestampandoildocumentodellafinestracorrentemente attiva.

Print project Stampatuttiidocumentichecompongonoilprogetto.

Printer setup AprelafinestradidialogoPrinter setup.

..recent..ElencaunaseriedifileppjdiprogettiLogicLabapertirecentemente.Cliccaresuunodiessiperaprireilprogettocorrispondente.

Exit Chiude LogicLab.

156 LogicLab manuale utente

10.1.2 MENU EDIT

Comando Descrizione

Undo Cancellal’ultimamodificaapportataaldocumento.

Redo Ripristinal’ultimamodificaannullatadaUndo.

Cut Rimuove le voci selezionate dal documento attivo e le salva in unbufferdisistema.

Copy Copialevociselezionateadunbufferdisistema

Paste Incollaneldocumentoattivoicontenutidelbufferdisistema.

Delete Elimina gli oggetti selezionati.

Delete line Cancella l’intera linea di codice sorgente

Find in project AprelafinestradidialogoFind in project.

Bookmarks Permettediimpostare,rimuovereespostarsitraisegnalibri.

Go to line Permettedispostarsivelocementeadunalineaspecificadell’editor di codice sorgente.

FindChiede di digitare una stringa e ricerca le sue ricorrenze all’internodeldocumentoattivodallaposizionecorrentedelcursore.

Find next ContinualaricercaprecedentementecompiutadalcomandoFind.

Replace Permette di sostituire automaticamente una o tutte le ricorrenze di una stringa con un’altra.

Insert/Move mode Modalitàdimodificachepermettediinserireespostareiblocchi.

Connection mode Modalitàdimodificachepermettedidisegnarefililogiciperconnettereipins.

Watch mode Modalitàdimodificachepermettediaggiungerevariabiliaqualsiasi strumento di debug.

10.1.3 MENU VIEW

Comando Descrizione

Main Toolbar Se selezionato mostra la barra Main, altrimenti la nasconde.

Status bar Se selezionato mostra la barra Status, altrimenti la nasconde.

Debug bar Se selezionato mostra la barra Debug, altrimenti la nasconde.

FBD bar Se selezionato mostra la barra FBD, altrimenti la nasconde.

LD bar Se selezionato mostra la barra LD, altrimenti la nasconde.

SFC bar Se selezionato mostra la barra SFC, altrimenti la nasconde.

Project bar Se selezionato mostra la barra Project, altrimenti la nasconde.

Network Se selezionato mostra la barra Network, altrimenti la nasconde.

Document bar Se selezionato mostra la barra Document, altrimenti la nasconde.

LogicLab manuale utente 157

Comando Descrizione

Force I/O bar Se selezionato mostra la barra Force I/O, altrimenti la nasconde.

Workspace SeselezionatomostralafinestraWorkspace (chiamata anche finestraProject), altrimenti la nasconde.

Library SeselezionatomostralafinestraLibraries, altrimenti la nasconde.

Output SeselezionatomostralafinestraOutput, altrimenti la nasconde.

Async Graphic window

SeselezionatomostralafinestraOscilloscope, altrimenti la nasconde.

Watch window SeselezionatomostralafinestraWatch, altrimenti la nasconde.

Full screen Espandelafinestradeldocumentoattivoatuttoschermo.Premere Esc pertornareallanormaleinterfacciadiLogicLab.

Grid Seselezionatomostraunagrigliasullosfondodicodicesorgentegrafico.

10.1.4 MENU PROJECT

Comando Descrizione

New object ApreunaltromenuchepermettedicreareunanuovaPOUodichiarare una nuova variabile globale.

Copy object Copial’oggettocorrentementeselezionatonelWorkspace.

Paste object Incollal’oggettoprecedentementecopiato.

Duplicate object Duplical’oggettocorrentementeselezionatonelWorkspace,echiededidigitareilnomedellacopia.

Delete objectCancellal’oggettocorrentementeselezionato.Comespiegatosopra,ènecessarioeseguireilcomandoSave projectpereliminaredefinitivamenteundocumentodalprogetto.

PLC object properties

Mostraleproprietàeladescrizionedell’oggettocorrentemente selezionato nel Workspace.

Object browser Aprel’Object browser,chepermettedinavigaretraglioggetti.

Compile Chiedesesivoglionosalvarelemodifiche,poilanciailcompilatorediLogicLab.

Recompile all Ricompilailprogetto.

Generate redistributable source module

GeneraunfileRSM.

Import object from library PermettediimportareunoggettoLogicLabdaunalibreria.

Export object to library PermettediesportareunoggettoLogicLabadunalibreria.

Library manager ApreLibrary manager.

Macros Apreunaltromenuchepermettedicreare/cancellaremacro.

Select target Permette di cambiare il target.

158 LogicLab manuale utente

Comando Descrizione

Options... Permettedispecificareleopzionidelprogetto.

10.1.5 MENU DEBUG

Comando Descrizione

Add symbol to watch AggiungeunsimboloallafinestraWatch.

Insert new item into watch InserisceunnuovoelementonellafinestraWatch.

Add symbol to a debug window Aggiungeunsimboloallafinestradebug.

Insert new item into a debug

windowInserisceunnuovoelementoinunafinestradidebug.

Quick watch Apreunafinestraconilvaloreattualedellavariabile.

Run Faripartireilprogrammadopounbreakpoint.

Add/Remove breakpoint Aggiungeorimuoveunbreakpoint.

Remove all breakpoints Rimuovetuttiibreakpointattivi.

Breakpoint list Elencatuttiibreakpointattivi.

Add/remove text trigger Aggiunge rimuove un trigger testuale.

Add/remove graphic trigger Aggiungerimuoveuntriggergrafico.

Remove all triggers Rimuove tutti i trigger attivi.

Trigger list Elenca tutti i trigger attivi.

Debug mode Attiva la modalità debug.

Live debug mode Attiva la modalità live debug.

10.1.6 MENU COMMUNICATION

Comando Descrizione

Download codeLogicLabcontrollasesonostatiapplicatideicambiamentidall’ultimacompilazione,eintalcasocompilailprogetto.Poi,inviailcodicecompilatoaltarget.

Connect LogicLab cerca di stabilire una connessione con il target.

Settings Permettediimpostareleproprietàdiconnessionealtarget.

Upload IMG file Seiltargetdeviceèconnesso,permettedicaricareilfileimg.

Start/Stop watch value Blocca/sbloccal’aggiornamentodellafinestraWatch.

LogicLab manuale utente 159

10.1.7 MENU SCHEME

Comando Descrizione

Network> New> Top AggiungeunnetworkvuotonellapartealtadeldocumentoLD/FBD attivo.

Network> New> Bottom

AggiungeunnetworkvuotonellapartebassadeldocumentoLD/FBD attivo.

Network> New> Before

Aggiungeunnetworkvuotoprimadelnetworkselezionatonel138 documento LD/FBD attivo.

Network >New > After

Aggiungeunnetworkvuotodopoilnetworkselezionatoneldocumento LD/FBD attivo.

Network >Label Assegnaun’etichettaadunnetworkselezionato,peressereindicatocometargetdiun’istruzionejump.

Object >New Permettediinserireunnuovooggettoinunnetworkselezionato.

Object > Instance name

Permette di assegnare un nome ad una ricorrenza di un bloccofunzione,precedentementeselezionatoconunclick.

Object > Open source

Aprel’editorconcuil’oggettoèstatocreatoemostrailcodicesorgentecorrispondente:

- Sel’oggettoèunprogramma,unafunzioneounbloccofunzione,questocomandoapreilsuocodicesorgente;

- sel’oggettoèunavariabileounparametro,questocomandoaprel’editordivariabilicorrispondente;

- sel’oggettoèunafunzionestandardounoperatore,questocomandononapreniente.

Auto connectSe selezionato, abilita l’autoconnessione, che è una creazione automaticadiunfilologicochecollegaipinsdidueblocchi,quando sono sistemati vicini.

Delete invalid connection

Rimuovetutteleconnessioninonvalide,rappresentatedauna linea rossa nello schema attivo.

Increment pins

Perdefault,alcunioperatoricomeADD,MUL,ecc..hannoduepinsdiinput,anchesepuòessercioccasionalmentebisognodicompierequesteoperazionisupiùdidueoperandi.Questocomandopermettediaggiungeretantipinsdiinputquantinesonorichiestiperraggiungereilnumerovolutodioperandi.

Decrement pins Annulla il comando Incrementpins.

Enable EN/ENO pins

Aggiungeipinsenable in/enable out al blocco selezionato. Ilcodicecheimplementailbloccoselezionatosaràeseguitosolo quando il segnale enable in è true. Il segnale enable outripetesemplicementeilvaloredienable in,permettendosia di abilitare sia di disabilitare il set di blocchi in sequenza.

Object properties

Mostraalcuneproprietàdelbloccoselezionato:

- Sel’oggettoèunafunzioneounbloccofunzione,mostraunatabellaconlevariabiliinputeoutput;

- Sel’oggettoèunavariabileounparametro,apreunafinestradidialogochepermettedicambiarneilnomeeladirezionelogica(input/output).

160 LogicLab manuale utente

10.1.8 MENU VARIABLES

Comando Descrizione

InsertAggiunge una nuova riga alla tabella nell’editor correntemente attivo(seèuneditorPLC,allatabelladellevariabililocali;seèuneditordivariabili,allatabelladeiparametri,ecc.).

Delete Cancella la variabile nella riga selezionata della tabella correntemente attiva.

Group Apreunafinestradidialogochepermettedicreareecancellaregruppidivariabili.

10.1.9 MENU DEFINITIONS

Comando Descrizione

Insert> Enum Creaunnuovotipodidatoenumerativo.

Insert> Structure Creaunnuovotipodidatostrutturato.

Insert> Subrange Creaunnuovotipodidatosubrange.

Insert> Typedef Creaunnuovotipodidatotypedef.

10.1.10 MENU WINDOW

Comando Descrizione

CascadeSpostatuttiidocumentiapertiinsequenza,cosìchesisovrapponganocompletamenteeccettocheperlalorodidascalia.

Tile

L’area dell’editor PLC è divisa in riquadri aventi le stesse dimensioni,chedipendonodalnumerodidocumenticorrentementeaperti.Ogniriquadroèautomaticamenteassegnato ad uno di questi documenti.

Arrange Icons Spostaleiconedeidocumentiridottiaiconanell’angoloinbasso a sinistra dell’area dell’editor PLC.

Close all Chiudetuttiidocumentiaperti.

10.1.11 MENU HELP

Comando Descrizione

Index Elenca tutte le Help keywordeaprel’argomentorelativo.

Context Aiutorelativoalcontesto.Aprel’argomentocorrispondenteallafinestracorrentementeattiva.

About... Informazionesulproduttoreelaversione.

10.2 ELEMENTI TOOLBARS

Letabelleseguentimostranol’elencodellebarred’applicazionediLogicLab.Itasticompo-nenticiascunabarrasonosempreglistessi,qualunquesiaildocumentoattivo.Tuttavia,

LogicLab manuale utente 161

alcunidiquestipotrebberoesserenulli,senonc’èunarelazionelogicacoldocumentoattivo.

10.2.1 TOOLBAR PRINCIPALE

Bottone Comando Descrizione

New project Creaunnuovoprogetto.

Open project Apreunprogettoesistente.

Save project

Salvatuttiidocumentidellafinestracorrentementeaperta,compresoilfileprogetto.Notareche,dalmomentochetuttelemodificheadunprogettoLogicLabsonodapprimaapplicatesolo in memoria, è necessario eseguire il comando Save projectperrenderlipermanenti.

Undo Cancellal’ultimamodificaapportataaldocumento.

Redo Ripristinal’ultimamodificacancellatadaUndo.

Cut Rimuove le voci selezionate dal documento attivo elemetteinunbufferdisistema.

Copy Copialevociselezionateinunbufferdisistema.

Paste Incollaneldocumentoattivoicontenutidelbufferdi sistema.

FindChiede di digitare una stringa e cerca le ricorrenze di quest’ultima all’interno del documento attivo dallaposizioneincuisitrovailcursore.

Find next Proseguelaricercaprecedentementecompiutadalcomando Find.

Find in project AprelafinestradidialogoFind in project.

PrintMostraunafinestradidialogo,chepermettediimpostareleopzionidistampaestampareildocumentocorrentementeaperto.

Print previewMostraun’immaginesulvideo,cheriproducefedelmentecosasiotterrebbestampandoildocumentodellafinestracorrentementeattiva.

Workspace Sepremuto,mostrailWorkspace (anche chiamato finestraProject), altrimenti la nasconde..

Output Sepremuto,visualizzalafinestradiOutput, altrimenti la nasconde.

Library Sepremuto,mostralafinestraLibraries, altrimenti la nasconde.

Watch Seselezionato,mostralafinestraWatch, altrimenti la nasconde.

162 LogicLab manuale utente

Bottone Comando Descrizione

Async Seselezionato,mostralafinestraOscilloscope, altrimenti la nasconde

Force I/O Sepremuto,mostralafinestraForce I/0, altrimenti la nasconde.

PLC run-time monitor

Seselezionato,visualizzalafinestraPLCrun-time,altrimenti la nasconde.

Full screen

Espandelafinestradeldocumentocorrentementeattivo a schermo intero. Premere Esc o il tasto Fullscreenpertornareall’aspettonormaledell’interfacciaLogicLab.

10.2.2 TOOLBAR FBD

Bottone Comando Descrizione

Move/Insert Modalitàeditchepermettediinserireespostareblocchi.

Connection Modalitàeditchepermetteditracciarefililogiciperconnettereipins.

Watch Modalitàeditchepermettediaggiungerevariabilia qualsiasi strumento di debug.

New block Permettediinserireunnuovoblocconelnetworkselezionato

Constant Aggiungeunacostantealnetworkselezionato.

Return Aggiunge un blocco di ritorno condizionale al networkselezionato.

Jump Aggiungeunbloccodijumpcondizionalealnetworkselezionato.

Comment Aggiungeuncommentoalnetworkselezionato.

Inc pins

PerdefaultalcunioperatoricomeADD, MUL, ecc.Hannoduepindiinput,anchesesipuòoccasionalmenteaverbisognodicompiereoperazioniconpiùdidueoperandi.Questocomandopermettediaggiungeretantipinsdiinputquantineservonoperraggiungereilnumerodioperandirichiesto.

Dec pins Annulla il comando Inc pins.

LogicLab manuale utente 163

Bottone Comando Descrizione

EN/ENO

Aggiungeipinsenable in/enable out al blocco selezionato.Ilcodiceperimplementaretalebloccosarà eseguito solo quando il segnale enable in è true. Il segnale enable outripetesemplicementeil valore di enable in,permettendosiadiattivaresia di disattivare la sequenza dei blocchi.

FBD properties

Mostraalcuneproprietàdelbloccoselezionato:

- sel’oggettoèunafunzioneounbloccodifunzioni,mostraunatabellaconlevariabiliinputeoutput;

- sel’oggettoèunavariabileounparametro,apreunafinestradidialogochepermettedicambiareilnomeeladirezionelogica(input/output).

View source

Aprel’editorconcuil’oggettoselezionatoèstatocreato, e mostra il codice sorgente relativo:

- Sel’oggettoèunprogramma,unafunzioneounbloccofunzionequestocomandoaprel’editordicodicesorgentecorrispondente;

- sel’oggettoèunavariabileounparametro,aprel’editordivariabilicorrispondente;

- sel’oggettoèunafunzionestandardounoperatore,ilcomandononaprenulla.

10.2.3 TOOLBAR LD

Bottone Comando Descrizione

Insert parallel

Attivalamodalitàdiinserimentodiparallele.Tuttii contatti inseriti con questa modalità verranno inseritiinparalleloconicontattiattualmenteselezionati.

Insert series

Attiva la modalità di inserimento in serie. Tutti i contatti inseriti con questa modalità verranno inseriti alla destra del contatto/blocco correntemente selezionato. Se è selezionata una connessione,ilnuovocontattosaràposizionatoametà del segmento di connessione.

Insert contact Inserimento di un nuovo contatto in base alla modalitàselezionata(serieoparallela).

Insert negated contact

Inserimento di un nuovo contatto negativo in base allamodalitàselezionata(serieoparallela).

Insert rising edge contact

Inserimento di un nuovo contatto rising edge in baseallamodalitàselezionata(serieoparallela).

Insert falling edge contact

Inserimentodiunnuovocontattofallingedgeinbaseallamodalitàselezionata(serieoparallela).

Insert coil Inserimento di una nuova uscita attaccata al powerraildidestra.

164 LogicLab manuale utente

Bottone Comando Descrizione

Insert negated coil

Inserimento di una nuova uscita negata attaccata alpowerraildidestra.

Insert set contact

Inserimento di un nuovo set di uscite attaccato al powerraildidestra.

Insert reset coil Inserimentodiunanuovauscitasemprespentaattaccataalpowerraildidestra

Insert rising edge contact

Nonancoraimplementato,funzionacomeunanormale uscita.

Insert falling edge contact

Nonancoraimplementato,funzionacomeunanormale uscita.

10.2.4 TOOLBAR SFC

Bottone Comando Descrizione

New step Inserisce un nuovo stato nel documento corrente SFC.

Add transition Aggiunge una nuova transizione al corrente documento SFC.

Add jump AggiungeunnuovojumpalcorrentedocumentoSFC.

Add divergent pin Aggiungeunnuovopinallatransizionedivergenteselezionata.

Remove divergent pin

Rimuoveilpinpiùadestradellatransizionedivergente selezionata.

Add convergent pin

Aggiungeunnuovopinallatransizioneconvergente selezionata.

Remove convergent pin

Rimuoveilpinpiùadestradellatransizioneconvergente selezionata.

Add simultaneous divergent pin

Aggiungeunnuovopinallatransizionesimultaneadivergente selezionata.

Remove simultaneous divergent pin

Rimuoveilpinpiùadestradellatransizionesimultanea divergente selezionata.

Add simultaneous convergent pin

Aggiungeunnuovopinallatransizionesimultaneaconvergente selezionata.

Remove simultaneous convergent pin

Rimuoveilpinpiùadestradellatransizionesimultanea convergente selezionata.

Shift pin right

Aumentaladistanzatraiduepinspiùadestradellatransizionecorrente,perpermetterealsubnetSFCcollegatoalpindidestradicontenererami divergenti.

LogicLab manuale utente 165

Bottone Comando Descrizione

Shift pin left Diminuisceladistanzatraiduepinspiùadestradella transizione correntemente selezionata

New action code

Permette all’utente di creare una nuova azione da associare ad uno degli stati. Premendo questo tasto, LogicLab chiede quale linguaggio si desidera utilizzareperimplementarelanuovaazioneeaprel’editorcorrispondente.

New transition code

Permette all’utente di scrivere il codice da associare ad una delle transizioni. Premendo questo tasto, LogicLab chiede quale linguaggio sidesiderautilizzareperimplementarelanuovatransizioneeaprel’editorcorrispondente.

10.2.5 TOOLBAR PROJECT

Bottone Comando Descrizione

Library manager Apreilmanagerlibrary.

Compile Chiedesesalvarelemodifichenonancorasalvate,poilanciailcompilatoreLogicLab.

Recompile allChiedesesalvarelemodifichenonancorasalvate,poilanciailcompilerLogicLabperricompilaretuttoilprogetto.

Connect to the target

LogicLab cerca di stabilire una connessione con il target.

Code download

LogicLabcontrollasesonostateapportatemodifichedall’ultimacompilazioneeinquestocaso,compilailprogetto.Poiinviailcodicecompilatoaltarget.

New macro Definisceunanuovamacro.

Object browser Aprel’objectbrowser,chepermettedinavigaretragli oggetti.

PLC Obj properties

Mostraleproprietàeladescrizionedell’oggettocorrentemente selezionato nel Workspace.

Insert record

Aggiunge una nuova riga nella tabella dell’editor correntemente attivo (se è un editor PLC, alla tabelladellevariabililocali;seèuneditordiparametri,allatabelladiparametri,ecc.).

Delete record Cancella la variabile nella riga selezionata della tabella correntemente attiva.

Generate redistributable source module

CreaunfileRSMdelprogetto.

166 LogicLab manuale utente

10.2.6 TOOLBAR NETWORK

Bottone Comando Descrizione

Insert Top Aggiungeunnetworkvuotonellapartealtadeldocumento LD/FBD attivo.

Insert Bottom Aggiungeunnetworkvuotonellapartebassadeldocumento LD/FBD attivo.

Insert After Aggiungeunnetworkvuotodopoilnetworkselezionato del documento LD/FBD attivo.

Insert Before Aggiungeunnetworkvuotoprimadelnetworkselezionato del documento LD/FBD attivo.

View grid Seselezionato,mostraunagrigliapuntatasullosfondodell’editorLD/FBD.

Auto connect

Se selezionato, abilita l’autoconnessione, che è la creazioneautomaticadiunfilologicochecollegaipinsdidueblocchi,unavoltaportatiunovicinoall’altro.

10.2.7 TOOLBAR DEBUG

Bottone Comando Descrizione

Debug mode Attiva/disattiva la modalità di debug.

Live debug mode Attiva/disattiva la modalità di debug live.

Set/Remove trigger

Imposta/rimuoveuntriggernellalineadicodicesorgente corrente.

Graphic trigger Imposta/rimuoveuntriggergraficonellalineadicodice sorgente corrente.

Remove all triggers Rimuove tutti i trigger.

Trigger list Elenca tutti i trigger.

Set breakpoints Impostaunbreakpointnellalineadicodicesorgente corrente.

Remove all breakpoints Rimuovetuttiibreakpoint.

Run Faripartirel’esecuzionediunprogrammadopounbreakpoint.

Breakpoint list Elencatuttiibreakpoint.

Change current instance

Cambialaricorrenzadelbloccofunzionicorrente(modalità live debug).

LogicLab manuale utente 167

11. RIFERIMENTI DI LINGUAGGIO

TuttiilinguaggidiLogicLabrispettanolostandardIEC61131-3.

- Elementi comuni.

- Instruction list (IL).

- Function block diagram (FBD).

- Ladder diagram (LD).

- Structured text (ST).

- Sequential Function Chart (SFC).

Inoltre, LogicLab aggiunge alcune estensioni:

- Puntatori.

- Macro.

11.1 ELEMENTI COMUNI

Glielementicomunitestualiegraficisonomezzichesonocomuniatutti i linguaggidiprogrammazionedicontrolliprogrammabilispecificatidallostandardIEC61131-3.Nota: ladefinizioneelamodificadellamaggiorpartedeglielementicomuni(variabili,elementi

strutturati,definizionidiblocchifunzione,ecc.)sonogestitidaLogicLabattraversoedi-tor,modulietabelle.LogicLabnonpermettedimodificaredirettamenteilcodicesorgen-terelativoaglielementicomunimenzionatiquisopra.Iparagrafiseguentispieganoglielementideilinguaggi.Pergestirecorrettamenteglielementicomuni,fareriferimentoallaguida utente di LogicLab.

11.1.1 ELEMENTI BASE

11.1.1.1 SET DI CARATTERI

IdocumentieglielementitestualideilinguaggigraficisonoscrittiusandoilsetdicaratteriASCII standard.

11.1.1.2 COMMENTI

Icommentidell’utentesonodelimitatiall’inizioeallafinedallecombinazionidicaratterispeciali“(*” and “*)”.Icommentisonopermessiinqualunquepartedelprogramma,enonhannoalcunsignificatosemanticoosintatticoinnessunodeilinguaggidefinitidaquesto standard.

L’usodicommentinidificati,peresempio(*(*NESTED*)*) è segnalato come errore.

11.1.2 TIPI DI DATI ELEMENTARI

Unnumeroditipididatielementari(ovveropredefiniti)sonoresidisponibilidaLogicLab,tutticompatibiliconlostandardIEC61131-3.

Nellatabellaseguentesonodescrittiitipididatielementari;laparolachiaveperciascuntipodidato,ilnumerodibitperelementodidatielagammadivaloriperciascuntipodidato.

Keyword Data type Bit Range

BOOL Boolean See note 0 to 1

SINT Short integer 8 -128 to 127

USINT Unsigned short integer 8 0 to 255

INT Integer 16 -32768 to 32767

168 LogicLab manuale utente

Keyword Data type Bit Range

UINT Unsigned integer 16 0 to 65536

DINT Double integer 32 -231 to 231-1

UDINT Unsigned long integer 32 0 to 232

BYTE Bitstringoflength8 8 —

WORD Bitstringoflength16 16 —

DWORD Bitstringoflength32 32 —

REAL Real number 32 -3.40E+38 to +3.40E+38

STRING Stringofcharacters - -

Nota: larealeimplementazionedeltipodidatoBOOLdipendedalprocessoredeltargetdevice,peresempio,èlungo1bitperidevicechehannoun’areabit-indirizzabile.

11.1.3 TIPI DI DATO DERIVATI

I tipi di datoderivati possonoesseredichiarati usando la costruzioneTYPE…END_TYPE. Questi tipididatiderivatipossonoessereutilizzatinelledichiarazionidellevariabili, inaggiuntaaitipididatielementari.

Sia le variabili ad elemento singolo che gli elementi delle variabili multi-elemento, che sonodescritticometipididatiderivati,possonoessereutilizzatidovunqueunavariabilediquestotipopuòessereutilizzata.

11.1.3.1 TYPEDEF

Loscopodeitypedefèdiassegnarenomialternativiatipiesistenti.Nonesistenessunadifferenzatrauntypedefeilsuotipodiappartenenza,tranneilnome.

Itypedefpossonoesseredichiaratiutilizzandolasintassiseguente:

TYPE

<enumerated data type name> : <parent type name>;

END_TYPE

Peresempio,considerareladichiarazioneseguente,mappareilnomeLONGWORDditipoDWORD dello standard IEC 61131-3:

TYPE

longword : DWORD;

END_TYPE

11.1.3.2 TIPI DI DATO ENUMERATIVI

Unadichiarazioneditipodidatoenumerativostabiliscecheilvalorediognielementodiquestotipopuòesseresolounodeivaloridatinella listaassociatadi identificatori.Lalistadeglienumeratividefinisceunsetordinatodivalorienumerati,chepartonoilprimoidentificatoredellalistaefinisconoconl’ultimo.

Itipididatoenumerativipossonoesseredichiaraticonlaseguentesintassi:

TYPE

<enumerated data type name> : ( <enumeration list> );

END_TYPE

Peresempio,considerarelaseguentedichiarazionediduetipididatienumerativi.

Notareche,quandononèassegnatonessunvaloreesplicitoadunidentificatorenellalistadeglienumerativi,ilsuovaloreequivalealvaloreassegnatoall’identificatoreprecedenteaumentato di uno.

LogicLab manuale utente 169

TYPE

enum1: (

val1, (* the value of val1 is 0 *)

val2, (* the value of val1 is 1 *)

val3 (* the value of val1 is 2 *)

);

enum2: (

k := -11,

i := 0,

j, (* the value of j is ( i + 1 ) = 1 *)

l := 5

);

END_TYPE

Diversidatienumerativipossonoutilizzareglistessiidentificatori.Peressereidentificatiunicamentequandoutilizzatiinuncontestoparticolare,glienumerativiletteralipossonoesserequalificaticonunprefissocheconsistenelnomedeltipodidatoassociatoeilse-gno #.

11.1.3.3 SUBRANGE

Unadichiarazioneditiposubrangespecificacheilvalorediqualsiasielementodidatoèinclusotrailimitimassimieminimispecificati.

Isubrangepossonoesseredichiaraticonlasintassiseguente:

TYPE

<subrange name> : <parent type name> ( <lower limit>..<upper limit> );

END_TYPE

Perunesempioconcretoconsiderareladichiarazioneseguente:

TYPE

int_0_to_100 : INT (0..100);

END_TYPE

11.1.3.4 STRUTTURE

Una dichiarazione STRUCTspecificacheglielementididatidiquestotipocontengonosot-toelementiditipispecificicuisipuòavereaccessoconnomispecifici.

Lestrutturepossonoesseredichiarateutilizzandolasintassiseguente:

TYPE

<structured type name> : STRUCT

<declaration of stucture elements>

END_STRUCT;

END_TYPE

Considerare,peresempio,ladichiarazioneseguente:

TYPE

structure1 : STRUCT

elem1 : USINT;

elem2 : USINT;

170 LogicLab manuale utente

elem3 : INT;

elem3 : REAL;

END_STRUCT;

END_TYPE

11.1.4 COSTANTI LETTERALI

11.1.4.1 COSTANTI LETTERALI NUMERICHE

Larappresentazioneesternadidatineivari linguaggidiprogrammazionedicontrollialogicaprogrammabileconsisteinletteralinumerici.

Ci sono due classi di letterali numerici: letterali interi e letterali reali. Un letterale nume-ricoèdefinitocomeunnumerodecimaleounnumeroconbase.

I letteralidecimalisonorappresentaticonunaconnotazionedecimaleconvenzionale. Iletteralirealisonodistintigrazieallapresenzadellavirgoladecimale.Unesponenteindicalapotenzainteradidieciconcuisidevemoltiplicareilnumeroprecedenteperottenereilvalorerappresentato.Iletteralidecimalieiloroesponentipossonoessereprecedutidaun segno (+ o -).

Iletteraliinteripossonoessererappresentatiinbase2,8o16.Labaseèinnotazionedecimale.Perlabase16,èusatounsetestesodicifrecheconsistononelleletteredaAaF,conilrispettivosignificatoconvenzionaledidecimaleda10a15.Inumericonbasenon contengono nessun segno (+ o -).

IdatiBooleanisonorappresentatitramiteFALSE o TRUE.

Icaratteriegliesempideiletteralinumericisonoriportatinellatabellasottostante.

Descrizione Esempio

Letterali interi -12 0 123 +986

Letterali reali -12.0 0.0 0.4560

Letteralirealiconesponente-1.34E-12 or -1.34e-12

1.0E+6 or 1.0e+61.234E6 or 1.234e6

Letterale a base 2 2#11111111 (256 decimali)2#11100000 (240 decimali)

Letterale a base 8 8#377 (256 decimali)8#340 (240 decimali)

Letterale a base 16 16#FFor16#ff(256decimali)16#E0 or 16#e0 (240 decimali)

Boolean FALSE e TRUE FALSE TRUE

11.1.4.2 COSTANTI LETTERALI STRINGA

Unacostanteletteralestringaèunasequenzadizeroopiùcarattericheinizianoetermi-nanoconilcarattereapicesingolo(‘).

Lecombinazioniditrecaratteridelsimbolodeldollaro($)seguitodaduecifreesadecimalidevonoessereinterpretatecomelarappresentazioneesadecimaledelcodiceaottobitdel carattere.

LogicLab manuale utente 171

Esempio Spiegazione'' Stringa vuota (lunghezza zero)'A' Stringa di lunghezza uno contenente un singolo carattere A' ' Stringa di lunghezza uno contenente il carattere space.

'$'' Stringa di lunghezza uno contenente il carattere apice singolo

'”' Stringa di lunghezza uno contenente il carattere virgolette

'$R$L' Stringa di lunghezza due contenente i carattere CR e LF'$0A' Stringa di lunghezza uno contenente il carattere LF

Le combinazioni di due caratteri che iniziano con il simbolo del dollaro devono essere interpretate,quandosiverificanoinstringhedicaratteri,comeindicatonellatabellase-guente.

Combinazione Interpretazione$$ Segno del dollaro$' Apicesingolo

$L or $1 Linea di alimentazione

$N or $n Nuova linea

$P or $p Modulodialimentazione(pagina)

$R or $r Ritornoacapo

$T or $t Tab

11.1.5 VARIABILI

11.1.5.1 INTRODUZIONE

Levariabilioffronomezzidi identificazionedioggettididati ilcuicontenutopuòcam-biare,peresempioidatiassociatiagliinputeaglioutputoallamemoriadelcontrolloreprogrammabile.Unavariabiledeveesseredichiaratacomeundatoditipoelementare.Levariabilipossonoessererappresentatesimbolicamente,oaltrimentiinunamanieracherappresentidirettamentel’associazionedeidaticonlaloroposizionelogicaofisicanell’in-put,outputomemoriadelcontrolloreprogrammabile.

CiascunaPOU(peresempio,ciascunprogramma,funzioneobloccofunzione)contieneal-menounasezionedichiarativainiziale,checonsisteinunoopiùelementistrutturali,chespecificanoitipi(e,senecessario,laposizionefisicaologica)dellevariabiliusatedallaPOU.QuestapartedichiarativainiziaconunadellekeywordVAR,VAR_INPUToVAR_OU-TPUT,opzionalmenteseguitadaunoopiùqualificatori(RETAIN,oCONSTANT),seguitadaunaopiùdichiarazioniseparatedasemicolonneeterminatedallakeywordEND_VAR.Unadichiarazionepuòanchespecificareun’inizializzazioneperlavariabiledichiarata,quandouncontrolloreprogrammabile supporta ladichiarazionedell’utentedivalori iniziali pervariabili.

11.1.5.2 STRUTTURARE ELEMENTI

La dichiarazione di una variabile deve seguire la seguente sintassi:

KEYWORD [RETAIN] [CONSTANT]

Declaration 1

Declaration 2

172 LogicLab manuale utente

...

Declaration N

END_VAR

11.1.5.3 PAROLE CHIAVE E AMBITO

Parola chiave Impiego della variabile

VAR Interna all’unità di organizzazione.

VAR_INPUT Fornita esternamente.

VAR_OUTPUT Fornita dall’unità di organizzazione ad entità esterne.

VAR_IN_OUTFornitadaentitàesterne,puòesseremodificataall’internodell’unitàdiorganizzazione.

VAR_EXTERNALFornitainbaseallaconfigurazioneviaVAR_GLOBAL,puòesseremodificataall’interno dell’unità di organizzazione.

VAR_GLOBAL Dichiarazione di una variabile globale.

La visibilità delle dichiarazioni contenute negli elementi di struttura sono locali alla POU in cui la dichiarazione si trova.

Ovvero,levariabilidichiaratenonsonoaccessibiliallealtrePOUtrannecheperpassaggioesplicitodiparametritramitevariabilichesonostatedichiarateinputooutputdiquesteunità.

L’eccezioneallaregolaèilcasodelladichiarazionedivariabiliglobali.Questotipodiva-riabile è accessibile ad una POU tramite una dichiarazione di VAR_EXTERNAL. Il tipodivariabile dichiarata in una VAR_EXTERNALdeveaccordarsiconiltipodichiaratonelbloccoVAR_GLOBAL.

Siverificaunerrorese:

- unaPOUqualsiasicercadimodificareilvalorediunavariabilecheèstatadichiarataCONSTANT;

- una variabile dichiarata VAR_GLOBAL CONSTANT inunelementodiconfigurazioneo inunaPOU(“elementodicontenimento”)èutilizzatainunadichiarazioneVAR_EXTERNAL (senza la caratteristica CONSTANT) di un elemento qualsiasi contenuto all’interno dell’e-lemento di contenimento.

11.1.5.4 QUALIFICATORE

Qualificatore Descrizione

CONST

L’attributo CONST indica che le variabili all’interno degli elementi di struttura sono costanti, ovvero hanno un valorecostante,chenonpuòesseremodificatounavoltacheilprogettoPLCèstatocompilato.

RETAIN

L’attributo RETAIN indica che le variabili all’interno degli elementi di struttura sono ritentive, ovvero mantengonoillorovaloreanchedopocheiltargetdevice è resettato o disattivato.

LogicLab manuale utente 173

11.1.5.5 VARIABILI SCALARI E ARRAY

Unavariabilescalarerappresentaunsingoloelementodidatoditipielementarioditipidi dati derivati.

Unarrayèunacollezionedielementididatidellostessotipo;peravereaccessoadunsingoloelementodell’array,deveessereusatounindicechiusotraparentesiquadre.Gliindicipossonoesseresialetteraliinterisiavariabiliadelementosingolo.

Perrappresentarefacilmentelematricididati,gliarraypossonoesseremulti-dimensio-nali;inquestocaso,èrichiestounindicecomposto,unindiceperdimensione,separatidavirgole.Ilnumeromassimodidimensionipermessenelladefinizionediunarrayètre.

11.1.5.6 SINTASSI DI DICHIARAZIONE

Le variabili devono essere dichiarate all’interno degli elementi di struttura, usando la sin-tassi seguente:

VarName1 : Typename1 [ := InitialVal1 ];

VarName2 AT Location2 : Typename2 [ := InitialVal2 ];

VarName3 : ARRAY [ 0..N ] OF Typename3;

dove:

Parola chiave Descrizione

VarNameX

Identificatoredivariabile,checonsisteinunastringadicaratterialfanumerici,dilunghezza1osuperiore.E’usatoperlarappresentazionesimbolicadellevariabili.

TypenameX Tipodidatodellavariabile,selezionatodatipididatielementari.

InitialValX Ilvalorechelavariabileassumedopoilresetdeltarget.

LocationX Vedereilparagrafosuccessivo.

N Indice dell’ultimo elemento, con array avente lunghezza N+1.

11.1.5.7 INDIRIZZO LOGICO

Levariabilipossonoessererappresentatesimbolicamente,ovveroèpossibileaccedereadesseattraversoilloroidentificatore,o,altrimenti,inunmodocherappresentadiret-tamente l’associazionedell’elementodi dato con la posizione logica o fisicanell’input,outputostrutturadimemoriadelcontrollerprogrammabile.

Larappresentazionedirettadiunavariabileasingoloelementoèfornitadaunsimbolospecialeformatodallaconcatenazionedelsegnopercentuale“%”,unprefissodiposiziona-mentoeunodidimensioneeunoodueinterisenzasegno,separatidapunti(.).

%location.size.index.index

1) posizione:

ilprefissodiposizionedeveessereunodeiseguenti:

Prefissodiposizione Descrizione

I PosizioneInputQ PosizioneOutputM Posizione Memory

174 LogicLab manuale utente

2) dimensione:

ilprefissodidimensionedeveessereunodeiseguenti:

Prefissodidimensione Descrizione

X Bit singoloB Byte (8 bits)W Word (16 bits)D Doubleword(32bits)

3) index.index:

questasequenzadiinterisenzasegno,separatidapunti,specificalaposizionedellavariabilenell’areaspecificatadalprefissodiposizione.

Esempio:

Rappresentazione diretta Descrizione

%MW4.6 Wordchepartedalprimobytedelsettimoelemento di memoria del blocco di dati 4.

%IX0.4 Primobitdelprimobytedelquintoelementodelsetinput0.

Notareche laposizioneassolutadipendedalladimensionedeglielementidelbloccodidati,nondalprefissodidimensione.Infatti,%MW4.6 e %IX0.4 iniziano dallo stesso byte in memoria,mailprimoportaadun’areacheè16bitspiùcortadell’ultimo.

Perutentiavanzati:sel’indiceconsistesoloinunintero(senzapunti),alloraperdequal-siasiriferimentoalbloccodidati,eportadirettamentealbytenellamemoriachehailvalore dell’indice come suo indirizzo assoluto.

Rappresentazione diretta Descrizione

%MW4.6 Wordchepartedalprimobytedelsettimoelemento del blocco di dati 4 in memoria.

%MW4 Wordchepartedalbyte4inmemoria

Esempio

VAR [RETAIN] [CONSTANT] XQuote : DINT; Enabling : BOOL := FALSE; TorqueCurrent AT %MW4.32 : INT; Counters : ARRAY [ 0 .. 9 ] OF UINT; Limits: ARRAY [0..3, 0..9]

END_VAR

- La variabile XQuoteèlunga32bit,edèautomaticamenteposizionatadalcompilatoreLogicLab.

- La variabile Enabling è inizializzata su FALSEdopoilresetdeltarget

- La variabile TorqueCurrentèposizionatanell’areadimemoriadeltargetdevice,utilizza16bitspartendodalprimobytedeltrentatreesimoelementodelbloccodati4.

- La variabile Countersèunarraydidiecivariabiliindipendentiditipointerosenzasegno.

LogicLab manuale utente 175

11.1.5.8 DICHIARARE VARIABILI IN LOGICLAB

QualsiasilinguaggioPLCsiainuso,LogicLabpermettedinontenercontodellasintassiriportataquisopra,poichéforniscel’editordivariabililocali,l’editordivariabiliglobaliel’editordeiparametri,chepresentanoun’interfacciasempliceperdichiararetuttiitipidivariabili.

11.1.6 PROGRAM ORGANIZATION UNITS

LePOUsonofunzioni,blocchifunzioneeprogrammi.QuestePOUpossonoessereconse-gnatedalproduttoreoprogrammatedall’utenteattraversoimezzidefinitiinquestapartedello standard.

LePOUnonsonoricorsive;ovvero,richiamareunaPOUnoncausailrichiamodiun’altraPOUdellostessotipo.

11.1.6.1 FUNZIONI

Introduzione

Pergliscopideilinguaggidiprogrammazionedelcontrollerprogrammabile,unafunzioneèdefinitacomeunaPOUche,quandovieneeseguita,produceesattamenteunelementodidato,cheèconsideratoilrisultatodellafunzione.

Lefunzioninoncontengonoinformazionidistatointerne,ovveroilrichiamodiunafun-zioneconglistessiargomenti(variabili inputVAR_INPUT e variabili in-out VAR_IN_OUT) producesempreglistessivalori(variabilioutputVAR_OUTPUT , variabili in-out VAR_IN_OUT erisultatodellafunzione).

Sintassi per la dichiarazione

Ladichiarazionediunafunzionedeveessereeseguitainquestomodo:

FUNCTION FunctionName : RetDataType

VAR_INPUT

declaration of input variables (see the relevant section)

END_VAR

VAR

declaration of local variables (see the relevant section)

END_VAR

Function body

END_FUNCTION

Parola chiave Descrizione

FunctionName Nomedellafunzionedichiarata.

RetDataType Tipodidatodelvalorechelafunzionehariportato..

Function body

Specificaleoperazionichedevonoessereeseguitesullevariabiliinputperassegnarevaloridipendentidallasemanticadellafunzioneadunavariabileconlostessonomedellafunzione,cherappresentailrisultatodellafunzionestessa.PuòesserescrittoinunqualsiasilinguaggiosupportatodaLogicLab.

Dichiarare funzioni in LogicLab

QualunquesiaillinguaggioPLCinuso,LogicLabpermettediignorarelasintassiriportataquisopra,poichéfornisceun’interfacciasempliceperl’usodellefunzioni.

176 LogicLab manuale utente

11.1.6.2 BLOCCHI FUNZIONI

Introduzione

Pergli scopidei linguaggidiprogrammazionedel controllerprogrammabile,unbloccofunzioneèunaPOUche,quandovieneeseguita,riportaunoopiùvalori.Possonoesserecreate ricorrenzemultiple,nominate (copie)diunblocco funzione.Ogni ricorrenzahaunidentifierassociato(ilnomedellaricorrenza)eunastrutturadidaticontenenteilsuoinput,outputevariabili interne.Tutti ivaloridellevariabilioutputelevariabili internenecessariediquestastrutturadidatisimantengonodaun’esecuzionedelbloccofunzio-neall’altra;perquestomotivo,ilrichiamodiunbloccofunzioneconglistessiargomenti(variabiliinput)nonproducesempreglistessivaloridioutput.

Sololevariabiliinputeoutputsonoaccessibilialdifuoridiunaricorrenzadiunbloccofunzione,ovvero,levariabiliinternedelbloccofunzionesononascosteall’utentedelbloc-cofunzione.

Pereseguire lesueoperazioni,unblocco funzionehabisognodiessere richiamatodaun’altraPOU.Ilrichiamodipendedallinguaggiospecificodelmodulochechiamailbloccofunzione.IlraggiodiunaricorrenzadiunbloccofunzioneèlocaleallaPOUnellaqualeèrappresentata.

Sintassi per la dichiarazione

Ladichiarazionediunafunzionedeveessereeseguitacomesegue:

FUNCTION_BLOCK FunctionBlockName

VAR_INPUT

declaration of input variables (see the relevant section)

END_VAR

VAR_OUTPUT

declaration of output variables

END_VAR

VAR_EXTERNAL

declaration of external variables

END_VAR

VAR

declaration of local variables

END_VAR

Function block body

END_FUNCTION_BLOCK

Parola chiave Descrizione

FunctionBlockName Nomedelbloccofunzionedichiarato(notare:nomedel modello, non delle sue ricorrenze).

VAR_EXTERNAL .. END_VAR

Unbloccofunzionepuòaccedereallevariabiliglobalisolo se sono elencate in un elemento di struttura VAR_EXTERNAL.LevariabilipassatealFBtramiteuncostrutto VAR_EXTERNALpossonoesseremodificateall’interno del FB.

Function block body

Specificaleoperazionidaeseguiresullevariabiliinputperassegnarevaloriallevariabilioutput–dipendentidallasemanticadelbloccofunzioneedalvaloredellevariabiliinterne.PuòesserescrittainunoqualunquedeilinguaggisupportatidaLogicLab.

LogicLab manuale utente 177

Dichiarare funzioni in LogicLab

QualunquelinguaggioPLCsiainuso,LogicLabpermettedinontenercontodellasintassiriportataquisoprapoichèfornisceun’interfacciasempliceperusareiblocchifunzione.

11.1.6.3 PROGRAMMI

Introduzione

Un programma è definito in IEC 61131-3 come un “assemblamento logico di tutti glielementie costruttidel linguaggiodiprogrammazionenecessariper l’elaborazionedelsegnale intenzionale richiestodaun sistemadi controlli a logicaprogrammabileper ilcontrollodiunamacchinaodiunprocesso”.

Sintassi per la dichiarazione

Ladichiarazionediunprogrammadeveessereeseguitacomesegue:

PROGRAM < program name>

Declaration of variables (see the relevant section)

Program body

END_PROGRAM

Parola chiave DescrizioneProgram Name Nomedelprogrammadichiarato.

Program body

Specificaleoperazionidaeseguireperottenerel’elaborazionedelsegnaleintenzionale.PuòesserescrittainunoqualsiasideilinguaggisupportatidaLogicLab.

Scrivere un programma in LogicLab

QualunquesiaillinguaggioPLCinuso,LogicLabpermettedinontenercontodellasintassiriportataquisopra,poichéfornisceun’interfacciasempliceperscrivereiprogrammi.

11.1.7 FUNZIONI STANDARD IEC 61131-3

QuestoparagrafodescrivetuttelefunzionistandardIEC61131-3disponibiliinLogicLab,piùaltrechepossonoessereconsideratecomeestensionidiLogicLaballostandard.

Queste funzioni sono comuni all’intero set di linguaggi di programmazione e possonoquindi essere usate in qualunque Programmable Organization Unit (POU).

Unafunzioneindicatacome(Ext.)puòavereunnumerovariabilediinput.

Funzioni di conversione di tipo

Inbaseallostandard,lefunzionidiconversionedevonoaverelaforma*_TO_**,dove“*” èiltipodivariabileinput,e“**”èiltipodellavariabiledioutput(peresempio,INT_TO_REAL).LogicLabfornisceunsetdifunzionidiconversionecheevitanoallosviluppatoredispecificareiltipodellavariabilediinput.

178 LogicLab manuale utente

TO_BOOL

Descrizione Conversione in BOOL (booleano)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output BOOL

Esempi

out := TO_BOOL( 0 ); (* out = FALSE *)

out := TO_BOOL( 1 ); (* out = TRUE *)

out := TO_BOOL( 1000 ); (* out = TRUE *)

TO_SINT

Descrizione Conversione in SINT (intero con segno di 8 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output SINT

Esempiout := TO_SINT( -1 ); (* out = -1 *)

out := TO_SINT( 16#100 ); (* out = 0 *)

TO_USINT

Descrizione Conversione in USINT (intero senza segno di 8 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output USINT

Esempiout := TO_USINT( -1 ); (* out = 255 *)

out := TO_USINT( 16#100 ); (* out = 0 *)

TO_INT

Descrizione Conversione in INT (intero con segno di 16 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output INT

Esempiout := TO_INT( -1000.0 ); (* out = -1000 *)

out := TO_INT( 16#8000 ); (* out = -32768 *)

TO_UINT

Descrizione Conversione in UINT (intero senza segno di 16 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output UINT

Esempiout := TO_UINT( 1000.0 ); (* out = 1000 *)

out := TO_UINT( 16#8000 ); (* out = 32768 *)

LogicLab manuale utente 179

TO_DINT

Descrizione Conversione in DINT (intero con segno di 32 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output DINT

Esempiout := TO_DINT( 10.0 ); (* out = 10 *)

out := TO_DINT( 16#FFFFFFFF ); (* out = -1 *)

TO_UDINT

Descrizione Conversione in UDINT (intero senza segno di 32 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output UDINT

Esempiout := TO_UDINT( 10.0 ); (* out = 10 *)

out := TO_UDINT( 16#FFFFFFFF ); (* out = 4294967295 *)

TO_BYTE

Descrizione Conversione in BYTE (8 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output BYTE

Esempiout := TO_BYTE( -1 ); (* out = 16#FF *)

out := TO_BYTE( 16#100 ); (* out = 16#00 *)

TO_WORD

Descrizione Conversione in WORD (16 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output WORD

Esempiout := TO_WORD( 1000.0 ); (* out = 16#03E8 *)

out := TO_WORD( -32768 ); (* out = 16#8000 *)

TO_DWORD

Descrizione Conversione in DWORD (32 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output DWORD

Esempiout := TO_DWORD( 10.0 ); (* out = 16#0000000A *)

out := TO_DWORD( -1 ); (* out = 16#FFFFFFFF *)

180 LogicLab manuale utente

TO_REAL

Descrizione Conversione in REAL (virgola mobile 32 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output REAL

Esempiout := TO_REAL( -1000 ); (* out = -1000.0 *)

out := TO_REAL( 16#8000 ); (* out = -32768.0 *)

TO_LREAL

Descrizione Conversione in LREAL (virgola mobile 64 bit)

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output LREAL

Esempiout := TO_LREAL( -1000 ); (* out = -1000.0 *)

out := TO_LREAL( 16#8000 ); (* out = -32768.0 *)

Funzioni numeriche

Ladisponibilitàdelleseguentifunzionidipendedalsistematarget.Fareriferimentoalpro-priofornitorehardwarepermaggiorniinformazioni.

ABS

Descrizione Valoreassoluto.Calcolailvaloreassolutodell’input#0

Numero di operandi 1

Tipo di dato input Qualsiasitiponumerico

Tipo di dato output Lostessodell’input

Esempi

OUT := ABS( -5 );(* OUT = 5 *)

OUT := ABS( -1.618 );(* OUT = 1.618 *)

OUT := ABS( 3.141592 );(* OUT = 3.141592 *)

SQRT

Descrizione Radicequadrata.Calcolalaradicequadratadell’input#0

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

Esempi OUT := SQRT( 4.0 ); (* OUT = 2.0 *)

LN

Descrizione Logaritmo naturale. Calcola il logaritmo in base e diinput#0

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

Esempi OUT := LN( 2.718281 ); (* OUT = 1.0 *)

LogicLab manuale utente 181

LOG

Descrizione Logaritmo.Calcolaillogaritmoinbase10diinput#0

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

Esempi OUT := LOG( 100.0 );(* OUT = 2.0 *)

EXP

Descrizione Esponentenaturale.Calcolalafunzioneesponenzialedie allainput#0

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

Esempi OUT := EXP( 1.0 ); (* OUT ~ 2.718281 *)

SIN

Descrizione Seno.Calcolailsenodiinput#0espressoinradianti

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

EsempiOUT := SIN( 0.0 ); (* OUT = 0.0 *)

OUT := SIN( 2.5 * 3.141592 ); (* OUT ~ 1.0 *)

COS

Descrizione Coseno.Calcolailcosenodiinput#0espressoinradianti

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

EsempiOUT := COS( 0.0 ); (* OUT = 1.0 *)

OUT := COS( -3.141592 ); (* OUT ~ -1.0 *)

TAN

Descrizione Tangente.Calcolalatangentediinput#0espressainradianti

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

EsempiOUT := TAN( 0.0 ); (* OUT = 0.0 *)

OUT := TAN( 3.141592 / 4.0 ); (* OUT ~ 1.0 *)

182 LogicLab manuale utente

ASIN

Descrizione Arcsin.Calcolal’arcsindiinput#0espressoinradianti

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

EsempiOUT := ASIN( 0.0 ); (* OUT = 0.0 *)

OUT := ASIN( 1.0 ); (* OUT = PI / 2 *)

ACOS

Descrizione Arcoseno.Calcolal’arcosenodiinput#0;ilrisultatoèespressoinradianti

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

EsempiOUT := ACOS( 1.0 ); (* OUT = 0.0 *)

OUT := ACOS( -1.0 ); (* OUT = PI *)

ATAN

Descrizione Arcotangente.Calcolal’arcotangentediinput#0;ilrisultatoèespressoinradianti

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

EsempiOUT := ATAN( 0.0 ); (* OUT = 0.0 *)

OUT := ATAN( 1.0 ); (* OUT = PI / 4 *)

ADD

Descrizione Somma.Calcolalasommadeidueinput.

Numero di operandi 2

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico

Tipo di dato output Lostessodegliinput

Esempi OUT := ADD( 20, 40 ); (* OUT = 60 *)

MUL

Descrizione Moltiplicazione.Moltiplicaidueinput.

Numero di operandi 2

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico

Tipo di dato output Lostessodegliinput

Esempi OUT := MUL( 10, 10 ); (* OUT = 100 *)

LogicLab manuale utente 183

SUB

Descrizione Sottrazione.Sottraeinput#1dainput#0

Numero di operandi 2

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico

Tipo di dato output Lostessodegliinput

Esempi OUT := SUB( 10, 3 ); (* OUT = 7 *)

DIV

Descrizione Divisione.Divideinput#0coninput#1

Numero di operandi 2

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico

Tipo di dato output Lostessodegliinput

Esempi OUT := DIV( 20, 2 ); (* OUT = 10 *)

MOD

Descrizione Resto.Calcolailrestodelladivisioneinteradiinput#0divisoinput#1

Numero di operandi 2

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico

Tipo di dato output Lostessodegliinput

Esempi OUT := MOD( 10, 3 ); (* OUT = 1 *)

POW

Descrizione Potenza.ElevamentodibaseallapotenzaExpo

Numero di operandi 2

Tipo di dato inputLREALdovedisponibile,altrimentiREAL

LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

EsempiOUT := POW( 2.0, 3.0 ); (* OUT = 8.0 *)

OUT := POW( -1.0, 5.0 ); (* OUT = -1.0 *)

ATAN2*

Descrizione Arcotangente(con2parametri).Calcolal’arcotangentediY/X;ilrisultatoèespressoinradianti

Numero di operandi 2

Tipo di dato inputLREALdovedisponibile,altrimentiREAL;

LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

Esempi

OUT := ATAN2( 0.0, 1.0 ); (* OUT = 0.0 *)

OUT := ATAN2( 1.0, 1.0 ); (* OUT = PI / 4 *)

OUT := ATAN2( -1.0, -1.0 ); (* OUT = ( -3/4 ) * PI *)

OUT := ATAN2( 1.0, 0.0 ); (* OUT = PI / 2 *)

184 LogicLab manuale utente

SINH*

Descrizione Senoiperbolico.Calcolailsenoiperbolicodell’input#0

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

Esempi OUT := SINH( 0.0 ); (* OUT = 0.0 *)

COSH*

Descrizione Cosenoiperbolico.Calcolailcosenoiperbolicodell’input#0

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

Esempi OUT := COSH( 0.0 ); (* OUT = 1.0 *)

TANH*

Descrizione Tangenteiperbolica.Calcolalatangenteiperbolicadell’input#0

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

Esempi OUT := TANH( 0.0 ); (* OUT = 0.0 *)

CEIL*

Descrizione Arrotondamentoall’interosuperiore.Restituisceilpiùpiccolointerocheèmaggioreougualeall’input#0

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

EsempiOUT := CEIL( 1.95 ); (* OUT = 2.0 *)

OUT := CEIL( -1.27 ); (* OUT = -1.0 *)

FLOOR*

Descrizione Arrotondamentoall’interoinferiore.Restituiscel’interopiùgrandecheèminoreougualeall’input#0

Numero di operandi 1

Tipo di dato input LREALdovedisponibile,altrimentiREAL

Tipo di dato output LREALdovedisponibile,altrimentiREAL

EsempiOUT := FLOOR( 1.95 ); (* OUT = 1.0 *)

OUT := FLOOR( -1.27 ); (* OUT = -2.0 *)

*:funzionifornitecomeestensioneallostandardIEC61131-3.

LogicLab manuale utente 185

Funzioni stringhe di bit

SHL

Descrizione Shiftasinistradiinput#0perilnumerodibitindicatodainput#1conriempimentodizeroadestra.

Numero di operandi 2

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico

Tipo di dato output Lostessodiinput#0

EsempiOUT := SHL( IN := 16#1000CAFE, 16 );

(* OUT = 16#CAFE0000 *)

SHR

Descrizione Shiftadestradiinput#0perilnumerodibitindicatodainput#1conriempimentodizeroasinistra.

Numero di operandi 2

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico

Tipo di dato output Lostessodiinput#0

EsempiOUT := SHR( IN := 16#1000CAFE, 24 );

(* OUT = 16#00000010 *)

ROL

Descrizione Shiftcircolareasinistradiinput#0perilnumerodibitindicatodainput#1.

Numero di operandi 2

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico

Tipo di dato output Lostessodiinput#0

EsempiOUT := ROL( IN := 16#1000CAFE, 4 );

(* OUT = 16#000CAFE1 *)

ROR

Descrizione Shiftcircolareadestradiinput#0perilnumerodibitindicatodainput#1.

Numero di operandi 2

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico

Tipo di dato output Lostessodiinput#0

EsempiOUT := ROR( IN := 16#1000CAFE, 16 );

(* OUT = 16#CAFE1000 *)

186 LogicLab manuale utente

AND

Descrizione ANDlogicoseinput#0einput#1sonoentrambiBOOL,altrimenti AND bit a bit.

Numero di operandi 2

Tipo di dato input TuttiitipitranneiltipoSTRING,TuttiitipitranneiltipoSTRING

Tipo di dato output Lostessodegliinput

EsempiOUT := TRUE AND FALSE; (* OUT = FALSE *)

OUT := 16#1234 AND 16#5678; (* OUT = 16#1230 *)

OR

Descrizione ORlogicoseinput#0einput#1sonoentrambiBOOL,altrimenti OR bit a bit.

Numero di operandi 2

Tipo di dato input TuttiitipitranneiltipoSTRING,TuttiitipitranneiltipoSTRING

Tipo di dato output Lostessodegliinput

EsempiOUT := TRUE OR FALSE; (* OUT = FALSE *)

OUT := 16#1234 OR 16#5678;(* OUT = 16#567C *)

XOR

Descrizione XORlogicoseinput#0einput#1sonoentrambiBOOL,altrimentiXORbitabit.

Numero di operandi 2

Tipo di dato input TuttiitipitranneiltipoSTRING,TuttiitipitranneiltipoSTRING

Tipo di dato output Lostessodegliinput

EsempiOUT := TRUE OR FALSE; (* OUT = TRUE *)

OUT := 16#1234 OR 16#5678; (* OUT = 16#444C *)

NOT

Descrizione Negazionelogicasel’inputèBOOL,altrimentiNOTbitabit.

Numero di operandi 1

Tipo di dato input TuttiitipitranneiltipoSTRING

Tipo di dato output Lostessodegliinput

EsempiOUT := NOT FALSE; (* OUT = TRUE *)

OUT := NOT 16#1234;(* OUT = 16#EDCB *)

LogicLab manuale utente 187

Funzioni di selezione

SEL

Descrizione Selezionetradueinput

Numero di operandi 3

Tipo di dato input BOOL,Qualsiasi,Qualsiasi

Tipo di dato output Lostessodell’inputselezionato

EsempiOUT := SEL( G := FALSE, IN0 := X, IN1 := 5 );

(* OUT = X *)

MAX

Descrizione Selezione del valore massimo

Numero di operandi 2, estendibile

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico,...,Qualsiasitiponumerico

Tipo di dato output Stessotipodell’inputmassimo

Esempi OUT := MAX( -8, 120, -1000 ); (* OUT = 120 *)

MIN

Descrizione Selezione del valore minimo

Numero di operandi 2, estendibile

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico,...,Qualsiasitiponumerico

Tipo di dato output Stessotipodell’inputminimo

Esempi OUT := MIN( -8, 120, -1000 ); (* OUT = -1000 *)

LIMIT

Descrizione Limitainput#0adessereugualeomaggiorediinput#1,eugualeominorediinput#2.

Numero di operandi 3

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico,Qualsiasitiponumerico

Tipo di dato output Lostessodegliinput

Esempi

OUT := LIMIT( IN := 4, MN := 0, MX := 5 ); (* OUT = 4 *)

OUT := LIMIT( IN := 88, MN := 0, MX := 5 );(* OUT = 5 *)

OUT := LIMIT( IN := -1, MN := 0, MX := 5 );(* OUT = 0 *)

MUX

Descrizione Multiplexer.SelezionaunodegliNinputinbasealvaloredell’inputK

Numero di operandi 3, estendibile

Tipo di dato input Qualsiasitiponumerico,Qualsiasitiponumerico,...,Qualsiasitiponumerico

Tipo di dato output Lostessodell’inputselezionato

Esempi OUT := MUX( 0, A, B, C ); (* OUT = A *)

188 LogicLab manuale utente

Funzioni di comparazione

Questotipodifunzionipuòessereutilizzatopercompararestringheselafunzionalitàèsupportatadaltarget.

GT

Descrizione Piùgrandedi.RestituisceTRUEseinput#0>diinput#1,altrimenti FALSE.

Numero di operandi 2

Tipo di dato input TuttiitipitranneBOOL,TuttiitipitranneBOOL

Tipo di dato output BOOL

EsempiOUT := GT( 0, 20 ); (* OUT = FALSE *)

OUT := GT( ‘pippo’, ‘pluto’ ); (* OUT = TRUE *)

GE

Descrizione Maggioreougualedi.RestituisceTRUEseinput#0>=input#1,altrimentiFALSE.

Numero di operandi 2

Tipo di dato input TuttiitipitranneBOOL,TuttiitipitranneBOOL

Tipo di dato output BOOL

EsempiOUT := GE( 20, 20 ); (* OUT = TRUE *)

OUT := GE( ‘pippo’, ‘pluto’ ); (* OUT = FALSE *)

EQ

Descrizione Ugualea.RestituisceTRUEseinput#0=input#1,altrimenti FALSE.

Numero di operandi 2

Tipo di dato input Qualsiasi,Qualsiasi

Tipo di dato output BOOL

EsempiOUT := EQ( TRUE, FALSE ); (* OUT = FALSE *)

OUT := EQ( ‘pippo’, ‘pluto’ ); (* OUT = FALSE *)

LT

Descrizione Minoredi.RestituisceTRUEseinput#0<input#1,altrimenti FALSE.

Numero di operandi 2

Tipo di dato input TuttiitipitranneBOOL,TuttiitipitranneBOOL

Tipo di dato output BOOL

EsempiOUT := LT( 0, 20 ); (* OUT = TRUE *)

OUT := LT( ‘pipp’, ‘pluto’ ); (* OUT = TRUE *)

LogicLab manuale utente 189

LE

Descrizione Minoreougualedi.RestituisceTRUEseinput#0<=input#1, altrimenti FALSE.

Numero di operandi 2

Tipo di dato input TuttiitipitranneBOOL,TuttiitipitranneBOOL

Tipo di dato output BOOL

EsempiOUT := LE( 20, 20 ); (* OUT = TRUE *)

OUT := LE( ‘pipp’, ‘pluto’ ); (* OUT = TRUE *)

NE

Descrizione Diversoda.RestituisceTRUEseinput#0!=input#1,altrimenti FALSE.

Numero di operandi 2

Tipo di dato input Qualsiasi,Qualsiasi

Tipo di dato output BOOL

EsempiOUT := NE( TRUE, FALSE ); (* OUT = TRUE *)

OUT := NE( ‘pipp’, ‘pluto’ ); (* OUT = TRUE *)

Funzioni stringhe

Ladisponibilitàdelleseguentifunzionidipendedalsistematarget.Fareriferimentoalpro-priofornitorehardwarepermaggioriinformazioni.

CONCAT

Descrizione Concatenazione di stringhe

Numero di operandi 2

Tipo di dato input STRING, STRING

Tipo di dato output STRING

Esempi OUT := CONCAT( ‘AB’, ‘CD’ ); (* OUT = ‘ABCD’ *)

DELETE

Descrizione CancellaLcaratteridiIN,apartiredalcarattereinP-esimaposizione

Numero di operandi 3

Tipo di dato input STRING, UINT, UINT

Tipo di dato output STRING

EsempiOUT := DELETE( IN := ‘ABXYC’, L := 2, P := 3 );

(* OUT = ‘ABC’ *)

FIND

Descrizione IndicalaposizionedelcarattereinizialedellaprimaoccorrenzadiIN2 in IN1. Se IN2 non viene trovata, ritorna OUT := 0.

Numero di operandi 2

Tipo di dato input STRING, STRING

Tipo di dato output UINT

Esempi OUT := FIND( IN1 := ‘ABCBC’, IN2 := ‘BC’ ); (* OUT = 2 *)

190 LogicLab manuale utente

INSERT

Descrizione InserisceIN2inIN1dopoilcarattereinposizioneP

Numero di operandi 3

Tipo di dato input STRING, STRING, UINT

Tipo di dato output STRING

EsempiOUT := INSERT( IN1 := ‘ABC’, IN2 := ‘XY’, P := 2 );

(* OUT = ‘ABXYC’ *)

LEFT

Descrizione RestituiscegliLcaratteriapartiredasinistradellastringaIN

Numero di operandi 2

Tipo di dato input STRING, UINT

Tipo di dato output STRING

Esempi OUT := LEFT( IN := ‘ASTR’, L := 3 ); (* OUT = ‘AST’ *)

LEN

Descrizione Lunghezza della stringa

Numero di operandi 1

Tipo di dato input STRING

Tipo di dato output UINT

Esempi OUT := LEN( ‘ASTRING’ ); (* OUT = 7 *)

MID

Descrizione RestituiscegliLcaratteridiIN,apartiredallaposizioneindicata da P

Numero di operandi 3

Tipo di dato input STRING, UINT, UINT

Tipo di dato output STRING

EsempiOUT := MID( IN := ‘ASTR’, L := 2, P := 2 );

(* OUT = ‘ST’ *)

REPLACE

Descrizione SostituiscegliLcaratteridiIN1cheinizianoallaposizioneP-esima con IN2

Numero di operandi 4

Tipo di dato input STRING, STRING, UINT, UINT

Tipo di dato output STRING

EsempiOUT := REPLACE( IN1 := ‘ABCDE’, IN2 := ‘X’, L := 2, P := 3 ); (* OUT = ‘ABXE’ *)

LogicLab manuale utente 191

RIGHT

Descrizione RestituiscegliLcaratteriapartiredadestradellastringaIN

Numero di operandi 2

Tipo di dato input STRING, UINT

Tipo di dato output STRING

Esempi OUT := RIGHT( IN := ‘ASTR’, L := 3 ); (* OUT = ‘STR’ *)

11.2 INSTRUCTION LIST (IL)

QuestasezionedefiniscelasemanticadellinguaggioIL(InstructionList).

11.2.1 SINTASSI E SEMANTICA

11.2.1.1 SINTASSI DELLE ISTRUZIONI IL

IlcodiceILècompostodaunasequenzadi istruzioni.Ciascunaistruzionecominciasuunanuovalineaecontieneunoperatoreconmodificatoriopzionali,e,senecessarioperoperazioniparticolari,unoopiùoperandiseparatidavirgole.Glioperandipossonoesserediunaqualsiasidellerappresentazionididatiperiletteralieperlevariabili.

Leistruzionipossonoessereprecedutedaun’etichettadiidentificazioneseguitadaiduepunti(:).Possonoessereinseritedellelineevuotetraleistruzioni.

Esempi

Analizziamo un segmento di codice:

START:

LD %IX1 (* Push button *)

ANDN %MX5.4 (* Not inhibited *)

ST %QX2 (* Fan out *)

Glielementichecostituisconociascunaistruzionesonoclassificaticomesegue:

Etichetta Operatore [+modificatore] Operando Commento

START: LD %IX1 (* Push button *)

ANDN %MX5.4 (* Not inhibited *)

ST %QX2 (* Fan out *)

Semantica delle istruzioni IL

- Accumulatori

Con accumulatore, si intende che un registro contiene il valore del risultato corrente-mente analizzato.

- Operatori

Senonspecificatodiversamente,lasemanticadeglioperatoriè:

accumulator := accumulator OP operand

Ovvero,ilvaloredell’accumulatoreèrimpiazzatodalrisultatoprodottodall’operazioneOPapplicataalvalorecorrentedellostessoaccumulatore,conrispettodell’operando.Intal caso, l’istruzione “AND %IX1”èinterpretatacome:

accumulator := accumulator AND %IX1

192 LogicLab manuale utente

e l’istruzione “GT %IW10” avrà il risultato Booleano TRUE se il valore corrente dell’ac-cumulatoreèpiùgrandedelvaloredell’inputword10,eincasocontrarioilrisultatoBooleano FALSE:

accumulator := accumulator GT %IW10

- Modificatori

Ilmodificatore“N”indicanegazionebitabitdell’operando.

Ilmodificatoreparentesisinistra“(“indicachelamisurazionedell’operatoredevees-seredifferitafinchènonsiincontraunoperatoreparentesidestra“)”.Laformadellasequenzadiinformazionitraparentesièmostrataquisotto:

accumulator := accumulator AND (%MX1.3 OR %MX1.4)

Ilmodificatore“C”indicachel’istruzioneassociatapuòessereeseguitasoloseilvaloredelrisultatocorrentementeanalizzatoèBooleano1(oBooleano0sel’operatoreècom-binatoconmodificatore“N”).

11.2.2 OPERATORI STANDARD

Glioperatoristandardconiloromodificatorieoperandipermessisonoelencatiquisotto.

Operatore ModificatoreTipi di operatori supportati: Acc_type, Op_type

Semantica

LD N Any, Any Impostal’accumulatoreugualeall’operando.

ST N Any, Any Situa l’accumulatore nella posizionedell’operando.

S BOOL, BOOL Impostal’operandoaTRUE se l’accumulatore è TRUE.

R BOOL, BOOL Impostal’operandoaFALSE se l’accumulatore è TRUE.

AND N, ( Any but REAL, Any but REAL AND logico o bit a bit

OR N, ( Any but REAL, Any but REAL OR logico o bit a bit

XOR N, ( Any but REAL, Any but REAL XOR logico o bit a bit

NOT Any but REAL NOT logico o bit a bitADD ( Any but BOOL AddizioneSUB ( Any but BOOL Sottrazione MUL ( Any but BOOL MoltiplicazioneDIV ( Any but BOOL DivisioneMOD ( Any but BOOL Modulo-divisione GT ( Any but BOOL Comparazione:GE ( Any but BOOL Comparazione:=EQ ( Any but BOOL Comparazione:=NE ( Any but BOOL Comparazione:LE ( Any but BOOL Comparazione:LT ( Any but BOOL Comparazione:JMP C, N Label Salta all’etichetta CAL C, N FB instance name Richiamaunfunctionblock

LogicLab manuale utente 193

Operator ModifiersSupported operand

types: Acc_type, Op_type

Semantics

RET C, NRiportaalprogramma,alla

funzioneoalbloccofunzionerichiamati.

) Valutaleoperazionidifferite.

11.2.3 CHIAMATE A FUNZIONI E BLOCCHI DI FUNZIONE

11.2.3.1 CHIAMATE A FUNZIONI

Lefunzioni(comedefinitenellasezionecorrispondente)sonorichiamateponendoilnomedellafunzionenelcampodell’operatore.Questorichiamohalastrutturaseguente:

LD 1

MUX 5, var0, -6.5, 3.14

ST vRES

Notarecheilprimoargomentononècontenutonellalistadegliinput,mal’accumulatoreèusatocomeilprimoargomentodellafunzione.Argomentiaddizionali(partendodalsecon-do)serichiesti,sonoriportatinelcampooperando,separatidavirgole,nell’ordinedellalorodichiarazione.Peresempio,l’operatoreMUXnellatabellaquisopra,siservedicinqueoperandi,ilprimodeiqualiècaricatonell’accumulatore,mentreglialtriquattroargomentisonoriportatiordinatamentedopoilnomedellafunzione.

Le seguenti regole vengono applicate per richiamare le funzioni

1) Le assegnazioni di argomenti VAR_INPUTpossonoesserevuoti,costanti,ovariabili.

2) L’esecuzionediunafunzionefinisceraggiungendoun’istruzioneREToconlafinefi-sicadellafunzione.Quandoaccadeciò,lavariabileoutputdellafunzioneècopiatanell’accumulatore.

Richiamare Function Blocks

Iblocchifunzione(comedefinitinellasezionecorrispondente)possonoessererichiamaticondizionatamenteeincondizionatamentetramitel’operatoreCAL.Questorichiamoavràla struttura seguente:

LD A

ADD 5

ST INST5.IN1

LD 3.141592

ST INST5.IN2

CAL INST5

LD INST5.OUT1

ST vRES

LD INST5.OUT2

ST vVALID

QuestometododirichiamoèequivalenteadunCAL con un elenco di argomenti, che con-tiene solo una variabile col nome della FB instance.

GliargomentiInputsonopassatia/gliargomentioutputsonolettidaFBinstancetramiteoperazioneST/LDeseguitesuoperandiconlastrutturaseguente:

FBInstanceName.IO_var

194 LogicLab manuale utente

dove

Parola chiave DescrizioneFBInstanceName Nome della ricorrenza che si vuole richiamare.

IO_var Variabileinputooutputdascrivere/leggere.

11.3 FUNCTION BLOCK DIAGRAM (FBD)

QuestasezionedefiniscelasemanticadellinguaggioFBD.

11.3.1 RAPPRESENTAZIONE DI LINEE E BLOCCHI

Glielementidilinguaggiograficosonodisegnatiutilizzandoelementigraficiosemi-grafici,come mostrato nella tabella qui sotto.

Nessunariservadidatioassociazioneconelementididatopuòessereassociataall’usodeiconnettori;quindi,perevitareambiguità,nonèpossibileattribuirenessunidentifica-tore ai connettori.

Aspetto Esempio

Linee

Incrocio di linee con connessione

Blocchi con linee di connessioneepinssconnessi

11.3.2 DIREZIONE DI FLUSSO NEI NETWORK

Unnetworkèdefinitocomeunsetmassimodielementigraficiinterconnessi.Un’etichettadinetworkèdelimitataadestradaiduepunti(:)puòessereassociataadogninetworkogruppodinetwork.IlraggiodiunnetworkedellasuaetichettaèlocaleallaPOUincuiilnetworkèinserito.

Ilinguaggigraficisonoutilizzatiperrappresentareilflussodiunquantitàconcettualeat-traversounoopiùnetworkcherappresentanounpianodicontrollo.

Valeadire,nelcasodifunctionblockdiagrams(FBD),il“Signalflow”ètipicamenteusato,analogamentealflussodisegnalitraglielementidiunsistemadielaborazionedisegnali.

IlflussodisegnaleinlinguaggioFBDèdallaparteoutput(adestra)diunafunzioneounbloccofunzioneallaparteinput(asinistra)dellafunzioneodelbloccofunzionecosìconnessi.

LogicLab manuale utente 195

11.3.3 VALUTAZIONE DEI NETWORK

11.3.3.1 ORDINE DI VALUTAZIONE DEI NETWORK

L’ordineincuiinetworkeiloroelementisonoanalizzatinonènecessariamentelostessoincuisonoetichettatiovisualizzati.QuandoilcorpodiunaPOUconsisteinunoopiùnet-work,irisultatidell’analisidelnetworkall’internodelsuddettocorposonofunzionalmenteequivalenti all’osservanza delle seguenti regole:

1) Nessunelementodelnetworkèanalizzatofinoacheglistatidituttiisuoiinputsonostati analizzati.

2) L’analisidell’elementodiunnetworknonècompletafinoacheglistatidituttiisuoioutputnonsonostatianalizzati.

3) Come enunciato descrivendo l’editor FBD, un numero è assegnato automaticamente atuttiinetwork.All’internodiunaPOU,inetworksonoanalizzatiseguendolase-quenzadelloronumero:ilnetworkNèanalizzatoprimadelnetworkN+1, a meno che nonsiaspecificatodiversamentemedianteglielementidicontrollodell’esecuzione.

11.3.3.2 COMBINAZIONE DI ELEMENTI

GlielementidellinguaggioFBDdevonoessereinterconnessitramitelineediflussodise-gnale.

Gli output dei blocchi nondevonoessere connessi insieme. Inparticolare, il costrutto“Wired-OR” del linguaggio LDnonè permesso,mentre è richiestoun esplicito bloccoBooleano “OR”.

Feedback

Unpercorsofeedbackesiste inunnetworkquandol’outputdellafunzioneodelbloccofunzioneèutilizzatocomeinputdellafunzioneodelbloccofunzionecheloprecedenelnetwork;lavariabileassociataèchiamatavariabilefeedback.

Ipercorsifeedbackpossonoessereoggettodelleseguentiregole:

1) levariabilifeedbackdevonoessereinizializzate,eilvaloreinizialeèutilizzatodurantelaprimaanalisidelnetwork.Vederel’editorvariabiliglobali,l’editorvariabililocaliol’editorparametripersaperecomeinizializzarelerispettivevoci.

2) Unavoltachel’elementoconunavariabiledifeedbackcomeoutputèstatoanaliz-zato, il nuovo valore della variabile feedback è utilizzato fino all’ analisi seguentedell’elemento.

In tal caso, la variabile Booleana RUN è lavariabile feedbacknell’esempiomostratodisotto.

Loop espliciti

196 LogicLab manuale utente

Loop impliciti

11.3.4 ELEMENTI DI CONTROLLO DELL’ESECUZIONE

11.3.4.1 SEGNALI EN/ENO

GliinputaddizionaliBooleaniEN (Enable) e ENO (Enable Out) caratterizzano i blocchi Lo-gicLab, secondo le dichiarazioni

EN ENOVAR_INPUT

EN: BOOL := 1;

END_VAR

VAR_OUTPUT

ENO: BOOL;

END_VAR

Vederelasezionedelleproprietàdimodificadeiblocchiperconoscerecomeaggiungerequestipinsadunblocco.

Quandosiutilizzanoquestevariabili,l’esecuzionedelleoperazionidefinitedalbloccosonocontrollate dalle regole seguenti:

3) se il valore di EN è FALSEquando ilbloccoèrichiamato, leoperazionidefinitedalcorpodellafunzionenonsonoeseguiteeilvalorediENOèreimpostatoaFALSE dal sistemadelcontrollerprogrammabile.

4) Altrimenti, il valore di ENOèimpostatoaTRUEdalsistemadelcontrollerprogramma-bile,eleoperazionidefinitedelcorpodelbloccosonoeseguite.

11.3.4.2 JUMP

IjumpsonorappresentatidaunalineadisegnaleBooleanocheterminainunadoppiafreccia.LalineadisegnaleperunacondizionedijumphaoriginedaunavariabileBoo-leana,odaunoutputBooleanodiunafunzioneodiunbloccofunzione.Iltrasferimentodiuncontrollodelprogrammaall’etichettadesignatadelnetworksiverificaquandoilva-lore Booleano della linea di segnale è TRUE;quindi,ilsaltoincondizionaleèunaspecialevariantedelsaltocondizionale.Iltargetdiunjumpèun’etichettadelnetworkall’internodellaPOUall’internodellaqualesiverificaunjump.

LogicLab manuale utente 197

Simbolo / Esempio Spiegazione

Jumpincondizionale

Jumpcondizionale

Esempio:networkjumpcondizionale

11.3.4.3 RETURN CONDIZIONALI

- Irisultaticondizionalidifunzionieblocchifunzionesonoimplementatiusandounaco-struzione RETURNcomemostratonellatabellasotto.L’esecuzionedelprogrammaèri-trasferitaall’entitàrichiamantesel’inputBooleanoèTRUE, e continua nel modo normale sel’inputBooleanoèFALSE.

- Irisultatiincondizionalisonofornitidallafinefisicadellafunzioneodelbloccofunzione.

Simbolo / Esempio Spiegazione

Risultato condizionale

Example:networkrisultatocondizionale

11.4 LADDER DIAGRAM (LD)

QuestasezionedefiniscelasemanticadellinguaggioLD.

11.4.1 POWER RAILS

IlnetworkLDèdelimitatonellapartesinistradaunalineaverticaledettapowerrailsini-stro,enellapartedestradaunalineaverticaledettapowerraildestro.Ilpowerraildestropuòessereesplicitonell’implementazioneLogicLabesempremostrato.

198 LogicLab manuale utente

Iduepowerrailsonosempreconnessiconunalineaorizzontaledettasignallink.TuttiglielementiLDdovrebberoesserepostieconnessialsignallink.

Descrizione Simbolo

Powerrailsinistro(conlinkorizzontale attaccato)

Powerraildestro(conlinkorizzontale attaccato)

Powerrailconnessidalsignallink

11.4.2 ELEMENTI LINK E STATI

Glielementidilinkpossonoessereorizzontalioverticali.Lostatodeglielementidilinksaràsu“ON”o“OFF”,asecondadeivaloriletteraliBooleani1o0,rispettivamente.Ilter-minelinkstateèsinonimodipowerflow.

Leseguentiproprietàsiapplicanoaglielementidilink:

- lostatodelrailsinistrodeveesseresempreconsideratoON.Nessunostatoèdefinitoperilraildestro.

- Un elemento di link orizzontale è indicato da una linea orizzontale. Un elemento di link orizzontale trasmette lo stato dell’elemento immediatamente alla sua sinistra all’ele-mento immediatamente alla sua destra.

- L’elementodilinkverticaleconsisteinunalineaverticalechesiintersecaconunoopiùelementidilinkorizzontaleinogniparte.Lostatodellinkverticalerappresental’inclu-sivo OR degli stati ONdeilinkorizzontalinellasuapartesinistra,ovvero,lostatodellinkverticale è: OFF se gli stati di tutti i link orizzontali attaccati alla sua sinistra sono:

OFF se gli stati di tutti i link orizzontali attaccati alla sua sinistra sono OFF;

ONselostatodiunoopiùdeilinkorizzontaliattaccatiallasuasinistraèON.

- Lostatodellinkverticaleècopiatosututtiilinkverticaliattaccatiallasuadestra.

- lostatodellinkverticalenonècopiatosunessunodeilinkorizzontaliattaccatiallasuasinistra.

Descrizione Simbolo

Link verticale con link orizzontali attaccati

LogicLab manuale utente 199

11.4.3 CONTATTI

Uncontattoèunelementochetrasmetteunostatoallinkorizzontalenellasuapartede-stra che è uguale al Booleano ANDdellostatodellinkorizzontalenellasuapartesinistraconunafunzioneappropriatadiuninput,outputovariabilidimemoriaBooleaniassociati.

UncontattononmodificailvaloredellavariabileBooleanaassociata.Isimbolidicontattostandard sono mostrati nella tabella seguente.

Nome Descrizione Simbolo

Contatto normalmenteaperto

Lostatodellinksinistroècopiatosul link destro se lo stato della variabile Booleana associata è ON. Altrimenti, lo stato del link destro è OFF.

Contatto normalmente chiuso

Lostatodellinksinistroècopiatoal link destro se lo stato della variabile Booleana associata è OFF. Altrimenti, lo stato del link destro è OFF.

Contatto sensibile al frontedisalita

Lo stato del link destro è ON dal momento della valutazione di questo elemento alla successiva valutazione quando viene rilevata una transizione da OFF a ON della variabile associata e lo stato del link sinistro è ON. Altrimenti, lo stato del link destro è OFF.

Contatto sensibile al frontedidiscesa

Lo stato del link destro è ON dal momento della valutazione di questo elemento alla successiva valutazione quando viene rilevata una transizione da ON a OFF della variabile associata e lo stato del link sinistro è ON. Altrimenti, lo stato del link destro è OFF.

11.4.4 USCITE

Un’uscitacopialostatodellinkallasuasinistraallinkallasuadestrasenzaalcunamodi-fica,ememorizzaunafunzioneappropriatadellostatoodellatransizionedellinksinistronella variabile Booleana associata.

200 LogicLab manuale utente

I simboli delle uscite standard sono mostrati nella tabella seguente.

Nome Descrizione Simbolo

UscitaLo stato del link sinistro è copiatonellavariabileBooleanaassociata e nel link destro.

Uscita negata

Lo stato del link sinistro è copiatosullinkdestro.L’inversodello stato del link sinistro è copiatonellavariabileBooleanaassociata, ovvero, se lo stato del link sinistro è OFF, allora lo stato della variabile associata è ON, e viceversa.

SET (latch) uscita

La variabile Booleana associata èreimpostatasullostatoOFF quando il link sinistro è sullo stato ON,erimanereimpostatofinchènonvieneimpostatodaun’uscita SET.

RESET (unlatch) uscita

La variabile Booleana associata èreimpostatasullostatoOFF quando il link sinistro è sullo stato ON,erimanereimpostatofinchènonvieneimpostatodaun’uscita SET.

Uscita sensibile al frontedisalita

Lo stato della variabile booleana associata è ON dal momento della valutazione di questo elemento alla successiva valutazione quando viene rilevata una transizione da OFF a ON del link sinistro.

Uscita sensibile al frontedidiscesa

Lo stato della variabile booleana associata è ON dal momento della valutazione di questo elemento alla successiva valutazione quando viene rilevata una transizione da ON a OFF del link sinistro.

11.4.5 OPERATORI, FUNZIONI E BLOCCHI FUNZIONI

LarappresentazionedifunzionieblocchifunzioneinlinguaggioLDèsimileaquellauti-lizzataperFBD.VerrannovisualizzatisuognibloccoalmenouninputBooleanoeunou-tputBooleanopercalcolareilpowerflowattraversoilbloccocomemostratonellafiguraseguente.

LogicLab manuale utente 201

11.5 STRUCTURED TEXT (ST)

QuestasezionedefiniscelasemanticadellinguaggioST(StructuredText).

11.5.1 ESPRESSIONI

Un’espressioneèuncostruttoche,unavoltacalcolata,produceunvalorecorrispondenteadunodeitipididatielencatinellatabelladitipididatielementari.LogicLabnonimponenessunarestrizionesullalunghezzamassimadelleespressioni.

Leespressionisonocompostedaoperatorieoperandi.

11.5.1.1 OPERANDI

Unoperandopuòessereun letterale,unavariabile,unrichiamodi funzioneoun’altraespressione.

11.5.1.2 OPERATORI

Aprire latabelladeglioperatoripervisualizzare l’elencodituttiglioperatorisupportatidaST.L’analisidell’espressioneconsistenell’applicareglioperatoriaglioperandiinunasequenzadefinitadalleregolediprecedenzadeglioperatori.

11.5.1.3 REGOLE DI PRECEDENZA DEGLI OPERATORI

Glioperatorihannolivellidiversidiprecedenza,comespecificatonellatabelladegliopera-tori.L’operatoreconlaprecedenzamaggioreèapplicatoperprimoinun’espressione,se-guitodall’operatoreconilgradodiprecedenzasuccessivo,finchèl’analisinonècompleta.Glioperatoriconugualelivellodiprecedenzasonoapplicaticomescrittonell’espressione,da sinistra a destra.

PeresempioseA,B,CeDsonoditipoINTconirispettivivalori1,2,3e4,allora:

A+B-C*ABS(D)

produce-9,and:

(A+B-C)*ABS(D)

produce0.

Quandol’espressionehadueoperandi,l’operandopiùasinistraèanalizzatoperprimo.Peresempio,nell’espressione

SIN(A)*COS(B)

l’espressioneSIN(A)èanalizzataperprima,seguitadaCOS(B), seguita dall’analisi del prodotto.

Lefunzionisonorichiamatecomeelementidell’espressionecheconsistononelnomedel-lafunzioneseguitodaunelencodiargomentitraparentesi,comedefinitonellasezionecorrispondente.

202 LogicLab manuale utente

11.5.1.4 OPERATORI DEL LINGUAGGIO ST

Operazione Simbolo Precedenza

Parentesizzazione (<expression>) PIU’ ALTA

.

.

.

.

.

.

.

.

.

.

.

.

.

Analisidifunzioni <fname>(<arglist>)

Complementodinegazione

-

NOT

Elevamentoapotenza **

Modulomoltiplicadividi

*

/

MOD

Addizione sottrazione+

-

Comparazione <, >, <=, >=

Uguaglianza Disuguaglianza

=

<>

AND Boolean AND

OR Exclusive Boolean XOR

OR Boolean OR PIU’ BASSA

11.5.2 DICHIARAZIONI IN ST

Tutte le istruzioni seguono le seguenti regole:

- terminanoconilpuntoevirgola;

- adifferenzadiIL,ilritornoacapoounanuovalineadicaratteresonotrattatiallostessomododiuncaratteredispazio;

- LogicLabnonimponenessunarestrizioneallalunghezzamassimadelleistruzioni.

LeistruzioniST,possonoesserediviseinclassi,inrapportoallalorosemantica.

11.5.2.1 ASSEGNAMENTI

Semantica

Leistruzionidiassegnamentorimpiazzanoilvaloreattualediunavariabileaelementosingolo/multiploconilrisultatodelcalcolodiun’espressione.

L’istruzionediassegnamentoèancheutilizzataperassegnareilvalorechesivuolecheunafunzioneproduca,ponendoilnomedellafunzioneallasinistradell’operatorediasse-gnamentonelcorpodidichiarazionedellafunzione. Ilvaloreprodottodallafunzioneèilrisultatodelcalcolopiùrecentediquestoassegnamento.

Sintassi

Un’istruzionediassegnamentoconsisteinunriferimentodellavariabilenellapartesini-stra,seguitadall’operatorediassegnamento“:=”,seguitadall’espressionedacalcolare.In questo caso, l’istruzione

A := B ;

sarebbeusataperrimpiazzareilvaloredeldatosingolodellavariabileAdalvaloreattualedellavariabileBsefosseroentrambiditipoINT.

LogicLab manuale utente 203

Esempi

a := b ;

assegnamento

pCV := pCV + 1 ;

assegnamento

c := SIN( x );

assegnamentoconrichiamodifunzione

FUNCTION SIMPLE_FUN : REAL

variables declaration

...

function body

...

SIMPLE_FUN := a * b - c ;

END_FUNCTION

assegnareilvaloredell’outputadunafunzione.

11.5.2.2 DICHIARAZIONE DI FUNZIONI E BLOCCHI FUNZIONE

Semantica

- Lefunzionisonorichiamatecomeelementidell’espressionecheconsistononelnomedellafunzioneseguitodaunelencodiargomentitraparentesi.Ciascunargomentopuòessereletterale,unavariabileoun’espressionecomplessaarbitraria.

- Iblocchifunzionesonorichiamatidaun’istruzionecheconsistenelnomedellaricorren-zadelbloccofunzioneseguitodaunelencodegliargomentitraparentesi..E’supportatosiailrichiamoconlalistaformaledegliargomentisial’assegnamentodiargomenti.

- RETURN:leistruzionidicontrollodifunzioneedibloccofunzioneconsistononeimec-canismiperrichiamareiblocchifunzioneeperriportareilcontrolloall’entitàrichiamataprimadellafinefisicadellafunzioneodelbloccofunzione.L’istruzioneRETURNcausal’uscita anticipata dalla funzione o dal blocco funzione (per esempio, come risultatodell’analisi di un’istruzione IF).

Sintassi

1) Funzione:

dst_var := function_name( arg1, arg2 , ... , argN );

2) Bloccofunzioneconelencoargomentiformali:

instance_name( var_in1 := arg1 , var_in2 := arg2 , ... , var_inN := argN );

3) Bloccofunzioneconassegnamentodiargomenti:

instance_name.var_in1 := arg1; ... instance_name.var_inN := argN; instance_name();

4) Istruzionedicontrollodifunzioneebloccofunzione:

RETURN;

204 LogicLab manuale utente

Esempi

CMD_TMR( IN := %IX5,

PT:= 300 ) ;

richiamoFBconelencodiargomentiformali:

IN := %IX5 ;

PT:= 300 ;

CMD_TMR() ;

richiamo FB con assegnamento di argomenti:

a := CMD_TMR.Q;

utilizzodioutputFB:

RETURN ;

uscitaanticipatadallafunzioneodalbloccofunzione.

11.5.2.3 ISTRUZIONI DI SELEZIONE

Semantica

Le istruzioni di selezione includono le istruzioni IF e CASE. Un’istruzione di selezione se-lezionauno(oungruppo)disueistruzionicomponentidiesecuzionebasatesuunacon-dizionespecifica.

- IF: l’istruzione IFspecificacheungruppodi istruzionideveessereeseguitosolosel’espressione Booleana associata restituisce il valoreTRUE. Se la condizione è falsa,nessunaistruzionesaràeseguita,overràeseguitoilgruppodiistruzionicheseguelakeywordELSE(olakeywordELSIF se la sua condizione Booleana associata è TRUE).

- CASE: l’istruzione CASEconsisteinun’espressionechevalutailvaloredellavariabileditipoDINT(il“selettore”)eunalistadigruppidiistruzioni,ognigruppovieneetichettatodaunoopiùinteriogammadivaloriinteri.Vieneeseguitoilprimogruppodiistruzioniche contiene il valore del selettore. Seilvaloredelselettorenonèpresenteinnessuncaso,vieneeseguitalasequenzadiistruzionicheseguelakeywordELSE(seèpre-sente nell’istruzione CASE). Altrimenti, non verrà eseguita nessuna delle sequenze di istruzioni.

LogicLabnonimponenessunarestrizionealnumeromassimodiselezionipossibilinell’i-struzione CASE.

Sintassi

Notarecheleparentesiquadrateincludonoilcodiceopzionale,mentrelegraffecompren-donosegmentidicodiceripetibili.

1) IF:

IF expression1 THEN

stat_list

[ { ELSIF expression2 THEN

stat_list } ]

ELSE

stat_list

END_IF ;

2) CASE:

CASE expression1 OF

intv [ {, intv } ] :

stat_list

{ intv [ {, intv } ] :

LogicLab manuale utente 205

stat_list }

[ ELSE

stat_list ]

END_CASE ;

intv being either a constant or an interval: a or a..b

Esempi

Istruzione IF:

IF d 0.0 THEN

nRoots := 0 ;

ELSIF d = 0.0 THEN

nRoots := 1 ;

x1 := -b / (2.0 * a) ;

ELSE

nRoots := 2 ;

x1 := (-b + SQRT(d)) / (2.0 * a) ;

x2 := (-b - SQRT(d)) / (2.0 * a) ;

END_IF ;

Istruzione CASE:

CASE tw OF

1, 5:

display := oven_temp ;

2:

display := motor_speed ;

3:

display := gross_tare;

4, 6..10:

display := status(tw - 4) ;

ELSE

display := 0;

tw_error := 1;

END_CASE ;

11.5.2.4 ISTRUZIONI DI ITERAZIONE

Leistruzionidiiterazionespecificanocheilgruppodiistruzioniassociatesonoeseguiteripetutamente.L’istruzioneFORèutilizzataseilnumerodiiterazionipuòesseredetermi-natoinprecedenza;altrimenti,sonoutilizzatiicostruttiWHILE e REPEAT.

- FOR: l’istruzione FORindicachelasequenzadiistruzionièeseguitaripetutamente,finoallakeywordEND_FOR,mentreunaprogressionedivalorièassegnataallavariabiledicontrollo del ciclo FOR.Ilvaloreinizialeeilvalorefinaledellavariabiledicontrollo,sonoespressionidellostessotipodiintero(peresempio,SINT,INToDINT)enonpossonoesserealteratidanessunadelleistruzionidiripetizione.L’istruzioneFORincrementaodecrementailvaloredellavariabiledicontrollodalvaloreinizialealvalorefinaleconincrementideterminatidalvalorediunaespressione;questovaloredidefaultè1.Iltestperlacondizioneditermineèfattoall’iniziodiogniiterazione,cosìchelasequenzadiistruzionenonèeseguitaseilvaloreinizialeeccedequellofinale.

206 LogicLab manuale utente

- WHILE: l’istruzione WHILEfasìchelasequenzadiistruzionisiaeseguitaripetutamentefinoallakeywordEND_WHILEefinchèl’espressioneBooleanaassociatarisultafalse.Sel’espressioneèinizialmentefalsa,allorailgruppodiistruzioninonvieneeseguito.

- REPEAT: l’istruzione REPEATfasìchelasequenzadiistruzionisiaeseguitaripetutamen-te(almenounavolta)finoallakeywordUNTILefinchèlacondizioneBooleanaassociataè vera.

- EXIT: l’istruzioneEXITèusataperterminare le iterazioniprimache lacondizionediterminesiasoddisfatta.Quandol’istruzioneEXITèposizionataall’internodeicostrut-ti iterativiannidati, l’uscitaavvienedalciclopiùinternoincuisitroval’EXIT, cioè, il controllopassaall’istruzionesuccessivadopoilprimoterminatoredelciclo(END_FOR,END_WHILEoEND_REPEAT)cheseguel’istruzioneEXIT.

Nota: leistruzioniWHILEeREPEATnonpossonoessereutilizzateperraggiungerelasincroniz-zazioneinterprocessuale,peresempiocomeun“waitloop”conunacondizionediterminedeterminataesternamente.PerquestoscopodevonoessereutilizzatiglielementiSFCdefiniti.

Sintassi

Notarecheleparentesiquadreincludonocodiceopzionale,mentrequellegraffeincludonosegmentidicodiceripetibile.

1) FOR:

FOR control_var := init_val TO end_val [ BY increm_val ] DO

stat_list

END_FOR ;

2) WHILE:

WHILE expression DO

stat_list

END_WHILE ;

3) REPEAT:

REPEAT

stat_list

UNTIL expression

END_REPEAT ;

Esempi

FOR statement:

j := 101 ;

FOR i := 1 TO 100 BY 2 DO

IF arrvals[i] = 57 THEN

j := i ;

EXIT ;

END_IF ;

END_FOR ;

WHILE statement:

j := 1 ;

WHILE j <=100 AND arrvals[i] <> 57 DO

j := j + 2 ;

END_WHILE ;

REPEAT statement:

j := -1 ;

LogicLab manuale utente 207

REPEAT

j := j + 2 ;

UNTIL j = 101 AND arrvals[i] = 57

END_REPEAT ;

11.6 SEQUENTIAL FUNCTION CHART (SFC)

QuestasezionedefinisceglielementiSFCperstrutturarel’organizzazioneinternadiunaPOUPLC,scrittainunodeilinguaggidefinitidallostandard,conloscopodieseguirefun-zionidicontrollosequenziali.LedefinizioniinquestasezionederivanodaIEC848,conicambiamentinecessariperconvertirelerappresentazionidiunostandarddidocumenta-zioneadunsetdielementidicontrollodiesecuzioneperunaPOUPLC.

DalmomentocheglielementiSFCrichiedonolamemorizzazionediinformazionedistato,leunichePOUchepossonoesserestrutturateconquestielementisonoiblocchifunzioneeiprogrammi.

SeunaqualsiasipartediunaPOUèsuddivisainelementiSFC,l’interaPOUsaràcosìsud-divisa.SenonèfornitanessunasuddivisioneSFCperunaPOU,l’interaPOUèconsideratacome un’azione singola che si esegue sotto il controllo dell’entità che l’ha richiamata.

Elementi SFC

GlielementiSFCfornisconomezzidisuddivisionediunaPOUPLCinunaseriedistatietransizioni interconnesse tramite link diretti. Un set di azioni è associato ad ogni stato, e ad ogni transizione è associata una condizione di transizione.

11.6.1 STEP

11.6.1.1 DEFINIZIONE

UnostatorappresentaunasituazioneincuiilcomportamentodellaPOU,conrispettodeisuoiinputeoutput,segueunaseriediregoledefinitedalleazioniassociatedellostato.Unostatoèattivooinattivo.Inognimomentodato,lostatodellaPOUèdefinitodaunaseriedistatiattiviedalvaloredellesuevariabiliinterneeoutput.

Unostatoèrappresentatograficamentedaunbloccochecontiene ilnomedellostatonella formadi un identificatore. Il link(s) direttonello statopuòessere rappresentatograficamentedaunalineaverticaleattaccataallapartesuperioredellostato.Illink(s)di-rettofuoridallostatopuòessererappresentatodaunalineaverticaleattaccataallaparteinferioredellostato.

Rappresentazione Descrizione

Step(rappresentazionegraficacon

link diretti)

LogicLabnonimponenessunarestrizionealnumeromassimodistatiperSFC.

Stepflag

Lastepflag(statoinattivooattivodiunostato)puòessererappresentatadalvalorelogi-co della variabile Booleana ***_x, dove ***èilnomedellostato.QuestavariabileBoole-ana ha valore TRUEquandolostatocorrispondentehaèattivo,eFALSE quando è inattivo. LavisibilitàdeinomideglistatiedellestepflagèlocaleallaPOUincuicompaionoglistati.

208 LogicLab manuale utente

Rappresentazione Descrizione

Step Name_xStepflag

= TRUEwhenStep Name_x is active = FALSEotherwise

Gliutentinonpossonoassegnareunvaloredirettamenteallostatodiunostep.

11.6.1.2 STEP INIZIALI

LostatoinizialedellaPOUèrappresentatodaivaloriinizialidellesuevariabiliinterneeoutput,edallasuaseriedistatiiniziali,ovvero,glistatichesonoinizialmenteattivi.OgninetworkSFC,oilsuoequivalentetestuale,haesattamenteunostatoiniziale.Unostatoinizialepuòesseredisegnatograficamentecolbordoadoppialinea,comemostratosotto.Perl’inizializzazionedelsistema,lostatoinizialedidefaultèFALSEperglistatiordinarieTRUEperquelliiniziali.

LogicLabnonpuòcompilareunnetworkSFCchenoncontieneesattamenteunostatoiniziale.

Rappresentazione Descrizione

Initialstep(rappresentazionegraficacon

link diretti)

11.6.1.3 AZIONI

Un’azionepuòessere:

- unacollezionediistruzioniinlinguaggioIL;

- unacollezionedinetworkinlinguaggioFBD;

- unacollezionediscaliniinlinguaggioLD;

- unacollezionediistruzioniinlinguaggioST;

- unaSFCorganizzatacomespecificatoinquestasezione.

Adognistatopossonoessereassociatenessunaopiùazioni.Leazionisonodichiaratetramite gli elementi di struttura testuale elencati qui sotto.

Elementi strutturali Descrizione

STEP StepName :(* Step body *)

END_STEPStep(formatestuale)

INITIAL_STEP StepName :(* Step body *)

END_STEPInitialstep(formatestuale)

UnelementodistrutturadiquestogenereesistenelfileIscdiognistatochehaalmenoun’azione associata.

11.6.1.4 QUALIFICATORI ACTION

Iltempoincuièeseguitaun’azioneassociataadunostepdipendedalsuoqualificatoredi azioni.

LogicLab manuale utente 209

LogicLabimplementaiseguentiqualificatoridiazioni.

Qualificatore Descrizione Significato

N Non-stored(nullqualifier). L’azioneèeseguitapertuttoiltempoincuilosteprimaneattivo.

P Pulse.

L’azioneèeseguitasololaprimavoltaall’attivazionedellostep,indipendentementedalnumerodicicliincuilosteprimaneattivo.

Seunostatononhaazioniassociate,allorasiconsideracheabbiaunafunzioneWAIT, ovvero,aspettachelacondizioneditransizionedelsuccessorediventiTRUE.

11.6.1.5 JUMP

I link diretti si dirigono solo verso il basso. Per questo motivo, se si vuole ritornare ad unostatosuperioredaunoinferiore,nonèpossibiledisegnareunfilologicodall’ultimoalprimo.Esisteuntipodibloccospeciale,chiamatoJump(salto)chepermettediimplemen-tare questo genere di transizione.

UnbloccoJumpè logicamenteequivalenteadunostep,poichédevonoesseresempreseparatidaunatransizione.L’unicoeffettodiunJumpèl’attivazionedellastepflagdellostepprecedenteel’attivazionedellaflagdellostepincuiporta.

Rappresentazione Descrizione

Jump(linklogicoallostepdidestinazione)

11.6.2 TRANSITION

11.6.2.1 DEFINIZIONI

Una transizione rappresenta lacondizioneconcui il controllopassadaunoopiùstepprecedentilatransizioneadunoopiùstepsuccessivilungoillinkdirettocorrispondente.

Latransizioneèrappresentatacomeunquadratinogrigiosullinkdirettoverticale.

Ladirezionedievoluzionechesegueilinkdirettièdallaparteinferioredellostepprece-denteversolapartesuperioredellostepsuccessivo.

11.6.2.2 CONDIZIONI DI TRANSIZIONE

Ogni transizione ha una condizione di transizione associata che è il risultato del calcolo di un’espressioneBooleanasingola.Unacondizioneditransizionesempretrueèrappresen-tatadallakeywordTRUE,mentreunacondizioneditransizionesemprefalseèsimbolizzatadallakeywordFALSE.

Unacondizioneditransizionepuòessereassociataconunatransizioneattraversounodeiseguenti mezzi:

Rappresentazione Descrizione

PonendolacostanteBooleanaappropriata{TRUE, FALSE} adiacente al link diretto verticale.

210 LogicLab manuale utente

Rappresentazione Descrizione

Dichiarando una variabile Booleana, il cui valore determinaselatransizioneèverificata.

Scrivendo un segmento di codice, in uno dei linguaggi supportatidaLogicLab,tranneSFC.Ilrisultatodell’analisidiuncodicediquestotipodeterminalacondizione di transizione.

LavisibilitàdiunnomeditransizioneèlocaleallaPOUincuilatransizioneèposizionata.

11.6.3 REGOLE DI EVOLUZIONE

Introduzione

LasituazioneinizialediunnetworkSFCècaratterizzatadallostepinizialechesitrovanellostatoattivosull’inizializzazionedelprogrammaodelbloccofunzionechecontieneilnetwork.

Le evoluzioni degli stati attivi di stati avvengono sui link diretti quando sono causate dalla verificadiunaopiùtransizioni.

Unatransizioneèabilitataquandotuttiglistepprecedenti,connessialsimboloditransi-zionecorrispondentetramitelinkdiretti,sonoattivi.Laverificadiunatransizioneavvienequando la transizione è abilitata e la condizione di transizione associata è true.

Laverificadiunatransizionecausaladisattivazione(o“reimpostazione”)dituttiglistepimmediatamenteprecedenticonnessialsimboloditransizionecorrispondentetramitelinkdiretti,seguitadall’attivazionedituttiglistepimmediatamenteseguenti.

L’alternanzaStato/TransizioneeTransizione/Statoèsempremantenutanelleconnessionidi elementi SFC, ovvero:

- duestatinonsonomaidirettamentecollegati;sonosempreseparatidaunatransizione;

- due transizioni non sonomai collegate direttamente; sono sempre separate da unostep.

Quando laverificadiuna transizioneportaall’attivazionedinumerosi stepallo stessotempo,lesequenzeallequaliquestistepappartengonosonochiamatesequenzesimul-tanee.Dopo la loroattivazionesimultanea, l’evoluzionediognunadiquestesequenzediventaindipendente.Perenfatizzarelaspecialenaturadiquesticostrutti,ladivergenzaelaconvergenzadisequenzesimultaneeèindicatadaunalineaorizzontaledoppia.

Iltempodiverificadiunatransizionepuòessereteoricamenteconsideratotantocortoquantosivuole,manonpuòmaiesserezero.

Inpratica,iltempodiverificasaràimpostodall’implementazionePLC:numerosetransi-zionichepossonoessereverificatesimultaneamentesarannoverificatesimultaneamente,entrolerestrizioniditempodellaparticolareimplementazionePLClerestrizionidiprioritàdefinitenellatabelladievoluzionedellasequenza.Perlastessaragione,laduratadiatti-vitàdiunostepnonpuòmaiconsiderarsiesserezero.

Iltestdellacondizioneditransizionedelsuccessorediunostepattivononsaràeseguitofinchèglieffettidell’attivazionedellostepnonsisarannopropagatiattraverso tutta laPOUincuilostepèdichiarato.

Tabella di evoluzione della sequenza

Questatabelladefiniscelasintassielasemanticadellecombinazionidistepetransizioni

ammesse.

LogicLab manuale utente 211

Esempio Regola

Transizione normale

Un’evoluzione dallo stato S3 allo stato S4 avviene se e soltanto se lo stato S3 è attivo e la condizione di transizione è TRUE.

Transizione divergente

Avviene un’evoluzione da S5 a S6 se e soltanto se S5 è attivo e la condizione di transizione e è TRUE, o da S5 a S8 se e soltanto se S5 è attivo e f è TRUE e e è FALSE.

Transizione convergente

Avviene un’evoluzione da S7 a S10 soltanto se S7 è attivo e la condizione di transizione h è TRUE, o da S9 a S10 soltanto se S9 è attivo e j è TRUE.

Transizione divergente simultanea

Avviene un’evoluzione da S11 a S12, S14,… soltanto se S11 è attivo e la condizione di transazione b associata alla transizione comune è TRUE. Dopol’attivazionesimultaneadiS12, S14, ecc…, l’evoluzione di ciascuna sequenzaprocedeindipendentemente.

Transizione convergente simultanea

Avviene un’evoluzione da S13, S15,… a S16 soltanto se tutti gli stati che sonosopraesonoconnessiallalineaorizzontaledoppiasonoattivielacondizione di transizione d associata alla transizione comune è TRUE.

212 LogicLab manuale utente

Esempi

Schema non valido Schema equivalente permesso Note

Comportamentoprevisto:avviene un’evoluzione da S30 a S33 se a è FALSE e d è TRUE.

Lo schema nella colonna piùasinistranonèvalidoperchélecondizionid e TRUE sono direttamente collegate.

Comportamentoprevisto:avviene un’evoluzione da S32 a S31 se c è FALSE e d è TRUE.

Lo schema nella colonna piùasinistranonèvalidoperchéilinkdirettisidirigono solo verso il basso. Le transizioni verso l’altopossonoessereeseguite tramite i blocchi jump.

11.7 ESTENSIONI DI LINGUAGGIO IN LOGICLAB

LogicLabpresentaalcuneestensioniallostandardIEC61131-3,perarricchireulterior-menteillinguaggioeadattarsiaidifferentistilidicodice.

11.7.1 MACRO

LogicLabimplementalemacronellostessomododelpreprocessoredilinguaggioC.

Lemacropossonoesseredefiniteusandolaseguentesintassi:

MACRO <macro name>

PAR_MACRO

<parameter list>

END_PAR

<macro body>

END_MACRO

Notarechel’elencodeiparametripotrebbeessereeventualmentevuoto,facendodistin-zione inquestomodooggetti tipomacro,chenonprendonoparametri,e funzioni tipomacro,cheprendonoparametri.

Unesempioconcretodiunadefinizionemacroèlaseguente,cheprendedueByteecom-poneunaword16-bit:

LogicLab manuale utente 213

MACRO MAKEWORD

PAR_MACRO

lobyte;

hibyte;

END_PAR

{ CODE:ST }

lobyte + SHL( TO_UINT( hibyte ), 8 )

END_MACRO

Ogniqualvoltailnomedellamacroapparenelcodicesorgente,èrimpiazzato(insiemeallalistadeiparametricorrenti,incasodimacrotipofunzione)conilcorpodellamacro.Peresempio,dataladefinizionedellamacroMAKEWORDeilframmentodicodicediStructuredText seguente:

w := MAKEWORD( b1, b2 );

ilpre-processoremacroloespandea

w := b1 + SHL( TO_UINT( b2 ), 8 );

11.7.2 PUNTATORI

Ipuntatorisonountipospecialedivariabilichesicomportanocomeunriferimentoadun’altravariabile (la variabile1puntata). Il valoredi unpuntatoreè, infatti, l’indirizzodellavariabilepuntata;peraccedereaidatimemorizzatinell’indirizzopuntato,ipuntatoripossonoesseredereferenziati.

Ladichiarazionediunpuntatorerichiede lastessasintassiusatanelladichiarazionedivariabili,dove ilnomedeltipoè ilnomedeltipodellavariabilepuntataprecedutodalsegno @:

VAR

<pointer name> : @<pointed variable type name>;

END_VAR

Peresempio,ladichiarazionediunpuntatoreadunavariabileREAL è la seguente:

VAR

px : @REAL;

END_VAR

Unpuntatorepuòessereassegnatoadunaltropuntatoreoadunindirizzo.Unospecialeoperatore,ADR,èdisponibileperrecuperarel’indirizzodiunavariabile.

px := py; (* px and py are pointers to REAL (that is, vari-ables of type @REAL) *)

px := ADR( x ) (* x is a variable of type REAL *)

px := ?x (* ? is an alternative notation for ADR *)

L’operatore@èutilizzatopertogliereilriferimentoalpuntatore,quindiperaccedereallavariabilepuntata.

px := ADR( x );

@px := 3.141592; (* the approximate value of pi is assigned to x *)

pn := ADR( n );

n := @pn + 1; (* n is incremented by 1 *)

Prestareattenzionealfattochel’usoimpropriodeipuntatorièpotenzialmentepericoloso:infatti,ipuntatoripossonopuntareaqualsiasiposizionearbitraria,chepotrebbecausareeffettiindesiderati.