logic lab manual
DESCRIPTION
Logic Lab ManualTRANSCRIPT
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.
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).
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.
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.
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.
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.
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.