Omron CPM1A, CPM1 PROGRAMING MANUAL [nl]

Cat. No. W353-NL2-02
SYSMAC C-series
Programmeerbare besturingen
CPM1/CPM1A
PROGRAMMEERHANDLEIDING
OMRON

Mededeling

CPM1/CPM1A programmeerhandleiding
OMRON
gekwalificeerde gebruiker en alleen voor de doeleinden die in deze handleiding worden beschreven. De volgende conventies worden gebruikt om voorzorgsmaatregelen te tonen en te classificeren. Schenk
altijd aandacht aan de informatie die getoond wordt. Het geen aandacht schenken aan of negeren van waarschuwingen kan leiden tot het gewond raken van mensen of schade aan het product.
Gevaar
apparatuur wordt gefabriceerd voor gebruik volgens de juiste procedures door een
Geeft informatie aan die, wanneer er geen acht op wordt geslagen, zeer waarschijnlijk zal leiden tot ernstige verwonding of verlies van leven.
Waarschuwing
Voorzichtig
Geeft informatie aan die, wanneer er geen acht op wordt geslagen, mogelijk kan leiden tot ernstige verwonding of verlies van leven en vrijwel zeker tot schade aan het product.
Geeft informatie aan die, wanneer er geen acht op wordt geslagen, mogelijk kan leiden tot relatief ernstige verwonding of letsel, schade aan het product of verkeerde werking van het product.
OMRON product verwijzingen
Namen van OMRON producten beginnen met een hoofdletter in deze handleiding. Het woord unit wordt gebruikt om een OMRON product aan te duiden, onafhankelijk van het feit of het
woord unit in de naam van het product voorkomt. Het woord CPM1(A) wordt gebruikt wanneer de betreffende tekst op zowel de CPM1 als de CPM1A van
toepassing is, ook al wordt maar één van beide PLC typen in een bijpassende figuur afgebeeld. Wordt in de tekst CPM1 of CPM1A gebruikt dan is de besproken optie alleen op dat type van toepassing.
Gebruikte afkortingen en termen zijn verklaard in de appendix.
Visuele hulpmiddelen
De volgende koppen verschijnen in de linkerkolom van de handleiding om u verschillende soorten informatie snel te laten vinden.
Opmerking
1, 2, 3...
Geeft informatie weer die in het bijzonder praktisch is voor efficiënt en handig gebruik van het product.
1. Geeft diverse soorten lijsten weer zoals procedures, controlelijsten etc.
Noot
Geeft een noot weer. Wordt gebruikt in combinatie met tabellen.
OMRON manual referenties
Voor het gebruik van de CPM1(A) kunt U de volgende handleidingen raadplegen. Nederlandstalig CPM1(A) installatie handleiding
CPM1(A) Programmeerhandleiding SYSWIN Handleiding
Engelstalig W228 CQM1/CPM1/CPM1A/SRM1 Programming manual
W262 CPM1 Operation manual W317 CPM1A Operation manual
Naast de diverse handleidingen die voor de CPM1(A) beschikbaar zijn kunt u SYSTOOLS gebruiken voor het maken van instellingen in de PC Setup van de CPM1(A). Naast programma’s voor het maken van instellingen in PLC’s en speciale kaarten bevat SYSTOOLS ook SYSHELP. Dit is een help bestand waarin diverse wetenswaardigheden over OMRON PLC’s zijn gebundeld.
CPM1/CPM1A programmeerhandleiding pagina 1
CPM1/CPM1A Programmeerhandleiding
ELECTRONICS B.V.
© OMRON 1997,
OMRON CPM1/CPM1A Programmeerhandleiding Publicatie november 2000 Document referentie NLMAN-CPM1-programmeerhandleiding Revisie. 2 De informatie in dit document is uitvoerig gecontroleerd. OMRON kan echter geen enkele
aansprakelijkheid aanvaarden voor enige incorrectheid of onvolledigheid van deze handleiding. Verder heeft OMRON het recht onaangekondigd veranderingen aan het product en de handleiding aan te brengen ter verbetering van de betrouwbaarheid, de functionaliteit en het ontwerp van de handleiding en/of het product. OMRON is niet aansprakelijk voor enige schade die kan voortvloeien uit het gebruik van deze handleiding, noch kan het enig onder patent rustende licentie of rechten van anderen, overdragen.
OMRON is een geregistreerd handelsmerk van OMRON Corporation.
OMRON
OMRON
Alle rechten voorbehouden.
pagina 2 CPM1/CPM1A programmeerhandleiding
OMRON

Inhoudsopgave

1 Schrijven en invoeren van het programma.................................................7
1.1 Terminologie.........................................................................................................7
1.2 Basis ladderdiagrammen......................................................................................7
1.3 Programmeer overwegingen..............................................................................19
1.4 Bit statussen aansturen......................................................................................25
1.5 Werkbits (interne relais) .....................................................................................27
1.6 Programmeer voorzorgsmaatregelen ................................................................29
1.7 Programma uitvoer.............................................................................................30
Inhoudsopgave
1.2.1 Basis begrippen ....................................................................................8
1.2.2 Mnemonic code.....................................................................................8
1.2.3 Ladder instructies..................................................................................9
1.2.4 De END instructie................................................................................11
1.2.5 Logische blok instructies.....................................................................12
1.2.6 Het coderen van meerdere “uitvoerende” instructies .........................18
1.3.1 Vertakkende instructie regels..............................................................19
1.3.2 Springen..............................................................................................23
1.4.1 DIFFERENTIATE UP en DIFFERENTIATE DOWN...........................25
1.4.2 KEEP...................................................................................................26
1.4.3 Zelfhandhavende bits..........................................................................26
1.5.1 Werkbit toepassingen .........................................................................27
1.5.2 Reduceren van complexe condities....................................................27
1.5.3 Gedifferentieerde condities.................................................................28
2 CPM1(A) PC Setup .................................................................................. 31
2.1 Basis CPM1(A) werking en I/O afhandeling.......................................................33
2.2 CPM1A pulsuitgang functie instellen en gebruik................................................36
2.3 Instellen en gebruik van de CPM1(A) interrupt functies.....................................39
2.3.1 Interrupt typen.....................................................................................39
2.3.2 Input interrupts ....................................................................................41
2.3.3 Alle interrupts maskeren .....................................................................45
2.3.4 Interval timer interrupts .......................................................................46
2.3.5 Highspeed counter interrupts..............................................................47
2.3.6 Highspeed counter overflows / underflows.........................................51
2.4 CPM1(A) communicatie functies ........................................................................52
2.4.1 Communicatie PC Setup.....................................................................53
2.4.2 Hostlink communicatie ........................................................................54
2.4.3 One-to-one link communicatie ............................................................55
2.5 Analoge instellingen ...........................................................................................56
2.6 Quick response ingangen...................................................................................56
3 Geheugengebieden..................................................................................58
3.1 Introductie...........................................................................................................58
3.2 Geheugengebieden voor de CPM1(A)...............................................................59
3.2.1 Geheugengebied functie.....................................................................59
3.3 Toewijzen van I/O bits ........................................................................................60
3.4 Datagebied structuur ..........................................................................................60
3.4.1 Data structuur......................................................................................61
3.4.2 Verschillende vormen data omzetten .................................................62
3.4.3 Decimale punt .....................................................................................62
3.5 IR (interne relais) gebied ....................................................................................62
3.6 SR (speciale relais) gebied ................................................................................63
3.6.1 SR gebied overzicht............................................................................63
3.6.2 Forced status hold bit..........................................................................64
3.6.3 I/O status hold bit ................................................................................65
3.6.4 FAL (failure alarm) gebied ..................................................................65
3.6.5 Cyclustijd te groot errorvlag ................................................................66
3.6.6 Eerste scan vlag..................................................................................66
3.6.7 Klokpuls bits ........................................................................................66
3.6.8 STEP(08) uitgevoerd vlag...................................................................66
3.6.9 Instructie executie errorvlag, ER.........................................................66
CPM1/CPM1A programmeerhandleiding pagina 3
Inhoudsopgave
4 Instructieset ..............................................................................................71
OMRON
3.6.10 Rekenkundige vlaggen....................................................................... 67
3.7 AR (auxiliary relais) gebied................................................................................ 67
3.7.1 AR gebied overzicht ........................................................................... 67
3.7.2 Power-OFF counter............................................................................ 68
3.7.3 Lange cyclustijd vlag .......................................................................... 68
3.7.4 Cyclustijd indicators............................................................................ 68
3.8 DM (data memory) gebied................................................................................. 68
3.9 HR (holding relais) gebied ................................................................................. 69
3.10 TC (timer/counter) gebied.................................................................................. 69
3.11 LR (link relais) gebied........................................................................................ 70
3.12 Programmageheugen........................................................................................ 70
3.13 TR (temporary relais) gebied............................................................................. 70
4.1 Notatie................................................................................................................ 71
4.2 Instructie formaat ............................................................................................... 71
4.3 Datagebieden, definer waarden en vlaggen...................................................... 72
4.3.1 Indirect adresseren............................................................................. 73
4.3.2 Constanten benoemen....................................................................... 73
4.4 Gedifferentieerde instructies.............................................................................. 73
4.5 Alfabetische instructielijst op mnemonic............................................................ 74
4.6 Ladderdiagram instructies ................................................................................. 76
4.6.1 LOAD, LOAD NOT, AND, AND NOT, OR en OR NOT...................... 76
4.6.2 AND LOAD en OR LOAD................................................................... 77
4.7 Bitcontrol instructies........................................................................................... 77
4.7.1 Uitgangen en hulprelais aansturen - OUT en OUT NOT ................... 78
4.7.2 Setten en resetten - SET en RSET .................................................... 78
4.7.3 Op- en neergaande flanken - DIFU(13) en DIFD(14) ........................ 79
4.7.4 Status vasthouden - KEEP(11) .......................................................... 80
4.8 Interlocks - IL(02) en ILC(03)............................................................................. 82
4.9 Springen - JMP(04) en JME(05)........................................................................ 84
4.10 Programma einde - END(01)............................................................................. 85
4.11 No operation - NOP(00)..................................................................................... 86
4.12 Timer en counter instructies .............................................................................. 86
4.12.1 Timer - TIM......................................................................................... 87
4.12.2 Highspeed timer - TIMH(15)............................................................... 91
4.12.3 Interval timer - STIM(—)..................................................................... 91
4.12.4 Counter - CNT .................................................................................... 93
4.12.5 Omkeerbare counter - CNTR(12)....................................................... 96
4.12.6 Registreer vergelijkingstabel - CTBL(—) ........................................... 97
4.12.7 Mode control - INI(—)......................................................................... 99
4.12.8 Actuele waarde highspeed counter lezen - PRV(—) ....................... 100
4.13 Schuiven van data ........................................................................................... 101
4.13.1 Schuifregister - SFT(10)................................................................... 101
4.13.2 Omkeerbaar schuifregister - SFTR(84)............................................ 103
4.13.3 Arithmetic shift left - ASL(25)............................................................ 104
4.13.4 Arithmetic shift right - ASR(26)......................................................... 105
4.13.5 Roteer links - ROL(27) ..................................................................... 105
4.13.6 Roteer rechts - ROR(28) .................................................................. 105
4.13.7 Schuif één digit naar links - SLD(74)................................................ 106
4.13.8 Schuif één digit naar rechts - SRD(75) ............................................ 106
4.13.9 Schuif woord - WSFT(16)................................................................. 107
4.13.10 Asynchroon schuifregister - ASFT(—) ............................................. 107
4.14 Data verplaatsen.............................................................................................. 108
4.14.1 Verplaatsen - MOV(21) .................................................................... 108
4.14.2 Verplaats geïnverteerd - MVN(22) ................................................... 109
4.14.3 Set blok - BSET(71) ......................................................................... 109
4.14.4 Verplaats blok - XFER(70) ............................................................... 110
4.14.5 Verwissel data - XCHG(73).............................................................. 111
4.14.6 Distribueer één woord - DIST(80) .................................................... 111
4.14.7 Verzamel data - COLL(81) ............................................................... 112
4.14.8 Verplaats bit - MOVB(82) ................................................................. 113
4.14.9 Verplaats digit - MOVD(83) .............................................................. 114
4.15 Datavergelijking ............................................................................................... 115
pagina 4 CPM1/CPM1A programmeerhandleiding
OMRON
Inhoudsopgave
4.15.1 Vergelijken - CMP(20).......................................................................115
4.15.2 Dubbel vergelijken - CMPL(60).........................................................117
4.15.3 Bereiken vergelijken - BCMP(68) .....................................................118
4.15.4 Tabel vergelijken - TCMP(85)...........................................................119
4.16 Dataconversie...................................................................................................120
4.16.1 BCD naar binair - BIN(23).................................................................120
4.16.2 Binair naar BCD - BCD(24)...............................................................120
4.16.3 4 naar 16 decoder - MLPX(76) .........................................................121
4.16.4 16 naar 4 encoder - DMPX(77).........................................................123
4.16.5 7 segment decoder - SDEC(78) .......................................................124
4.16.6 ASCII conversie - ASC(86) ...............................................................126
4.17 BCD calculaties ................................................................................................127
4.17.1 Increment - INC(38) ..........................................................................127
4.17.2 Decrement - DEC(39) .......................................................................128
4.17.3 Zet Carry - STC(40) ..........................................................................128
4.17.4 Wis Carry - CLC(41) .........................................................................128
4.17.5 BCD optellen - ADD(30)....................................................................128
4.17.6 Dubbel BCD optellen - ADDL(54) .....................................................130
4.17.7 BCD aftrekken - SUB(31)..................................................................131
4.17.8 Dubbel BCD aftrekken - SUBL(55) ...................................................132
4.17.9 BCD vermenigvuldigen - MUL(32)....................................................133
4.17.10 Dubbel BCD vermenigvuldigen - MULL(56) .....................................134
4.17.11 BCD Delen - DIV(33) ........................................................................135
4.17.12 Dubbel BCD delen - DIVL(57)...........................................................135
4.18 Binaire berekeningen .......................................................................................136
4.18.1 Binair optellen - ADB(50) ..................................................................136
4.18.2 Binair aftrekken - SBB(51) ................................................................138
4.18.3 Binair vermenigvuldigen - MLB(52) ..................................................139
4.18.4 Binair delen - DVB(53) ......................................................................140
4.19 Logische instructies..........................................................................................140
4.19.1 Complement - COM(29)....................................................................140
4.19.2 Logische AND - ANDW(34) ..............................................................141
4.19.3 Logische OR - ORW(35)...................................................................141
4.19.4 Exclusive OR - XORW(36)...............................................................142
4.19.5 Exclusive NOR - XNRW(37) .............................................................142
4.20 Subroutine en interrupt aansturing...................................................................143
4.20.1 Overzicht ...........................................................................................143
4.20.2 Subroutine definitie en return - SBN(92)/RET(93)............................143
4.20.3 Subroutine aanroep - SBS(91)..........................................................143
4.21 Step instructies .................................................................................................145
4.21.1 Stap definitie en stap starten - STEP(08) / SNXT(09) ......................145
4.22 Speciale instructies ..........................................................................................152
4.22.1 Failure alarm en severe failure alarm - FAL(06) / FALS(07) ............152
4.22.2 Toon boodschap - MSG(46) .............................................................152
4.22.3 Bit counter - BCNT(67) .....................................................................154
4.22.4 I/O Refresh - IORF(97) .....................................................................154
4.22.5 Macro - MCRO(—)............................................................................154
4.22.6 Interrupt beheer - INT(89).................................................................155
4.22.7 Puls - PULS(—).................................................................................157
4.22.8 Speed output - SPED(—)..................................................................157
5 Appendix ................................................................................................ 159
5.1 Conversietabel hexadecimaal, BCD, binair......................................................159
5.2 Conversietabel hex, ASCII ...............................................................................159
5.3 INDEX...............................................................................................................160
CPM1/CPM1A programmeerhandleiding pagina 5

Voor wat betreft deze handleiding

Voor wat betreft deze handleiding
De CPM1(A) is een compacte, snelle PLC die ontworpen is voor geavanceerde besturingen met een bereik tot 100 I/O. Deze beknopte handleiding beschrijft de werking van de CPM1(A). Instructies die in deze handleiding niet worden besproken verwijzen wij u naar de overige handleidingen van deze PLC.
OMRON
Voorzichtig
Sectie 1:
Deze sectie verklaart de basisstappen en -concepten die bekend moeten zijn bij het schrijven van een eenvoudig ladderdiagram programma. Daarnaast wordt het invoeren van dat programma en het uitvoeren door de PLC ervan behandeld. De instructies die nodig zijn om de basisopzet van het ladderdiagram vast te leggen en die de executie beïnvloeden worden uitgelegd.
Sectie 2:
De PC Setup bevat diverse operating parameters die de werking van de CPM1(A) bepalen. Om maximaal gebruik te maken van de CPM1(A) functionaliteit wanneer interrupt processing en communicatie functies gebruikt worden kan de PC Setup "op maat" ingesteld worden, afhankelijk van de taak die uitgevoerd moet worden.
Sectie 3:
Verschillende typen data zijn nodig om een besturing effectief en correct te kunnen laten werken. Om met deze verschillende typen data overweg te kunnen is de PLC voorzien van een aantal geheugengebieden voor data opslag, waarbij elk gebied een andere functie heeft. Deze verschillende gebieden worden hier individueel besproken waarbij alle informatie die nodig is om het te kunnen gebruiken wordt gegeven.
Sectie 4:
De OMRON SYSMAC CPM1(A) PLC beschikt over een uitgebreide instructieset die het mogelijk maakt dat gecompliceerde processen eenvoudig geprogrammeerd kunnen worden. Deze sectie beschrijft de instructies individueel en geeft het ladderdiagram symbool, de data gebieden die gebruikt kunnen worden en de vlaggen die door de instructie beïnvloed worden.
Appendix:
In de appendix is diverse informatie over de CPM1(A) opgenomen.
Schrijven en invoeren van het programma
CPM1(A) PC Setup
Geheugengebieden
Instructieset
Lees deze handleiding nauwkeurig en wees er zeker van dat u de hierin weergegeven informatie goed begrijpt voor u begint met het programmeren van een OMRON PLC.
Aan deze handleiding is de grootst mogelijke zorg besteed. Mochten er ondanks deze zorg nog onjuistheden of onduidelijkheden vermeld zijn, dan stellen wij ons uitdrukkelijk niet aansprakelijk voor eventuele gevolgen. Voor suggesties ter verbetering houden wij ons aanbevolen.
pagina 6 CPM1/CPM1A programmeerhandleiding
OMRON

Schrijven en invoeren van het programma

1 Schrijven en invoeren van het programma
Deze sectie verklaart de basisstappen en -concepten die bekend moeten zijn bij het schrijven van een eenvoudig ladderdiagram programma. Daarnaast wordt het invoeren van dat programma en het uitvoeren door de PLC ervan behandeld. De instructies die nodig zijn om de basisopzet van het ladderdiagram vast te leggen en die de executie beïnvloeden worden uitgelegd. De complete instructieset die tijdens het programmeren gebruikt kan worden, is beschreven in het hoofdstuk over de instructieset.
1.1 Terminologie
Er worden in beginsel twee typen instructies gebruikt bij ladderdiagram programmeren. Instructies die verbanden leggen tussen de voorwaarden (condities) in het ladderdiagram en instructies die aan het einde van de executieconditie geplaatst worden. De eerste zijn in instructievorm alleen zichtbaar zijn wanneer een programma wordt omgezet naar mnemonics.
De meeste instructies hebben minimaal 1 of meer operands. Operands wijzen of geven de data aan waarop de instructie uitgevoerd moet worden. Deze data wordt soms ingevoerd als constante numerieke waarde, maar is meestal het adres van het woord of bit die de te gebruiken data bevat. Bijvoorbeeld, een MOVE instructie die 000 als bron (source) operand heeft, verplaatst de inhoud van woord 000 naar een andere locatie. Deze andere locatie wordt ook als operand ingevoerd. Een bit waarvan het adres is gebruikt als operand wordt een operandbit genoemd; een woord waarvan het adres is gebruikt als operand wordt een operandwoord genoemd. Als de waarde wordt ingevoerd als constante dan wordt het voorafgegaan door # om aan te geven dat het geen adres is.
Andere termen die gebruikt worden voor het omschrijven van instructies worden geïntroduceerd in het hoofdstuk "Instructieset" op pagina 71.
1.2 Basis ladderdiagrammen
Een ladderdiagram bestaat uit één verticale lijn aan de linkerzijde waaruit één of meer horizontale lijnen naar rechts met vertakkingen ontstaan. De verticale lijn aan de linkerzijde heet de “bus-bar”; de horizontale lijnen heten instructieregels of rungs. Een onderling verbonden groep van instructieregels wordt een netwerk genoemd. Op de instructieregels zijn condities geplaatst die de instructies aan de rechterzijde van het diagram aansturen. De logische combinaties van deze condities bepalen wanneer de instructies aan de rechterzijde worden uitgevoerd. Hieronder wordt een ladderdiagram dat uit twee netwerken bestaat getoond.
000.00 003.15
000.01
001.00 000.02
001.00
000.11
Zoals getoond in het bovenstaande diagram kunnen instructieregels aftakken en weer bij elkaar komen. De verticale paren lijnen worden condities of contacten genoemd. Condities zonder diagonale lijn er doorheen worden normaal open condities genoemd en corresponderen met een LD (load) AND, of OR instructie. De condities met een diagonale lijn erdoor worden normaal gesloten condities genoemd en corresponderen met een LD NOT, AND NOT, of OR NOT instructie. Het nummer boven elke conditie geeft het operandbit voor deze instructie aan. Een naam onder de conditie geeft het label van het operandbit aan. De status van het
252.08
000.03
HR00.50
HR01.09
LR15.03 244.00
005.01 005.02 005.03 005.04
000.07
TIM001 LR05.15
210.01 210.02
210.05 210.07
244.01
004.03 004.05
Instructie
Instructie
CPM1/CPM1A programmeerhandleiding pagina 7
Schrijven en invoeren van het programma
met de conditie geassocieerde bit bepaalt de executieconditie voor de er op volgende instructies of condities.
De manier waarop de uitvoering van de instructies leiden tot een bepaalde executieconditie wordt hieronder beschreven. Voor we ons hier echter mee bezig gaan houden zullen eerst een aantal basisbegrippen uitgelegd worden.
1.2.1 Basis begrippen
OMRON
Normaal open / normaal gesloten condities
Executiecondities
Operandbits
Logische blokken
Elke conditie in een ladderdiagram is aan of uit, afhankelijk van de status van het operandbit dat eraan is toegewezen. Een normaal open conditie is aan als het operandbit aan is en uit als het operandbit uit is. Een normaal gesloten conditie is aan als het operandbit uit is en uit als het operandbit aan is. Normaal gesproken gebruikt u een normaal open conditie wanneer u wilt dat iets gebeurd als een bit aan is en een normaal gesloten conditie wanneer u iets wilt laten gebeuren als een bit uit is.
000.00 Instructie
Normaal open conditie
00000
Instructie
Normaal gesloten conditie
Instructie wordt uitgevoerd als bit 000.00 AAN is
Instructie wordt uitgevoerd als bit 000.00 UIT is
Bij ladderdiagramprogrammering bepaalt de logische combinatie van condities voor een instructie de voorwaarde waardoor de instructie wordt uitgevoerd. Deze voorwaarde, die aan of uit kan zijn, wordt de executieconditie voor de instructie genoemd. In principe hebben alle instructies anders dan de LD instructies executiecondities.
Het operand dat aan een ladder instructie wordt toegewezen kan elk bit in de IR, SR, HR, AR, LR, of TC gebieden zijn. Dit betekent dat de status van condities in een ladderdiagram kan worden bepaald door I/O bits, vlaggen, werkbits, timers/counters, etc. LOAD (LD) en OUTPUT (OUT) instructies kunnen ook bits uit het TR gebied gebruiken, maar dit kan alleen in een aantal speciale gevallen. Zie hiervoor "Vertakkende instructie regels" op pagina 19 voor details.
De manier waarop condities instructies aansturen wordt bepaald door de relatie tussen de condities in de instructieregels die voor deze instructies zijn geplaatst. Elke reeks condities die samen een logisch resultaat creëren wordt een logisch blok genoemd. Deze term moet niet verward worden met de blokken die in SYSWIN gebruikt kunnen worden om een programma te structureren. Alhoewel netwerken geschreven kunnen worden zonder de individuele logische blokken waaruit ze zijn opgebouwd te begrijpen, is het analyseren van de logische blokken noodzakelijk om efficiënt te kunnen programmeren en is het zelfs essentieel wanneer programma’s ingevoerd moeten worden in mnemonic code.
1.2.2 Mnemonic code
Het ladderdiagram kan niet direct in de PLC ingevoerd worden. Het is noodzakelijk om het ladderdiagram om te zetten naar mnemonic code. Deze mnemonic code voorziet in exact dezelfde informatie als het ladderdiagram, maar dan in een vorm die direct op de PLC ingevoerd kan worden. Feitelijk kunt u een programma direct schrijven in mnemonic code, alhoewel het niet aan te raden is voor beginners of voor complexe programma’s. Samengevat, onafhankelijk van het gebruikte programmeerapparaat wordt het programma in het PLC geheugen opgeslagen in mnemonic formaat. Dit maakt het belangrijk om deze mnemonic code te begrijpen.
Vanwege het belang van mnemonic code voor het compleet begrijpen van een programma, wordt de mnemonic code tegelijk met het ladderdiagram uitgelegd. Onthoud dat het niet noodzakelijk is om mnemonic code te gebruiken als u het programma met SYSWIN invoert. Alhoewel u mnemonic code, als u er de voorkeur aan geeft, wel kan gebruiken.
Programmageheugen
pagina 8 CPM1/CPM1A programmeerhandleiding
Het programma wordt ingevoerd op adressen in het programmageheugen (UM). Adressen in het programmageheugen verschillen iets van de adressen in andere geheugengebieden, omdat elk adres niet per se dezelfde hoeveelheid data hoeft te bevatten. Elk adres bevat één instructie met alle constanten, labels (definers) en
OMRON
Schrijven en invoeren van het programma
operands (dit wordt later in detail beschreven) die nodig zijn voor die instructie. Omdat sommige instructies geen operands nodig hebben, terwijl andere tot maximaal drie operands nodig hebben kunnen, programmageheugen adressen één tot vier woorden lang zijn.
Programmageheugen adressen starten op regel 00000 en lopen door tot de capaciteit van het programmageheugen uitgeput is. Het eerste woord van elke regel definieert de instructie. Alle operands van de instructie worden er achter geprogrammeerd, op dezelfde regel. De overige woorden die door een instructie benodigd zijn bevatten de operands die bepalen welke data gebruikt moet worden. Wanneer een programma wordt omgezet naar mnemonic code, worden instructies in dit formaat genoteerd, één instructie op een regel, zoals ze in het ladderdiagram getoond worden. Een voorbeeld van mnemonic code wordt hieronder getoond. De gebruikte instructies worden beschreven in hoofdstuk "Instructieset" op pagina 71.
Adres Instructie Operands
00000 LD HR00.01 00001 AND 000.01 00002 OR 000.02 00003 LD NOT 001.00 00004 AND 001.01 00005 AND LD 001.02 00006 MOV(21) 000 DM0000 00007 CMP(20) DM0000 HR00 00008 LD 255.05 00009 OUT 005.01 00010 MOV(21) DM0000 DM0500 00011 DIFU(13) 005.02 00012 AND 000.05 00013 OUT 005.03
Tijdens het invoeren van mnemonic code in SYSWIN wordt de instructienaam gescheiden van de operands door een Tab of spaties. De operands onderling worden ook gescheiden door spaties of Tab.
Tijdens het programmeren wordt het adres waarop de instructie wordt geplaatst automatisch bepaald. Boven in de editor laat SYSWIN het eerste programmageheugen adres van het netwerk zien. Wanneer een programma omgezet wordt naar mnemonic code, is het aan te raden om op programma geheugen adres 00000 te beginnen tenzij er een specifieke reden is om ergens anders te beginnen. SYSWIN begint altijd op adres 00000.
1.2.3 Ladder instructies
De ladder instructies zijn die instructies die aangestuurd worden door de condities in het ladderdiagram. Ladder instructies onafhankelijk of in combinatie met de hieronder beschreven logische blok instructies, vormen de executiecondities waarop de uitvoering van alle andere instructies is gebaseerd.
LOAD en LOAD NOT
CPM1/CPM1A programmeerhandleiding pagina 9
De eerste conditie waarmee elk logisch blok begint in een ladderdiagram is de LOAD of LOAD NOT instructie. Elk van deze instructies heeft één regel mnemonic code nodig. "Instructie" is gebruikt als een dummy instructie in de volgende voorbeelden en kan elke van de aan de rechterkant in het ladderdiagram geplaatste instructies zijn. Deze instructies worden ook wel aangeduid met “right­hand” of “uitvoerende” instructies.
000.00
Een LOAD instructie
000.00
Een LOAD NOT instructie
Adres Instructie Operands
00000 LD 000.00 00001 Instructie 00002 LD NOT 000.00 00003 Instructie
Wanneer er maar één conditie in de instructieregel staat dan is de executieconditie voor de instructie aan de rechterkant aan wanneer deze conditie aan is. In het bovenstaande voorbeeld zal voor de LOAD instructie (dit is een normaal open
Schrijven en invoeren van het programma
conditie) de executieconditie aan zijn wanneer 000.00 aan is. Voor de LOAD NOT instructie (dit is een normaal gesloten conditie) zal het aan zijn wanneer 000.00 uit is.
AND en AND NOT
OR en OR NOT
Wanneer twee of meer condities in serie zijn geplaatst op dezelfde instructieregel, wordt de eerste met een LOAD of LOAD NOT instructie geprogrammeerd. De rest van de condities worden met AND of AND NOT instructies ingevoerd. Het volgende voorbeeld toont drie instructies die van af de linkerkant gezien een LOAD, een AND NOT en een AND instructie voorstellen. Elk van deze instructies heeft één regel mnemonic code nodig.
000.00
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT 001.00 00002 AND LR00.00 00003 Instructie
001.00 LR00.00
De instructie zal alleen een aan executieconditie hebben wanneer alle drie de condities aan zijn. Dit wil zeggen, wanneer 000.00 aan is, 001.00 uit is en LR00.00 aan is.
AND instructies in serie kunnen individueel beschouwd worden, waarbij elke AND de logische and uitvoert tussen de executieconditie (d.w.z., het totaal van alle condities tot aan dit punt) en de status van het operandbit van de AND instructie. Wanneer beide aan zijn, dan wordt een aan executieconditie aangemaakt voor de volgende instructie. Wanneer een van de twee of beide uit zijn dan is het resultaat ook uit. De executieconditie voor de eerste AND instructie in een serie is de status van de eerste conditie op de instructie regel.
Elke AND NOT instructie in een serie bepaalt de logische AND van de executieconditie en de inverse van het operandbit.
Wanneer twee of meer condities op verschillende instructie regels liggen die parallel lopen en vervolgens samenkomen, dan wordt de eerste conditie met een LOAD of LOAD NOT instructie ingevoerd; de overige condities met OR of OR NOT instructies. Het volgende voorbeeld toont drie condities die ingevoerd moeten worden (in volgorde vanaf de bovenste) met een LOAD NOT, een OR NOT en een OR instructie. Wederom heeft elk van deze instructies één regel mnemonic code nodig.
000.00
001.00
OMRON
Instructie
Instructie
LR00.00
Adres Instructie Operands
00000 LD NOT 000.00 00001 OR NOT 001.00 00002 OR LR00.00 00003 Instructie
De instructie heeft een aan executieconditie wanneer één van de drie condities aan is, dat wil zeggen wanneer 000.00 uit is of 001.00 uit is of wanneer LR00.00 aan is.
OR en OR NOT instructies kunnen individueel beschouwd worden waarbij elke instructie de logische OR uitvoert tussen de executieconditie en de status van het bij de OR instructie horende operandbit. Als één van beide aan is dan wordt een aan executieconditie gegenereerd voor de volgende instructie.
AND en OR Combineren
Wanneer AND en OR instructies gecombineerd worden in meer gecompliceerde diagrammen, kunnen ze soms ook individueel beschouwd worden, waarbij elke instructie een logische bewerking uitvoert op de executieconditie en de status van het operandbit. Het volgende is een voorbeeld. Bestudeer dit voorbeeld tot u ervan overtuigd bent dat de mnemonic code dezelfde logica voorstelt als het ladderdiagram.
pagina 10 CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
OUTPUT en OUTPUT NOT
000.00
002.00
Adres Instructie Operands
00000 LD 000.00 00001 AND 000.01 00002 OR 002.00 00003 AND 000.02 00004 AND NOT 000.03 00005 Instructie
000.01 000.02
000.03 Instructie
Hier wordt een AND berekend tussen de status van 000.00 en die van 000.01 om de executieconditie voor een OR met de status van 002.00 te bepalen. Het resultaat van deze bewerking bepaalt de executieconditie voor een AND met de status van 000.02, welke op zijn beurt de executieconditie bepaalt voor een AND met het inverse (AND NOT) van de status van 000.03.
In meer gecompliceerde diagrammen is het echter noodzakelijk om de juiste opbouw van de logische blokken te bedenken voor een executieconditie bepaald kan worden voor de laatste instructie. Dit is waar de AND LOAD en OR LOAD instructies worden gebruikt. Voor echter deze gecompliceerde diagrammen behandeld gaan worden, worden eerst de instructies beschreven die benodigd zijn om een eenvoudig "input-output" programma te kunnen maken.
De eenvoudigste manier om de resultaten van gecombineerde executiecondities te bepalen is om het direct vast te leggen met de OUTPUT en OUTPUT NOT instructies. Deze instructies worden gebruikt om de status van het gebruikte operandbit aan te sturen, afhankelijk van de executieconditie. Met de OUTPUT instructie wordt het operandbit aan gezet zolang als de executieconditie aan is. Met de OUTPUT NOT instructie zal het operandbit aan gezet worden zolang de executieconditie uit is en uit gezet worden zolang de executieconditie aan is. Ze verschijnen in het ladderdiagram zoals hieronder getoond. In mnemonic code gebruikt elk van deze instructies één regel.
000.00
010.00

1.2.4 De END instructie

000.01
Adres Instructie Operands
00000 LD 000.00 00001 OUT 010.00
Adres Instructie Operands
00000 LD 000.01 00001 OUT NOT 010.01
010.01
In het bovenstaande voorbeeld zal 010.00 aan zijn zolang als 000.00 aan is en
010.01 zal uit zijn zolang als 000.01 uit is. In dit voorbeeld zijn 000.00 & 000.01 input bits en 010.00 & 010.01 output bits die zijn toegewezen aan de PLC. De signalen die binnen komen door de ingangen 000.00 en 000.01 sturen respectievelijk de output punten 010.00 en 010.01 aan.
De tijd dat een bit aan of uit is kan gemanipuleerd worden door de OUTPUT of OUTPUT NOT instructie te combineren met TIMER instructies. Raadpleeg "Timer ­TIM" op pagina 87 voor details.
De laatste instructie die benodigd is om een eenvoudig programma te kunnen completeren is de END instructie. Wanneer de CPU het programma verwerkt, worden alle instructies uitgevoerd tot de eerste END instructie. Hierna zal terug gegaan worden naar het begin van het programma en zal het opnieuw uitgevoerd worden. Alhoewel een END instructie op elk punt in het programma geplaatst kan worden, wat soms gedaan wordt voor debugging, zal geen enkele instructie na de eerste END instructie uitgevoerd worden tot deze END verwijderd wordt. Het nummer dat achter de END instructie staat in de mnemonic code is de functiecode. De functiecode kan gebruikt worden om een functie in te voeren, dit wordt later beschreven. De END instructie heeft geen operands nodig en wordt niet voorafgegaan door een executieconditie op de instructieregel.
CPM1/CPM1A programmeerhandleiding pagina 11
Schrijven en invoeren van het programma
000.00
000.01
OMRON
Instructie
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT 000.01 00002 Instructie 00003 END(01)
Als er niet ergens in het programma een END instructie staat zal het programma niet uitgevoerd worden.
U kent nu alle instructies die nodig zijn om eenvoudige “input-output” programma’s te schrijven. Voor we stoppen met de basis ladderdiagrammen en ons bezig gaan houden met complexere instructies zullen we ons eerst verdiepen in de logische blok instructies (AND LOAD en OR LOAD), die soms ook in eenvoudige programma’s noodzakelijk zijn.

1.2.5 Logische blok instructies

Logisch blok instructies zijn niet verbonden met specifieke condities in het ladderdiagram. Ze beschrijven de relatie tussen logische blokken in een netwerk. De AND LOAD instructie voert een logische AND uit op de executiecondities die twee logische blokken produceren. De OR LOAD instructie voert een logische OR uit tussen de executiecondities die twee logische blokken produceren.
AND LOAD
Alhoewel het onderstaande netwerk eenvoudig lijkt, is er een AND LOAD instructie noodzakelijk om het te programmeren.
END(01)
Programma uitvoer stopt hier
000.00
000.01
000.02 Instructie
000.03
De twee logische blokken worden aangegeven met de gestreepte lijnen. Bestudering van het voorbeeld toont dat een aan executieconditie wordt geproduceerd wanneer: één van beide condities in het linker logisch blok aan is (dat is, wanneer 000.00 of 000.01 aan is) en wanneer één van beide condities in het rechter logisch blok aan is (dat is, wanneer 000.02 aan is of 000.03 uit is).
Het bovenstaande ladderdiagram kan echter niet omgezet worden naar mnemonic code met alleen AND en OR instructies. Wanneer een AND tussen 000.02 en het resultaat van de OR tussen 000.00 en 000.01 wordt uitgevoerd, raakt de OR NOT tussen 000.02 en 000.03 verloren en zal uitgevoerd worden als een OR NOT tussen alleen 000.03 en het resultaat van de AND tussen 000.02 en de eerste OR. Dit is uitgebeeld in de onderstaande figuur. Een OR functie wordt altijd uitgevoerd met een contact aan de busbar.
000.00
000.01
000.03
000.02 Instructie
Wat hier nodig is, is een manier om beide OR functies onafhankelijk uit te voeren en de resultaten naderhand te combineren. Om dit te realiseren kunnen we de LOAD of LOAD NOT instructie in het midden van een instructieregel toepassen. Wanneer LOAD of LOAD NOT op deze manier wordt uitgevoerd, dan wordt de huidige executieconditie opgeslagen in een speciale buffer en het logische proces opnieuw gestart. Voor het combineren van het resultaat van de huidige executieconditie met dat van een vorige “ongebruikte” executieconditie, kan een AND LOAD of een OR LOAD instructie gebruikt worden. In dit geval refereert "LOAD" naar het laden van de laatste ongebruikte executieconditie. Een
pagina 12 CPM1/CPM1A programmeerhandleiding
OMRON
OR LOAD
Schrijven en invoeren van het programma
ongebruikte executieconditie wordt aangemaakt voor elke LOAD of LOAD NOT instructie, behalve de eerste, in een netwerk.
Wordt het eerste ladderdiagram geanalyseerd dan is de instructie voor 000.00 een LOAD en voor de conditie eronder een OR instructie tussen de status van 000.00 en die van 000.01. De instructie voor 000.02 is een volgende LOAD en voor de conditie eronder is het een OR NOT instructie, dat is een OR tussen de status van
000.02 en de inverse van de status van 000.03. Om vervolgens de executieconditie voor de instructie aan de rechterkant te bepalen moet de logische AND van de executiecondities geproduceerd door deze twee blokken berekend worden. De AND LOAD instructie doet dit. De mnemonic code van het ladderdiagram is beneden getoond. De AND LOAD instructie heeft geen operands nodig, omdat het berekeningen uitvoert met tevoren bepaalde executiecondities.
Adres Instructie Operands
00000 LD 000.00 00001 OR 000.01 00002 LD 000.02 00003 OR NOT 000.03 00004 AND LD
Het volgende diagram gebruikt een OR LOAD instructie tussen het logische blok boven en het logische blok beneden. Een aan executieconditie zal gegenereerd worden voor de instructie aan de rechterkant wanneer of 000.00 aan is en 000.01 uit is, of wanneer 000.02 en 000.03 beide aan zijn. De werking van de OR LOAD instructie en de mnemonic code ervan is identiek aan die van de AND LOAD instructie, behalve dat de logische OR wordt bepaald tussen de huidige executieconditie en de laatste ongebruikte executieconditie.
000.00
000.01
000.02 Instructie
000.03
Logische blok instructies in series
Adres Instructie Operands
00000 LD 00000 00001 AND NOT 00001 00002 LD 00002 00003 AND 00003 00004 OR LD
Natuurlijk gebruiken sommige netwerken zowel de AND LOAD als de OR LOAD instructies.
Om een diagram te coderen waar meerdere logische blok instructies in voorkomen, moet het diagram verdeeld worden in logische blokken. Elk blok wordt begonnen door een LOAD instructie voor de eerste conditie te gebruiken en vervolgens wordt AND LOAD of OR LOAD gebruikt om de blokken logisch te combineren. Met zowel AND LOAD als OR LOAD zijn er twee manieren om dit te realiseren. Één manier is om de logische blok instructie na de eerste twee blokken in te voeren en vervolgens na elk volgend blok. De andere manier is om eerst alle blokken die samengevoegd moeten worden te coderen en daarna de logische blok instructies die ze samenvoegen. In dit geval zullen de laatste twee blokken eerst gecombineerd moeten worden en vervolgens elk voorgaande blok, op deze manier terug werkend naar het eerste blok. Alhoewel beide methoden exact hetzelfde resultaat produceren, kan de tweede methode, die waarbij alle logische blok instructies samen geprogrammeerd worden, alleen gebruikt worden wanneer acht of minder blokken gecombineerd moeten worden. Dat is wanneer zeven of minder logische blok instructies gebruikt moeten worden.
Het volgende netwerk gebruikt AND LOAD in mnemonic code omdat drie paar parallelle condities in serie liggen. Beide opties voor het coderen worden getoond.
000.00
000.02
000.04
010.02
000.01
Adres Instructie Operands
00000 LD 000.00 00001 OR NOT 000.01 00002 LD NOT 000.02
000.03
000.05
CPM1/CPM1A programmeerhandleiding pagina 13
Schrijven en invoeren van het programma
00003 OR 000.03 00004 AND LD 00005 LD NOT 000.04 00006 OR 000.05 00007 AND LD 00008 OUT 010.02
Adres Instructie Operands
00000 LD 000.00 00001 OR NOT 000.01 00002 LD NOT 000.02 00003 OR 000.03 00004 LD NOT 000.04 00005 OR 000.05 00006 AND LD 00007 AND LD 00008 OUT 010.02
Met de onderste methode kunnen maximaal acht blokken samengevoegd worden. Er is geen limiet aan het aantal blokken dat met de eerste methode gecombineerd kan worden.
Het volgende netwerk gebruikt OR LOAD instructies in mnemonic code aangezien drie paar AND condities parallel aan elkaar liggen.
000.00
000.01
OMRON
010.01
AND LOAD en OR LOAD combineren
000.02
000.04
000.03
000.05
De eerste conditie van elke reeks wordt begonnen met een LOAD instructie en vervolgens wordt een AND uitgevoerd met de volgende conditie. De eerste twee blokken kunnen eerst gecodeerd worden, gevolgd door een OR LOAD, daarna het laatste blok gevolgd door een volgende OR LOAD; of de drie blokken kunnen eerst gecodeerd worden, gevolgd door twee OR LOAD’s. De mnemonic code van beide methoden is hieronder getoond.
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT 000.01 00002 LD NOT 000.02 00003 AND NOT 000.03 00004 OR LD 00005 LD 000.04 00006 AND 000.05 00007 OR LD 00008 OUT NOT 010.01
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT 000.01 00002 LD NOT 000.02 00003 AND NOT 000.03 00004 LD 000.04 00005 AND 000.05 00006 OR LD 00007 OR LD 00008 OUT NOT 010.01
Beide codeer methoden die hierboven beschreven zijn kunnen ook gebruikt worden wanneer AND LOAD en OR LOAD gecombineerd gebruikt worden, zolang het aantal blokken niet boven de acht komt.
Het volgende diagram bevat twee logische blokken zoals getoond. Het is niet noodzakelijk om blok b te splitsen aangezien het direct met AND en OR gecodeerd kan worden.
000.00 000.02
000.01 000.03
010.01
002.01
000.04
Blok a Blok b
pagina 14 CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT 000.01 00002 LD 000.02 00003 AND 000.03 00004 OR 002.01 00005 OR 000.04 00006 AND LD 00007 OUT 010.01
Alhoewel het volgende netwerk lijkt op het bovenstaande, kan blok b hieronder niet gecodeerd worden zonder het eerst in twee blokken te splitsen die met OR LOAD samen gevoegd worden. In dit voorbeeld worden de drie blokken eerst gecodeerd, vervolgens wordt een OR LOAD gebruikt om de laatste twee blokken te combineren, gevolgd door een AND LOAD om de executieconditie geproduceerd door de OR LOAD met de executieconditie van blok a te combineren.
Wanneer de logische blok instructies samen aan het einde van de logische blokken gecombineerd worden moeten ze zoals hieronder getoond in omgekeerde volgorde ingevoerd worden. D.w.z., de logische blok instructie voor de laatste twee blokken wordt eerst gecodeerd worden, gevolgd door de instructie die de executieconditie van de eerste logische blok instructie en de executieconditie van het logische blok aan het begin (derde vanaf het einde) van het programma combineert.
Blok b1
Gecompliceerde diagrammen
000.00 000.02
000.01 000.03
002.02
000.04
Blok b2
Blok a Blok b
Adres Instructie Operands
00000 LD NOT 000.00 00001 AND 000.01 00002 LD 000.02 00003 AND NOT 000.03 00004 LD NOT 000.04 00005 AND 002.02 00006 OR LD 00007 AND LD 00008 OUT 010.02
010.02
Wanneer bepaald moet worden welke logische blok instructies nodig zijn om een netwerk te kunnen coderen, is het soms noodzakelijk om het netwerk in grote blokken onder te verdelen en vervolgens deze grote blokken weer onder te verdelen in logische blokken die zonder logische blok instructies gecodeerd kunnen worden. Deze blokken worden vervolgens gecodeerd door eerst de kleine blokken samen te voegen en vervolgens de grotere. AND LOAD en OR LOAD worden gebruikt om blokken samen te voegen; deze instructies combineren altijd de laatste twee bestaande executiecondities, onafhankelijk of deze executiecondities zijn ontstaan uit een enkele conditie, uit logische blokken of van voorgaande logische blok instructies.
Wanneer er complexe netwerken gemaakt worden, worden blokken van af het begin van het netwerk (links boven) gecodeerd, waarbij indien mogelijk eerst naar beneden wordt gegaan en daarna naar rechts binnen het netwerk. In het algemeen houdt dit in dat wanneer er een keuze is de OR LOAD voor de AND LOAD gecodeerd zal worden.
Het volgende netwerk moet eerst verdeeld worden in twee blokken en elk van deze wordt vervolgens weer onderverdeeld in twee blokken voor het gecodeerd kan worden. Zoals hieronder getoond benodigen de blokken a en b een AND LOAD. Voor de AND LOAD gebruikt kan worden moet echter OR LOAD gebruikt worden om de blokken, boven en onder aan beide kanten, samen te voegen, om dus a1 en a2; b1 en b2 samen te voegen.
CPM1/CPM1A programmeerhandleiding pagina 15
Schrijven en invoeren van het programma
OMRON
Blok b1Blok a1
000.00 000.04
000.01 000.05
000.07
000.03000.02
Blok a2
Blok a Blok b
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT 000.01 00002 LD NOT 000.02 00003 AND 000.03 00004 OR LD 00005 LD 000.04 00006 AND 000.05 00007 LD 000.06 00008 AND 000.07 00009 OR LD 00010 AND LD 00011 OUT 010.03
000.06
Blok b2
010.03
Het volgende type netwerk kan gemakkelijk gecodeerd worden als elk blok in volgorde wordt gecodeerd: Eerst van boven naar beneden, vervolgens van links naar rechts. In het volgende netwerk zullen de blokken a en b samen gevoegd worden door AND LOAD te gebruiken zoals hierboven getoond. Vervolgens zal blok c worden gecodeerd en een tweede AND LOAD zal gebruikt worden om het samen te voegen met de executieconditie van de eerste AND LOAD. Vervolgens wordt blok d gecodeerd en een derde AND LOAD gebruikt voor het samen voegen van de executieconditie van de tweede AND LD met de conditie van blok d, enzovoort tot en met blok n.
010.00
Blok a Blok b Blok c Blok n
Het volgende netwerk gebruikt een OR LOAD, gevolgd door een AND LOAD om het bovenste deel van de code te programmeren, vervolgens zijn er nog twee OR LOAD’s nodig om de code af te maken.
000.00
000.04
000.06
Adres Instructie Operands
00000 LD 000.00 00001 LD 000.01 00002 LD 000.02 00003 AND NOT 000.03 00004 OR LD 00005 AND LD 00006 LD NOT 000.04 00007 AND 000.05 00008 OR LD 00009 LD NOT 000.06 00010 AND 000.07 00011 OR LD 00012 OUT LR00.00
000.01
000.02 000.03
000.05
000.07
LR00.00
Alhoewel het programma uitgevoerd zal worden zoals het getekend is, kan het netwerk getekend worden zoals hieronder waardoor de eerste OR LOAD en AND
pagina 16 CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
LOAD niet meer noodzakelijk zijn. Hierdoor wordt het programma vereenvoudigd waardoor u ruimte in het programmageheugen bespaart en het programma sneller uitgevoerd zal worden.
000.02 000.03
000.01
000.00
LR00.00
000.04
000.06
000.05
000.07
Adres Instructie Operands
00000 LD 000.02 00001 AND NOT 000.03 00002 OR 000.01 00003 AND 000.00 00004 LD NOT 000.04 00005 AND 000.05 00006 OR LD 00007 LD NOT 000.06 00008 AND 000.07 00009 OR LD 00010 OUT LR00.00
Het volgende netwerk gebruikt vijf blokken, welke hier eerst in volgorde gecodeerd worden voordat OR LOAD en AND LOAD gebruikt worden om ze, vanaf de laatste twee blokken terugwerkend, samen te voegen. De OR LOAD op programma-adres 00008 voegt de blokken d en e samen, de volgende AND LOAD voegt de ontstane executieconditie samen met dat van blok c, etc.
000.00
Blok a Blok b
000.01
Blok c
000.03
000.02
000.04
Blok d
000.05
LR00.00
000.07
000.06
Blok e
Adres Instructie Operands
00000 LD 000.00 00001 LD 000.01 00002 AND 000.02 00003 LD 000.03 00004 AND 000.04 00005 LD 000.05 00006 LD 000.06 00007 AND 000.07 00008 OR LD 00009 AND LD 00010 OR LD 00011 AND LD 00012 OUT LR00.00
Ook dit netwerk kan hertekend worden om de programmastructuur en codering te vereenvoudigen en om programmageheugen te sparen.
000.06 000.07 000.00
000.05
000.01
000.03
000.02
000.04
Adres Instructie Operands
00000 LD 000.06 00001 AND 000.07 00002 OR 000.05 00003 AND 000.03
LR00.00
CPM1/CPM1A programmeerhandleiding pagina 17
Schrijven en invoeren van het programma
00004 AND 000.04 00005 LD 000.01 00006 AND 000.02 00007 OR LD 00008 AND 000.00 00009 OUT LR00.00
Het volgende en laatste voorbeeld ziet er op het eerste gezicht erg ingewikkeld uit, maar kan gecodeerd worden door gebruik te maken van slechts twee logische blok instructies. Het netwerk ziet er als volgt uit:
Blok a
OMRON
010.00
010.00
000.02
010.01 000.06
005.00
Blok b
000.03
000.05000.00 000.01 000.04
Blok c
De eerste logische blok instructie wordt gebruikt om de executiecondities uit de blokken a en b samen te voegen, de tweede voegt de executieconditie van blok c samen met de executieconditie die ontstaat uit de normaal gesloten conditie die aan 000.03 is toegewezen. De rest van het netwerk kan gecodeerd worden met OR, AND en NOT instructies. De logische flow van het netwerk met de resulterende code is hieronder getoond.
Blok a
000.00 000.01
LD
000.00
000.01
AND
OR LD
005.00
OR 005.00
00002
AND
AND NOT
000.03
000.02
000.03
Blok b
010.00 010.01
LD
010.00
AND
010.01
000.04
LD AND
LD
Blok c
000.05
000.04
000.05
000.06
000.06
AND LD
010.00
Adres Instructie Operands
00000 LD 000.00 00001 AND 000.01 00002 LD 010.00 00003 AND 010.01 00004 OR LD 00005 OR 005.00 00006 AND 000.02 00007 AND NOT 000.03 00008 LD 000.04 00009 AND 000.05 00010 OR 000.06 00011 AND LD 00012 OUT 010.00

1.2.6 Het coderen van meerdere “uitvoerende” instructies

Wanneer er meer dan één “uitvoerende” instructie geactiveerd moet worden door dezelfde executieconditie, dan worden ze opeenvolgend gecodeerd volgend op de
pagina 18 CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
laatste conditie van de instructie regel. In het volgende voorbeeld, heeft de laatste instructie regel één conditie meer, een AND met 000.04.
000.00
000.03
HR00.01
000.01
000.02
HR00.00
Adres Instructie Operands
00000 LD 000.00 00001 OR 000.01 00002 OR 000.02 00003 OR HR00.00 00004 AND 000.03 00005 OUT HR00.01 00006 OUT 005.00 00007 AND 000.04 00008 OUT 005.06
1.3 Programmeer overwegingen

1.3.1 Vertakkende instructie regels

Wanneer een instructieregel vertakt in twee of meer lijnen is het soms noodzakelijk om interlocks of TR bits te gebruiken om de executieconditie op het punt van de vertakking vast te leggen. Dit is nodig omdat de instructieregels uitgevoerd worden tot aan een “right-hand” instructie voordat er teruggegaan wordt naar het punt van de vertakking om de instructies aan de andere takken uit te voeren. Als er een conditie is opgenomen in één van de instructie regels na de aftakking, dan kan de executieconditie veranderd zijn als er weer terug gegaan wordt naar het knooppunt van de vertakking, waardoor juiste programma-uitvoer onmogelijk wordt. Het volgende netwerk illustreert dit. In beide netwerken wordt instructie 1 uitgevoerd voordat teruggesprongen wordt naar het knooppunt van de vertakking en verder wordt gegaan met de aftakking die leidt naar instructie 2.
000.00
Aftak punt
000.04
005.00
005.06
Instructie 1
000.02 Instructie 2
Netwerk A: Correcte Werking
Adres Instructie Operands
00000 LD 000.00 00001 Instructie 1 00002 AND 000.02 00003 Instructie 2
000.00
Adres Instructie Operands
00000 LD 000.00 00001 AND 000.01 00002 Instructie 1 00003 AND 000.02 00004 Instructie 2
Aftak punt
Netwerk B: Incorrecte Werking
000.01
000.02
Instructie 1
Instructie 2
Wanneer, zoals getoond is in netwerk A, de executieconditie die aanwezig was op de aftakking niet veranderd is wanneer er teruggesprongen wordt naar de aftakking (instructies aan de meest rechterzijde van het netwerk beïnvloeden de
CPM1/CPM1A programmeerhandleiding pagina 19
Schrijven en invoeren van het programma
executieconditie niet), dan zal de aftaklijn correct uitgevoerd worden en hoeven er geen speciale programmeermaatregelen genomen te worden.
Wanneer, zoals getoond in netwerk B, een conditie is opgenomen tussen het aftakpunt en de laatste instructie op de bovenste instructieregel, dan zal de executieconditie op het aftakpunt en de executieconditie na uitvoer van de bovenste instructieregel soms anders zijn, waardoor het onmogelijk is om een correcte verwerking van de aftakking te verzekeren.
Er zijn twee manieren om programma aftakkingen te programmeren en om de executieconditie vast te houden. De ene is het gebruik van TR bits; de andere is het gebruik van interlocks (IL(02) / IL(03)).
TR bits
Het TR gebied voorziet in acht bits, TR 0 tot en met TR 7, die kunnen worden gebruikt om executiecondities tijdelijk op te slaan. Als een TR bit is geplaatst op een aftakpunt, dan wordt de huidige executieconditie opgeslagen op het gekozen TR bit. Wanneer er teruggekeerd wordt naar het aftakpunt, dan kan het TR bit gebruikt worden om de executiestatus, die was opgeslagen toen het aftakpunt de eerste keer werd uitgevoerd, terug te halen voor programma executie.
Het voorgaande netwerk B kan worden geschreven zoals beneden om zeker te zijn van correcte werking. In mnemonic code wordt de executieconditie opgeslagen door op het aftakpunt een TR bit te gebruiken als operand van een OUTPUT instructie. Deze executieconditie wordt vervolgens teruggehaald na de uitvoer van de “right-hand” instructie door hetzelfde TR bit te gebruiken als operand van een LOAD instructie
OMRON
000.00
Adres Instructie Operands
00000 LD 000.00 00001 OUT TR0 00002 AND 000.01 00003 Instructie 1 00004 LD TR0 00005 AND 000.02 00006 Instructie 2
TR0
Netwerk B: Gecorrigeerd met een TR bit
000.01
000.02
Instructie 1
Instructie 2
Het bovenstaande netwerk voert de volgende actie uit: de status van 000.00 wordt geladen (een LOAD instructie) om de initiële executieconditie te bepalen. Deze executieconditie wordt vervolgens vastgelegd met een OUTPUT instructie op TR0. Hiermee wordt de executieconditie op het aftakpunt vast gelegd. Vervolgens wordt een AND uitgevoerd tussen de executieconditie en de status van 000.01 en wordt instructie 1 dienovereenkomstig uitgevoerd. De executieconditie die was vastgelegd op het aftakpunt wordt vervolgens weer geladen (een LOAD instructie met TR0 als operand), er wordt een AND functie uitgevoerd tussen deze geladen executieconditie en de status van 000.02 en instructie 2 wordt dienovereenkomstig uitgevoerd.
Het volgende voorbeeld toont een applicatie die gebruik maakt van twee TR bits.
000.00 000.01
Adres Instructie Operands
00000 LD 000.00 00001 OUT TR0
TR0
000.04
000.05
TR1
000.02
000.03
005.00
005.01
005.02
005.03
pagina 20 CPM1/CPM1A programmeerhandleiding
OMRON
Opmerking
Schrijven en invoeren van het programma
00002 AND 000.01 00003 OUT TR1 00004 AND 000.02 00005 OUT 005.00 00006 LD TR1 00007 AND 000.03 00008 OUT 005.01 00009 LD TR0 00010 AND 000.04 00011 OUT 005.02 00012 LD TR0 00013 AND NOT 000.05 00014 OUT 005.03
In dit voorbeeld worden TR0 en TR1 gebruikt om de executiecondities op de aftakpunten op te slaan. Na het uitvoeren van OUT 005.00 wordt de executieconditie die opgeslagen is in TR 1 geladen voor een AND met de status van 000.03. De executieconditie die opgeslagen is in TR0 wordt twee keer geladen, de eerste keer voor een AND met de status van 000.04 en de tweede keer voor een AND met de inverse van de status van 000.05.
TR bits kunnen zo vaak gebruikt worden als nodig is, zolang hetzelfde TR bit niet meer dan één keer gebruikt wordt in een instructie blok. In dit geval begint een nieuw instructie blok elke keer wanneer de programma uitvoering terugkeert naar de busbar. Als het, in een enkel instructie block, noodzakelijk is om meer dan acht verschillende aftakkingen te programmeren kunnen interlocks (die hierna uitgelegd worden) gebruikt worden. In deze situatie kan het ook aan te raden zijn om het programma te vereenvoudigen.
Wees voorzichtig, wanneer u een ladderdiagram tekent, om geen TR bits te gebruiken tenzij dit noodzakelijk is. Vaak kan het aantal instructies dat nodig is om een programma te schrijven drastisch verminderd en het programma zelf duidelijker worden door het netwerk dusdanig te tekenen dat er geen (of zo weinig mogelijk) TR bits noodzakelijk zijn. In de onderstaande voorbeelden gebruiken de netwerken geen TR relais en minder code. In het eerste voorbeeld wordt dit gerealiseerd door de onderdelen van het netwerk anders te plaatsen. Bij het tweede voorbeeld gebeurt dit door de tweede output in een eigen netwerk te plaatsen en door er een aparte LOAD instructie voor te programmeren om de juiste executieconditie te creëren.
Alhoewel het vereenvoudigen van programma’s altijd van belang is, is soms ook de volgorde van uitvoering van belang. Bijvoorbeeld, een MOVE instructie kan noodzakelijk zijn voor de uitvoering van een BINARY ADD instructie om de juiste data in het gebruikte operandwoord te plaatsen. Deze instructie zal dan ook voor de BINARY ADD moeten blijven staan. Overweeg altijd eerst de volgorde van uitvoering voor het programma vereenvoudigd wordt.
000.00
000.00
TR0
000.01 Instructie 1
Instructie 2
Instructie 2
000.01 Instructie 1
CPM1/CPM1A programmeerhandleiding pagina 21
Schrijven en invoeren van het programma
000.00 000.03
OMRON
Instructie 1
Interlocks
Opmerking
000.01
000.01
000.00
000.01
TR0
000.02
000.04
000.02
000.04
Instructie 2
000.03 Instructie 1
Instructie 2
TR bits worden alleen gebruikt wanneer er geprogrammeerd wordt in mnemonic code. In een ladderdiagram moet echter ook rekening worden gehouden met het aantal aftakpunten dat TR bits nodig heeft en de methoden om het aantal instructies dat nodig is om een netwerk te programmeren te verminderen. Wanneer een netwerk meer dan acht TR relais of meer dan acht AND LD of OR LD instructies gebruikt geeft SYSWIN een foutmelding.
Het probleem van de opslag van executiecondities op aftakkingen kan ook worden opgelost door de interlock (IL(O2)) en interlock clear (ILC(03)) instructies te gebruiken om het aftakpunt compleet te elimineren en toch een specifieke executieconditie een groep instructies aan te laten sturen. De interlock en interlock clear instructies worden altijd in combinatie gebruikt.
Wanneer een interlock instructie voor een sectie van een ladderdiagram programma wordt geplaatst, dan zal de executieconditie voor de interlock instructie de uitvoering van alle instructies tot aan de volgende interlock clear instructie beheren. Als de executieconditie voor de interlock instructie uit is, dan zullen alle “right-hand” instructies tot aan de volgende interlock clear instructie uitgevoerd worden met een uit conditie en zo de gehele sectie ladderdiagram resetten. Het effect dat dit heeft op bepaalde instructies is beschreven in hoofdstuk “interlocks ­il(02) en ilc(03)” op pagina 82.
Netwerk B uit het hoofdstuk “vertakkende instructie regels” kan ook uitgevoerd worden met een interlock. In dit geval zullen de condities die leiden naar het aftakpunt geplaatst worden in de instructieregel voor de interlock instructie, alle regels vanaf het aftakpunt worden geschreven als aparte instructieregels en een nieuwe instructieregel wordt toegevoegd voor de interlock clear instructie. Er zijn geen condities toegestaan in de instructieregel voor de interlock clear. Merk dat zowel de interlock als de interlock clear geen operands heeft.
000.00 IL(02)
000.01
Instructie 1
000.02
Instructie 2
ILC(03)
Adres Instructie Operands
00000 LD 000.00 00001 IL(02) 00002 LD 000.01 00003 Instructie 1 00004 LD 000.02 00005 Instructie 2
pagina 22 CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
00006 ILC(03)
Als 000.00 aan is in de gereviseerde versie van netwerk B hierboven, dan zullen de statussen van 000.01 en 000.02 de executiecondities voor de instructies 1 en 2 bepalen. Wanneer 000.00 aan is zal dit hetzelfde resultaat geven als een AND met de status van deze bits. Als 000.00 uit is, dan zal de interlock instructie een uit executieconditie genereren voor de instructies 1 en 2 en de uitvoer van het programma zal doorgaan met de instructieregel die volgt op de interlock clear instructie.
Zoals getoond in het volgende diagram kan meer dan één interlock instructie gebruikt worden binnen een instructie blok: elke interlock is echter effectief tot de eerst volgende interlock clear instructie.
000.00 IL(02)
000.01
Instructie 1
000.02 IL(02)
000.03
000.04 Instructie 2
000.05 Instructie 3
000.06 Instructie 4
ILC(03)
Adres Instructie Operands
00000 LD 000.00 00001 IL(02) 00002 LD 000.01 00003 Instructie 1 00004 LD 000.02 00005 IL(02) 00006 LD 000.03 00007 AND NOT 000.04 00008 Instructie 2 00009 LD 000.05 00010 Instructie 3 00011 LD 000.06 00012 Instructie 4 00013 ILC(03)
Als 000.00 in het bovenstaande diagram uit is (d.w.z., als de executieconditie voor de eerste INTERLOCK instructie uit is), worden de instructies 1 t/m 4 uitgevoerd met uit executiecondities en zal de programma-uitvoer verder gaan met de instructie na de INTERLOCK CLEAR instructie. Als 000.00 aan is, dan zal de status van 000.01 geladen worden als executieconditie voor instructie 1 en vervolgens zal de status van 000.02 geladen worden om de executieconditie voor de tweede INTERLOCK instructie te bepalen. Als 000.02 uit is dan zullen de instructies 2 tot en met 4 uitgevoerd worden met uit executiecondities. Als 000.02 aan is, dan zullen 000.03, 000.05 en 000.06 de eerste executieconditie in de nieuwe instructieregels bepalen.
1.3.2 Springen
Een specifieke sectie van een programma kan worden overgeslagen, afhankelijk van een hiervoor gebruikte executieconditie. Alhoewel het gelijk is aan wat er gebeurt wanneer de executieconditie voor een INTERLOCK instructie uit is, behouden met sprongen de operands van alle instructies hun status. Sprongen kunnen daarom gebruikt worden om apparatuur te bedienen die een aanhoudende aansturing nodig hebben, bijvoorbeeld pneumatiek and hydrauliek, terwijl interlocks gebruikt kunnen worden om apparatuur te bedienen die geen aanhoudende aansturing nodig hebben, bijvoorbeeld elektronische instrumenten.
CPM1/CPM1A programmeerhandleiding pagina 23
Schrijven en invoeren van het programma
Sprongen worden gecreëerd met de JMP(04) en JME(05) instructies. Wanneer de executieconditie voor een JMP instructie aan is, dan wordt het programma normaal uitgevoerd, alsof de sprong niet bestaat. Is de executieconditie voor de JMP instructie uit, dan verplaatst de programma uitvoering zich direct naar de JME instructie zonder dat de status van iets tussen de JMP en JME instructie verandert.
Alle JMP en JME instructies krijgen sprongnummers toegewezen die liggen tussen 00 en 49. Er zijn twee typen sprongen. Het gebruikte sprongnummer bepaalt het type van de sprong.
Een sprong met het sprongnummer 01 t/m 49 kan maar één keer gedefinieerd worden. D.w.z., elk van deze nummers mag één keer gebruikt worden in een JMP instructie en één keer gebruikt worden in een JME instructie. Wanneer een JMP instructie waaraan één van deze nummers is toegewezen wordt uitgevoerd, dan verplaatst de programma uitvoer zich direct naar de JME instructie met hetzelfde nummer, alsof het programma ertussen niet bestaat. Het netwerk B van het TR bit en interlock voorbeeld kan hertekend worden, zoals hieronder getoond, met een sprong. Alhoewel 01 gebruikt is als het sprong nummer, kan elk nummer tussen de 01 en 49 gebruikt worden zolang het niet gebruikt wordt in een ander deel van het programma. JMP en JME gebruiken geen andere operand en JME heeft nooit condities in de instructieregel ervoor.
000.00
OMRON
JMP(04)
01
000.01 Instructie 1
000.02 Instructie 2
JME(05)
01
Netwerk B: gecorrigeerd met een sprong
Adres Instructie Operands
00000 LD 000.00 00001 JMP(04) 01 00002 LD 000.01 00003 Instructie 1 00004 LD 000.02 00005 Instructie 2 00006 JME(05) 01
Deze versie van netwerk B zal een kortere executietijd hebben wanneer 000.00 uit is dan de andere versies.
Het andere type sprong wordt gecreëerd met een sprongnummer 00. Net zoveel sprongen als gewenst kunnen gecreëerd worden door sprongnummer 00 te gebruiken. JMP instructies met nummer 00 kunnen opeenvolgend gebruikt worden zonder dat er een JME tussen gebruikt wordt. Het is zelfs mogelijk om alle JMP 00 instructies naar dezelfde JME 00 te laten springen, dus slechts één JME 00 instructie is benodigd voor alle JMP 00 instructies in het programma. Wanneer 00 wordt gebruikt als sprongnummer voor een JMP instructie, dan wordt de programma uitvoer vervolgd bij de instructie die volgt op de JME instructie met sprongnummer 00. Alhoewel, zoals bij alle sprongen, geen statussen veranderd worden en geen instructies uitgevoerd worden tussen de JMP 00 en JME 00 instructies, zal het programma zoeken naar de volgende JME 00 instructie, waardoor een enigszins langere executie tijd wordt gecreëerd.
De uitvoering van programma’s die meerdere JMP 00 instructies bevatten voor een JME 00 instructie is gelijk aan dat van het voorbeeld met meerdere interlock instructies. Het volgende voorbeeld is hetzelfde als het voorbeeld dat gebruikt is bij het interlock voorbeeld hierboven, het is alleen hertekend met sprongen. De uitvoering van dit diagram zal verschillen van het voorbeeld hierboven. In het vorige diagram zouden de interlocks bepaalde delen van het programma resetten.
pagina 24 CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
Sprongen daarentegen veranderen geen enkele status tussen de JMP en JME instructies.
000.00 JMP(04)
00
000.01 Instructie 1
000.02 JMP(04) 00
00
000.03
000.04 Instructie 2
000.05
000.06
Adres Instructie Operands
00000 LD 000.00 00001 JMP(04) 00 00002 LD 000.01 00003 Instructie 1 00004 LD 000.02 00005 JMP(04) 00 00006 LD 000.03 00007 AND NOT 000.04 00008 Instructie 2 00009 LD 000.05 00010 Instructie 3 00011 LD 000.06 00012 Instructie 4 00013 JME(05) 00
Instructie 3
Instructie 4
JME(05)
00

1.4 Bit statussen aansturen

Er zijn in het algemeen vijf instructies die gebruikt kunnen worden om individuele bits aan te sturen. Dit zijn de OUT, OUT NOT, DIFU, DIFD en KEEP instructies. Al deze instructies verschijnen als de laatste instructie in een instructieregel en gebruiken een bitadres als operand. Alhoewel details gegeven worden in de sectie “bitcontrol instructies” worden deze instructies, behalve de OUT en OUT NOT die al geïntroduceerd zijn, hier beschreven vanwege hun belangrijke functie in de meeste programma’s. Deze instructies kunnen gebruikt worden om outputbits in het IR gebied aan en uit te sturen, om signalen te geven naar externe apparatuur, maar ze kunnen ook gebruikt worden om andere bits in het IR gebied of andere bits in andere datagebieden in de PLC aan te sturen.

1.4.1 DIFFERENTIATE UP en DIFFERENTIATE DOWN

DIFU en DIFD instructies worden gebruikt om het operandbit aan te sturen voor één scan op de op- of neergaande flank van de executieconditie. De DIFU instructie zet het operandbit aan voor één scan nadat de executieconditie ervoor van uit naar aan gaat (opgaande flank); De DIFD instructie zet het operandbit aan voor één scan nadat de executieconditie ervoor van aan naar uit gaat (neergaande flank).
000.00 DIFU(13)
200.00
000.01 DIFD(14)
200.01
CPM1/CPM1A programmeerhandleiding pagina 25
Schrijven en invoeren van het programma
Adres Instructie Operands
00000 LD 000.00 00001 DIFU(13) 200.00
Adres Instructie Operands
00002 LD 000.01 00003 DIFD(14) 200.01
In dit voorbeeld zal 200.00 voor één scan aan gaan wanneer 000.00 aan gaat. De volgende keer dat DIFU(13) 200.00 uitgevoerd wordt gaat 200.00 uit, onafhankelijk van de status van 000.00. Bit 200.00 zal pas weer door de DIFU(13) instructie aangestuurd kunnen worden wanneer 000.00 eerst uit is geweest. Met de DIFD instructie zal 200.01 aan gezet worden voor één scan nadat 000.01 uit gaat (200.01 zal tot dan uit zijn) en zal de volgende keer dat DIFD(14) 200.01 uitgevoerd wordt uit gezet worden.
1.4.2 KEEP
De KEEP instructie wordt gebruikt om de status van het operandbit vast te houden, afhankelijk van twee executiecondities. Om dit te realiseren wordt de KEEP instructie aangestuurd door twee instructieregels. Wanneer de executieconditie aan het einde van de eerste instructieregel aan is, wordt het operandbit van de KEEP instructie aan gezet. Wanneer de executieconditie aan het einde van de tweede instructieregel aan is wordt het operandbit van de KEEP instructie uit gezet. Het operandbit van de KEEP instructie zal zijn aan of uit status handhaven als de executiecondities van beide instructieregels laag zijn, zelfs wanneer deze in een interlock (tussen IL en ILC) wordt gebruikt.
In het volgende voorbeeld wordt HR00.00 aangezet als 000.02 aan is en 000.03 uit is. HR00.00 zal dan dezelfde status handhaven tot 000.04 of 000.05 aan gaat. Bij KEEP zullen, zoals bij alle instructies die meer dan één instructieregel nodig hebben, de instructieregels gecodeerd worden voor de instructie die ze aansturen.
000.02 000.03
000.04
000.05
S: set voorwaarde
R: reset voorwaarde
OMRON
KEEP (11)
HR00.00
Adres Instructie Operands
00000 LD 000.02 00001 AND NOT 000.03 00002 LD 000.04 00003 OR 000.05 00004 KEEP(11) HR00.00
1.4.3 Zelfhandhavende bits
Alhoewel de KEEP instructie gebruikt kan worden om zelfhandhavende bits (houd schakelingen) te programmeren, is het soms noodzakelijk om zelfhandhavende bits te creëren op een andere manier, bijvoorbeeld zodat ze uitgezet kunnen worden in een interlock in het programma.
Om een zelfhandhavend bit te creëren, zal het operandbit van de OUT instructie aan het einde van de instructieregel als conditie voor dezelfde OUT instructie in een OR verbinding in de instructieregel opgenomen moeten worden. Hierdoor zal het operandbit van de OUT instructie zijn aan of uit status handhaven tot er een verandering optreed in de andere bits in de instructieregel. Op zijn minst moet één andere conditie gebruikt worden vlak voor de OUT instructie om als reset te fungeren. Zonder deze reset zou er geen manier zijn om het operandbit van de OUT instructie laag te maken.
Het diagram hierboven voor de KEEP instructie kan herschreven worden zoals hieronder getoond is. Het enige verschil in deze diagrammen zou hun werking in een interlock zijn als de executieconditie voor de interlock instructie uit is. Zoals in het diagram met de KEEP instructie worden ook hier twee resetbits gebruikt. HR00.00 kan dus uitgezet worden door 000.04 en 000.05.
pagina 26 CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
000.02 000.03
HR00.00
Adres Instructie Operands
00000 LD 000.02 00001 AND NOT 000.03 00002 OR HR00.00 00003 LD NOT 000.04 00004 OR NOT 000.05 00005 AND LD 00006 OUT HR00.00

1.5 Werkbits (interne relais)

Om tijdens het programmeren condities zo te combineren dat ze direct de juiste executiecondities genereren is vaak behoorlijk ingewikkeld. Deze moeilijkheden zijn te overbruggen door bepaalde bits te gebruiken om andere instructies indirect aan te sturen. Dit kan gerealiseerd worden door werkbits te gebruiken. Meestal worden vele woorden gebruikt voor dit doel. Deze woorden worden vaak werkwoorden genoemd.
Werkbits sturen niets aan buiten de PLC en worden ook nergens direct door aangestuurd. Het zijn bits die geselecteerd kunnen worden door de programmeur om zoals hierboven beschreven te programmeren. I/O bits en andere bits met een functie kunnen niet gebruikt worden als werkbits. Alle bits in het IR gebied die niet gebruikt worden om I/O aan te sturen, alle bits in het HR en LR geheugen en sommige ongebruikte bits in het AR geheugen kunnen gebruikt worden als werkbits. Hou altijd een bestand bij waarin u noteert waarvoor en hoe u belangrijke werkbits gebruikt. Dit helpt bij het plannen, schrijven en debuggen van een programma.
000.04
000.05
HR00.00
1.5.1 Werkbit toepassingen
Zodra er moeilijkheden ontstaan bij het programmeren van een actie moet er rekening mee worden gehouden dat de toepassing van werkbits noodzakelijk is. Daarnaast kunnen werkbits ook gebruikt worden om een programma te vereenvoudigen.
Werkbits worden vaak gebruikt met de OUT, OUT NOT, DIFU, DIFD en KEEP instructies. Het werkbit dat wordt gebruikt als operand bij één van deze instructies kan later gebruikt worden in een conditie om te bepalen wanneer andere instructies uitgevoerd moeten worden. Werkbits kunnen ook gebruikt worden bij andere instructies, bijvoorbeeld bij de shift register instructie (SFT(10)).
Begrijpen van het gebruik van werkbits is essentieel voor effectief programmeren.

1.5.2 Reduceren van complexe condities

Werkbits kunnen gebruikt worden om programma’s te vereenvoudigen wanneer een bepaalde combinatie van condities vaker wordt gebruikt in combinatie met andere condities en instructies. In het volgende voorbeeld worden 000.00, 000.01,
000.02 en 000.03 gecombineerd tot een logisch blok waarvan de resulterende executieconditie wordt opgeslagen als de status van 246.00. 246.00 wordt vervolgens gebruikt met diverse andere condities om uitgangscondities te genereren voor 001.00, 001.01 en 001.02, om bijvoorbeeld de uitgangen die hieraan zijn toegewezen aan of uit te sturen.
CPM1/CPM1A programmeerhandleiding pagina 27
Schrijven en invoeren van het programma
OMRON
000.00 000.01
000.02
000.03
206.00 000.04 000.05
206.00 000.05
000.04
206.00
000.06
000.07
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT 000.01 00002 OR 000.02 00003 OR NOT 000.03 00004 OUT 206.00 00005 LD 206.00 00006 AND 000.04 00007 AND NOT 000.05 00008 OUT 001.00 00009 LD 206.00 00010 OR NOT 000.04 00011 AND 000.05 00012 OUT 001.01 00013 LD NOT 206.00 00014 OR 000.06 00015 OR 000.07 00016 OUT 001.02
206.00
010.00
010.01
010.02
1.5.3 Gedifferentieerde condities
Werkbits kunnen ook gebruikt worden wanneer een differentiatie van een conditie gebruikt moet worden om een instructie uit te voeren. In dit voorbeeld moet 010.00 aan blijven zolang als 000.01 aan is en zowel 000.02 als 000.03 uit zijn, of zo lang als 000.04 aan is en 000.05 uit is. Het bit moet voor één scan aangezet worden als
000.00 aan gaat, tenzij een van de voorgaande condities het continu aan houdt. Deze actie kan eenvoudig geprogrammeerd worden door 225.00 te gebruiken als
een werkbit voor de operand van de DIFFERENTIATE UP instructie (DIFU(13)). Als 000.00 aan gaat, zal 225.00 voor één scan aan gezet worden en de volgende scan uit door de DIFU(13) instructie. Wanneer de andere condities die 010.00 aansturen het niet aan houden dan zal het werkbit 225.00 het bit 010.00 voor alleen één scan aan houden. (Dit is op een uitgang natuurlijk niet te zien).
000.00
225.00
000.02000.01
000.04
000.05
Adres Instructie Operands
00000 LD 00.000
DIFU(13)
225.00
010.00
000.03
pagina 28 CPM1/CPM1A programmeerhandleiding
OMRON
g
00001 DIFU(13) 225.00 00002 LD 225.00 00003 LD 000.01 00004 AND NOT 000.02 00005 AND NOT 000.03 00006 OR LD 00007 LD 000.04 00008 AND NOT 000.05 00009 OR LD 00010 OUT 010.00
1.6 Programmeer voorzorgsmaatregelen
Het aantal condities dat gebruikt kan worden in serie of parallel is ongelimiteerd, zolang het geheugen van de PLC maar niet overschreden kan worden. Programmeer daarom zoveel condities als nodig zijn om duidelijke netwerken te maken. Alhoewel met instructieregels complexe netwerken geschreven kunnen worden mogen er zich op de verticale lijnen, tussen instructieregels, in het diagram geen condities bevinden. Diagram A hieronder bijvoorbeeld is niet toegestaan en moet zoals diagram B getekend worden. De mnemonic code wordt alleen getoond voor diagram B, het coderen van diagram A is namelijk onmogelijk.
000.00
000.04
000.01
000.02
000.03
Diagram A
Schrijven en invoeren van het programma
Instructie 1
Instructie 2
000.01 000.04
000.00
000.00 000.04
000.01
Dia
Adres Instructie Operands
00000 LD 000.01 00001 AND 000.04 00002 OR 000.00 00003 AND 000.02 00004 Instructie 1 00005 LD 000.00 00006 AND 000.04 00007 OR 000.01 00008 AND NOT 000.03 00009 Instructie 2
000.02 Instructie 1
000.03 Instructie 2
ram B
Het aantal maal dat een specifiek bit toegewezen kan worden aan een conditie is niet gelimiteerd, u kunt ze dus zo vaak als noodzakelijk programmeren om uw programma te vereenvoudigen. Gecompliceerde netwerken ontstaan vaak door het zo kort mogelijk schrijven van programma’s of pogingen om bits een zo min mogelijk aantal keren te gebruiken.
Behalve voor de instructies waarbij condities niet toegestaan zijn (bijvoorbeeld de ILC en JME, zie hieronder), moet elke instructieregel minimaal één conditie bevatten om de executieconditie voor de “uitvoerende” instructie te bepalen. Diagram A, hieronder, moet hertekend worden als diagram B. Als een instructie continu uitgevoerd moet worden, bijvoorbeeld een uitgang die altijd hoog moet zijn als het programma verwerkt wordt, kan de altijd aan vlag (Always ON) uit het SR gebied gebruikt worden.
CPM1/CPM1A programmeerhandleiding pagina 29
Schrijven en invoeren van het programma
Diagram A: FOUT
253.13
Diagram B
Adres Instructie Operands
00000 LD 253.13 00001 Instructie
Er zijn een paar uitzonderingen op deze regel, bijvoorbeeld de ILC, JME en STEP instructies. Elk van deze instructies wordt gebruikt als tweede instructie van een paar en wordt aangestuurd door de executieconditie van de eerste instructie van het paar. In de instructieregels naar deze instructies moeten ook geen condities opgenomen worden. Raadpleeg "Instructieset" op pagina 71 voor details.
Wanneer u ladderdiagrammen aan het tekenen bent is het van belang om het aantal instructies dat nodig is om het te coderen in gedachten te houden. In diagram A hieronder is een OR LOAD instructie nodig om de twee instructieregels samen te voegen. Dit kan voorkomen worden door het te hertekenen zoals in dagram B. Hierdoor zijn er geen AND LOAD of OR LOAD instructies nodig. Raadpleeg "AND LOAD en OR LOAD" op pagina 77 voor meer details.
000.00
OMRON
Instructie
Instructie
200.07
1.7 Programma uitvoer
Wanneer de programma uitvoer wordt gestart, scant de CPU het programma van de eerste naar de laatste regel, waarbij alle condities stuk voor stuk uitgevoerd worden. Het is belangrijk dat instructies in de juiste volgorde geplaatst worden zodat bijvoorbeeld de gewenste data naar een woord verplaatst wordt voordat dit woord wordt gebruikt als operand door een instructie. Onthoud dat een instructieregel uitgevoerd wordt tot aan de afsluitende "uitvoerende" instructie voordat een aftakkende instructieregel van deze eerste regel wordt uitgevoerd tot aan de "uitvoerende" instructie. De aftakkingen worden van boven naar beneden uitgevoerd.
Het uitvoeren van het programma is één van de taken die de CPU uit moet voeren tijdens een scan. De uiteindelijk cyclustijd van het programma wordt ook nog door andere factoren bepaald.
000.01 200.07
Adres Instructie Operands
00000 LD 000.00 00001 LD 000.01 00002 AND 200.07 00003 OR LD 00004 OUT 200.07
000.01 200.07
000.00
Adres Instructie Operands
00000 LD 000.01 00001 AND 200.07 00002 OR 000.00 00003 OUT 200.07
Diagram A
Diagram B
200.07
pagina 30 CPM1/CPM1A programmeerhandleiding
OMRON
2 CPM1(A) PC Setup
De PC Setup bevat diverse parameters die de werking van de CPM1(A) bepalen. Voor maximaal gebruik van de functionaliteit van de CPM1(A), bij gebruik van interrupts en communicatiefuncties, kan de PC Setup "op maat" ingesteld worden afhankelijk van de taak die uitgevoerd moet worden.
Bij het verzenden van de CPM1(A) worden alle instellingen op default gezet zodat de CPM1(A) direct gebruikt kan worden zonder dat er instellingen aangepast moeten worden. Het is echter aan te raden om deze instellingen te controleren voordat u begint met programmeren.
Default waarden
De default waarden voor de PC Setup is 0000 voor alle woorden. De default waarden kunnen ingesteld worden door bit 252.10 aan te zetten.

CPM1(A) PC Setup

Voorzichtig
PC Setup veranderen
Opmerking
Opmerking
PC Setup inhoud
1, 2, 3...
Wanneer het datamemory (DM) wordt gewist met een programmeerapparaat, dan worden de settings in de PC Setup ingesteld op hun default waarde.
Veranderingen in de PC Setup instellingen zijn werkzaam of beïnvloeden de werking van de CPM1(A) op verschillende momenten, afhankelijk van de veranderde instellingen.
DM6600 t/m DM6614: Alleen werkzaam wanneer de CPM1(A) powersupply aangezet wordt.
DM6615 t/m DM6644: Alleen werkzaam wanneer de het uitvoeren van het programma begint.
DM6645 t/m DM6655: Direct werkzaam op elk moment dat de CPM1(A) aan staat. Veranderingen in de PC Setup zijn alleen effectief op de hierboven aangegeven
momenten. Wees er zeker van dat u de juiste maatregelen neemt voor u de veranderingen in de PC Setup aanbrengt en doorgaat met uw werkzaamheden.
Alhoewel de PC Setup is opgeslagen in DM6600 tot en met DM6655, kunnen de instellingen alleen gemaakt worden met een programmeerapparaat (bijvoorbeeld SYSWIN, handprogrammeerapparaat of SYSTOOLS). DM6600 t/m DM6644 kunnen alleen in de PROGRAM mode aangepast worden. DM6645 t/m DM6655 kunnen ingesteld worden in PROGRAM of MONITOR mode.
De PC Setup kan in het programma uitgelezen en niet beschreven worden. Schrijven kan alleen met een programmeerapparaat gebeuren.
Als een PC Setup instelling verkeerd is, dan wordt een niet fatale fout (errorcode 9B) gegenereerd op het moment dat de CPM1(A) deze instelling leest. Tegelijkertijd wordt het juiste bit tussen AR24.00 en AR24.02 aan gezet. De foute instelling zal door de CPM1(A) worden gelezen als default.
De PC Setup is verdeeld in drie categorieën:
1. Instellingen van de basis CPM1(A) werking en I/O processen
2. Instellingen van interrupts
3. Instellingen van communicatie Deze sectie verklaard de instellingen naar deze classificatie. De onderstaande
tabel toont de instellingen op volgorde van DM adres.
Woord Bit Functie
Startup processing (DM6600 t/m DM6614)
Tijdens de transfer van deze data moet de PLC in program mode staan en direct na de transfer moet de PLC uit/aan gezet worden.
DM6600 00 t/m 07 Startup mode (alleen actief als de 08 tot en met 15 op 02 ingesteld staan).
00: PROGRAM; 01: MONITOR; 02 : RUN
08 t/m 15 Startup mode keuze
00: Programmeerapparaat schakelaar 01: Vervolg in de mode die gebruikt werd voordat de spanning uitgezet werd 02: Instelling in 00 t/m 07
DM6601 00 t/m 07 Gereserveerd (zet op 00)
08 t/m 11
IOM Hold Bit (252.12) Status
0: Reset; 1: Handhaven
CPM1/CPM1A programmeerhandleiding pagina 31
CPM1(A) PC Setup
Woord Bit Functie
12 t/m 15
DM6602 00 t/m 03 Programma geheugen write protect
04 t/m 07 Taal van het handprogrammeerapparaat
08 t/m 11 Veranderen van de uitbreidingsinstructies
12 t/m 15 Gereserveerd DM6603 t/m DM6614
Puls uitgang en cyclustijd instellingen (DM6615 t/m DM6619)
Tijdens de transfer van deze data moet de PLC in program mode staan. DM6615 t/m
DM6616 DM6617 00 t/m 07 Servicingtijd voor de periferie poort (alleen actief wanneer de bits 08 t/m 15 op 01 staan)
DM6618 00 t/m 07 Cyclus monitor tijd (actief wanneer de bits 08 t/m 15 ingesteld staan op 01, 02 of 03)
DM6619 00 t/m 15 Cyclustijd
Interrupt processing (DM6620 t/m DM6639)
Tijdens de transfer van deze data moet de PLC in program mode staan. DM6620 00 t/m 03 Ingangstijdvertraging voor 000.00 t/m 000.02
DM6621 00 t/m 07 Ingangstijdvertraging voor 001 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
DM6622 00 t/m 07 Ingangstijdvertraging voor 003 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
DM6623 00 t/m 07 Ingangstijdvertraging voor 005 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
DM6624 00 t/m 07 Ingangstijdvertraging voor 007 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
DM6625 00 t/m 07 Ingangstijdvertraging voor 009 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
DM6626 t/m DM6627 DM6628 00 t/m 03 Interrupt activeren voor 000.03 (0: Normale input; 1: Interrupt input, 2: Quick respons)
DM6629 t/m DM6639
Highspeed counter instellingen (DM6640 t/m DM6644)
Tijdens de transfer van deze data moet de PLC in program mode staan. DM6640 t/m
DM6641 DM6642 00 t/m 03 Highspeed counter 0 mode
00 t/m 15 Gereserveerd
00 t/m 15 Gereserveerd
08 t/m 15 Periferie poort servicing instelling activeren
08 t/m 15 Cyclus monitor activeren (Instelling in 00 t/m 07 x unit; 99s max.)
04 t/m 07 Ingangstijdvertraging voor 000.03 en 000.04 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
08 t/m 11 Ingangstijdvertraging voor 000.05 en 000.06 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
12 t/m 15 Ingangstijdvertraging voor 000.07 t/m 000.11 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
08 t/m 15 Ingangstijdvertraging voor 002 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
08 t/m 15 Ingangstijdvertraging voor 004 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
08 t/m 15 Ingangstijdvertraging voor 006 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
08 t/m 15 Ingangstijdvertraging voor 008 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
08 t/m 15 Gereserveerd
00 t/m 15 Gereserveerd
04 t/m 07 Interrupt activeren voor 000.04 (0: Normale input; 1: Interrupt input, 2: Quick respons)
08 t/m 11 Interrupt activeren voor 000.05 (0: Normale input; 1: Interrupt input, 2: Quick respons)
11 t/m 15 Interrupt activeren voor 000.06 (0: Normale input; 1: Interrupt input, 2: Quick respons)
00 t/m 14 Gereserveerd
00 t/m 15 Gereserveerd
04 t/m 07 Highspeed counter 0 reset mode
Forced Status Hold Bit (252.11) Status
0: Reset; 1: Handhaven
0: Programma geheugen niet tegen overschrijven beveiligd 1: Programma geheugen tegen overschrijven beveiligd
0: Engels, 1: Japans
0: Veranderen is niet mogelijk 1: Veranderen is mogelijk
00 t/m 99 (BCD); Percentage van de cyclustijd gebruikt om de periferie poort te servicen
00: Stel geen servicetijd in 01: Gebruik de tijd in 00 t/m 07
00 t/m 99 (BCD): Instelling (zie 08 t/m 15)
00: 120ms (instelling in bits 00 t/m 07 niet actief) 01: Instelling unit: 10ms 02: Instelling unit: 100ms 03: Instelling unit: 1s
0000: Variabel (geen minimum) 0001 t/m 9999 (BCD): Minimum tijd in ms
00: 8ms; 01: 1ms; 02: 2ms; 03: 4ms; 05: 16ms; 06: 32ms; 07: 64ms; 08: 128ms
0: Up/down counter mode, 4: Incrementele counter mode
0: Z fase en software reset, 1: Alleen software reset
OMRON
pagina 32 CPM1/CPM1A programmeerhandleiding
OMRON
Woord Bit Functie
08 t/m 15 Highspeed counter 0 activeren
00: Gebruik de counter niet, 01: gebruik de counter zoals ingesteld op 00 t/m 07 DM6643 t/m DM6644
Periferie poort instellingen
De volgende instellingen zijn direct actief na transfer naar de PLC. DM6645 t/m
DM6649 DM6650 00 t/m 07 Poort instellingen
DM6651 00 t/m 07 Baudrate
DM6652 00 t/m 15 Transmissie vertraging (Hostlink)
DM6653 00 t/m 07 Node nummer (Host link)
DM6654 00 t/m 15 Gereserveerd
Errorlog instellingen (DM6655)
De volgende instellingen zijn direct actief na transfer naar de PLC. DM6655 00 t/m 03 Stijl
00 t/m 15 Gereserveerd
00 t/m 15 Gereserveerd
00: Standaard (1 start bit, 7 data bits, even pariteit, 2 stop bits, 9.600 bps)
01: instellingen in DM6651
08 t/m 11 Link gebied voor en 1:1 Link op de periferie poort
0: LR00 t/m LR15
12 t/m 15 Communicatie mode
0: Hostlink; 2: 1:1 link slave, 3: 1:1 link master, 4: NT link
00: 1.2K, 01: 2.4K, 02:4.8K, 03: 9.6K, 04: 19.2K
Frame formaat
Waarde Start Lengte Stop Pariteit
00: 1 bit 7 bits 1 bit even
01: 1 bit 7 bits 1 bit oneven
02: 1 bit 7 bits 1 bit geen
03: 1 bit 7 bits 2 bit even
04: 1 bit 7 bits 2 bit oneven
05: 1 bit 7 bits 2 bit geen
06: 1 bit 8 bits 1 bit even
07: 1 bit 8 bits 1 bit oneven
08: 1 bit 8 bits 1 bit geen
09: 1 bit 8 bits 2 bit even
10: 1 bit 8 bits 2 bit oneven
11: 1 bit 8 bits 2 bit geen
0000 t/m 9999: in ms
08 t/m 15 Gereserveerd
0: Schuif door nadat 10 records zijn opgeslagen (FIFO)
1: Sla alleen de eerste 10 records op
2 t/m F: Sla geen records op
04 t/m 07 Gereserveerd 08 t/m 11 Cyclus tijd monitor activeren
0: Detecteer lange cyclussen als niet fatale errors
1: Detecteer te lange cyclussen niet
12 t/m 15 Gereserveerd
CPM1(A) PC Setup

2.1 Basis CPM1(A) werking en I/O afhandeling

Startup mode (DM6600)
CPM1/CPM1A programmeerhandleiding pagina 33
De mode waarin de CPM1(A) zal starten als de spanning aangezet wordt, kan volgens de hieronder getoonde methode ingesteld worden.
Bit15 0
DM6600
Startup mode (alleen actief als de 08 tot en met 15 op 02 ingesteld staan).
00 : PROGRAM mode 01 : MONITOR mode 02 : RUN mode
Startup Mode Instelling
00 : Programmeer apparaat schakelaar (RUN mode wanneer niet aanwezig) 01 : Vervolg in de mode die gebruikt werd voor dat de spanning afgezet was 02 : Instelling in 00 t/m 07
Default:
Programming Console Mode Selector
CPM1(A) PC Setup
OMRON
Hold bit status (DM6601)
Programma geheugen tegen overschijven beschermen (DM6602)
Maak de hieronder getoonde instellingen om te bepalen of, wanneer de powersupply aangezet wordt, het
Hold Bit
( 25212) de status zullen handhaven die actief was toen de spanning werd
Forced Status Hold Bit
(252.11) en/of het
IOM
uitgezet of dat de vorige status gewist wordt.
Bit 15 0
00
Default:
Het
Beide wissen
Forced Status Hold Bit
DM6601
Altijd 00
252.12 instelling 0 : Wis status 1 : Houd status
252.11 instelling 0 : Wis status 1 : Houd status
(252.11) bepaalt of de geforceerde set/reset statussen worden vastgehouden bij het veranderen van PROGRAM mode naar MONITOR mode.
Het
IOM Hold Bit
(252.12) bepaalt of de status van IR bits en LR bits wordt
vastgehouden wanneer de werking van de CPM1(A) wordt gestart en gestopt. Op DM6602 kan worden ingesteld of het programmageheugen van de CPM1(A)
mag worden overschreven. Tevens kan hier de taal van het handprogrammeerapparaat worden ingesteld en of er wijzigingen mogen worden aangebracht in de uitbreidingsinstructies.
Bit 15 0
0
DM6602
Periferie poort servicing tijden (DM6617)
Voorbeeld
Cyclustijd (DM6619)
Programmageheugen
0: Niet tegen overschrijven beveiligd 1: Tegen overschrijven beveiligd
Handprogrammeerapparaat taal
0: Engels 1: Japans
Wijzigen uitbreidingsinstructies
0: Niet toegestaan 1: Toegestaan
Default:
Programma overschrijfbaar, taal is Engels en uitbreidingsinstructies zijn
niet te wijzigen. De volgende instelling wordt gebruikt om het percentage van de cyclustijd te
bepalen dat wordt gebruikt om de periferie poort te servicen.
Bit 15 0
DM6617
Servicing tijd (%, actief als op de bits 08 t/m 15 01 staat)
00 t/m 99 (BCD, twee cijfers)
Servicing tijd instelling enable
00 : Disabled (5% gebruikt) 01 : Enabled (instelling in bits 00 t/m 07 gebruikt)
Default:
5% van de cyclus tijd
Als DM6617 wordt ingesteld op 0110, dan zal de periferie poort in 10% van de cyclustijd geserviced worden. Wanneer DM6617 wordt ingesteld op 0115, dan zal de periferie poort in 15% van de cyclustijd geserviced worden. De servicingtijd is minimaal 0,34ms. De hele servicingtijd wordt alleen gebruikt wanneer dit noodzakelijk is.
Maak de instellingen die hieronder getoond zijn om de cyclustijd te normaliseren en variaties in de I/O responsetijd te elimineren door een minimum cyclustijd in te stellen.
pagina 34 CPM1/CPM1A programmeerhandleiding
OMRON
Ingangstijdvertraging (DM6620 t/m DM6625)
Ingangstijdvertraging voor input woord 000
CPM1(A) PC Setup
Bit 15 0
DM6619
Cyclus tijd (4 cijfers BCD)
0000 : Cyclus tijd variabel 0001 to 9999: Minimum cyclus tijd (Unit: 1 ms)
Default:
Als de actuele cyclustijd korter is dan de minimum ingestelde cyclustijd, dan zal de uitvoering van het programma wachten tot de minimum tijd is verstreken. Wanneer de actuele cyclustijd langer is dan de minimum cyclustijd, dan zal de uitvoering doorgaan en de minimum cyclustijd overschreden worden. AR24.05 wordt hoog wanneer de minimum cyclustijd, de vorige scan, is overschreden.
Maak de hieronder getoonde instellingen om de tijd in te stellen tussen het aan/uit gaan van de actuele ingangen van de inputunit en het updaten van het bij deze ingang horende inputbit. Verander deze instelling wanneer u de ingangstijd­vertraging wilt verlengen of verkorten om respectievelijk een stabieler ingangs­signaal of een snellere response op een ingang te krijgen.
Ingangssignaal van een input device
Inputbit status
T = ingangstijdvertraging Bit 15 0
Cyclus tijd variabel
TT
DM6620
Ingangstijdvertraging voor input woord 001 t/m 009
Errorlog instellingen
Cyclus monitor tijd (DM6618)
Vertraging voor 000.00 t/m 000.02 (1 cijfer BCD; zie hieronder) Vertraging voor 000.03 en 000.04 (1 cijfer BCD; zie hieronder) Vertraging voor 000.05 en 000.06 (1 cijfer BCD; zie hieronder) Vertraging voor 000.07 t/m 000.11 (1 cijfer BCD; zie hieronder)
Default:
Bit 15 0
Default:
8 ms voor elke ingang
DM6621 t/m 6625
Vertraging voor 001, 003, 005, 007 en 009 Vertraging voor 002, 004, 006 en 008
8 ms voor elke ingang
De negen mogelijke instellingen voor de ingangstijdvertraging worden hieronder getoond.
00 : 8ms 01 : 1ms 02 : 2ms 03 : 4ms 04 : 8ms 05 : 16ms 06 : 32ms 07 : 64ms 08 : 128ms
Maak de hieronder getoonde instellingen om errors te detecteren en op te slaan in de errorlog.
Bit 15 0
DM6618
Cyclus monitor tijd instelling (Als de bits 08 t/m 15 niet 00 zijn)
00 t/m 99 (2 cijfers BCD; unit ingesteld op bits 08 t/m 15)
Cyclus Monitor Tijd Enable en Unit
00 : Instelling disabled (de tijd is vastgesteld op 120 ms) 01 : Instelling op 00 t/m 07 is actief; unit: 10 ms 02 : Instelling op 00 t/m 07 is actief; unit: 100 ms) 03 : Instelling op 00 t/m 07 is actief; unit: 1 s
Default:
120ms
De cyclus monitor tijd wordt gebruikt om te controleren op extreem lange cyclustijden, zoals bijvoorbeeld kan gebeuren als het programma in een oneindige loop terecht komt. Als de cyclustijd de cyclus monitor instelling overschrijdt, wordt een fatale error (FALS 9F) gegenereerd.
CPM1/CPM1A programmeerhandleiding pagina 35
CPM1(A) PC Setup
OMRON
1, 2, 3...
Voorbeeld
Errordetectie en errorlog werking (DM6655)
1. De meeteenheden die gebruikt wordt voor de maximum en huidige cyclustijden,
zoals opgeslagen in AR26 en AR27 veranderen afhankelijk van de units die ingesteld zijn voor de cyclus monitor tijd zoals hieronder getoond. Bits 08 t/m 15 ingesteld op 00 of 01: 0,1ms Bits 08 t/m 15 ingesteld op 02: 1ms Bits 08 t/m 15 ingesteld op 03: 10ms
2. Zelfs als de cyclus tijd 1s of langer duurt, zal de cyclustijd zoals uitgelezen met
een programmeerapparaat niet boven de 999,9ms komen. De correcte maximale en huidige cyclustijden zullen in AR26 en AR27 opgeslagen worden.
Als 0230 is ingesteld op DM6618, zal een FALS 9F error niet optreden tot de cyclustijd groter is dan 3s. Als de actuele cyclustijd 2.59s is, zal de inhoud van AR27 2590 (ms) zijn en de cyclustijd zoals uitgelezen met een programmeerapparaat 999.9ms.
Een "cycle time over" error (niet fatale) wordt gegenereerd als de cyclustijd boven de 100ms komt, tenzij de detectie van te lange cyclustijden is gedeactiveerd met de instelling hiervoor op DM6655. Cycle time overrun errors zijn niet fatale errors.
Maak de hieronder getoonde instellingen om te bepalen of een niet fatale error gegenereerd moet worden wanneer de cyclustijd boven de 100ms komt en de manier waarop records opgeslagen moeten worden in de errorlog als ze optreden.
Bit 15 0
0
Default:
0
Cycle time over errors worden gedetecteerd en de 10 tien meest recente
DM6655
Error log opslag methode
0 : Error records voor de 10 meest recente errors opslaan (oudere errors verwijderen) 1 : Alleen de eerste 10 error records opslaan (daarna stoppen met opslaan van records) 2 t/m F : Error records niet opslaan
Cycle time over detectie
0 : Detecteer 1 : Detecteer niet
error records worden opgeslagen.

2.2 CPM1A pulsuitgang functie instellen en gebruik

Deze sectie verklaart de instellingen en methoden voor het gebruik van de CPM1A pulsuitgang functie. Alle CPM1A PLC’s kunnen standaard pulsen uitsturen op een uitgang. De standaard pulsuitgangen hebben een duty-ratio (ton/T) van 50%. De frequentie die uitgestuurd kan worden ligt tussen de 20 en 2000Hz.
Opmerking
Alleen de CPM1A PLC typen beschikken over de pulsuitgang functie. De CPM1 PLC typen beschikken niet over deze functie.
Standaard kunnen pulsen uitgestuurd worden op een gespecificeerde uitgang door de SPED(—) instructie. De pulsen kunnen vanuit één uitgang tegelijk uitgestuurd worden. Het volgende diagram toont de pulsen die uitgestuurd worden op een uitgang van CPM1A. De duty-ratio van de puls uitsturing is 50% en de frequentie kan ingesteld worden van 20Hz t/m 2kHz.
on
t
= 50% (0.5)
T
t
on
T
Wanneer pulsen worden uitgestuurd op een uitgang kan de frequentie in stappen veranderd worden door de SPED(—) instructie opnieuw uit te voeren met verschillende frequenties, zoals in het volgende diagram getoond wordt.
pagina 36 CPM1/CPM1A programmeerhandleiding
OMRON
1, 2, 3...
Continue puls output
CPM1(A) PC Setup
Frequentie
Tijd
Er zijn twee manieren op de puls uitsturing te stoppen.
1. Na het uitvoeren van SPED(—), zal de puls uitsturing stoppen als een INI(—) wordt uitgevoerd met C=003 of wanneer SPED(—) opnieuw wordt uitgevoerd waarbij de frequentie ingesteld is op 0.
2. Het totale aantal pulsen dat uitgestuurd moet worden kan worden ingesteld met PULS(—) voor de executie van SPED(—). In dit geval moet SPED(—) uitgevoerd worden in de independent mode. De puls uitsturing stopt automatisch wanneer het aantal pulsen, ingesteld met PULS(—), uitgestuurd is.
Pulsen worden uitgestuurd op de gespecificeerde uitgang als SPED(—) wordt uitgevoerd. Stel de gekozen uitgang in met het nummer ervan 00 t/m 01 (D=000 t/m 001) en de frequentie van 20Hz t/m 2000Hz (F=0002 t/m 0200). Zet de mode op continuous mode (M=001).
@SPED(-)
D
M
F
Aantal pulsen instellen
Frequentie veranderen
Voorbeeld 1: pulsuitgang met PULS(-) en SPED(-)
De puls uitsturing kan gestopt worden door INI(—) uit te voeren met C=003 of door SPED(—) opnieuw uit te voeren waarbij de frequentie ingesteld is op 0. De frequentie kan veranderd worden door SPED(—) opnieuw uit te voeren met een andere frequentie instelling.
Het totale aantal pulsen dat uitgestuurd wordt kan worden ingesteld met PULS(—) voor het uitvoeren van SPED(—) in de independent mode. De pulsuitgang zal automatisch stoppen als het aantal pulsen, ingesteld met PULS(—), is uitgestuurd.
@PULS(-)
000
000
P1
PULS(—) stelt het 8-cijferig aantal pulsen in met P1+1, P1. Het aantal pulsen kan worden ingesteld van 00000001 t/m 16777215. Het aantal pulsen dat ingesteld is met PULS(—) wordt uitgestuurd als SPED(—) wordt uitgevoerd in de independent mode. Het aantal pulsen kan niet worden veranderd tot alle pulsen zijn uitgestuurd. Het is echter wel mogelijk om de puls uitsturing te stoppen.
@SPED(-)
D
M
F
Wanneer SPED(—) wordt uitgevoerd, zullen pulsen uitgestuurd worden op de gespecificeerde uitgang (D=000 t/m 001: bit 00 t/m 01) met de gespecificeerde frequentie (F=0002 t/m 0200: 20Hz t/m 2000Hz). Zet de mode op independent mode (M=001) om het aantal pulsen uit te sturen dat met PULS(—) is ingesteld. De frequentie kan veranderd worden door SPED(—) opnieuw uit te voeren met een andere frequentie instelling.
De frequentie van de pulsuitgang kan veranderd worden door SPED(—) opnieuw uit te voeren met een andere frequentie instelling. Gebruik dezelfde uitgang (P) en mode (M) instellingen die gebruikt zijn om de pulsuitgang te starten. De nieuwe frequentie kan elke frequentie zijn tussen de 20Hz t/m 2000Hz in units van 10Hz (F=0002 t/m 0200).
Het volgende voorbeeld toont PULS(-) en SPED(-), gebruikt om puls uitsturing op uitgang 010.00 realiseren. Het aantal pulsen gespecificeerd met PULS(-) (10,000)
CPM1/CPM1A programmeerhandleiding pagina 37
CPM1(A) PC Setup
F
OMRON
starten
worden uitgestuurd als de frequentie wordt veranderd door het uitvoeren van SPED(-) met verschillende frequentie instellingen.
050.00
000
000
DM 0000
@SPED(-)
000
000
#0100
000.00 @SPED(-)
000
000
#0150
000.01 @SPED(-)
000
000
#0100
000.02 @SPED(-)
000
000
#0050
Als 050.00 AAN gaat, stelt PULS(-) uitgang@PULS(-)
010.00 in op 10,000 pulsen.
Start pulsuitgang op uitgang 010.00 op 1 kHz in independent mode.
Als 000.00 AAN gaat, dan wordt de frequentie veranderd in 1.5 kHz.
Als 000.01 AAN gaat, dan wordt de frequentie veranderd in 1 kHz.
Als 000.02 AAN gaat, dan wordt de frequentie veranderd in 500 Hz.
Let op!
Opmerking
Voorbeeld 2: stoppen van pulsuitgang met SPED(-)
Het volgende diagram toont de pulsuitgang frequentie als het programma wordt uitgevoerd.
requentie
1.5 kHz
1.0 kHz
0.5 kHz
Tijd
050.00 000.00 000.01 000.02 10,000
gaat AAN pulsesgaat AAN gaat AAN gaat AAN
Wees er zeker van dat de uitgestuurde frequentie boven de minimum frequentie van het aangestuurde systeem ligt.
Speed control timing kan erg nauwkeurig zijn wanneer de frequentie veranderingen worden uitgevoerd als interrupt processen.
Het volgende voorbeeld toont PULS(-) en SPED(-), gebruikt om de pulsuitgang op uitgang 010.00 aan te sturen. De frequentie wordt veranderd door het uitvoeren van SPED(-) met verschillende frequentie instellingen en uiteindelijk gestopt met een frequentie instelling van 0.
pagina 38 CPM1/CPM1A programmeerhandleiding
OMRON
F
CPM1(A) PC Setup
050.00
000.05
000.06
000.07
000
004
000
@SPED(-)
000
001
#0100
@SPED(-)
000
001
#0150
@SPED(-)
000
001
#0100
@SPED(-)
000
001
#0000
Als 050.00 AAN gaat, Stelt PULS(-) uitgang 010.00 in voor @PULS(-) pulsuitsturing. Er wordt geen aantal pulsen ingesteld.
Start pulsuitgang met 1 kHz in continuous mode.
Als 000.05 AAN gaat, wordt de frequentie veranderd in 1.5 kHz.
Als 000.06 AAN gaat, wordt de frequentie veranderd in 1 kHz.
Als 000.07 AAN gaat, wordt de pulsuitgang gestopt met een frequentie instelling van 0 Hz.
Het volgende diagram toont de pulsuitgang frequentie van poort 1 als het programma wordt uitgevoerd.
requentie
1.5 kHz
1.0 kHz
050.00 000.05 000.06 000.07
gaat AAN gaat AAN gaat AAN gaat AAN
Voorzichtig
Wees er zeker van dat de uitgestuurde frequentie boven de minimum frequentie van het aangestuurde systeem ligt.

2.3 Instellen en gebruik van de CPM1(A) interrupt functies

Deze sectie verklaart de instellingen en methodes voor gebruik van de CPM1(A)'s interrupt functies.
2.3.1 Interrupt typen
De CPM1(A) heeft drie typen interrupts.
Input interrupts
Interval timer interrupts:
Highspeed counter interrupts:
Interrupt afhandeling
Input interrupts worden uitgevoerd wanneer een signaal van een extern apparaat één van de CPU ingangen 000.03 t/m 000.06 aan zet.
Interval timer interrupts worden uitgevoerd door een interval timer met een precisie van 0,1 ms.
Highspeed counter interrupt wordt uitgevoerd afhankelijk van de huidige waarde (actuele waarde) van de ingebouwde highspeed counter. Alle CPM1(A) CPU’s beschikken over highspeed counter 0, die pulsen telt via de CPU ingangen 000.00 t/m 000.02. Phase differential pulsen tot 2.5 kHz of één fase pulsen tot 5 kHz kunnen worden geteld.
Wanneer een interrupt wordt gegenereerd wordt de gespecificeerde interrupt­routine uitgevoerd. Interrupts hebben de volgende prioriteitsvolgorde (Input interrupt 0 heeft de hoogste prioriteit en highspeed counter interrupt 0 heeft de laagste).
Tijd
CPM1/CPM1A programmeerhandleiding pagina 39
CPM1(A) PC Setup
Voorzorgen
1, 2, 3...
Highspeed counter instructies en interrupts
Methode 1
OMRON
Input interrupt 0 > Input interrupt 1 > Input interrupt 2 > Input interrupt 3> Interval timer interrupts > highspeed counter interrupt
Wanneer een interrupt met een hogere prioriteit wordt ontvangen gedurende interrupt uitvoer, dan zal het huidige proces worden gestopt en de nieuw ontvangen interrupt uitgevoerd worden. Nadat deze routine in zijn geheel is uitgevoerd zal de uitvoer van de vorige interrupt hervat worden.
Wanneer een interrupt met een lagere of gelijke prioriteit wordt ontvangen tijdens interrupt uitvoer, dan wordt de nieuw ontvangen interrupt direct uitgevoerd nadat de routine die op dat moment uitgevoerd wordt geheel uitgevoerd is.
Wanneer u met interrupts gaat werken moet u de volgende voorzorgen treffen:
1. In een interrupt programma kan een nieuwe interrupt gedefinieerd worden. Het is ook mogelijk om een interrupt te wissen in een interrupt programma.
2. Een ander interrupt programma kan niet in een interrupt programma geschreven worden.
3. In een interrupt programma kan geen subroutine geschreven worden. Schrijf geen SBN(92), subroutine definitie, instructie in een interrupt programma.
4. Een interrupt programma kan niet worden geschreven in een subroutine. Schrijf geen interrupt programma tussen een SBN(92) en RET(93) instructie.
Ingangen die zijn gebruikt als interrupt ingang kunnen niet als normale ingang worden gebruikt.
De volgende instructies kunnen niet worden uitgevoerd in een interruptsubroutine als een instructie die de highspeed counter aanstuurt wordt uitgevoerd in het hoofdprogramma: (255.03 gaat aan).
INI(—), PRV(—), CTBL(—)
De volgende methodes kunnen gebruikt worden om deze beperking te omzeilen: Alle interruptuitvoer kan gemaskeerd worden terwijl de instructie wordt uitgevoerd.
Executieconditie
@INT(-)
100
000
000
Methode 2
INI(61)
000
000
000
@INT(-)
200
000
000
Voer de instructie opnieuw uit in het hoofdprogramma. Dit is de programmasectie uit het hoofd programma:
pagina 40 CPM1/CPM1A programmeerhandleiding
OMRON
Executieconditie
@PRV(-)
001
002
LR00.00
DM0000
@CTBL(-)
001
000
DM0000
RSET
LR00.00
Dit is de programmasectie uit de interrupt subroutine:
SBN(92)
253.13
255.03 LR00.00
000
CTBL(-)
001
000
DM 0000
CPM1(A) PC Setup
Opmerking
2.3.2 Input interrupts
Uitvoer
PC Setup parameters
Interrupt input instellingen (DM6628)
1. Net zoals bij normale subroutines worden interruptroutines gedefinieerd door gebruik te maken van SBN(92) en RET(93) instructies aan het einde van het hoofdprogramma.
2. Wanneer een interruptroutine is gedefinieerd dan zal een "no SBS error" worden gegenereerd tijdens een programmacheck, maar de uitvoer zal normaal verlopen. Controleer als deze error voorkomt alle normale subroutines om er zeker van te zijn dat in het programma een SBS(91) is geprogrammeerd om deze aan te roepen voor u verder gaat.
De CPM1(A)-10 heeft twee interrupt ingangen (000.03 en 000.04), terwijl de CPM1(A)-20, 30 en 40 vier interrupt ingangen hebben (000.03 t/m 000.06).
Er zijn twee modes voor uitvoer van Input interrupts. De eerste is de Input Interrupt Mode, waarin de interrupt wordt uitgevoerd als respons op een extern signaal (ingang van de PLC). De tweede is de Counter Mode, waarin de signalen van het externe apparaat op hoge snelheid worden geteld en een interrupt wordt gegenereerd na elke bepaalde hoeveelheid signalen.
In de Input Interrupt Mode kunnen signalen met een lengte van 300µs of meer gedetecteerd worden. In de Counter Mode kunnen signalen tot 1kHz geteld worden.
Wanneer ingang 000.03 t/m 000.06 worden gebruikt als interrupt ingangen moeten deze eerst in de PC Setup geactiveerd worden. Voor het programma uitgevoerd kan worden moet eerst de volgende instelling, in PROGRAM mode, veranderd worden in de PC Setup.
Als deze instellingen niet gemaakt zijn kunnen de interrupts niet in het programma gebruikt worden.
CPM1/CPM1A programmeerhandleiding pagina 41
CPM1(A) PC Setup
Interrupt subroutines
OMRON
Bit 15 0
DM6628
Input interrupt 0 instelling Input interrupt 1 instelling Input interrupt 2 instelling Input interrupt 3 instelling
0 : Normale input 1 : Interrupt input 2 : Quick response input
Default:
Interrupts van ingang 000.03 t/m 000.06 krijgen de interrupt nummer 0 t/m 3 toegewezen en activeren de subroutines 0 t/m 3. Wanneer een interrupt niet wordt gebruikt kunnen de subroutines 0 t/m 3 gewoon in het PLC programma gebruikt worden.
CPM1(A)-10 000.03 00 0,3 ms max 1 kHz 000
CPM1(A)-20/30/40 000.03 00 interrupt 000
Alle ingangen normaal
PLC Model Interrupt Interrupt Responsetijd interrupt
ingang nummer Interrupt
mode
000.04 01 tijd tot het 001
000.04 01 programma 001
000.05 02 wordt geacti- 002
000.06 03 veerd 003
Counter
mode
subroutine
Input refreshing
Input Interrupt Mode
Maskeren van interrupts
Wanneer input refreshing niet gebruikt wordt, dan is de status van ingangen onbetrouwbaar in een interrupt routine. Afhankelijk van de ingestelde ingangstijdvertraging kunnen ingangen, zelfs als de ingangen gerefreshed wordt, niet aan gaan. Dit geldt ook voor de status van de ingang die de interrupt activeerde.
Bijvoorbeeld, in interrupt subroutine 000 zal de status van ingang 000.03 uit zijn als de interrupt geactiveerd wordt. In dit geval is het aan te raden om 253.13 (altijd hoog) te gebruiken in plaats van ingang 000.03.
Wanneer een input interrupt signaal wordt ontvangen, dan wordt het hoofdprogramma onderbroken en het interrupt programma direct uitgevoerd, onafhankelijk van het punt binnen de cyclus waar de interrupt binnenkomt. Het interrupt signaal moet minimaal 200µs aanwezig zijn om gedetecteerd te kunnen worden.
Hoofdprogramma Hoofdprogramma
Interrupt programma
Input interrupt
Gebruik de volgende instructies om Input Interrupts te programmeren in de Input Interrupt Mode.
Met de INT(—) instructie is het mogelijk om Input Interrupt maskers te zetten of te wissen zoals benodigd is.
(@)INT
000
000
D
Maak de instellingen met de bits 00 t/m 03 van D, deze corresponden met de input interrupts 0 to 3. 0 : Masker gewist (Input interrupt is toegestaan) 1 : Masker gezet (Input interrupt niet toegestaan)
Tijdens het opstarten van programma bij de CPM1(A) worden alle Input Interrupts gemaskeerd.
Wissen van gemaskeerde interrupts
Als het bij een Input Interrupt behorende bit aan gaat terwijl de interrupt gemaskeerd is, dan zal deze interrupt worden opgeslagen in het geheugen en zal deze uitgevoerd worden zodra het masker gewist wordt. Wanneer een opgeslagen Input Interrupt niet moet worden uitgevoerd als het masker gewist wordt, dan moet deze interrupt uit het geheugen gewist worden.
pagina 42 CPM1/CPM1A programmeerhandleiding
OMRON
CPM1(A) PC Setup
Alleen één interrupt signaal wordt in het geheugen opgeslagen per interrupt nummer.
Met de INT(—) instructie is het mogelijk om een Input Interrupt uit het geheugen te wissen.
Uitlezen van de masker status
Voorbeeld
(@)INT
001
000
D
Als de bits 0 t/m 3 uit D, die corresponderen met input interrupts 0 t/m 3 op "1" zijn ingesteld, dan worden de input interrupts gewist uit het geheugen. 0 : Input interrupt bewaard. 1 : Input interrupt gewist.
Met de INT(—) instructie kan de status van het Input Interrupt masker uitgelezen worden.
(@)INT
002
000
D
De status van de meest rechtse bits van de in woord D opgeslagen data (0 t/m 3) data tonen de masker mask status. 0 : Masker gewist (Input interrupt toegestaan) 1 : Masker gezet (Input interrupt niet toegestaan)
Wanneer ingang 000.03 (Interrupt nr 0) aan gaat, dan zal de programma uitvoer voor het interrupt programma in subroutine nummer 0 direct worden gestart. DM6628 moet voor dit voorbeeld worden ingesteld op 0001.
253.15 INT
000
000
SBN(92)
000
Interrupt programma
RET(93)
Subroutine 000
#000E
Demaskeert interrupt 0, maskeert de andere
Counter mode
Opmerking
1, 2, 3...
Opmerking
Externe signalen worden geteld en een interrupt wordt gegenereerd wanneer de tel waarde een opgegeven setpoint bereikt. Wanneer een interrupt wordt geactiveerd, dan wordt het hoofdprogramma onderbroken en het interrupt programma direct uitgevoerd, onafhankelijk van het punt binnen de cyclus waar de interrupt binnenkomt. Externe signalen met een frequentie tot 1kHz worden geteld.
Hoofdprogramma Hoofdprogramma
Interrupt programma
Input interrupt
Setpoint
Gebruik de volgende stappen om Input Interrupts te programmeren die de Counter Mode gebruiken.
De SR woorden die in de Counter Mode gebruikt worden (240 t/m 243) bevatten allemaal binaire (hexadecimale) data, geen BCD.
1. Schrijf de ingestelde waarde voor de counter werking op de bij interrupt 0 t/m 3 horende SR woorden. De ingestelde waarden kunnen worden opgegeven tussen 0000 en FFFF (0 t/m 65535). Een waarde van 0000 zal de teller werking uitzetten tot een nieuwe waarde wordt ingesteld en stap 2, hieronder getoond, wordt herhaald.
De onderstaande SR woorden worden gewist tijden het opstarten van de PLC en moeten vanuit het programma geschreven worden.
Het maximale input signaal dat geteld kan worden is 1 kHz.
CPM1/CPM1A programmeerhandleiding pagina 43
CPM1(A) PC Setup
OMRON
Interrupt Woord
Input interrupt 0 240 Input interrupt 1 241 Input interrupt 2 242 Input interrupt 3 243
Als de Counter mode niet wordt gebruikt, kunnen deze SR bits gebruikt worden als werkbits.
2. Met de INT(—) instructie kan de Counter Mode ingestelde waarde gerefreshed worden en de interrupts geactiveerd.
1, 2, 3...
Counter actuele waarde in counter mode
(@)INT
003
000
D
Als de bits 0 t/m 3 uit D, die corresponderen met input interrupts 0 to 3, zijn ingesteld op "0", dan wordt de ingestelde waarde gerefreshed en zijn interrupts toegestaan. 0 : Counter mode ingestelde waarde gerefreshed en masker gewist. 1 : Niets gebeurd (Zet de bits voor alle interrupts die niet veranderen op "1").
De Input Interrupt waarvoor de ingestelde waarde wordt gerefreshed wordt geactiveerd in de Counter Mode. Wanneer de counter de ingestelde waarde bereikt, wordt een interrupt gegenereerd, de counter wordt gereset en zal weer vanaf de ingestelde waarde terug tellen. Dit gaat door tot de counter werking wordt gestopt.
1. Als de INT(—) instructie wordt gebruikt tijdens het tellen, dan wordt de actuele waarde terug gezet op de ingestelde waarde. U moet daarom de gedifferentieerde variant van deze instructie gebruiken (@INT), anders zal er mogelijk nooit een interrupt plaats vinden.
2. De ingestelde waarde wordt geactiveerd als de INT(—) instructie wordt uitgevoerd. De ingestelde waarde kan dus niet veranderd worden door simpelweg de inhoud van 240 t/m 243 te veranderen. Als de inhoud van deze registers is veranderd moet de ingestelde waarde gerefreshed worden door de INT instructie opnieuw uit te voeren.
Counter Interrupts kunnen op dezelfde manier gemaskeerd worden als in de Input Interrupt Mode, worden echter de maskers op deze manier gewist, dan zal de Counter Mode niet gehandhaafd worden en de Input interrupt Mode zal geactiveerd worden. Interrupt signalen die ontvangen zijn voor gemaskeerde interrupts kunnen gewist worden op dezelfde manier als bij de Input Interrupt mode.
Wanneer input interrupts worden gebruikt in counter mode, dan wordt de actuele waarde van de counter opgeslagen in het SR woord dat hoort bij de Input Interrupt 0 t/m 3. De waardes zijn 0000 t/m FFFE (0 t/m 65534), de uitgelezen waarde is gelijk aan de counter actuele waarde min één.
Interrupt Woord
Input interrupt 0 244 Input interrupt 1 245 Input interrupt 2 246 Input interrupt 3 247
Voorbeeld
De actuele waarde voor een interrupt wiens ingestelde waarde 000A is zal getoond worden als een actuele waarde van 0009 direct nadat INT(—) is uitgevoerd.
Opmerking
Zelfs als de Input Interrupts niet gebruikt worden in Counter Mode, zijn deze SR bits niet te gebruiken als werkbits.
Voorbeeld
In dit voorbeeld wordt Input Interrupt 0 gebruikt in de Counter Mode. Controleer voor het uitvoeren van het programma de PC Setup. Op ingang 000.03 moeten 10 pulsen worden ingevoerd, waarna een interrupt wordt gegenereerd.
PC Setup: DM6628: 0001 (000.03 is gebruikt als Interrupt) De default instellingen zijn gebruikt voor alle andere PC Setup parameters.
pagina 44 CPM1/CPM1A programmeerhandleiding
OMRON
253.15 (AAN voor 1 scan) MOV(21)
#000A
240
CPM1(A) PC Setup
Stel 10 in als SV voor input interrupt 0 in counter mode.
Wanneer het programma wordt uitgevoerd, dan zal de werking zijn zoals in het onderstaande diagram is getoond.
000.03
Subroutine 000
Noot
1. De counter zal doorgaan met werken, zelfs als de interruptroutine verwerkt wordt.

2.3.3 Alle interrupts maskeren

Alle interrupts, inclusief Input Interrupts, Interval Timer Interrupts en highspeed counter interrupts, kunnen als groep ge(de)maskeerd worden met de INT(—) instructie. Deze methode is een toevoeging op het maskeren van individuele soorten interrupts. Verder zal het wissen van de maskeringen voor alle interrupts niet de maskeringen van de individuele interrupts wissen, maar ze herstellen naar de gemaskeerde conditie die bestond voordat INT(—) werd uitgevoerd om ze als groep te maskeren.
Gebruik INT(—) niet om interrupts als groep te maskeren, tenzij dit nodig is om tijdelijk alle interrupts te maskeren. Gebruik INT(—) instructies in dit geval altijd in paren, waarbij de eerste INT(—) instructie de interrupts maskeert en de tweede deze bewerking ongedaan maakt.
INT(—) kan niet gebruikt worden om alle interrupts te (de)maskeren vanuit een interrupt routines.
Interrupts maskeren
Gebruik de INT(—) instructie om alle interrupts te deactiveren.
@INT
003
000
#000E
SBN(92)
000
RET(93)
10 counts 10 counts 10 counts
(zie noot 1) (zie noot 1)
Interrupts worden enabled in counter mode voor interrupt 0. (SV: 10)
(@)INT
100
000
000
Als een interrupt wordt gegenereerd wanneer interrupts gemaskeerd zijn, dan zal interrupt processing niet worden uitgevoerd maar de gegenereerde interrupt zal worden opgeslagen voor de input, interval timer en highspeed counter interrupts. De interrupts worden vervolgens geserviced zodra deze gedemaskeerd worden.
Interrupts demaskeren
Gebruik de INT(—) instructie zoals hieronder getoond om interrupts te demaskeren.
(@)INT
200
000
000
CPM1/CPM1A programmeerhandleiding pagina 45
CPM1(A) PC Setup

2.3.4 Interval timer interrupts

Snelle, nauwkeurig timer interrupts kunnen worden gegenereerd door gebruik te maken van interval timers. De CPM1(A) beschikt over één interval timer.
Modes
Opstarten in de one-shot mode
Er zijn twee modes waarin de interval timer kan werken. De one-shot Mode, waarin één interrupt wordt uitgevoerd als de tijd verstreken is en de scheduled Interrupt Mode waarin de interrupt wordt herhaald op een vast interval.
Gebruik de STIM (—) instructie om de interval timer in de one-shot mode te starten.
OMRON
Opstarten in de scheduled interrupt mode
(@)STIM
C1
C2
C3
C1: Interval timer nummer (000). C2: Timer ingestelde waarde (eerste woord adres) C3: Subroutine nr. (4 cijfers BCD): 0000 t/m 0255
C2: Timer ingestelde waarde (4 cijfers BCD): 0000 t/m 9999 C2 + 1: Timer tijdsinterval (4 cijfers BCD; unit: 0,1ms): 0005 t/m 0320 (0,5ms t/m
32ms).
Elke keer als het interval gespecificeerd in C2 + 1 afloopt, zal de timer de actuele waarde met één verlagen. Wanneer de actuele waarde 0 bereikt, zal de opgegeven subroutine éénmaal worden aangeroepen en de timer stoppen.
De tijd die verloopt tussen het starten van de STIM instructie en de afloop er van kan als volgt worden berekend:
(Inhoud van woord C2) x (Inhoud van woord C2 + 1) x 0,1ms =(0,5 t/m 319968,0ms)
Als een constante is ingesteld op C2, dan zal de ingestelde waarde van de timer die waarde nemen en het interval zal 10 zijn (1ms; de ingestelde waarde wordt uitgedrukt in ms)
Gebruik de STIM(—) instructie om de interval timer in de scheduled interrupt mode te starten.
(@)STIM
C1
C2
C3
C1: Interval timer nr (003) C2: Timer ingestelde waarde (eerste woord) C3: Subroutine nr. (4 cijfers BCD): 0000 t/m 0255
C2: Timer ingestelde waarde (4 cijfers BCD): 0000 t/m 9999 C2 + 1: Timer tijdsinterval (4 cijfers BCD; unit: 0,1ms): 0005 t/m 0320 (0,5ms t/m
32ms).
De betekenis van de instellingen blijft hetzelfde als bij de one-shot mode, maar in de scheduled interrupt mode zal de actuele waarde van de timer teruggezet worden op de ingestelde waarde en zal de timer opnieuw gestart worden nadat de interrupt subroutine is uitgevoerd. In de scheduled interrupt mode worden interrupts repeterend uitgevoerd op een vast interval tot de uitvoer wordt gestopt.
Uitlezen van de timers verlopen tijd
Gebruik de STIM(—) instructie om de verlopen tijd van de timer uit te lezen.
(@)STIM
C1
C2
C3
C1: Interval timer nr. (006) C2: Eerste woord van parameter 1 C3: Parameter 2
C2: Aantal keer dat de waarde van de timer is verlaagd (4 cijfers BCD) C2 + 1: Timer tijdsinterval (4 cijfers BCD; unit: 0.1 ms) C3: De verlopen tijd sinds de vorige verlaging van de timer waarde (4 cijfers
BCD; unit: 0.1 ms)
De tijd die verlopen is sinds de interval timer is gestart kan als volgt berekend worden:
pagina 46 CPM1/CPM1A programmeerhandleiding
OMRON
Stoppen van timers
Voorbeeld
CPM1(A) PC Setup
{(Inhoud van woord C2) x (Inhoud van woord C2 + 1) + (Inhoud van woord C3)} x
0.1 ms
Als de gespecificeerde interval timer is gestopt dan wordt "0000" opgeslagen. Gebruik de STIM(—) instructie om de interval timer te stoppen.
(@)STIM
010
000
000
Na uitvoer van de STIM instructie zoals hierboven getoond zal de interval timer stoppen.
In dit voorbeeld wordt een interrupt om de 2,4ms (0,6ms x 4) aangeroepen door middel van een interval timer. Zet voor het uitvoeren van het programma alle parameters in de PC Setup op default. (De ingangen worden niet gerefreshed voor de uitvoer van de interrupt subroutine.)
253.15 Eerste Scan Vlag AAN voor 1 cyclus
MOV(21)
#0004
DM 0010
Interval timer ingestelde waarden:
Stelt de ingestelde waarde van de interval timer in op 4.
MOV(21)
#0006
DM 0011
001.00 @STIM
003
DM 0010
#0023
001.00 @STIM
010
000
000
SBN(92)
RET(93)
Stelt het interval voor de timer in op 0,6 ms.
Interval timer 1 start als IR001.00 AAN gaat.
Interval timer 1 stopt als IR001.00 UIT gaat.
Elke 2,4 ms loopt de tijd van interval timer 1 af en wordt subroutine 023 aangeroepen.023
Wanneer het programma wordt uitgevoerd dan wordt subroutine 023 elke 2,4ms aangeroepen zolang 001.00 aan is.
001.00
Subroutine 023
2,4 ms 2,4 ms 2,4 ms

2.3.5 Highspeed counter interrupts

Pulsen van een encoder die aangesloten is op de ingangen 000.00 t/m 000.02 van de CPM1(A) CPU kunnen met een hoge snelheid geteld worden. Het is mogelijk om, afhankelijk van de getelde waarde, interrupts uit te voeren. Voor de counter gebruikt kan worden moet deze in de PC Setup geactiveerd worden.
CPM1/CPM1A programmeerhandleiding pagina 47
CPM1(A) PC Setup
Up/d
I
Signaal typen & tel modes
OMRON
Bit 15 0
DM6642
Counter mode
0: Up/down 4: Incrementing
Reset methode
0: Z-fase & Software 1: Alleen software
Counter instelling
00: Counter niet gebruikt 01: Counter geactiveerd
Default:
Veranderingen in de instelling in DM6642 zijn alleen effectief na het opnieuw starten van de uitvoer van het programma (uitzetten van de voedingsspanning of de PLC in program mode zetten).
Twee typen signalen kunnen worden ingelezen van een puls encoder. De tel mode die gebruikt wordt voor highspeed counter 0 is afhankelijk van het signaal type.
Counter is niet in gebruik
Up/down mode
: Een phase-difference 4X twee fase signaal (A-fase en B-fase) en een Z-fase signaal worden gebruikt om te tellen. De getelde waarde wordt verhoogd of verlaagd afhankelijk van het fase verschil tussen de twee fase (A en B) signalen.
Incrementing mode:
Één tel signaal (puls) en een teller reset signaal worden
gebruikt. De teller wordt verhoogd afhankelijk van het tel signaal.
own mode
A-fase
B-fase
ncrementing mode
Tel ingang
Reset methoden
Opmerking
Teller
1 2 3 4
Verhogen Verlagen
5 6 7 8 7 6 5 4
3 2 1 0
Teller 1234
Alleen verhogen
Één van de verderop beschreven methoden moet gebruikt worden om de counter te resetten wanneer deze herstart wordt. De counter wordt automatisch gereset wanneer de uitvoer van het programma wordt gestart of gestopt.
De volgende signaalovergangen worden gezien als voorwaartse (optellende) pulsen: A-fase opgaande flank gevolgd door B-fase opgaande flank gevolgd door A-fase neergaande flank gevolgd B-fase neergaande flank. De volgende signaal­overgangen worden gezien als teruggaande (verlagende) pulsen: B-fase opgaande flank gevolgd door A-fase opgaande flank gevolgd door B-fase neergaande flank gevolgd A-fase neergaande flank.
Het tel bereik loopt van -32767 tot 32767 voor de Up/Down Mode en van 0 tot 65535 voor de Incrementing Mode. Pulsen kunnen worden geteld met een frequentie tot 2.5 kHz in Up/Down Mode en tot 5.0 kHz in Incrementing Mode.
De Up/Down Mode gebruikt altijd een 4X phase-difference signaal. Het aantal getelde pulsen voor elke encoder omwenteling is 4 maal de resolutie van de encoder. Selecteer de encoder gebaseerd op de telbare bereiken.
Één van de twee methoden hieronder beschreven moet worden gebruikt om de actuele waarde van de counter te resetten. (D.w.z. instellen op 0).
Z-fase signaal + software reset:
het Z-fase signaal (reset input) en het
De actuele waarde wordt gereset wanneer
Highspeed Counter 0 Resetbit
(252.00)
beide aan zijn.
Software reset:
Counter 0 Resetbit
De actuele waarde wordt gereset wanneer het
(252.00) aan wordt gezet.
Highspeed
pagina 48 CPM1/CPM1A programmeerhandleiding
OMRON
Z-f
t
Soft
t
CPM1(A) PC Setup
Opmerking
Highspeed counter interrupt
Bedrading
ase signaal + software rese
1 of meer cycly
Z-fase (reset input)
252.00 1 of meer cycly
Gereset door interrupt Gereset door cyclus Niet gereset
De status van het
Binnen 1 cyclus
Highspeed Counter 0 Resetbit
252.00 Binnen 1 cyclus
(252.00) wordt één keer per
ware rese
1 of meer cycly
Gereset door cyclus
cyclus, tijdens de I/O refresh, doorgegeven aan de highspeed counter. Om de counter betrouwbaar te resetten is het dus noodzakelijk om het minimaal één cyclus aan te houden.
De "Z" in "Z-fase" is een afkorting voor "Zero" (Engels voor nul). Het is een signaal dat de encoder één keer rond is gedraaid.
Voor highspeed counter interrupts wordt een vergelijkingstabel gebruikt in plaats van het “Tel tot” principe. De teller controle kan worden uitgevoerd op één van de twee hieronder beschreven methoden. In de vergelijkingstabel worden de met de actuele waarde te vergelijken condities en interruptroutine combinaties opgeslagen.
Doel waarde:
Een maximum van 16 vergelijkingscondities (waarde en de tel­richting) en interruptroutine combinaties worden opgeslagen in de vergelijkings­tabel. Wanneer de counter actuele waarde en de telrichting gelijk zijn aan de vergelijkingscondities, dan wordt de gespecificeerde interruptroutine uitgevoerd.
Bereik vergelijken:
Acht vergelijkingscondities (hoge en lage limieten) en interruptroutine combinaties worden opgeslagen in de vergelijkingstabel. Wanneer de actuele waarde groter of gelijk is aan de lage limiet en kleiner of gelijk aan de hoge limiet dan wordt de gespecificeerde interruptroutine uitgevoerd.
Hieronder worden de aansluitingen van de puls encoder op de input terminal van de CPU gegeven, afhankelijk van de telmode.
Terminal nr. Up/Down Mode Incrementing Mode
000.00 Encoder A-fase Puls count input
000.01 Encoder B-fase ---
000.02 Encoder Z-fase Reset input
Programmeren
Beheersen van highspeed counter interrupts
Wanneer alleen de software reset wordt gebruikt dan kan terminal 000.02 worden gebruikt als normale ingang. In de Incrementing Mode kan terminal 000.01 worden gebruikt als normale ingang.
Gebruik de volgende stappen om de highspeed counter te programmeren. De highspeed counter begint met tellen nadat de juiste instellingen in de PC Setup
zijn gemaakt. Vergelijkingen zullen echter niet worden uitgevoerd met de vergelijkingstabel en interrupts worden niet uitgevoerd tot de CTBL(—) instructie wordt uitgevoerd.
De highspeed counter wordt ingesteld op "0" als de voedingsspanning aan wordt gezet en wanneer de uitvoer van het programma wordt gestart en gestopt.
De huidige waarde van de highspeed counter kan worden uitgelezen op 248 en
249.
1. Gebruik de CTBL (—) instructie om de vergelijkingstabel in de CPM1(A) op te slaan en om de vergelijkingen te starten.
(@)CTBL
P
C
TB
P: Poort specificatie (0 = Highspeed counter 0) C: (3 cijfers BCD)
000 : Doel tabel ingesteld en vergelijken gestart 001 : Bereik tabel ingesteld en vergelijken gestart 002 : Doel tabel alleen ingesteld 003 : Bereik tabel alleen ingesteld
TB : Begin woord van de vergelijkings tabel
Als C is ingesteld op 000, dan worden de vergelijkingen uitgevoerd in de doel mode; Als C 001 is dan worden ze uitgevoerd in de bereik vergelijking mode. De vergelijkingstabel wordt door de instructie opgeslagen en wanneer deze bewerking uitgevoerd is, zal het vergelijken gestart worden. Als de
CPM1/CPM1A programmeerhandleiding pagina 49
CPM1(A) PC Setup
Opmerking
Uitlezen van de huidige waarde
Uitlezen van 248 en 249
OMRON
vergelijkingen worden uitgevoerd zullen highspeed interrupts worden uitgevoerd zoals dit in de vergelijkingstabel is opgeslagen. Zie voor meer details "Registreer vergelijkingstabel - CTBL(—)" op pagina 97.
In de bereik vergelijking mode worden de resultaten van de vergelijking normaal opgeslagen in AR11.00 t/m AR11.07.
Als C is ingesteld op 002, dan worden de vergelijkingen uitgevoerd in de doel mode als C 003 is dan worden ze uitgevoerd in de bereik vergelijking mode. Bij beide instellingen wordt de vergelijkingstabel opgeslagen, maar de vergelijkingen zullen niet gestart worden. De INI(—) instructie moet in dit geval gebruikt worden om de vergelijkingen te starten.
2. Voer de INI (—) instructie uit zoals hieronder getoond om de vergelijkingen te stoppen.
(@)INI
000
001
000
Zet de tweede operand op “000” om de vergelijkingen opnieuw te starten en voer de INI(—) instructie uit. Zodra een tabel is opgeslagen dan wordt deze in de CPM1(A) bewaard zolang de CPM1(A) het programma uitvoert en er geen andere tabel wordt opgeslagen.
Er zijn twee manieren om de actuele waarde uit te lezen. De eerste is om deze direct uit 248 en 249 te lezen, de tweede is door gebruik te maken van de PRV(—) instructie.
De actuele waarde van de highspeed counter is opgeslagen in 248 en 249 zoals hieronder getoond. Het meest linkse cijfer van 249 zal “F” bevatten als het getal negatief is.
Meest linker 4 cijfers Meest rechter 4 cijfers
249 248
Opmerking
De PRV(—) instructie gebruiken
Actuele waarde veranderen
Up/Down Mode : F0032767 (-32767) t/m 00032767 Incrementing mode: 00000000 t/m 00065535 Deze woorden worden één keer per cyclus gerefreshed, tijdens de I/O refresh,
Zodat er een verschil kan bestaan tussen de uitgelezen actuele waarde en de huidige actuele waarde.
Wanneer de highspeed counter niet wordt gebruikt kunnen deze woorden (bits) worden gebruikt als werkbits.
Lees de actuele waarde van de highspeed counter uit door de PRV(—) instructie te gebruiken.
(@)PRV
000
000
P1
P1: Eerste woord van de actuele waarde
De actuele waarde van de highspeed counter is opgeslagen zoals hieronder getoond. Het meest linkse cijfer zal “F” bevatten als het getal negatief is.
Meest linker 4 cijfers Meest rechter 4 cijfers
P1+1 P1
Up/Down Mode : F0032767 (-32767) t/m 00032767 Incrementing mode: 00000000 t/m 00065535 De actuele waarde wordt uitgelezen op het moment waarop de PRV(—) instructie
wordt uitgevoerd. Er zijn twee manieren om de actuele waarde van de highspeed counter te
veranderen. De eerste manier is door deze te resetten door één van de reset methodes te gebruiken. In dit geval wordt de huidige waarde ingesteld op 0. De tweede manier is door gebruik te maken van de INI(—) instructie.
pagina 50 CPM1/CPM1A programmeerhandleiding
OMRON
CPM1(A) PC Setup
De methode die de INI(—) instructie gebruikt wordt hier uitgelegd. Refereer naar het begin van deze verklaring voor een verklaring van de reset methodes voor highspeed counter 0.
Verander de huidige waarde van de counter door de INI(—) instructie zoals hieronder getoond te gebruiken.
Voorbeeld
(@)INI
000
002
D
D: Eerste woord voor opslag van de veranderingen in de actuele waarde.
Meest linker 4 cijfers Meest rechter 4 cijfers
D+1 D
Up/Down Mode : F0032767 (-32767) t/m 00032767 Incrementing mode: 00000000 t/m 00065535 Zet op het meest linker cijfer van D+1 een F om een negatief getal in te kunnen
stellen. Dit voorbeeld toont een programma waarin de highspeed counter in de
Incrementing Mode wordt gebruikt. Vergelijkingen worden uitgevoerd in de doel mode en afhankelijk van de huidige waarde van de counter zullen de verschillende subroutines uitgevoerd worden. Stel de PC Setup als volgt in voor het uitvoeren van het programma:
DM6642: 0114 (Highspeed counter gebruikt met software reset en in de Incrementing Mode). Gebruik voor alle ander PC Setup instellingen de default waarden.
Als aanvulling moet de volgende data opgeslagen worden voor de vergelijkingstabel:
DM0000 0002 Aantal vergelijkingscondities: 2 DM0001 1000 Doel waarde 1:1000 DM0002 0000 DM0003 0030 Vergelijking 1 interruptroutine nr.: 030 DM0004 2000 Doel waarde 1:2000 DM0005 0000 DM0006 0031 Vergelijking 2 interruptroutine nr.: 031
253.15 Eerste Scan Vlag CTBL
000
000
DM0000
Slaat de vergelijkingstabel op in doel mode en start de vergelijking.
SBN(92)
030
Interrupt programma 030
RET(93)
SBN(92)
031
Interrupt programma 031
RET(93)

2.3.6 Highspeed counter overflows / underflows

Als het toegestane telbereik voor de highspeed counter wordt onder- of overschreden en een underflow of overflow status zal optreden zal de actuele waarde van de counter blijven staan op 0FFF FFFF voor overflows en FFFF FFFF voor underflows tot de overflow/underflow status wordt gewist door de counter te resetten. De toegestane telbereiken zijn als volgt:
Up/Down Mode: F003 2767 t/m 0003 2767 Incrementing Mode: 0000 0000 t/m 0006 5535
CPM1/CPM1A programmeerhandleiding pagina 51
CPM1(A) PC Setup
OMRON
1, 2, 3...
Herstellen
Met een geregistreerde vergelijkingstabel
Zonder geregistreerde vergelijkingstabel
Opmerking
Werking reset
Opstart counter status
Gestopte counter status
1. De waarden die hierboven gegeven worden zijn theoretisch waarbij wordt aangenomen dat de PLC een aannemelijk korte cyclus tijd heeft. Actueel zullen waarden voorkomen die één cyclus voor de overflow/underflow error voorkwam aanwezig waren.
2. Het zesde en zevende cijfer van de highspeed counters actuele waarde zijn normaal gesproken 00, maar kunnen gebruikt worden als “Overflow/Underflow vlaggen" door te detecteren of deze bits uit of aan zijn. Hiermee kan gedetecteerd worden of waarden buiten de toegestane bereiken zijn gekomen.
De highspeed counter kan gereset worden op één van de hiervoor besproken methoden of automatisch door de programma uitvoer te herstarten. De highspeed counter en de gerelateerde functies zullen niet normaal functioneren tot de underflow/overflow status is gewist. De werking tijdens een overflow/underflow status is als volgt:
Ö
Werking van de vergelijkingstabel stopt. De vergelijkingstabel wordt niet gewist.
Ö
Interruptroutines van de highspeed counter worden niet uitgevoerd.
Ö
CTBL(—) kan alleen gebruikt worden om een nieuwe vergelijkingstabel te
Ö
registreren. Als een poging wordt gedaan om de werking van de vergelijkingstabel te starten dan zal deze niet gestart en ook niet geregistreerd worden.
INI(—) kan niet gebruikt worden om de werking van de vergelijkingstabel te
Ö
starten of te stoppen of om de actuele waarde aan te passen. PRV(—) zal alleen 0FFF FFFF of FFFF FFFF uitlezen als actuele waarde.
Ö
Gebruik de volgende procedure om een overflow/underflow status te herstellen.
1. Reset de counter.
2. Stel indien nodig de actuele waarde in met PRV(—).
3. Stel indien nodig de vergelijkingstabel in met CTBL(—).
4. Start de vergelijkingstabel met INI(—).
1. Reset de counter.
2. Stel indien nodig de actuele waarde in met PRV(—).
3. Stel de vergelijkingstabel in en start de werking van deze met CTBL(—) en INI(—).
De bereik vergelijkingsvlaggen in AR11 blijven hun waarde handhaven na het herstellen. De interruptroutine voor een interruptconditie die direct na het herstel ontstaat zal niet worden uitgevoerd als dezelfde interruptconditie al was ontstaan voor de overflow/underflow status optrad. Als de uitvoer van de interruptroutine noodzakelijk is moet AR11 gewist worden voor u de overflow/underflow status hersteld.
Wanneer de highspeed counter wordt gereset, dan wordt de actuele waarde ingesteld op 0. Het tellen zal beginnen van 0 en de vergelijkingstabel, uitvoeringsstatus en uitvoeringsresultaten zullen hun status/waarde behouden.
Wanneer de highspeed counter wordt gestart, dan wordt de counter mode in de PC Setup gelezen en de actuele waarde ingesteld op 0, underflow/overflow statussen worden gewist, de geregistreerde vergelijkingstabel en de executie status ervan wordt gewist (Bereik vergelijkingsresultaten worden altijd gewist wanneer de werking wordt begonnen of wanneer de vergelijkingstabel wordt geregistreerd).
Wanneer de highspeed counter wordt gestopt wordt de actuele waarde vastgehouden, de vergelijkingstabel en de executie status wordt gewist en de bereik vergelijkingsresultaten worden vastgehouden.

2.4 CPM1(A) communicatie functies

De volgende typen communicatie kunnen worden uitgevoerd door periferie poort van de CPM1(A).
Hostlink communicatie met een computer of terminal.
pagina 52 CPM1/CPM1A programmeerhandleiding
OMRON
One-to-one link communicatie met een andere CPM1(A), CQM1 of C200HS/E/G/X PLC. NT-link naar een OMRON NT terminal. Deze communicatievorm naar OMRON terminals werkt aanzienlijk sneller dan Hostlink.
Opmerking
Met de CPM1(A)-CIF01 of CPM1(A)-CIF11 kan de periferie poort worden omgezet naar RS232C of RS422.
Deze sectie verklaart de benodigde instellingen in de PC Setup en methodes om deze communicatie te gebruiken.

2.4.1 Communicatie PC Setup

De PC Setup parameters in DM6650 t/m DM6654 worden gebruikt voor instellingen voor de communicatie poort.
Opmerking
Als de dipswitch op de CPM1(A)-CIF01 op host wordt gezet dan worden de PC Setup communicatie parameters genegeerd en worden de onderstaande instellingen gebruikt voor de periferie poort.
Mode: Hostlink Node nummer: 00 Start bits: 1 bit Data lengte: 7 bits Stop bits: 2 bits Pariteit: Even Baudrate: 9.600 bps (2.400bps & 1 stopbit bij CPU’s van voor juli
Transmission delay: Geen
CPM1(A) PC Setup
‘95)
One-to-one link
Hostlink nodenummer
De instellingen in DM6650 bepalen de belangrijkste communicatie parameters, zoals in het volgende diagram getoond wordt.
Bit 15 0
DM6650
Poort instellingen
00: Standaard communicatie condities 01: Communicatie zoals ingesteld op DM6646, DM6651
Link woorden voor one-to-one link
0: LR 00 t/m LR 15
Communicatie mode
0: Hostlink 2: One-to-one link slave 3: One-to-one link master 4: NT-link
Default:
Hostlink met standaard parameters
Om een 1:1 link te gebruiken zijn de enige instellingen de communicatiemode en de linkwoorden. Stel de communicatiemode voor één van de PLC’s in op de 1:1 master en de andere op de 1:1 slave. Stel vervolgens de linkwoorden in bij de PLC die ingesteld is als master. De instelling op de bits 08 t/m 11 is alleen geldig bij de master van de 1:1 link. (Let op!, 1:1 link is alleen te gebruiken in combinatie met de CPM1(A)-CIF01).
Een nodenummer moet ingesteld worden voor Hostlink communicatie om het verschil aan te kunnen geven tussen nodes wanneer er meer dan 1 node in de communicatie is opgenomen. Deze instelling is alleen nodig voor Hostlink communicatie. Om Hostlink communicatie te kunnen gebruiken moet Hostlink worden ingesteld als communicatiemode en moeten de communicatie parameters worden ingesteld.
Bit 15 0
00
Default:
00
DM6653
Nodenummer
(2 cijfers BCD): 00 t/m 31
CPM1/CPM1A programmeerhandleiding pagina 53
CPM1(A) PC Setup
Stel het nodenummer in op 00, tenzij er meerdere nodes in één netwerk zijn opgenomen.
2.4.2 Hostlink communicatie
Selecteer Hostlink communicatie en stel vervolgens de communicatie parameters in zoals hieronder beschreven. Zorg ervoor dat de communicatie instellingen van de CPM1(A) exact overeen komen met die van het apparaat waarmee gecommuniceerd moet worden.
Standaard communicatie
Als de volgende instellingen correct zijn voor de communicatie zet dan de twee rechter cijfers van DM6650 op 00. Door deze instelling worden de ingevoerde parameters op DM6651 genegeerd.
Start bits: 1 bit Data lengte: 7 bits Stop bits: 2 bits Pariteit: Even Baudrate: 9.600 bps
OMRON
Communicatie instellen
Transmissie frame formaat
Baudrate
Bit 15 0
DM6651
Baudrate (zie tabel) Transmissie Frame Formaat (zie tabel)
Default:
00171Even 01 1 7 1 Oneven 02 1 7 1 None 03172Even 04 1 7 2 Oneven 05 1 7 2 None 06181Even 07 1 8 1 Oneven 08 1 8 1 None 09182Even 10 1 8 2 Oneven 11 1 8 2 None
00 1.200 bps 01 2.400 bps 02 4.800 bps 03 9.600 bps 04 19.200 bps
Standaard communicatie condities.
Instelling Start bit Data lengte Stop bits Pariteit
Instelling Baudrate
Transmissie vertraging
Afhankelijk van het apparaat dat aangesloten is op de periferie poort, kan het nodig zijn om een transmissie vertraging in te stellen. Wanneer dit het geval is, stel dan de transmissie vertraging in om de toegestane tijd te regelen. De transmissie vertraging is de tijd die de PLC zal wachten met het versturen van een volgend byte nadat er een is verzonden.
Bit 15 0
DM6652
Transmissie vertraging (4 cijfers BCD; unit 10 ms)

Hostlink communicatie

Default:
Hostlink communicatie is ontwikkeld door OMRON om één of meer PLC’s met een
Geen vertraging
computer te kunnen laten communiceren via een RS-232C kabel waarbij de computer data uit de PLC kan lezen of ernaar kan schrijven. Normaal stuurt de computer een commando naar de PLC en stuurt de PLC automatisch een
pagina 54 CPM1/CPM1A programmeerhandleiding
OMRON
response terug. De communicatie wordt dus uitgevoerd zonder dat de PLC er actief bij is betrokken. De PLC kan ook communicatie opbouwen naar de computer indien dit noodzakelijk is. In dit geval wordt gesproken over event driven communicatie.
Over het algemeen zijn er twee manieren om Hostlink communicatie te implementeren. De ene manier is gebaseerd op C-mode commando’s en de andere op FINS (CV-mode) commando’s. De CPM1(A) ondersteunt alleen de C­mode commando’s.

2.4.3 One-to-one link communicatie

Als twee CPM1(A)'s op 1:1 basis worden gekoppeld via de periferie poort, dan kunnen ze het LR geheugen gezamenlijk delen. Wanneer twee PLC’s one-to-one worden gekoppeld, dan zal de een als master en de ander als slave fungeren.
Opmerking
One-to-one link
Bij de CQM1 en C200HS/E/G/X kan de periferie poort niet worden gebruikt voor een 1:1 link. Bij deze CPU’s dient de RS232C poort gebruikt te worden. Bij de CPM1(A) kan een 1:1 link alleen gebruikt worden in combinatie met een CPM1(A)­CIF01.
Een one-to-one link staat twee PLC's toe om data gemeenschappelijk te delen in het LR gebied. Zoals in het onderstaande diagram getoond, zal data die geschreven wordt in een woord in het LR gebied van de ene PLC automatisch naar hetzelfde woord in het LR gebied van de andere PLC worden geschreven. Elke PLC krijgt een aantal vaste woorden toegewezen waarop geschreven kan worden en een aantal vaste woorden waar de andere PLC op mag schrijven.
Master
CPM1(A) PC Setup
Slave
Opmerking
Communicatie procedure
Voorbeeld
Master gebied
Slave gebied
Schrijf "1"
1
Automatisch geschreven
1
Schrijf "1"
1
Master gebied
Slave gebied
De woorden die door de PLC’s gebruikt worden staan in de onderstaande tabel. Deze zijn afhankelijk van de in de PC Setup ingestelde link woorden voor de master.
DM6645 instelling LR00 t/m LR63 LR00 t/m LR31 LR00 t/m LR15
Master woorden LR00 t/m LR31 LR00 t/m LR15 LR00 t/m LR07 Slave woorden LR32 t/m LR63 LR16 t/m LR31 LR08 t/m LR15
De CPM1(A) ondersteund alleen de optie LR00 t/m LR15 voor de grootte van het LR gebied. Word een CPM1(A) gebruikt in combinatie met een CQM1 of C200HS/E/X/G, dan moet bij deze PLC’s dus ook voor deze instelling worden gekozen.
Als de instellingen voor de master en de slave correct zijn gemaakt, dan wordt de one-to-one link automatisch gestart door simpelweg de spanning op beide PLC’s te zetten. De 1:1 link werkt onafhankelijk van de mode van de PLC.
Dit voorbeeld toont een programma dat de statussen van de ene CPU doorgeeft aan de andere. Dit gebeurt door middel van een one-to-one link die ingesteld staat op de RS-232C poort. Voor het programma uitgevoerd kan worden moeten de volgende instellingen in de PC Setup gemaakt worden.
Master: DM6645: 3000 (one-to-one link master; LR 00 t/m LR 15 wordt gebruikt) Slave: DM6645: 2000 (one-to-one link slave) Voor de rest van de parameters in de PC Setup wordt aangenomen dat ze op de
standaard waarde staan ingesteld. De woorden die voor de one-to-one link worden gebruikt zijn hieronder getoond.
Master Slave
LR00
LR07
LR08
LR15
Schrijven
Lezen
Lezen
Schrijven
LR00
LR07
LR08
LR15
CPM1/CPM1A programmeerhandleiding pagina 55
CPM1(A) PC Setup
Master
Slave
OMRON
Wanneer het programma in zowel de master als de slave wordt uitgevoerd, zal de status van woord 001 van elke unit op woord 10 van de andere unit getoond worden. Woord 001 is een ingangswoord en 10 is een uitgangswoord.
253.13 MOV(21)
AltijdAAN
253.13
AltijdAAN
001
LR00
MOV(21)
LR08
10
MOV(21)
001
LR08
MOV(21)
LR00
10
2.5 Analoge instellingen
In de CPM1(A) verplaatst de analoge instellingen functie automatisch de instellingen van de CPU's potentiometers naar woord 250 en 251. Deze functie is handig wanneer ingestelde waarden in het programma voorkomen die tijdens bedrijf veranderd moeten worden. Deze ingestelde waarden kunnen aangepast worden door aan de potentiometers op de CPU te draaien.
De volgende figuur geeft de IR woorden aan die bij de potentiometers horen. De potentiometers zijn ondergebracht onder hetzelfde luikje op de CPU waar zich de periferiepoort bevindt.
01
De instellingen van de potentiometers worden opgeslagen in BCD en kunnen variëren van 0000 t/m 0200. Gebruik een precisieschroevendraaier om de instellingen aan te passen. Draai de schakelaars met de klok mee om de waarde te verhogen.
Opmerking
De CPM1(A) vernieuwt zolang de CPU aan staat de woorden 250 t/m 251 voortdurend met de waarde die ingesteld is op de potentiometers. Overschrijf deze woorden niet met het programma of periferie.
Het adres voor schakelaar 0 is woord 250 Het adres voor schakelaar 1 is woord 251

2.6 Quick response ingangen

De CPM1(A)-10CDR PLC’s beschikken over twee quick response ingangen en de CPM1(A)-20CDR en 30CDR over vier quick response ingangen. Voor de quick response ingangen en de interrupt ingangen worden dezelfde PLC ingangen gebruikt.
Quick response ingangen gebruiken een interne buffer, zodat ingangssignalen korter dan één cyclus gedetecteerd kunnen worden. Signalen met een pulsbreedte tot 0,2ms kunnen met deze functie gedetecteerd worden, onafhankelijk van hun timing ten opzichte van de cyclus van de PLC.
pagina 56 CPM1/CPM1A programmeerhandleiding
OMRON
CPM1(A) PC Setup
Instellen
Programma voorbeeld
Input
000.03
IR000.03 in de PLC
overhead I/O refresh Programma
uitvoer
1 scan
overhead I/O refresh Programma
uitvoer
PLC model Input bits Min input puls breedte
CPM1(A)-10CDR 000.03 & 000.04 0,2 ms CPM1(A)-20CDR/30CDR 000.03 t/m 000.06
De ingangen 000.03 t/m 000.06 (000.03 & 000.04 voor CPM1(A)-10CDR) kunnen worden ingesteld als quick response ingangen op DM6628 zoals in de volgende figuur getoond is.
Bit 15 0
DM6628
Input interrupt 0 instelling Input interrupt 1 instelling Input interrupt 2 instelling Input interrupt 3 instelling
0 : Normale input 1 : Interrupt input 2 : Quick response input
Default:
Alle ingangen normaal
Het onderstaande programma kan gebruikt worden om ingang 000.03 als quick response ingang te gebruiken. DM6628 moet worden ingesteld op 0002, de rest van de PC Setup wordt ingesteld op de default waarde.
253.15 INT(89)
000
000
#000E
CPM1/CPM1A programmeerhandleiding pagina 57

Geheugengebieden

OMRON
3 Geheugengebieden
Verschillende typen data zijn nodig om een besturing effectief en correct te kunnen laten werken. Om met deze verschillende typen data overweg te kunnen is de PLC voorzien van verschillende geheugengebieden voor data opslag, waarin elk gebied een andere functie heeft. De gebieden die gebruikt worden in het programma worden datagebieden genoemd. Het andere geheugengebied is het programmageheugen, waar het programma zelf in wordt opgeslagen. Deze gebieden worden hier individueel besproken waarbij alle informatie die nodig is om het te kunnen gebruiken wordt gegeven. Daarom wordt het SR en TR geheugen hier ook besproken, alhoewel dit strikt gezien geen geheugengebieden zijn.
3.1 Introductie
Details waaronder de naam, het acroniem en de functie van elke gebied worden in de volgende tabel samengevat. Op de laatste twee na zijn dit datagebieden. Data en geheugengebieden worden normaal gesproken benoemd met hun acroniem.
Gebied Acroniem Functie
Interne relais IR Gebruikt om I/O punten aan te sturen en om tijdelijke data in op te slaan. Speciale relais SR Bevat systeem klokpulsen, vlaggen, bits met speciale functies en status informatie. Auxiliary relais AR Bevat vlaggen en bits voor speciale functies. Dit gebied houdt de status vast na
spanningsuitval.
Datageheugen DM Gebruikt voor interne dataopslag en manipulatie. Dit gebied houdt de status vast na
spanningsuitval.
Holding relais HR Gebruikt om data (bits) in op te slaan waarvan de status vastgehouden moet worden als de
spanning van de PLC wordt afgezet.
Timer/Counter TIM / CNT
(TC)
Link relais LR Beschikbaar als werkbits. Bij diverse soorten OMRON netwerken wordt dit gebied gebruikt
Temporary relais TR Gebruikt om tijdelijk executiecondities in op te slaan. Deze bits kunnen alleen met de LOAD
Programma geheugen
UM Bevat het programma dat wordt uitgevoerd door de CPU.
Gebruikt om timers en counters te definiëren en de timer- en countervlaggen te bereiken. Wanneer dit gebied wordt uitgelezen of bewerkt met instructies op woordniveau wordt de actuele waarde van een timer of counter uitgelezen. Wordt het gebruikt als bitoperand dan wordt de completionvlag van een timer of counter uitgelezen. De completionvlag is hoog als een timer of counter is afgelopen.
als gemeenschappelijk geheugen.
(LD) en Output (OUT) instructies aangestuurd worden. Bij het programmeren in een ladderdiagram mogen ze niet gebruikt worden. Het opslaan van de status van een executieconditie is nodig tijdens het programmeren van bepaalde aftakkingen in ladderdiagrammen.
Werkbits en woorden
Wanneer sommige bits en woorden in bepaalde datagebieden niet gebruikt worden voor hun eigenlijke doel, kunnen ze vrij in het programma gebruikt worden om statussen in op te slaan. Woorden en bits die op deze manier gebruikt worden, worden werkwoorden en werkbits (helpwoorden, helpbits) genoemd. Bijna alle ongebruikte bits kunnen worden gebruikt als werkbits. Deze bits worden verderop in dit hoofdstuk gebied voor gebied uitgelegd. Het daadwerkelijk toepassen van werkbits en werkwoorden wordt uitgelegd in de sectie “Programma uitvoer” op pagina 30.
Vlaggen en controlebits
Sommige datagebieden bevatten vlaggen en/of controlebits. Vlaggen zijn bits die automatisch aan- en uitgezet worden om een bepaalde status van de PLC of instructie weer te geven. Alhoewel sommige vlaggen door de gebruiker aan- en uitgezet kunnen worden, zijn de meeste vlaggen read only. De gebruiker mag alleen de status van de vlag uitlezen, deze vlaggen zijn niet direct aan te sturen.
Controlebits zijn bits die door de gebruiker aan- en uitgezet kunnen worden om bepaalde aspecten binnen de werking van de PLC of een instructie te beïnvloeden. Elk bit dat een naam heeft gekregen, met de naam bit in plaats van vlag, is een controlebit. Bijvoorbeeld restartbits zijn controlebits.
pagina 58 CPM1/CPM1A programmeerhandleiding
OMRON

3.2 Geheugengebieden voor de CPM1(A)

Deze sectie beschrijft de structuur van de CPM1(A)'s geheugengebieden en verklaart hoe deze te gebruiken. Een overzicht van de verschillende geheugengebieden voor de CPM1(A) kan in de sectie hierover worden gevonden
3.2.1 Geheugengebied functie
Geheugengebieden
Geheugengebied structuur
Datagebied Grootte Woorden Bits Functie
IR gebied1Input gebied 160 000 t/m 009 000.00 t/m
Output gebied 010 t/m 019 010.00 t/m
Werk gebieden
SR gebied 384 bits 232 t/m 255 232.00 t/m
TR gebied 8 bits --- TR0 t/m
HR gebied
AR gebied
LR gebied
Timer/Counter gebied
DM gebied
Gebruiker programma (user program) gebied (UM gebied)
2
2
1
Read/Write21.000
2
Read-only
Error historie
4
gebied PC Setup
3
4
4
De volgende geheugengebieden kunnen gebruikt worden bij de CPM1(A).
009.15
019.15 512 bits min.
320 bits HR00 t/m
256 bits AR00 t/m
256 bits LR00 t/m
128 bits TC000 t/m TC127
woorden
456 woorden 22 woorden 56 woorden
2.048 woorden
200 t/m 231 200.00 t/m
231.15
255.07
TR7 HR00.00
HR19
AR15
LR16
(timer/counter nummers)
DM0000 t/m DM0999,
DM6144 t/m DM6599 DM1000 t/m DM1022 DM6600 t/m DM6655
---- Gebruikt om het programma in op te slaan. Gebufferd
t/m HR19.15 AR00.00 t/m AR15.15 LR00.00 t/m LR16.15
--- DM gebied data kan alleen worden geadresseerd in
--- Kan niet overschreven worden door het programma
--- Gebruikt om de tijd van voorkomen en de errorcode
--- Gebruikt om diverse instellingen van de PLC in op te
Deze bits kunnen worden toegewezen aan externe I/O.
Werkbits hebben geen speciale functie en kunnen vrij gebruikt worden in het programma Deze bits hebben specifieke functies. Het zijn een aantal vlaggen en control bits Deze bits worden gebruikt om tijdelijke statussen van programma vertakkingen in op te slaan Deze bits kunnen gebruikt worden om bits op te slaan waarvan de status behouden moet worden als de spanning van de CPU wordt afgezet Deze bits hebben specifieke functies. Het zijn een aantal vlaggen en control bits
Gebruikt door de 1:1 datalink met de periferie poort
Dezelfde nummers worden gebruikt voor timers en voor counters. TC000 wordt gebruikt door de interval timer.
woord georiënteerde instructies. De hier opgeslagen waarden behouden hun waarde bij spanningsuitval.
weg te zetten van errors die zijn voorgekomen
slaan
bij spanningsuitval.
Noot
1. IR en LR bits die niet gebruikt worden voor hun toegewezen functie kunnen gebruikt worden als werkbits.
2. De inhoud van het HR, AR, CNT en read/write DM geheugen wordt door een condensator van back-up spanning voorzien. Bij 25ºC zal deze condensator het geheugen voor 20 dagen vasthouden. Raadpleeg de installatie handleiding van de CPM1(A) voor informatie over het effect van de omgevingstemperatuur op de back-up tijd van de condensator.
3. Wanneer een actuele waarde geadresseerd moet worden, wordt het TC nummer gebruikt als woord data, wanneer completionvlaggen geadresseerd moeten worden wordt het nummer gebruikt als bit data.
4. Data in DM1000 t/m DM1022 & DM6144 t/m DM6655 kan niet worden overschreven door het PLC programma. Het is echter wel mogelijk om deze data met SYSWIN of een handprogrammeerapparaat te overschrijven.
Opmerking
De woorden 020 t/m 199 uit het IR gebied zijn bij de CPM1(A) niet aanwezig. Deze kunnen dus ook niet gebruikt worden in het programma.
Een uitgebreidere uitleg van de verschillende geheugengebieden volg verderop in dit hoofdstuk.
CPM1/CPM1A programmeerhandleiding pagina 59
Geheugengebieden

3.3 Toewijzen van I/O bits

De volgende tabel toont de bits in het IR geheugen die aan de I/O van een CPM1 CPU en uitbreidingsunit worden toegewezen. Op een CPM1 CPU kan 1 uitbreiding worden aangesloten. Dit kan een CPM1 uitbreidingsunit zijn, maar ook een CPM1A uitbreidingsunit mag op een CPM1 worden aangesloten. Alle CPM1 CPU’s zijn uit te breiden
Aantal I/O op de CPU 10 20 30 40
CPU
aansluitingen
Uitbreidings-
unit
Voedingsspanning
Typenummer Relais
Ingangen
Uitgangen
Ingangen
Uitgangen
uitgangen
6pts
000.00 t/m 000.05
4pts
010.00 t/m 010.03
12pts
001.00 t/m 001.11 8pts
011.00 t/m 011.07 AC DC AC DC AC DC --- --­CPM1­10CDR-A
CPM1­10CDR-D
12pts
000.00 t/m 000.11
8pts
010.00 t/m 010.07
12pts
001.00 t/m 001.11 8pts
011.00 t/m 011.07
CPM1­20CDR-A
CPM1­20CDR-D
18pts
000.00 t/m 000.11
001.00 t/m 001.05 12pts
010.00 t/m 010.07
011.00 t/m 011.03 12pts
002.00 t/m 002.11 8pts
012.00 t/m 012.07
CPM1­30CDR-A
CPM1­30CDR-D
De volgende tabel toont de bits in het IR geheugen die aan de I/O van een CPM1A CPU en uitbreidingsunit worden toegewezen. Op een CPM1 CPU kan 1 uitbreiding worden aangesloten. Dit kan een CPM1 uitbreidingsunit zijn, maar ook een CPM1A uitbreidingsunit mag op een CPM1 worden aangesloten. Alleen de CPM1A CPU’s met 30 en 40 I/O zijn uit te breiden.
---
---
---
---
--- ---
OMRON
Aantal I/O op de CPU 10 20 30 40
CPU
aansluitingen
Uitbreidings-
unit
Voedingsspanning
Typenummer PNP uit
Ingangen
Uitgangen
Ingangen
Uitgangen
Ingangen
Uitgangen
Ingangen
Uitgangen
NPN uit
6pts
000.00 t/m 000.05
4pts
010.00 t/m 010.03
--- --- 12pts
--- --- 8pts
--- --- 12pts
--- --- 8pts
--- --- 12pts
--- --- 8pts
DC DC DC DC CPM1A-10CDT1-D CPM1A-20CDT1-D CPM1A-30CDT1-D CPM1A-30CDT1-D CPM1A-10CDT-D CPM1A-20CDT-D CPM1A-30CDT-D CPM1A-30CDT-D
12pts
000.00 t/m 000.11
8pts
010.00 t/m 010.07
18pts
000.00 t/m 000.11
001.00 t/m 001.05 12pts
010.00 t/m 010.07
011.00 t/m 011.03
002.00 t/m 002.11
012.00 t/m 012.07
003.00 t/m 003.11
013.00 t/m 013.07
004.00 t/m 004.11
014.00 t/m 014.07
24pts
000.00 t/m 000.11
001.00 t/m 001.11 16pts
010.00 t/m 010.07
011.00 t/m 011.07 12pts
002.00 t/m 002.11 8pts
012.00 t/m 012.07 12pts
003.00 t/m 003.11 8pts
013.00 t/m 013.07 12pts
004.00 t/m 004.11 8pts
014.00 t/m 014.07
3.4 Datagebied structuur
Wanneer een datagebied benoemd wordt, moet het acroniem voor dat gebied altijd ingevoerd worden, behalve voor het IR en SR gebied. Alhoewel de acroniemen voor IR en SR in deze tekst soms genoemd worden, zijn ze niet nodig tijdens invoer van het programma. SYSWIN zal zelfs een foutmelding geven wanneer de acroniemen SR en IR worden ingevoerd. Van elk datagebied dat in deze tekst genoemd wordt zonder acroniem kunt u aannemen dat het in het SR of IR gebied ligt. Omdat IR en SR adressen opeenvolgend in het geheugen geplaatst zijn, zijn de woord en bitadressen voldoende om het onderscheid tussen deze twee gebieden te maken.
De actuele locatie van data binnen een gebied (behalve voor het TC gebied) wordt bepaald door het adres. Het adres bepaalt het woord en/of bit in een gebied waar de data geplaatst is. Het TC gebied bestaat uit TC nummers, waarvan elk wordt
pagina 60 CPM1/CPM1A programmeerhandleiding
OMRON
Geheugengebieden
gebruikt voor een specifieke timer of counter in het programma. Raadpleeg het hoofdstuk "TC (timer/counter) gebied" op pagina 69 voor meer details over TC nummers en hoofdstuk "Timer en counter instructies" op pagina 86 voor informatie over de werking van timers en counters. Alhoewel voor het timer/counter gebied de acroniem TC wordt gebruikt wordt tijdens het programmeren TIM voor timers en CNT voor counters gebruikt.
De overige datagebieden (d.w.z. de IR, SR, HR, DM, AR en LR gebieden) bestaan uit woorden, waarbij elk woord bestaat uit 16 bits, die genummerd zijn van 00 t/m 15 van rechts naar links. De IR woorden 000 en 001 zijn hieronder getoond met bitnummers. De inhoud van elk woord is getoond met alleen nullen. Bit 00 wordt het meest rechter bit en 15 het meest linker bit genoemd.
De term minst significant wordt ook vaak gebruikt voor het meest rechter bit en de term meest significant voor het meest linker bit. Deze termen worden in deze handleiding niet vaak gebruikt, omdat een enkel data woord vaak wordt gesplitst in twee of meer delen, waarbij elk deel wordt gebruikt voor verschillende parameters of operands. Hierbij kan bij gebruik van de termen “meest” en “minst” significant verwarring ontstaan.
Bit nummer 151413121110090807060504030201 00
IR woord 000000000000000000 0 IR woord 001000000000000000 0
Het DM gebied is alleen op woordniveau te adresseren. Het is niet direct mogelijk om een individueel bit in een DM woord te adresseren. Data in de IR, SR, HR, AR en LR gebieden is bereikbaar op zowel woord- als bitniveau, afhankelijk van de instructie die voor het verwerken van de data gebruikt wordt.
Om een woord uit een van deze gebieden te benoemen, is alles wat nodig is het acroniem (indien nodig) en het adres van het woord. Om een bit uit een gebied te benoemen moet het acroniem ingevoerd worden gevolgd door het adres van het woord en het adres van het bit in dat woord. In SYSWIN worden woord- en bitadres van elkaar gescheiden door een punt (.). Wordt de punt in SYSWIN niet ingevoerd dan wordt aangenomen dat de laatst twee ingevoerde cijfers het bitadres in het woord zijn. Het nummer van een bit mag tussen de 00 en 15 liggen en wordt decimaal ingevoerd.
Hetzelfde TC nummer kan gebruikt worden om zowel de actuele waarde van de timer of counter te adresseren of het bit dat functioneert als de completionvlag voor de timer of counter. Dit wordt in meer detail beschreven in hoofdstuk "TC (timer/counter) gebied" op pagina 69.
3.4.1 Data structuur
Gebied Woord toewijzing Bit toewijzing
IR 000 000.15 (meest linker bit in woord 000) SR 252 252.00 (meest rechter bit in woord 252) DM DM0250 Niet mogelijk TC TIM057 of CNT115 (voor de
actuele waarde)
LR LR12 LR12.00
TIM057 of CNT115 (voor de completionvlag)
Woorddata die ingevoerd wordt als decimale waarde wordt opgeslagen in BCD formaat (binary-coded decimal); woorddata die ingevoerd wordt als hexadecimale waarde wordt opgeslagen in binair formaat. Elke vier bits van een woord representeren één digit. Dit element van vier bits wordt ook wel een nibble genoemd. Zowel het hexadecimale als het decimale digit is numeriek equivalent aan de waarde van de vier bits waaruit het digit is opgebouwd. Eén woord data bevat dus vier digits, die van rechts naar links worden genummerd. De aan deze digits toegewezen nummers en de daarbij horende bitnummers voor een woord worden hieronder getoond.
Woord Byte 1 (msb) 0 (lsb) Digit3210 Bit 15151312111009080706050403020100
CPM1/CPM1A programmeerhandleiding pagina 61
Geheugengebieden
Wanneer gerefereerd wordt naar de digits in een woord, wordt het digit met het nummer 0 het meest rechter of meest significante digit (LSD) genoemd en het digit met het nummer 3 het meest linker of meest significante digit (MSD).
Wanneer data wordt geplaatst op datagebieden moet het in het juiste formaat worden ingevoerd. Dit is geen probleem wanneer individuele bits geadresseerd worden. Deze worden alleen aan (equivalent van de binaire waarde 1) of uit (een binaire waarde 0) gezet. Echter bij het invoeren van woorddata is het belangrijk of dit decimaal (BCD) of hexadecimaal ingevoerd moet worden, afhankelijk van wat de gebruikte instructie wenst. Het hoofdstuk "Instructieset" op pagina 71 specificeert het door instructies gebruikte data formaat.

3.4.2 Verschillende vormen data omzetten

Binaire en hexadecimale data kan eenvoudig omgezet worden tussen deze twee talstelsels, aangezien elke vier bits van een binair nummer numeriek gelijk zijn aan één cijfer van een hexadecimaal nummer. Het binaire getal 0101111101011111 wordt omgezet naar een hexadecimaal getal door steeds een groepje van vier bits apart te nemen vanaf het meest rechter bit. Binair 1111 is gelijk aan hexadecimaal F; binair 0101 is gelijk aan hexadecimaal 5. Het hexadecimale equivalent is dus 5F5F of 24,415 decimaal (4095 x 5 + 265 x 15 + 16 x 5 + 15).
Decimaal en BCD kunnen eenvoudig omgezet worden. In dit geval is elk BCD cijfer (d.w.z. elke groep van vier bits) numeriek equivalent aan het corresponderende decimale cijfer. De BCD bits 0101011101010111 worden geconverteerd naar decimaal door elke groep van vier bits vanaf rechts apart te nemen. Binair 0101 is gelijk aan decimaal 5; binair 0111 is gelijk aan decimal 7. Het decimale equivalent is dus 5757. Houd in de gaten dat dit niet dezelfde waarde is als het hexadecimale equivalent van 0101011101010111 dat 5757 hexadecimaal is of 22359 decimaal (4095 x 5 + 256 x 7 + 16 x 5 + 7).
Omdat het numerieke equivalent van elke vier BCD binaire bits gelijk is aan een decimaal cijfer, kunnen bits combinaties die een numeriek groter resultaat opleveren dan 9 niet gebruikt worden. D.w.z., 1011 is niet toegestaan omdat dit het numerieke equivalent is van hexadecimaal B, wat niet uitgedrukt kan worden in één cijfer in decimale notatie. De binaire code 1011 is natuurlijk wel toegestaan in een hexadecimale code en is equivalent aan het hexadecimale cijfer B.
Er zijn instructies beschikbaar om data van BCD naar hexadecimaal of vice versa om te zetten. Raadpleeg het hoofdstuk "Dataconversie" op pagina 120 voor meer details. Tabellen met het binaire equivalent van hexadecimale en BCD cijfers zijn opgenomen in de appendix (“conversietabel hexadecimaal, bcd, binair” op pagina
159).
OMRON
3.4.3 Decimale punt
De decimale punt wordt alleen bij timers gebruikt. Hier representeert het minst significante cijfer tienden van een seconde. (De punt wordt echter bij de timer waarde niet ingevoerd). Alle andere instructies in de PLC werken in principe met integers.

3.5 IR (interne relais) gebied

Het IR gebied wordt gebruikt om I/O punten aan te sturen en om intern in de PLC data op te kunnen slaan en te manipuleren. Het IR gebied is op bit- en woordbasis benaderbaar.
Woorden in het IR gebied die worden gebruikt om I/O punten aan te sturen worden I/O woorden genoemd. Bits in I/O woorden worden I/O bits genoemd. Bits in het IR gebied die niet zijn toegewezen aan I/O kunnen worden gebruikt als werkbits. Werkbits uit het IR gebied worden gereset als de voedingsspanning wordt onderbroken of als de verwerking van het PLC programma wordt gestopt of gestart.
I/O woorden
pagina 62 CPM1/CPM1A programmeerhandleiding
Een signaal dat van buiten de PLC naar binnen gaat is een inputsignaal, het bit dat eraan is toegewezen is een inputbit. Een signaal dat vanuit de PLC naar buiten gaat is een outputsignaal, het erbij horende bit is een outputbit. Om een uitgang
OMRON
Inputbit gebruik
Outputbit gebruik
I/O adressen
1, 2, 3...
Werkbits
Geheugengebieden
aan te zetten moet het erbij horende outputbit aangezet worden. Wanneer een input aan gaat, gaat het erbij horende inputbit ook aan. Deze feiten kunnen gebruikt worden in het programma in inputstatussen te bereiken en outputstatussen aan te sturen via I/O bits.
Inputbits kunnen gebruikt worden om externe signalen op de PLC aan te sluiten en kunnen op elke mogelijke manier in het programma gebruikt worden. Elke inputbit kan zo vaak als gewenst in het programma gebruikt worden om een juiste aansturing te krijgen. Inputbits kunnen niet gebruikt worden in instructies die een bitstatus aansturen zoals de OUT, DIFU en KEEP instructies.
Outputbits worden gebruikt om resultaten uit het programma naar buiten te brengen en kunnen op elke plaats in het programma gebruikt worden. Omdat uitgangen maar één keer per scan worden aangestuurd (d.w.z. een keer per uitvoer van het programma), kan elk outputbit maar in één instructie die de status aanstuurt gebruikt worden. Dit zijn instructies als OUT, KEEP(11), DIFU(13), DIFD(14) en SFT(10). Als contact mag het outputbit zo vaak gebruikt worden als gewenst is. Als een outputbit meer dan één keer in het programma wordt aangestuurd, wordt de status van de uitgang bepaald door de laatste instructie die het bit aanstuurt.
Inputbits beginnen op 000.00 en outputbits beginnen op 010.00. Bij de CPM1(A) kan alleen 000.00 t/m 009.15 gebruikt worden voor inputbits en alleen 010.00 t/m
019.15 kan gebruikt worden voor outputbits. Alhoewel het I/O gebied uit 20
woorden bestaat kan de CPM1(A) momenteel maximaal 50I/O aansturen.
1) Bij het IR gebied wordt het acroniem IR niet voor het bit of woordnummer geplaatst. Bij de andere datagebieden gebeurd dit wel.
2) Inputbits kunnen niet worden gebruikt in output instructies. Gebruik hetzelfde outputbit niet in meer dan één OUT en/of OUT NOT instructie. In principe is het niet echt fout om het wel te doen, maar het kan vreemde effecten opleveren die voor veel gebruikers niet verklaarbaar zijn.
Bij de CPM1(A) kunnen de bits 200.00 t/m 231.15 vrijelijk in het programma gebruikt worden als werkbit. Ze kunnen echter alleen gebruikt worden in het programma en niet voor externe I/O. Werkbits worden allemaal uitgezet wanneer de CPM1(A) voedingsspanning uitgezet wordt of wanneer de PLC begint of stopt met het verwerken van het programma.

3.6 SR (speciale relais) gebied

Het SR gebied bevat vlaggen en controlebits die gebruikt kunnen worden voor het bekijken van de werking van de PLC, voor toegang tot de klokpulsen en instructie status en errorvlaggen. Het adresbereik van het SR gebied hangt af van het type CPU dat wordt geprogrammeerd.
De volgende tabellen geven een lijst van vlaggen en controlebits in het SR gebied en hun functie. De meeste van deze bits worden verderop in dit hoofdstuk meer in detail beschreven. In principe is de beschrijving op volgorde van het bitnummer. Alleen bits die bij dezelfde functie horen zijn gegroepeerd.
Tenzij anders vermeld wordt zijn vlaggen uit tot de gespecificeerde conditie optreedt, waarop ze aangezet worden. Restartbits zijn normaal uit maar als de gebruiker ze aan en vervolgens uit zet zal de gespecificeerde functie gereset worden. Andere controlebits zijn uit tot de gebruiker de status verandert.

3.6.1 SR gebied overzicht

De toewijzing van vlaggen en bits in het Special Relais Gebied is afhankelijk van het geselecteerde CPU type. Niet alle CPU typen ondersteunen alle bits of woorden in het SR Gebied.
Woord Bit(s) Functie
232 t/m 235 00 t/m 15 Macro functie input gebied (werkbits als de MCRO(99) instructie
236 t/m 239 00 t/m 15 Macro functie output gebied (werkbits als de MCRO(99)
240 00 t/m 15 Input interrupt 0 counter mode ingestelde waarde (hex)
niet gebruikt wordt).
instructie niet gebruikt wordt).
CPM1/CPM1A programmeerhandleiding pagina 63
Geheugengebieden
OMRON
Woord Bit(s) Functie
241 00 t/m 15 Input interrupt 1 counter mode ingestelde waarde (hex) 242 00 t/m 15 Input interrupt 2 counter mode ingestelde waarde (hex) 243 00 t/m 15 Input interrupt 3 counter mode ingestelde waarde (hex) 244 00 t/m 15 Input interrupt 0 counter mode actuele waarde min één (hex) 245 00 t/m 15 Input interrupt 1 counter mode actuele waarde min één (hex) 246 00 t/m 15 Input interrupt 2 counter mode actuele waarde min één (hex) 247 00 t/m 15 Input interrupt 3 counter mode actuele waarde min één (hex) 248 t/m 249 00 t/m 15 Highspeed counter actuele waarde 250 00 t/m 15 Analoge potentiometer 0 ingestelde waarde (0 tot 200 BCD) 251 00 t/m 15 Analoge potentiometer 1 ingestelde waarde (0 tot 200 BCD) 252 00 Highspeed counter resetbit
01 t/m 07 Niet gebruikt 08 Periferie poort resetbit 09 Niet gebruikt 10 PC Setup resetbit 11 Forced status hold bit
uit: De status van bits die geforceerd zijn ge(re)set wordt gewist wanneer de PLC van PROGRAM mode naar MONITOR mode wordt geschakeld. aan: De status van bits die geforceerd zijn ge(re)set wordt vastgehouden wanneer de PLC van PROGRAM mode naar MONITOR mode wordt geschakeld.
12 Data retention control bit
uit: De status van IR en LR bits wordt gereset wanneer de werking van de PLC wordt gestart of gestopt. aan: De status van IR en LR bits wordt vastgehouden wanneer
de werking van de PLC wordt gestart of gestopt. 13 Niet gebruikt 14 Errorlog resetbit 15 Niet gebruikt
253 00 t/m 07 FAL error code
08 Niet gebruikt 09 Cyclustijd te groot errorvlag (Hoog als de cyclustijd boven de
100ms komt) 10 t/m 12 Niet gebruikt 13 Altijd aan vlag 14 Altijd uit vlag 15 Eerste scan vlag
254 00 1 minuut klokpuls
01 0.02 seconde klokpuls 02 Negatief (N) vlag 03 t/m 05 Niet gebruikt 06 Differential monitor complete vlag 07 STEP(08) uitgevoerd vlag 18 t/m 15 Niet gebruikt
255 00 0.1-seconde klokpuls
01 0.2-seconde klokpuls 02 1.0-seconde klokpuls 03 Instructie executie error (ER) vlag 04 Carry (CY) vlag 05 Groter dan (GR) vlag 06 Gelijk aan (EQ) vlag 07 Kleiner dan (LE) vlag
Opmerking
Schrijven is niet mogelijk op een aantal woorden uit het SR gebied
3.6.2 Forced status hold bit
Het

Forced status hold bit

gereset zijn hetzelfde blijft als de PLC wordt geschakeld van PROGRAM naar MONITOR mode om de verwerking van het programma te stoppen of te starten. Als het
forced status hold bit
Als het bit uit is worden alle bits in hun standaard staat (uit) gezet wanneer de werking van het programma wordt gestart of gestopt. Het alleen effectief wanneer het in de PC Setup geactiveerd is.
pagina 64 CPM1/CPM1A programmeerhandleiding
bepaalt of de status van bits die geforceerd geset of
aan is, zullen de bit statussen vastgehouden worden.
forced status hold bit
is
OMRON
Geheugengebieden
Status handhaven tijdens opstarten
De status van het interruptie. Het
forced status hold bit
forced status hold bit
mode wordt gezet. Het
is niet werkzaam wanneer de PLC in de RUN
forced status hold bit
verandert niet door een spannings-
kan alleen met periferie ingesteld
worden. De PLC kan het niet vanuit het programma aansturen. De status van het
forced status hold bit
en dus de status van de geforceerd gesette en geresette bits kan worden vastgehouden wanneer de spanning uit- / aangezet wordt. Dit wordt gerealiseerd door het in de PC Setup in te stellen. Als deze optie wordt gebruikt zal de status van het
forced status hold bit
worden
bewaard als de voedingsspanning uit/aan wordt gezet. Als dit wordt gedaan en het
forced status hold bit
is aan, dan zal de status van de geforceerd gesette en geresette bits worden bewaard zoals getoond in de volgende tabel. Het gebruik van het
Forced status hold
bit beïnvloedt de werking niet als de PLC in RUN mode staat. Bij het schakelen naar de RUN mode worden geforceerde bits altijd op hun standaard waarde (dat is uit) ingesteld.
Status voor shutdown Status na het opstarten
Forced status hold
bit
AAN Uitgevoerd AAN Status bewaard
UIT Uitgevoerd UIT Standaard status
PC Setup
Niet uitgevoerd UIT Standaard status
Niet uitgevoerd UIT Standaard status
Forced status hold
bit
geforceerde set /
reset bits
Raadpleeg het hoofdstuk "Instructieset" op pagina 71 voor details over de SYS(49) instructie.
3.6.3 I/O status hold bit
Status handhaven tijdens opstarten
Het

I/O status hold bit

bepaalt of de status van bits in het IR en LR gebied wordt bewaard wanneer de werking van de PLC wordt gestart en gestopt of van de PROGRAM naar MONITOR of RUN mode geschakeld. Als het
I/O status hold bit
aan is, worden de statussen bewaard; als het uit is, worden alle bits in het IR en LR gebied gereset. Het
I/O status hold bit
is alleen effectief wanneer het in de PC
Setup geactiveerd is. De status van het
Het
I/O status hold bit
I/O status hold bit
kan alleen met een periferie ingesteld worden. De PLC kan
veranderd niet door een spanningsinterruptie.
het niet vanuit het programma aansturen. De status van het
I/O status hold bit
en dus de status van de bits in het IR en LR gebied kan worden vastgehouden wanneer de spanning uit- en aangezet wordt. Dit wordt gerealiseerd door in de PC Setup een instelling te maken. Als deze optie wordt gebruikt zal de status van het
I/O status hold bit
voedingsspanning uit/aan wordt gezet. Als dit wordt gedaan en het
is aan, dan zal de status van de bits in het IR en LR gebied worden bewaard
bit
worden bewaard als de
I/O status hold
zoals getoond in de volgende tabel.
Status voor shutdown Status na het opstarten
I/O status hold bit PC Setup I/O status hold bit IR en LR bits
AAN Uitgevoerd AAN Status bewaard
Niet uitgevoerd UIT Gereset
UIT Uitgevoerd UIT Gereset
Niet uitgevoerd UIT Gereset
Raadpleeg het hoofdstuk "Instructieset" op pagina 71 voor details over de SYS(49) instructie.

3.6.4 FAL (failure alarm) gebied

Een 2 cijferige BCD FAL code wordt hier geplaatst wanneer een FAL of FALS instructie wordt uitgevoerd. Deze errorcodes kunnen door de gebruiker gedefinieerd worden om fouten die in een proces optreden middels errorcodes zichtbaar te maken voor errordiagnose. De PLC kan ook FAL codes op deze bits plaatsen, zoals bijvoorbeeld bij het te laag worden van de batterijspanning.
CPM1/CPM1A programmeerhandleiding pagina 65
Geheugengebieden
1-min klokpul
0.02
Dit gebied kan gereset worden door een FAL instructie uit te voeren met een operand 00, door een failure read uit te voeren met de programmingconsole of door een error clear te geven in het status venster van SYSWIN.

3.6.5 Cyclustijd te groot errorvlag

De cyclustijd te groot errorvlag gaat aan als de cyclustijd boven de 100ms komt. De ALARM/ERROR indicator op het front van de CPU zal in dit geval gaan knipperen. Programma uitvoer zal niet stoppen tot de voor de watchdog timer maximale tijdlimiet is overschreden. Timing in het programma kan onnauwkeurig worden als de cyclustijd boven de 100ms komt.
3.6.6 Eerste scan vlag
OMRON
3.6.7 Klokpuls bits
De

eerste scan vlag

programma en gaat uit als het programma één keer is uitgevoerd. De
kan gebruikt worden om counters of delen van het programma te initialiseren.
vlag
gaat aan als de PLC begint met de verwerking van het
eerste scan
Een voorbeeld van het initialiseren van een counter wordt gegeven in hoofdstuk "Timer en counter instructies" op pagina 86.
Vijf klokpulsen zijn beschikbaar voor timing in het programma. Elk klokpuls bit is aan voor de eerste helft van de tijd en uit voor de tweede helft. Met andere woorden, elke klokpuls heeft een duty factor van 50%.
Deze klokpuls bits worden vaak gebruikt om van counters timers te maken. Een voorbeeld hiervan wordt gegeven in het hoofdstuk "Timer en counter instructies" op pagina 86.
s
30s 30s
1min.
0.1-s klokpuls
.05s .05s
0.1s
-s klokpuls
.01s .01s
.02s
0.2-s klokpuls
0.1s 0.1s
0.2s
1.0-s klokpuls
0.5s 0.5s
1.0s
Pas op:
Aangezien de 0.1 seconde en 0.02 seconde klokpulsen voor 50 of 100 ms AAN zijn is het mogelijk dat de CPU deze pulsen niet kan lezen als de cyclustijd te lang wordt.
3.6.8 STEP(08) uitgevoerd vlag
De

STEP(08) uitgevoerd vlag

STEP wordt geactiveerd met de SNXT(09) instructie.
gaat voor één programma cyclus aan wanneer een

3.6.9 Instructie executie errorvlag, ER

De
Instructie executie errorvlag
instructie uit te voeren met incorrecte operand data. De meest voorkomende oorzaak van een instructie error is gebruik van niet-BCD operand data wanneer BCD data gewenst is of een indirect geadresseerd DM woord dat niet bestaat wordt aangeroepen. Wanneer de ER vlag aan is zal de actuele instructie niet uitgevoerd worden. Aangezien elke functie in de PLC dit bit gebruikt is het alleen direct achter een instructie uit te lezen.
pagina 66 CPM1/CPM1A programmeerhandleiding
gaat aan als een poging is gedaan om een
OMRON
3.6.10 Rekenkundige vlaggen
De volgende vlaggen worden gebruikt bij het schuiven van data, rekenkundige bewerkingen en vergelijkingen. Ze worden in deze handleiding meestal aangeduid meet tweeletterige afkortingen.
Opmerking
Carry vlag, CY
Groter dan vlag, GR
Gelijk aan vlag, EQ
Kleiner dan vlag, LE
Opmerking
Deze vlaggen worden allemaal gereset wanneer de END(01) instructie wordt uitgevoerd en kunnen daarom niet met een programmeerapparaat bekeken worden.
Raadpleeg "Schuiven van data" op pagina 101, "Datavergelijking" op pagina 115, "BCD calculaties" op pagina 127 en "Binaire berekeningen" op pagina 136 voor details over het gebruik van deze vlaggen.
De
carry vlag
een rekenkundige bewerking of wanneer er een “1” uit een shift of rotate instructie wordt geschoven. De inhoud van CY wordt gebruikt door sommige rekenkundige instructies, d.w.z. deze wordt bij het resultaat opgeteld of ervan afgetrokken. Deze vlag kan worden geset of gereset vanuit het programma met de
clear carry
De
groter dan vlag
eerste van twee operands groter is dan de tweede. De
gelijk aan vlag
eerste van twee operands gelijk is aan de tweede of wanneer het resultaat van een rekenkundige bewerking gelijk is aan 0.
De
kleiner dan vlag
eerste van twee operands kleiner is dan de tweede. De vier rekenkundige vlaggen worden uitgezet als de END(01) instructie wordt
uitgevoerd.
Geheugengebieden
gaat aan wanneer er een overdracht plaatsvindt in het resultaat van
set carry
CLC instructies.
gaat aan als het resultaat van een vergelijking toont dat de
gaat aan als het resultaat van een vergelijking toont dat de
gaat aan als het resultaat van een vergelijking toont dat de
STC en

3.7 AR (auxiliary relais) gebied

AR woordadressen lopen van AR00 t/m AR15; AR bitadressen lopen van AR00.00 t/m AR15.15. De meeste woorden en bits in het AR gebied zijn toegewezen aan speciale functies zoals transmissie counters, vlaggen en control bits.
Het AR gebied onthoudt statussen tijdens spanningsuitval en tijdens het schakelen van MONITOR of RUN mode naar PROGRAM mode. De toewijzing van de bits is getoond in de volgende sectie en wordt verklaard in de daaropvolgende tekst.

3.7.1 AR gebied overzicht

De vlaggen en bits toewijzing in het auxiliary relais gebied is afhankelijk van de geselecteerde CPU.
Woord(en) Bit(s) Functie
00 t/m 01 --- Niet gebruikt AR02 00 t/m 07 Niet gebruikt
08 t/m 11 Aantal op de CPU aangesloten I/O units
12 t/m 15 Niet gebruikt 03 t/m 07 --- Niet gebruikt 08 00 t/m 07 Niet gebruikt
08 t/m 11 Periferie device error code (1 cijfer nummer)
12 Periferie device errorvlag
13 t/m 15 Niet gebruikt 09 00 t/m 15 Niet gebruikt 10 00 t/m 15 Spanning uit counter (4 cijfers BCD) 11 00 t/m 07 Highspeed counter 0 bereik vergelijking vlaggen
08 t/m 14 Niet gebruikt
15 Puls uitgang status 12 00 t/m 15 Niet gebruikt 13 00 Power-up PC Setup error vlag (DM6600 t/m 6614)
01 Start-up PC Setup error vlag (DM6615 t/m 6644)
02 RUN PC Setup error vlag (DM6645 t/m 6655)
03, 04 Niet gebruikt
CPM1/CPM1A programmeerhandleiding pagina 67
Geheugengebieden
De onderstaande secties beschrijven de belangrijkste AR bits. Voor een verklaring van de overige bits wordt verwezen naar de Engelstalige manuals. De meeste niet verklaarde bits worden alleen voor bepaalde zeer specifieke functies gebruikt; in dat geval worden ze in deze handleiding behandeld bij deze functie.
3.7.2 Power-OFF counter
AR10 bevat in 4-cijfers BCD het aantal maal dat de spanning van de PLC is uitgezet. Indien nodig kan deze waarde veranderd worden door er 0000 in te schrijven met SYSWIN. De power-OFF counter wordt elke keer gerefreshed als de spanning op CPU/Powersupply wordt gezet.
OMRON
Woord(en) Bit(s) Functie
05 Lange cyclustijd vlag (hoog als cyclustijd boven de op DM6619
ingestelde tijd komt) 06, 07 Niet gebruikt 08 Niet aanwezig adres gebruikt (Is hoog als een niet in de
CPM1(A) aanwezig adres in het programma wordt gebruikt) 09 Flash memory checksum error 10 Read only DM checksum error 11 PC Setup checksum error 12 Programma checksum error of een niet toegestane instructie
gebruikt 13 Instructietabel checksum error 14, 15 Niet gebruikt
14 00 t/m 15 Maximum cyclustijd (4 cijfers BCD) 15 00 t/m 15 Actuele cyclustijd (4 cijfers BCD)

3.7.3 Lange cyclustijd vlag

AR13.05 is hoog wanneer de cyclustijd die ingesteld is in de PC Setup korter is dan de actuele cyclustijd.
AR13.05 wordt elke scan gerefreshed als de PLC in RUN of MONITOR mode is.
3.7.4 Cyclustijd indicators
AR14 bevat de grootste cyclustijd die is opgetreden sinds de uitvoer van het programma is begonnen. AR1527 bevat de cyclustijd van de vorige scan.
Beide tijden worden default opgegeven in tienden van milliseconden in een 4 cijferig BCD getal (000.0ms t/m 999.9ms) en worden elke cyclus gerefreshed Afhankelijk van de instelling op DM6618 kan deze tijd ook worden opgegeven in units van 10, 100 of 1000ms.

3.8 DM (data memory) gebied

Het DM gebied is een datageheugen waarin gelezen en geschreven kan worden. Bij sommige CPU’s is een deel van het DM gebied alleen te lezen. Voor de een aantal CPU’s wordt dit in de onderstaande tekst aangegeven. Raadpleeg voor specifieke CPU’s het Operation Manual voor meer details.
Alhoewel het DM gebied is samengesteld uit 16 bit woorden zoals de andere data gebieden kan het DM geheugen niet op bitniveau geadresseerd worden. Het DM gebied behoudt statussen tijdens spanningsinterrupties.
Error historie gebied
Sommige CPU’s gebruiken een deel van het Read/Write DM Gebied om records in op te slaan die de aard, tijd en datum van storingen bevatten die in de PLC zijn voorgekomen. De tijd en datum velden in deze records worden alleen ingevuld bij PLC’s die zijn voorzien van een kalender/klok functie. Raadpleeg de handleiding van de gebruikte CPU voor details over de codering van errors en de structuur van de error records.
De inhoud van het fixed DM, de PC Setup, het PLC programma en de instructietabel worden in zijn geheel opgeslagen in een flash rom.
pagina 68 CPM1/CPM1A programmeerhandleiding
OMRON

3.9 HR (holding relais) gebied

Het HR gebied wordt gebruikt om diverse soorten data in op te slaan of te manipuleren. Het gebied kan op woord- en bitniveau geadresseerd worden. HR bits kunnen in willekeurige volgorde gebruikt worden en kunnen zo vaak geprogrammeerd worden als gewenst is, met dien verstande dat het voor elk bit in de CPU aan te raden is om het maar één keer als output aan te sturen.
Het HR gebied onthoudt de status wanneer de operating mode van de PLC wordt veranderd en wanneer de spanning wordt uitgezet.
Bits en woorden uit het HR gebied kunnen gebruikt worden om data vast te houden als de PLC gestopt wordt. Daarnaast kunnen HR bits ook gebruikt worden voor diverse speciale toepassingen zoals het creëren van latchrelais met de KEEP instructie etc. Dit wordt besproken in het hoofdstuk "geheugengebieden" op pagina 58 en in "Programma uitvoer" op pagina 30.
Geheugengebieden
Voorzichtig
Gebruik nooit een input bit van een NC (normally closed) input op de reset conditie van een KEEP(11) instructie wanneer het input device een AC powersupply gebruikt. De vertraging in het uitgaan van de PLC’s DC powersupply (relatief ten opzichte van de AC powersupply op het input device) kan ervoor zorgen dat het aan de KEEP(11) instructie toegewezen bit wordt gereset wanneer de besturing wordt uitgezet. Deze situatie wordt hieronder getoond.
Input Unit
A
NOOIT

3.10 TC (timer/counter) gebied

Het TC gebied wordt gebruikt om timers en counters te creëren en te programmeren en bevat de completionvlaggen, ingestelde waarden en actuele waarden voor alle timers en counters. Tot al deze gebieden wordt toegang gekregen met het TC nummer. Het bereik van deze nummers voor de verschillende CPU typen kan worden gevonden in sectie "geheugengebieden" op pagina 58. Elk TC nummer kan als timer of counter gedefinieerd worden met één van de volgende instructies: TIM, TIMH, CNT of CNTR(12). Er hoeft geen prefix (TIM of CNT) ingevoerd te worden wanneer een TC nummer in een timer of counter instructie gebruikt wordt.
Zodra een TC nummer is toegewezen met een van de bovenstaande instructies is het niet mogelijk om deze een tweede keer toe te wijzen voor dezelfde of een andere instructie. Als hetzelfde TC nummer is gebruikt in meer dan één van deze instructies of tweemaal in dezelfde instructie dan wordt een error gegenereerd tijdens de program check. Er zijn geen beperkingen voor de volgorde waarin TC nummers gebruikt worden. Voor het dubbel gebruiken van dezelfde TC nummers bij meerdere instructies gelden dezelfde regels als voor het dubbel gebruiken van uitgangen. Alhoewel dit in sommige situaties nodig kan zijn, is het aan te raden om dit achterwege te laten.
Een TC nummer kan worden gebruikt als operand in één of meer instructies, anders dan de hierboven genoemde. Wanneer een timernummer gebruikt wordt als operand in een instructie moet het nummer vooraf worden gegaan door de prefix TIM. De TIM prefix wordt gebruikt onafhankelijk van de timer instructie die gebruikt is om de timer te definiëren. Wanneer een counternummer gebruikt wordt als operand in een instructie moet het nummer vooraf worden gegaan door de prefix CNT. De CNT prefix wordt ook onafhankelijk gebruikt van de counter instructie die gebruikt is om de counter te definiëren. De TIM en CNT prefixen worden gebruikt om een veld in het TC gebied aan te duiden. Het in mogelijk om met de TIM prefix een veld op te geven dat door een counter gebruikt wordt. In dit geval zal de counter waarde getoond worden. Alhoewel het verder geen consequenties heeft voor de uitvoer van het programma is het voor het overzicht in het programma niet aan te raden om TIM en CNT prefixen om te wisselen.
S
KEEP(11)
A
R
B
CPM1/CPM1A programmeerhandleiding pagina 69
Geheugengebieden
TC nummers kunnen worden gebruikt voor operands die bitdata willen hebben en voor operands die woorddata gebruiken. Wordt een TC nummer gebruikt in een instructie op bitniveau dan geeft het nummer toegang tot de completionvlag van de timer of counter. Wanneer een TC nummer wordt gebuikt in een instructie die woorddata verlangt dan geeft het TC nummer toegang tot een geheugenlocatie die de actuele waarde van de timer of counter bevat.
Het TC gebied bewaart de ingestelde waarden van timers en counters tijdens spanningsuitval. De actuele waarden van timers worden gereset wanneer PLC begint met de uitvoer van het programma. De actuele waarde van counters worden niet gereset bij spanningsuitval of het starten van het programma.
Opmerking
TIM000 wordt gebruikt tijdens het programmeren om drie zaken aan te duiden. De timer met het TC nummer 000, de completionvlag van deze timer en de actuele waarde van deze timer. De samenhang zal duidelijk zijn. De eerste is altijd een instructie, de tweede is altijd een bit en de derde is altijd een woord. Dit geldt voor alle TC nummers, onafhankelijk of de prefix TIM of CNT is.

3.11 LR (link relais) gebied

Het LR gebied wordt gebruikt als gemeenschappelijk gebied om data tussen PLC’s uit te wisselen. Deze data transfer is mogelijk bij een 1:1 link. Bepaalde woorden worden toegewezen als schrijf woorden aan elke PLC. Op deze woorden kan de PLC data plaatsen waarna het automatisch wordt verplaatst naar dezelfde LR woorden bij de andere PLC’s in het netwerk. De schrijf woorden van elke PLC kunnen op deze manier door de andere PLC’s in het netwerk gelezen worden. Een PLC kan alleen data op de schrijf woorden in het LR gebied plaatsen, alle andere woorden kunnen alleen gelezen worden. Wordt er data geplaatst op de lees woorden in het LR gebied dan zal dit worden overschreven door de data uit schrijf woorden uit andere PLC’s.
Het LR gebied is op woord- of bitniveau toegankelijk. Het toegestane bereik aan LR woorden is gedefinieerd in "geheugengebieden" op pagina 58 voor de verschillende CPU typen. Elk deel van het LR gebied dat niet is gebruikt door de communicatie kan worden gebruikt als werkwoorden of werkbits.
Data in het LR gebied wordt niet onthouden bij spanningsuitval of wanneer de PLC in PROGRAM mode wordt gezet.
OMRON
3.12 Programmageheugen
Programmageheugen is het geheugen waarin het door de gebruiker geschreven programma wordt opgeslagen. Het programmageheugen wordt meestal aangeduid met UM. De grootte van het programmageheugen is afhankelijk van het type van de CPU. Om instructies in het programmageheugen op te slaan kan een handprogrammeerapparaat of SYSWIN gebruikt worden.

3.13 TR (temporary relais) gebied

TR gebied
Wanneer een complex ladderdiagram niet kan worden geprogrammeerd in mnemonic code zoals het op het scherm staat, dan worden deze bits gebruikt om tijdelijk aan/uit executiecondities op programma aftakkingen op te slaan. Deze acht bits kunnen alleen in statementlist bij LD en OUT instructies gebruikt worden. TR adressen lopen van TR0 t/m TR7. Elk van deze bits kan zo vaak als gewenst gebruikt worden in elke gewenste volgorde. Wanneer in ladderdiagram geprogrammeerd wordt plaatst SYSWIN de benodigde TR bits automatisch. Het gebruik van TR bits wordt beschreven in de sectie "Vertakkende instructie regels" op pagina 19.
Hetzelfde TR bit kan in principe niet meer dan één keer gebruikt worden in hetzelfde instructie blok, maar kan opnieuw gebruikt worden in een ander instructie blok. De aan/uit status van TR bits kan niet worden bekeken met periferie zoals bijvoorbeeld SYSWIN.
pagina 70 CPM1/CPM1A programmeerhandleiding
OMRON
4 Instructieset

Instructieset

De OMRON SYSMAC C- en CV-serie PLC’s beschikken over een uitgebreide instructieset die het mogelijk maken dat gecompliceerde processen eenvoudige geprogrammeerd kunnen worden. De volgende secties beschrijven de instructies individueel en geven het ladderdiagramsymbool, de datagebieden die gebruikt kunnen worden en de vlaggen die door de instructie beïnvloed worden.
De instructies waarover OMRON PLC’s beschikken worden in een aantal instructie groepen onderverdeeld. Deze groepen zijn:
Ö
Ladderdiagram instructies Bit control instructies
Ö
Timer en counter instructies
Ö
Data schuif instructies
Ö
Data verplaatsing instructies
Ö Ö
Data vergelijking instructies Data conversie instructies
Ö
BCD calculatie instructies
Ö
Binaire calculatie instructies
Ö
Logische instructies
Ö
Subroutines
Ö
Speciale instructies
Ö
Block programma instructies
Ö
Netwerk instructies.
Ö
Sommige instructies, bijvoorbeeld timer en counter instructies, worden gebruikt om andere instructies aan te sturen. D.w.z., een timer completionvlag kan gebruikt worden om een bit aan te zetten wanneer de voor de timer ingestelde tijd is afgelopen. Alhoewel deze instructies vaak gebruikt worden om outputbits met de OUT instructie aan te sturen, kunnen ze ook gebruikt worden om weer andere instructies aan te sturen. De output instructies die in voorbeelden gebruikt worden kunnen over het algemeen vervangen worden door andere instructies om het programma te modificeren voor specifieke applicaties anders dan het direct aansturen van uitgangen.
4.1 Notatie
In het vervolg van deze handleiding worden alle instructies aangeduid met hun mnemonics. Bijvoorbeeld, de output instructie wordt OUT genoemd, de en instructie AND en de load instructie LD. Als u er niet zeker van bent welke mnemonic een instructie gebruikt, raadpleeg dan de sectie "Alfabetische instructielijst op mnemonic" op pagina 74.
Als een instructie een functiecode heeft wordt deze tussen haken achter de mnemonic geplaatst. Deze functiecodes bestaan bij de C-serie uit een tweecijferig decimaal nummer en worden gebruikt tijdens het programmeren van de functies. In SYSWIN is het mogelijk om naast het functienummer ook de naam in te voeren. De functie worden hieronder kort beschreven.
Een @ voor een mnemonic geeft aan dat de gedifferentieerde uitvoering van deze instructie is gebruikt. Gedifferentieerde instructies worden uitgelegd in "Gedifferentieerde instructies" op pagina 73.
4.2 Instructie formaat
De meeste instructies hebben minimaal één operand. Operands verwijzen naar de data waarop of waarmee de instructie zijn taak kan uitvoeren. Deze worden soms ingevoerd als numerieke waarden (constanten), maar zijn meestal de adressen van woorden in een datagebied die de data bevatten waarop de bewerking moet worden uitgevoerd. Een bit waarvan het adres wordt gebruikt als operand wordt een operandbit en een woord waarvan het adres wordt gebruikt als een operand wordt een operandwoord genoemd. Bij sommige instructies duidt het woordadres
CPM1/CPM1A programmeerhandleiding pagina 71
Instructieset
in een instructie op het eerste woord van een reeks woorden die de gewenste data bevatten.
Elke instructie gebruikt één of meer woorden in het programma geheugen. Het eerste woord is het instructie woord. Dit woord specificeert de instructie en bevat de definers (hieronder beschreven) of operandbits die door de instructie gebruikt worden. De overige operands, die de instructie gebruikt, worden in de volgende woorden opgeslagen, één operand per woord. Sommige instructies gebruiken tot aan vier woorden uit het programmageheugen.
Een definer is een operand die nauw verbonden is met de instructie. Deze operands definiëren de instructie meer dan dat ze aangeven welke data gebruikt dient te worden. Voorbeelden van definers zijn TC nummers die gebruikt worden in timer en counter instructies en sprongnummers die bepalen welke spronginstructie is gekoppeld met welke sprong end instructie. Bit operands worden ook in hetzelfde woord als de instructie opgeslagen, alhoewel deze niet worden beschouwd als definers. Bij SYSWIN is het verschil tussen definers en operands niet duidelijk te zien.

4.3 Datagebieden, definer waarden en vlaggen

Deze sectie bevat, naast de beschrijving van elke instructie, het ladderdiagram symbool, de datagebieden die als operand en de waarden die als definer gebruikt kunnen worden. Daarnaast wordt ook het type van de data die de instructie gebruikt (HEX of BCD) en het type van de operand (bit, woord of meerdere woorden) aangegeven.
Niet alle adressen in de gespecificeerde datagebieden zijn toegestaan voor een operand. Bijvoorbeeld, als een operand bestaat uit twee woorden, dan kan het laatste woord uit een datagebied niet worden toegewezen als het eerste woord van de operand. Immers, alle woorden van een enkele operand moeten in hetzelfde datagebied liggen. Andere specifieke beperkingen worden per instructie gegeven in een subsectie. Raadpleeg het hoofdstuk “geheugengebieden" op pagina 58 voor conventies in het gebruik van adressen en de adressen van vlaggen en control bits.
Opmerking
Het IR en SR gebied moeten beschouwd worden als aparte datagebieden. Als een operand toegang heeft tot het ene gebied hoeft dezelfde operand niet noodzakelijkerwijs toegang te hebben tot het andere gebied. Een enkele operand kan echter de grenzen tussen het IR en SR gebied overschrijden. D.w.z. dat het laatste woord in het IR gebied mag worden gespecificeerd voor een operand die meer dan één woord lang is, zolang het SR gebied is toegestaan voor deze operand.
Wanneer het IR gebied als input operand gebruikt kan worden is het ook toegestaan om het SR gebied te gebruiken. Ook als het IR gebied als output operand gebruikt kan worden is het toegestaan om het SR gebied te gebruiken, in dit geval mogen echter alleen die bits/woorden uit het SR gebied gebruikt worden waarop data mag worden geschreven. Voor een instructie die met woorden werkt, geldt dat als het resultaat op een woord in het SR gebied wordt geplaatst dit hele woord beschreven moet kunnen worden. Wordt het resultaat op meer dan één woord in het SR gebied geplaatst, dan moeten al deze woorden beschreven kunnen worden.
Bij de instructies die in dit hoofdstuk behandeld worden wordt het SR gebied niet als apart geheugengebied vermeld. De regels uit de bovenstaande alinea gelden in dat geval voor het gebruik van het SR gebied.
De vlaggen subsectie geeft een lijst van vlaggen die door de uitvoer van de instructie beïnvloed worden. De meest gebruikte vlaggen zijn hieronder weergegeven.
OMRON
Afkorting Naam
ER Instructie executie errorvlag CY Carry vlag GR Groter dan vlag EQ Gelijk aan vlag LE Kleiner dan vlag
pagina 72 CPM1/CPM1A programmeerhandleiding
OMRON
ER is de vlag die het meest gebruikt wordt om te controleren of een instructie correct uitgevoerd wordt. Wanneer ER aan gaat, geeft dit aan dat een error is voorgekomen tijdens het uitvoeren van deze instructie. Het is zaak om het ER bit direct achter de instructie uit te lezen en de status op te slaan, aangezien elke instructie (op de logische na) het ER bit aanstuurt. De vlaggen subsectie van elke instructie geeft een lijst van mogelijkheden waarom het ER bit aan zou kunnen zijn. ER gaat aan als operands niet correct zijn ingevoerd. Instructies zijn niet uitgevoerd wanneer ze het ER bit aanzetten. Een tabel met instructies en de vlaggen die erdoor beïnvloed worden is opgenomen in de appendix.
4.3.1 Indirect adresseren
Normaal, wanneer een woord uit een datagebied is gespecificeerd bij een instructie wordt de bewerking van de instructie rechtstreeks op de inhoud van dat woord uitgevoerd. Bijvoorbeeld, stel een MOV(21) (uitleg op pagina 108) instructie wordt uitgevoerd met als eerste operand DM0100 en LR15 als de tweede. Dan wordt de inhoud van woord DM0100 door deze instructie verplaatst naar woord LR15.
Het is echter mogelijk om indirecte DM adressen te gebruiken als operand voor de meeste instructies. Om een indirect DM adres aan te geven wordt een asterix (*) voor het DM woord geplaatst, zoals bijvoorbeeld in *DM0100. Bij het gebruiken van een indirect adres bevat het operands adres niet de data die gebruikt gaan worden maar het adres van een ander DM woord. De inhoud van dat indirect aangewezen DM woord zal door de instructie gebruikt worden. Als *DM0100 wordt gebruikt in het voorbeeld hierboven en de inhoud van DM0100 is 0324, dan zal *DM0100 betekenen dat de inhoud van DM0324 als operand wordt gebruikt door de instructie en dat de inhoud van DM0324 wordt verplaatst naar LR15.
MOV(21) *DM0100
LR15
Indirect adres
Woord Inhoud
DM0099 4C59 DM0100 0324 DM0101 F35A
Instructieset
Wijst naar DM0324
Wanneer indirect adresseren gebruikt wordt, moet het adres van het gewenste woord in BCD worden opgegeven en het moet een woord specificeren dat binnen de grenzen van het DM gebied ligt. In het bovenstaande voorbeeld zou de inhoud van *DM0000 voor een CPM1(A) in BCD tussen de 0000 en 999 moeten liggen (1000 en hoger is read only of bestaat niet). Wordt hier niet aan voldaan dan zal de instructie het ER bit hoog zetten en niet uitgevoerd worden.
4.3.2 Constanten benoemen
Alhoewel als operand meestal datagebied adressen worden ingevoerd, worden vaak ook constanten ingevoerd als operand. Definers kunnen zelfs alleen maar als constante worden ingevoerd. Het te gebruiken bereik voor een bepaalde definer of constante hangt af van de gebruikte instructie. Constanten moeten worden ingevoerd in het formaat dat de instructie wenst, d.w.z. in BCD of in hexadecimaal. Kan als operand van een instructie naast een constante ook een adres uit een datagebied worden opgegeven dan moet de constante worden voorafgegaan door #. Kan als operand alleen een constante worden ingevoerd dan mag de # meestal niet worden ingevoerd. Een voorbeeld zijn definers, die altijd een constante zijn. Bij definers wordt nooit een # ingevoerd voor het nummer. Denk hierbij bijvoorbeeld aan de TC nummers bij timers en counters.
4.4 Gedifferentieerde instructies
DM0324 5555 DM0325 2506 DM0326 D541
5555 verplaatst naar LR15
De meeste instructies zijn beschikbaar in een gedifferentieerde en een niet­gedifferentieerde uitvoering. Gedifferentieerde instructies zijn te herkennen aan een @ voor de instructie mnemonic.
Een niet-gedifferentieerde instructie wordt elke keer als deze gescand wordt uitgevoerd, zolang de executieconditie aan is. Een gedifferentieerde instructie
CPM1/CPM1A programmeerhandleiding pagina 73
Instructieset
OMRON
wordt slechts één keer uitgevoerd als de executieconditie van uit naar aan gaat. Als de executieconditie niet verandert of veranderd is van aan naar uit sinds de vorige keer dat de instructie gescand is, dan zal deze niet uitgevoerd worden. De volgende twee voorbeelden tonen hoe dit werkt met MOV(21) en @MOV(21), die gebruikt worden om de data op het adres dat aangegeven wordt, door de eerste operand te verplaatsen naar het adres dat wordt aangegeven door de tweede operand.
000.00
MOV(21)
Diagram A
000.00
Diagram B
Adres Instructie Operands
00000 LD 000.00 00001 MOV(21) HR10 DM0000
Adres Instructie Operands
00000 LD 000.00 00001 @MOV(21) HR10 DM0000
In diagram A zal de niet-gedifferentieerde MOV(21) instructie de inhoud van HR10 naar DM0000 kopiëren zolang deze gescand wordt en 000.00 aan is. Als de cyclustijd 80ms is en 000.00 is aan voor 2,0 seconden, dan wordt deze kopieer bewerking 25 maal uitgevoerd en alleen de laatste waarde die naar DM0000 is gekopieerd zal bewaard worden.
In diagram B zal de gedifferentieerde @MOV(21) de inhoud van HR10 maar één keer naar DM0000 kopiëren, op het moment dat 000.00 aan gaat. Zelfs in het geval dat 000.00 2,0 seconden aan blijft met dezelfde 80ms cyclustijd, zal de kopieer bewerking slechts één maal worden uitgevoerd, op het moment dat de status van 000.00 van uit in aan veranderd. Aangezien de inhoud van HR10 kan veranderen tijdens de 2 seconden dat 000.00 aan is, kan de uiteindelijke inhoud van DM0000 na 2 seconden verschillen, afhankelijk of MOV(21) of @MOV(21) is gebruikt.
Alle operands, ladderdiagram symbolen en andere specificaties voor instructies zijn hetzelfde, onafhankelijk of de gedifferentieerde of niet-gedifferentieerde uitvoering van de instructie is gebruikt. Tijdens invoer worden dezelfde functiecodes of mnemonics gebruikt, er moet echter een @ ingevoerd worden voor het functienummer of mnemonic om de gedifferentieerde uitvoering van de instructie te krijgen. In SYSWIN is het mogelijk om met de cursor op een functie die al is ingevoerd te gaan staan en de slash (/) op het toetsenbord te bedienen om deze alsnog te differentiëren. De meeste, maar niet alle, instructies hebben een gedifferentieerde uitvoering.
De SYSMAC C-serie PLC’s beschikken ook over differentiatie instructies: DIFU(13) en DIFD(14). DIFU(13) werkt identiek aan de gedifferentieerde instructie, maar wordt gebruikt om een bit voor één scan aan te zetten. DIFD(14) zet ook een bit voor één scan aan, maar doet dit als de executieconditie verandert van aan naar uit. Raadpleeg “differentiate up en differentiate down” op pagina 25 voor details.
HR10
DM0000
@MOV(21)
HR10
DM0000

4.5 Alfabetische instructielijst op mnemonic

De volgende tabel geeft de instructies weer die bij de CPM1(A) PLC’s beschikbaar zijn. Deze tabel kan gebruikt worden om de functiecode van een mnemonic op te zoeken. Het @ symbool geeft aan dat de instructies over een gedifferentieerde variant beschikt. Bedenk dat niet elke instructie toepasbaar is bij elke PLC/CPU. Raadpleeg de sectie over de specifieke instructies om te controleren bij welke CPU’s een instructie toegepast kan worden ( in de tabel een — is geplaatst zijn uitbreidingsinstructies die niet standaard in de instructietabel zitten.
pagina 74 CPM1/CPM1A programmeerhandleiding
“Toepasbaar bij”
). Instructies waarbij
OMRON
Instructieset
MNEMONIC Code Naam
ADB (@) 50 BINARY ADD ADD (@) 30 BCD ADD AND Geen AND AND LD Geen AND LOAD AND NOT Geen AND NOT ANDW (@) 34 LOGICAL AND ASC (@) 86 ASCII CONVERT ASFT (@) ASYNCHRONOUS SHIFT REGISTER ASL (@) 25 ARITHMETIC SHIFT LEFT ASR (@) 26 ARITHMETIC SHIFT RIGHT BCD (@) 24 BINARY TO BCD BCMP (@) 68 BLOCK COMPARE BCNT (@) 67 BIT COUNTER BIN (@) 23 BCD-TO-BINARY BSET (@) 71 BLOCK SET CLC (@) 41 CLEAR CARRY CMP (@) 20 COMPARE CMPL 60 DOUBLE COMPARE CNT Geen COUNTER CNTR 12 REVERSIBLE COUNTER COLL (@) 81 DATA COLLECT COM (@) 29 COMPLEMENT CTBL (@) COMPARISON TABLE LOAD DEC (@) 39 DECREMENT BCD DIFD 14 DIFFERENTIATE DOWN DIFU 13 DIFFERENTIATE UP DIST (@) 80 SINGLE WOORD DISTRIBUTE DIV (@) 33 BCD DIVIDE DIVL (@) 57 DOUBLE BCD DIVIDE DMPX (@) 77 16-to-4 ENCODER DVB (@) 53 BINARY DIVIDE END 01 END FAL (@) 06 FAILURE ALARM FALS 07 SEVERE FAILURE ALARM IL 02 INTERLOCK ILC 03 INTERLOCK CLEAR INC (@) 38 INCREMENT INI (@) MODE CONTROL INT (@) 89 INTERRUPT CONTROL IORF (@) 97 I/O REFRESH JME 05 SPRONG END JMP 04 SPRONG KEEP 11 KEEP LD Geen LOAD LD NOT Geen LOAD NOT MCRO (@) 99 MACRO MLB (@) 52 BINARY MULTIPLY MLPX (@) 76 4-TO-16 DECODER MOV (@) 21 MOVE MOVB (@) 82 MOVE BIT MOVD (@) 83 MOVE DIGIT MSG (@) 46 MESSAGE MUL (@) 32 BCD MULTIPLY MULL (@) 56 DOUBLE BCD MULTIPLY MVN (@) 22 MOVE NOT NOP 00 NO OPERATION OR Geen OR OR LOAD Geen OR LOAD OR NOT Geen OR NOT ORW (@) 35 LOGICAL OR OUT Geen OUTPUT OUT NOT Geen OUTPUT NOT PRV (@) HIGHSPEED COUNTER actuele waarde lezen RET 93 SUBROUTINE RETURN ROL (@) 27 ROTATE LEFT
CPM1/CPM1A programmeerhandleiding pagina 75
Instructieset
LADDER SYMBOOL
OPERAND DATAGEBIEDEN
OMRON
MNEMONIC Code Naam
ROR (@) 28 ROTATE RIGHT RSET geen RESET SBB (@) 51 BINARY SUBTRACT SBN 92 SUBROUTINE DEFINE SBS (@) 91 SUBROUTINE ENTRY SDEC (@) 78 7-SEGMENT DECODER SET geen SET SFT 10 SHIFT REGISTER SFTR (@) 84 REVERSIBLE SHIFT REGISTER SLD (@) 74 ONE DIGIT SHIFT LEFT SNXT 09 STEP START SRD (@) 75 ONE DIGIT SHIFT RIGHT STC (@) 40 SET CARRY STEP 08 STEP DEFINE STIM (@) INTERVAL TIMER SUB (@) 31 BCD SUBTRACT SUBL (@) 55 DOUBLE BCD SUBTRACT TCMP (@) 85 TABLE COMPARE TIM Geen TIMER TIMH 15 HIGHSPEED TIMER WSFT (@) 16 WOORD SHIFT XCHG (@) 73 DATA EXCHANGE XFER (@) 70 BLOCK TRANSFER XNRW (@) 37 EXCLUSIVE NOR XORW (@) 36 EXCLUSIVE OR
Opmerking
Wanneer het programma ingevoerd is moet dit met een END(01) instructie op het laatste adres worden afgesloten.
4.6 Ladderdiagram instructies
Ladderdiagram instructies omvatten de logische instructies en logische blok instructies en worden gebruikt in de executiecondities in het ladderdiagram. Logische blok instructies worden gebruikt om complexere netwerken te kunnen programmeren.

4.6.1 LOAD, LOAD NOT, AND, AND NOT, OR en OR NOT

LOAD - LD
LOAD NOT - LD NOT
AND - AND
AND NOT - AND NOT
B
B
B
B
B: Bit
IR, AR, HR, TC, LR, TR
B: Bit
IR, AR, HR, TC, LR
B: Bit
IR, AR, HR, TC, LR
B: Bit
IR, AR, HR, TC, LR
B: Bit
IR, AR, HR, TC, LR
B: Bit
IR, AR, HR, TC, LR
Beperkingen
OR - OR
OR NOT - OR NOT
Er is geen limiet aan het aantal maal dat deze instructies gebruikt kunnen worden
B
B
noch aan de volgorde waarin ze gebruikt kunnen worden zolang als de geheugen capaciteit van de PLC niet wordt overschreden.
Omschrijving
Deze zes basisinstructies vind u terug in de condities van het ladderdiagram. De status van de bits die toegewezen zijn aan deze instructies bepalen de executieconditie voor alle andere instructies in het ladderdiagram. Dit is uitgebreid
pagina 76 CPM1/CPM1A programmeerhandleiding
OMRON
beschreven in "Programma uitvoer" op pagina 30. Elk van deze instructies en elk bitadres kan zo vaak gebruikt worden als nodig is in elk van de bovenstaande instructies.
De status van het bit operand (B) dat toegewezen is aan een LD of LD NOT bepaalde de eerste executieconditie. AND berekent de logische EN tussen de executieconditie en de status van het gebruikte operandbit; AND NOT berekent de logische EN tussen de executieconditie en de inverse status van de gebruikte operandbit. OR berekent de logische OF tussen de executieconditie en de status van het gebruikte operandbit; OR NOT berekent de logische OF tussen de executieconditie en de inverse status van de gebruikte operandbit. Gebruikte TR bits worden in een ladderdiagram niet weergegeven.
Vlaggen
Er worden geen vlaggen beïnvloed door deze instructie.

4.6.2 AND LOAD en OR LOAD

Instructieset
Omschrijving
Vlaggen
AND LOAD - AND LD
OR LOAD - OR LD
000.00
000.01 000.03
000.00 000.01
000.02 000.03
000.02
Wanneer instructies worden samengevoegd in blokken die niet logisch gecombineerd kunnen worden met alleen OR en AND bewerkingen moet AND LD of OR LD worden gebruikt. AND en OR instructies voeren een logische bewerking uit tussen de status van het gebruikte operandbit en de executieconditie. AND LD en OR LD voeren een logische bewerking uit tussen twee executiecondities, de actuele en de laatste ongebruikte.
Tijdens het invoeren van ladderdiagrammen is het niet noodzakelijk om AND LD en OR LD instructies te gebruiken. Deze instructies zijn echter wel noodzakelijk om het ladderdiagram programma om te zetten naar de mnemonic uitvoering (statement list) die uiteindelijk door de PLC verwerkt wordt.
Om het aantal gebruikte instructies in een programma te reduceren is een zeker begrip van de werking van logische blok instructies aan te raden. De procedures voor het invoeren, beperkingen en voorbeelden worden uitgelegd in hoofdstuk "Logische blok instructies" op pagina 12.
Er worden geen vlaggen beïnvloed door deze instructie.
4.7 Bitcontrol instructies
Er zijn vijf instructies die gebruikt worden om de statussen van bits te manipuleren. deze instructies zijn OUT, OUT NOT, DIFU(13), DIFD(14) en KEEP(11). Deze instructies worden gebruikt om bits op verschillende manieren aan en uit te zetten. Voor de nieuwere PLC’s (CPM1(A), CQM1 en C200HS) zijn er twee instructies toegevoegd, SET en RSET.
CPM1/CPM1A programmeerhandleiding pagina 77
Instructieset
O
O

4.7.1 Uitgangen en hulprelais aansturen - OUT en OUT NOT

LADDER SYMBOOL
OUTPUT - OUT
B
OMRON
PERAND DATAGEBIEDEN
B; Bit
IR, AR, HR, TC, LR, TR
Beperkingen
Omschrijving
Vlaggen
OUTPUT NOT - OUT NOT
LADDER SYMBOOL
B
OPERAND DATAGEBIEDEN
B; Bit
IR, AR, HR, TC, LR
Het is aan te raden om elk outputbit slechts in één bitcontrol instructie te gebruiken. Raadpleeg de sectie "IR (interne relais) gebied" op pagina 62 voor details over dubbel gebruik van bits bij bitcontrol instructies.
OUT en OUT NOT worden gebruikt om de status van het aan de instructie toegewezen bit aan of uit te zetten, afhankelijk van status van de executieconditie.
OUT zet het toegewezen bit aan als de status van de executieconditie aan is en zet het toegewezen bit uit als de executieconditie uit is. Bij gebruik van TR bits wordt de OUT instructie op het aftak punt geplaatst in plaats van aan het einde van de instructieregel. Raadpleeg "Vertakkende instructie regels" op pagina 19 voor details.
OUT NOT zet het toegewezen bit uit als de status van de executieconditie aan is en aan als de executieconditie uit is.
OUT en OUT NOT kunnen gebruikt worden om de uitvoer te beïnvloeden door de bits die toegewezen zijn aan condities in het ladderdiagram aan en uit te zetten, waardoor condities voor andere instructies veranderd kunnen worden. Dit maakt het mogelijk om een complex set van condities te gebruiken om de status van een enkel werkbit bepalen waarna dat werkbit kan worden gebruikt om andere instructies aan te sturen.
De tijd dat een bit aan of uit is kan worden bepaald door de OUT en OUT NOT instructies te combineren met TIM instructies. Voorbeelden hiervoor zijn opgenomen in "Timer - TIM" op pagina 87.
Er worden geen vlaggen beïnvloed door deze instructie.

4.7.2 Setten en resetten - SET en RSET

LADDER SYMBOOL
SET
B
RSET
B
Omschrijving
Voorzorgen
Vlaggen
Voorbeeld
SET zet het operandbit aan wanneer de executieconditie aan is en beïnvloedt de status van het operandbit niet wanneer executieconditie uit is. RSET zet het operandbit uit wanneer de executieconditie aan is en beïnvloedt de status van het operandbit niet wanneer de executieconditie uit is.
De werking van SET verschilt van die van OUT omdat de OUT instructie het operandbit uit zet zolang de executieconditie uit is. Zo verschilt RSET ook van OUT NOT omdat OUT NOT het operandbit aan zet zolang de executieconditie uit is.
De status van operandbits voor SET en RSET instructies geprogrammeerd tussen IL(02) en ILC(03) of JMP(04) en JME(05) verandert niet als de interlock- of sprong­conditie laag is.
Er worden geen vlaggen beïnvloed door deze instructie. Het volgende voorbeeld toont het verschil tussen OUT en SET/RSET. In het eerste
netwerk (diagram A), wordt de status (aan of uit) van 010.00 direct bepaald door
000.00. In het tweede netwerk (diagram B), gaat 010.01 aan als 000.01 aan gaat en blijft aan (zelfs als 000.01 uit gaat) tot 000.02 aan gaat.
PERAND DATAGEBIEDEN
B: Bit
IR, AR, HR, LR
B: Bit
IR, AR, HR, LR
pagina 78 CPM1/CPM1A programmeerhandleiding
OMRON
O
Instructieset
000.00
Diagram A
000.01
000.02
Diagram B
Adres Instructie Operands
00000 LD 000.00 00001 OUT 010.00
Adres Instructie Operands
00000 LD 000.01 00001 SET 010.01 00002 LD 000.02 00003 RSET 010.01
Opmerking
Inplaats van SET en RSET kan ook de instructie KEEP(11) gebruikt worden (zie pagina 80). Bij gebruik van de instructie KEEP(11) moet binnen één netwerk zowel de SET als de RESET conditie bepaald worden. Dit bevordert de leesbaarheid van het programma.

4.7.3 Op- en neergaande flanken - DIFU(13) en DIFD(14)

LADDER SYMBOOL
DIFU(13)
B
010.00
SET
010.01
RSET
010.01
PERAND DATAGEBIEDEN
B: Bit
IR, AR, HR, LR
Beperkingen
Omschrijving
Voorzorgen
Vlaggen
DIFD(14)
B
B: Bit
IR, AR, HR, LR
Het is aan te raden om elk outputbit slechts in één bitcontrol instructie te gebruiken. Raadpleeg de sectie "IR (interne relais) gebied" op pagina 62 voor details over dubbel gebruik van bits bij bitcontrol instructies.
DIFU(13) en DIFD(14) worden gebruikt om het toegewezen bit voor één scan aan te zetten.
Wanneer uitgevoerd, vergelijkt DIFU(13) de actuele executieconditie met de vorige executieconditie. Als de vorige executieconditie uit was en de actuele aan is, dan zal DIFU(13) het toegewezen bit aan zetten. Als de vorige executieconditie aan was en de actuele executieconditie is aan of uit, dan zal DIFU(13) het toegewezen bit uit zetten of het uit laten als het bit al uit was. Het toegewezen bit zal dus nooit langer dan één scan aan zijn (ervan uitgaande dat de instructie elke scan wordt uitgevoerd).
Wanneer uitgevoerd, vergelijkt DIFD(14) de actuele executieconditie met de vorige executieconditie. Als de vorige executieconditie aan was en de actuele uit is, dan zal DIFD(14) het toegewezen bit aan zetten. Als de vorige executieconditie uit was en de actuele executieconditie is aan of uit, dan zal DIFD(14) het toegewezen bit uit zetten of het uit laten als het bit al uit was. Het toegewezen bit zal dus nooit langer dan één scan aan zijn (ervan uitgaande dat de instructie elke scan wordt uitgevoerd).
Deze instructies worden gebruikt wanneer de gedifferentieerde variant van een bepaalde instructie (d.w.z. die met een @ als prefix) niet beschikbaar is en toch een eenmalige (één scan) uitvoering van de instructie gewenst is. Ze kunnen ook gebruikt worden bij de niet-gedifferentieerde uitvoering van instructies die wel een gedifferentieerde uitvoering hebben om het programma te vereenvoudigen. Voorbeelden hiervan worden hieronder getoond.
Er worden geen vlaggen beïnvloed door deze instructie. De werking van DIFU(13) en DIFD(14) kan onzeker zijn als de instructies tussen IL
en ILC, tussen JMP en JME of in subroutines geprogrammeerd zijn. Raadpleeg pagina 82 en 84 hierover. Aangezien de flankdetectie (DIFU(13) en DIFD(14))
CPM1/CPM1A programmeerhandleiding pagina 79
Instructieset
Voorbeeld 1: Wanneer geen gedifferentieerde instructie gebruikt word
OMRON
instructies de actuele executieconditie vergelijken met de vorige moet bekend zijn wat de vorige executieconditie was. Tijdens de eerste scan is niet bekend wat de vorige executieconditie was, dus worden eventuele flanken niet gedetecteerd. Bij gebruikt van interlocks, sprongen en subroutines wordt voor de flank detectie gekeken naar de vorige keer dat het programma tussen IL en ILC, tussen JMP en JME of in de subroutine werd uitgevoerd
In diagram A hieronder zal de CMP (20) instructie, zodra deze wordt uitgevoerd met een aan executieconditie, de inhoud van de twee operand woorden (HR10 en DM0000) vergelijken en afhankelijk hiervan de rekenkundige vlaggen (GR, EQ en LE) aan of uit zetten. Als de executieconditie aan blijft, kunnen de statussen van deze vlaggen elke scan veranderen als de inhoud van één of beide operands verandert. Diagram B echter, geeft een voorbeeld van hoe DIFU(13) kan worden gebruikt om er zeker van te zijn dat CMP(20) alleen wordt uitgevoerd als de executieconditie aan gaat (op de opgaande flank).
000.00
Diagram A
000.00
225.00
Diagram B
CMP(20)
HR10
DM0000
DIFU(13)
225.00
CMP(20)
HR10
DM0000
Voorbeeld 2: Vereenvoudigen van een programma
Adres Instructie Operands
00000 LD 000.00 00001 CMP(20) HR10 DM0000
Adres Instructie Operands
00000 LD 000.00 00001 DIFU(13) 225.00 00002 LD 225.00 00003 CMP(20) HR10 DM0000
Alhoewel een gedifferentieerde uitvoering van MOV(21) beschikbaar is, is het niet mogelijk het onderstaande diagram te tekenen met deze uitvoering omdat maar één van de condities in de executieconditie voor de MOV(21) gedifferentieerd uitgevoerd is.
000.00
225.00
000.01 000.02 000.03
000.04 000.05
Adres Instructie Operands
00000 LD 000.00 00001 DIFU(13) 225.00 00002 LD 225.00 00003 LD 000.01 00004 AND NOT 000.02 00005 AND NOT 000.03 00006 OR LD 00007 LD 000.04 00008 AND NOT 000.05 00009 OR LD 00010 MOV(21) HR10 DM0000
DIFU(13)
225.00
MOV(21)
HR10
DM0000

4.7.4 Status vasthouden - KEEP(11)

LADDER SYMBOOL OPERAND DATAGEBIEDEN
S
KEEP(11)
R
B
pagina 80 CPM1/CPM1A programmeerhandleiding
B: Bit
IR, AR, HR, LR
OMRON
Instructieset
Beperkingen
Omschrijving
Het is aan te raden om elk outputbit slechts in één bitcontrol instructie te gebruiken. Raadpleeg de sectie "IR (interne relais) gebied" op pagina 62 voor details over dubbel gebruik van bits bij bitcontrol instructies.
KEEP(11) wordt gebruikt om de status van het toegewezen bit vast te houden afhankelijk van twee executiecondities. Deze executiecondities hebben in de bovenstaande figuur de labels S en R. S is de set input; R de reset input. KEEP(11) werkt als een latchrelais dat wordt geset door S en gereset door R.
Wanneer S aangaat zal het toegewezen bit aangaan en aanblijven tot het gereset wordt, onafhankelijk of S aanblijft of uitgaat. Wanneer R aangaat zal het toegewezen bit uitgaan en uitblijven, onafhankelijk of R aanblijft of uitgaat. De relatie tussen de executiecondities en de KEEP(11) bit status wordt hieronder getoond.
S EXECUTIECONDITIE
R EXECUTIECONDITIE
STATUS VAN B
KEEP(11) werkt zoals de zelfhandhavende bits zoals beschreven in “zelfhandhavende bits” op pagina 26. De volgende twee netwerken hebben dezelfde functie. Eén van de twee netwerken gebruikt de KEEP(11) instructie en gebruikt één instructie minder dan het andere netwerk. Bij gebruik van een KEEP instructie houden bits hun status vast, zelfs als het netwerk geprogrammeerd wordt tussen en IL en ILC instructie waarvan de executieconditie laag is.
000.02
000.03
005.00
Prioriteit
Opmerking
005.00
000.02
000.03
Adres Instructie Operands
00000 LD 000.02 00001 OR 005.00 00002 AND NOT 000.03 00003 OUT 005.00
Adres Instructie Operands
00000 LD 000.02 00001 LD 000.03 00002 KEEP(11) 005.00
S
R
KEEP(11)
005.00
Het voordeel van het gebruik van KEEP(11) in plaats van logica om een “houd circuit” te creëren is dat bij het gebruik van een KEEP(11) functie in één oogopslag duidelijk is dat het netwerk een houd functie bevat. Bij gebruik van een overname contact (zoals hierboven met logica gerealiseerd is) moet het netwerk meer geïnterpreteerd worden.
Bij de KEEP(11) instructie heeft de reset prioriteit. D.w.z. dat als de reset ingang aan is, het bij KEEP(11) gebruikte operandbit altijd uit is. Een eenvoudige manier om de set prioriteit te geven bij een KEEP(11) instructie is hieronder getoond. Door het extra bit dat met een OUT instructie aan de SET conditie hangt in de reset op te nemen wordt deze geblokkeerd op het moment dat de SET aan is.
000.02
200.00
S
KEEP(11)
Vlaggen
200.00000.03
Er worden geen vlaggen beïnvloed door deze instructie.
005.00
R
CPM1/CPM1A programmeerhandleiding pagina 81
Instructieset
OMRON
Voorzorgen
Voorbeeld
Gebruik nooit een input bit van een NC (normally closed) input op de reset conditie van een KEEP(11) instructie wanneer het input device een AC powersupply gebruikt. De vertraging in het uitgaan van de PLC’s DC powersupply (relatief ten opzichte van de AC powersupply op het input device) kan ervoor zorgen dat het aan de KEEP(11) instructie toegewezen bit wordt gereset wanneer de besturing wordt uitgezet. Deze situatie wordt hieronder getoond.
Input Unit
A
NOOIT
A
S
R
KEEP(11)
B
Bits die gebruikt zijn als operandbit voor een KEEP(11) instructie worden niet gereset door interlocks. Raadpleeg pagina 82 voor details.
Als een AR of HR bit wordt gebruikt, wordt de status van dit bit vastgehouden, zelfs als de spanning van de CPU wegvalt. KEEP(11) kan dus gebruikt worden om bits te programmeren die de status onthouden die ze hadden toen de PLC werd uitgezet. Een voorbeeld hiervan kan een waarschuwingsscherm zijn dat op een terminal getoond moet worden als een installatie opgestart wordt nadat het, vanwege een noodsituatie, op een abnormale manier is afgesloten. De bits 000.02,
000.03 en 000.04 geven aan dat een bepaald type error is voorgekomen. Bit
000.05 wordt aangezet om het waarschuwingsscherm te resetten. HR00.00, die aangaat als één van de error ingangen aangaat, geeft aan dat een error situatie is voorgekomen en wordt gebruikt om het waarschuwingsscherm via 005.00 op te roepen.
000.02
000.03
000.04
Error
ingangen
S
R
KEEP(11)
HR00.00
RESET Input
000.05
HR00.00
Adres Instructie Operands
00000 LD 000.02 00001 OR 000.03 00002 OR 000.04 00003 LD 000.05 00004 KEEP(11) HR00.00 00005 LD HR00.00 00006 OUT 005.00
KEEP(11) kan ook gebruikt worden in combinatie met TIM om bits te produceren die bepaalde vertragingen hebben in het aan en uitgaan. Raadpleeg hiervoor "Timer - TIM" op pagina 87.

4.8 Interlocks - IL(02) en ILC(03)

LADDER SYMBOOL
LADDER SYMBOOL
Omschrijving
IL(02) wordt altijd gebruikt in combinatie met ILC(03) om interlocks in een programma te creëren. Interlocks worden gebruikt om, zoals bij gebruik van TR relais, aftakkingen te creëren. Echter, wanneer de executieconditie voor IL(02) uit is, verschilt de werking van instructies tussen IL(02) en ILC(03) van vertakkingen die met TR bits zijn geprogrammeerd. Als de executieconditie van IL(02) aan is, wordt het programma uitgevoerd zoals het is geschreven, met een
IL(02)
ILC(03)
005.00
Activeert een waarschuwingsscherm
aan
pagina 82 CPM1/CPM1A programmeerhandleiding
OMRON
DIFU(13) en DIFD(14) in interlocks
Instructieset
executieconditie gebruikt om elke instructie regel te starten van het punt waar IL(02) is geplaatst tot de volgende ILC(03). Raadpleeg "Vertakkende instructie regels" op pagina 19 voor basis beschrijvingen van beide methoden.
Als de executieconditie voor IL(02) uit is, zullen de instructies in de sectie tussen IL(02) en ILC(03) worden behandeld zoals in de volgende tabel is getoond:
Instructie Behandeling
OUT en OUT NOT Toegewezen bit gaat uit. TIM en TIMH(15) Wordt gereset. CNT en CNTR(12) Actuele waarde wordt gehandhaafd. KEEP(11) Bit status wordt gehandhaafd. DIFU(13) en DIFD(14) Niet uitgevoerd (zie hieronder). Alle andere Niet uitgevoerd.
IL(02) en ILC(03) hoeven niet noodzakelijkerwijs in paren gebruikt te worden. IL(02) kan diverse keren achter elkaar worden gebruikt, waarbij elke IL(02) een interlock sectie creëert tot de volgende ILC(03). ILC(03) kan niet worden gebruikt tot er minimaal één IL(02) is ingevoerd tussen deze ILC(03) en een voorgaande ILC(03) of het begin van het programma.
Veranderingen in de executieconditie voor een DIFU(13) of DIFD(14) instructie worden niet opgeslagen als de DIFU(13) of DIFD(14) is geprogrammeerd tussen een IL(02) en ILC(03) en de executieconditie voor de IL(02) is uit. Wanneer DIFU(13) of DIFD(14) wordt uitgevoerd in een interlock sectie direct nadat de executieconditie voor de IL(02) is aangegaan, dan zal de executieconditie voor de DIFU(13) of DIFD(14) worden vergeleken met de executieconditie die bestond voordat de interlock actief werd (d.w.z. voordat de interlock conditie voor IL(02) uitging). Het ladderdiagram en de bitstatus veranderingen hiervoor zijn hieronder getoond. De interlock is in werking als 000.00 uit is. Merk op dat 200.00 niet aangaat op punt A ook al is 000.01 uit en vervolgens weer aangegaan.
000.00 IL(02)
000.01
DIFU(13)
200.00
Voorzorgen
Voorbeeld
Vlaggen
ILC(03)
Adres Instructie Operands
00000 LD 000.00 00001 IL(02) 00002 LD 000.01 00003 DIFU(13) 200.00 00004 ILC(03)
A
000.00
000.01
200.00
ON OFF
ON OFF
ON OFF
Er moet minimaal één ILC (03) geprogrammeerd worden na één of meerdere IL(02) instructies. Alhoewel zoveel IL(02) instructies als nodig kunnen worden gebruikt met één ILC(03), kunnen ILC(03) instructies niet worden gebruikt zonder minimaal één IL(02) ervoor, d.w.z. dat nesten niet mogelijk is. Zodra een ILC(03) wordt uitgevoerd worden alle interlocks tussen de actieve ILC(03) en de voorgaande ILC(03) gewist.
Wanneer meer dat één IL(02) wordt gebruikt met een enkele ILC(03), verschijnt een error boodschap als de program check wordt uitgevoerd. Het programma wordt echter normaal uitgevoerd.
Er worden geen vlaggen beïnvloed door deze instructie. Het volgende voorbeeld toont IL(02) die tweemaal gebruikt wordt voor een ILC(03).
CPM1/CPM1A programmeerhandleiding pagina 83
Instructieset
O
OMRON
000.00
000.01
000.02
000.03
001.00
000.05
Adres Instructie Operands
00000 LD 000.00 00001 IL(02) 00002 LD 000.01 00003 TIM 011 #0015 00004 LD 000.02 00005 IL(02) 00006 LD 000.03 00007 AND NOT 000.04 00008 LD 001.00 00009 CNT 001 010 00010 LD 000.05 00011 OUT 010.02 00012 ILC(03)
000.04 CP
IL(02)
TIM
011
#0015
IL(02)
CNT
001 010R
010.02
ILC(03)
001,5s
Wanneer de executieconditie voor de eerste IL(02) uit is, zal TIM011 worden gereset naar 1.5 seconde, CNT001 zal niet veranderen en 010.02 wordt uitgezet. Wanneer de executieconditie voor de eerste IL(02) aan is en de executieconditie voor de tweede IL(02) uit is, zal TIM011 worden uitgevoerd afhankelijk van de status van 000.01, CNT001 verandert niet en 010.02 wordt uitgezet. Wanneer de executiecondities voor beide IL(02)’s aan zijn wordt het programma normaal uitgevoerd.

4.9 Springen - JMP(04) en JME(05)

LADDER SYMBOOL
JMP(04)
N
JMP(05)
N
Beperkingen
Omschrijving
Sprongnummers 01 t/m 49 mogen maar één keer gebruikt worden in een JMP(04) en één keer in een JME(05) instructie. D.w.z. dat elk nummer gebruikt kan worden om één sprong te definiëren. Sprong nummer 00 kan zo vaak als gewenst gebruikt worden.
JMP(04) wordt altijd in combinatie met JME(05) gebruikt om sprongen te definiëren, d.w.z. om direct van het ene punt naar het andere punt in een ladderdiagram te gaan. JMP(04) definieert het punt waar de sprong gemaakt wordt, JME(05) definieert de bestemming van de sprong. Wanneer de executieconditie voor JMP(04) aan is, wordt geen sprong gemaakt en wordt het programma vervolgd bij de instructie achter de JMP(04) instructie. Wanneer de executieconditie voor JMP(04) uit is, wordt een sprong gemaakt naar de JME(05) instructie met hetzelfde nummer en wordt het programma vervolgd met de instructie die volgt op de JME(05) instructie.
Als het sprongnummer voor JMP(04) tussen 01 en 49 ligt worden sprongen, wanneer gemaakt, direct uitgevoerd naar de JME(05) met hetzelfde sprongnummer zonder dat enige instructie tussen de JMP(04) en JME(05) wordt
PERAND DATAGEBIEDEN
N: Sprongnummer
# (00 to 49)
N: Sprongnummer
# (00 to 49)
pagina 84 CPM1/CPM1A programmeerhandleiding
OMRON
DIFU(13) en DIFD(14) in sprongen
Voorzorgen
Vlaggen
Voorbeelden
Instructieset
uitgevoerd. De status van timers, counters, bits gebruikt met OUT, bits gebruikt met OUT NOT en alle andere statusbits aangestuurd door de instructies tussen de JMP(04) en JMP(05) zullen niet veranderen. Elk van de sprongnummers tussen 01 en 99 kan worden gebruikt om één sprong te definiëren. Omdat alle instructies tussen de JMP(04) en JME(05) worden overgeslagen kunnen de sprongnummers 01 t/m 99 worden gebruikt om de cyclustijd te reduceren.
Als het sprongnummer voor JMP(04) 00 is, zal de CPU zoeken naar de volgende JME(05) met een sprongnummer 00. Om dit te doen moet deze door het programma zoeken. Dit veroorzaakt een langere cyclustijd (wanneer de executieconditie uit is) dan bij de andere sprongen. De status van timers, counters, bits gebruikt in OUT, bits gebruikt in OUT NOT en alle andere statussen aangestuurd door instructies tussen de JMP(04) 00 en JMP(05) 00 worden niet veranderd. Sprongnummer 00 kan zo vaak als gewenst gebruikt worden. Een sprong van JMP(04) 00 gaat altijd naar de volgende JME(05) 00 in het programma. Het is dus mogelijk om een aantal maal achtereenvolgend JMP(04) 00 te gebruiken om naar dezelfde JME(05) 00 te springen. Het heeft echter geen zin om een reeks JME(05) 00 instructies te programmeren, omdat alle sprongen naar JME(05) 00 zullen eindigen bij de eerste die gevonden wordt. Aangezien bij JMP(04) 00 wordt gesprongen naar de volgende JME(05) 00 in het programma is het niet mogelijk om met JMP(04) 00 terug te springen in het programma.
Alhoewel DIFU(13) en DIFD(14) zijn gemaakt om het toegewezen bit voor één scan aan te zetten, hoeven zij dit niet noodzakelijkerwijs te doen wanneer ze geprogrammeerd zijn tussen een JMP(04) en JME(05). Zodra DIFU(13) of DIFD(14) een bit heeft aangezet, zal het bit aanblijven tot de volgende keer dat DIFU(13) of DIFD(14) wordt uitgevoerd. In het normale programma houdt dit de volgende scan in. Bij een sprong betekent dit de volgende keer dat de sprong van JMP(04) naar JME(05) niet is gemaakt. D.w.z. dat wanneer een bit wordt aangezet door DIFU(13) of DIFD(14) en vervolgens wordt, in de volgende scan, een sprong gemaakt zodat DIFU(13) of DIFD(14) wordt overgeslagen, dan zal het toegewezen bit aan blijven tot de executieconditie voor de JMP(04) die de sprong beheerst aan gaat.
Wanneer na de JMP(04) geen JME(05) met hetzelfde nummer gebruikt is zal een error melding getoond worden wanneer de program check wordt uitgevoerd. Ook wanneer de JME(05) instructie voor de JMP(04) instructie wordt geplaatst wordt deze melding gegenereerd, het programma wordt in dit geval normaal uitgevoerd. Deze error boodschap verschijnt ook als er voor een JME(05) 00 meermaals JMP(04) 00 is geplaatst. Ook in dit geval zal het programma normaal worden uitgevoerd.
Er worden geen vlaggen beïnvloed door deze instructie. Voorbeelden van programma’s met sprongen worden getoond in "Springen" op
pagina 23.

4.10 Programma einde - END(01)

LADDER SYMBOOL
Omschrijving
Vlaggen
CPM1/CPM1A programmeerhandleiding pagina 85
END(01) is nodig als de laatste instructie in een programma. Wanneer een programma is voorzien van subroutines, dan wordt de END(01) geplaatst achter de laatste subroutine. Geen enkele instructie achter de END(01) zal worden uitgevoerd. END(01) kan overal in het programma geplaatst worden om alle instructies tot aan dat punt uit te voeren. Dit wordt soms gedaan om fouten te kunnen vinden in een programma. Deze extra END(01) instructie moet echter weer verwijderd worden om de rest van het programma uit te voeren.
Als er geen END(01) in het programma is gezet, wordt geen instructie uitgevoerd en verschijnt de errormelding "no END instruction". SYSWIN voegt automatisch een END(01) instructie toe tijdens het downloaden als u deze bent vergeten. In dit geval betekent deze melding vaak dat u een te groot programma in het geheugen van de PLC heeft geladen.
END(01) zet de ER, CY, GR, EQ en LE vlaggen uit.
END(01)
Instructieset

4.11 No operation - NOP(00)

OMRON
Omschrijving
Vlaggen
LADDER SYMBOOL
De instructie NOP(00) heeft geen functie. Wanneer NOP(00) wordt gevonden in een programma wordt niets gedaan en gaat de CPU verder met de volgende instructie in het programma. Wanneer het geheugen wordt gewist voor het downloaden wordt een NOP(00) geplaatst op alle adressen.
Er worden geen vlaggen beïnvloed door deze instructie.
NOP(00)

4.12 Timer en counter instructies

TIM en TIMH zijn aftellende opkomtijd vertragende timer instructies die een TC nummer en een ingestelde waarde nodig hebben.
CNT is een aftellende counter instructie en CNTR is een omkeerbare counter instructie. Beide gebruiken een TC nummer en een ingestelde waarde. Beide gebruiken eveneens meerdere executiecondities voor tel en reset signalen.
Elk TC nummer kan maar één keer gebruikt worden, d.w.z. zodra het is gebruikt als definer in één van de timer of counter instructies, kan het niet opnieuw gebruikt worden. Zodra gedefinieerd, kunnen TC nummers zo vaak als nodig gebruikt worden als operands in instructies anders dan timer en counter instructies.
TC nummers lopen van 000 t/m 127. Bij het gebruik van een TC nummer als definer in een timer of counter instructie moet de prefix niet ingevoerd worden. Zodra gedefinieerd als een timer kan een TC nummer voorafgegaan door een prefix TIM gebruikt worden als operand in diverse instructies. De TIM prefix wordt gebruikt, onafhankelijk van de timerinstructie die gebruikt is om de timer te definiëren. Zodra gedefinieerd als een counter kan het TC nummer voorafgegaan door de prefix CNT gebruikt worden als operand in bepaalde instructies. De prefix CNT wordt ook gebruikt, onafhankelijk van de counter instructie die was gebruikt om de counter te definiëren.
De TIM en CNT prefixen worden gebruikt om een veld in het TC gebied aan te duiden. Het is mogelijk om met de TIM prefix een veld op te geven dat door een counter gebruikt wordt. In dit geval zal de counter waarde getoond worden. Alhoewel het verder geen consequenties heeft voor de uitvoer van het programma is het voor het overzicht in het programma niet aan te raden om TIM en CNT prefixen om te wisselen.
TC nummers kunnen worden gebruikt voor operands die bitdata willen hebben en voor operands die woorddata gebruiken. Wordt een TC nummer gebruikt in een instructie op bitniveau dan geeft het nummer toegang tot de completionvlag van de timer of counter. Wanneer een TC nummer wordt gebruikt in een instructie die woorddata verlangt dan geeft het TC nummer toegang tot een geheugenlocatie die de actuele waarde van de timer of counter bevat. De actuele waarde van een timer of counter kan dus gebruikt worden als operand in een CMP(20) of een andere instructie die gebruik van het TC gebied toestaat.
Het TC gebied bewaart de ingestelde waarden van timers en counters tijdens spanningsuitval. De actuele waarden van timers worden gereset wanneer de PLC begint met de uitvoer van het programma. Raadpleeg de sectie over interlocks voor details over de werking van timers en counters in interlock circuits. De actuele waarde van counters worden niet gereset bij spanningsuitval of het starten van het programma.
Opmerking
pagina 86 CPM1/CPM1A programmeerhandleiding
TIM000 wordt gebruikt tijdens het programmeren om drie zaken aan te duiden. De timer met het TC nummer 000, de completionvlag van deze timer en de actuele waarde van deze timer. De samenhang zal duidelijk zijn. De eerste is altijd een instructie, de tweede is altijd een bit gebruikt in een instructie en de derde is altijd een woord gebruikt in een functie. Dit geldt voor alle TC nummers, onafhankelijk of de prefix TIM of CNT is.
Een ingestelde waarde kan ingevoerd worden als een constante of als een woord­adres in een datagebied. Als een woord uit het IR gebied, dat toegewezen is aan een input unit, wordt toegewezen als de ingestelde waarde kan de input unit dusdanig aangesloten worden dat de ingestelde waarde kan worden ingevoerd
OMRON

4.12.1 Timer - TIM

Instructieset
met bijvoorbeeld duimwielschakelaars. Timers en counters die op deze manier zijn aangesloten kunnen alleen ingesteld worden als de PLC in de RUN of MONITOR mode staat. Alle ingestelde waarden (inclusief extern ingestelde waarden) moeten worden opgegeven in BCD.
LADDER SYMBOOL DEFINER WAARDEN
TIM
N
IW
N: TC nummer
# (000 - 127)
OPERAND DATAGEBIEDEN
IW: Ingestelde waarde (BCD)
IR, AR, DM, HR, LR, #
Beperkingen
Omschrijving
De ingestelde waarde ligt tussen 000,0 en 999,9 seconde. De decimale punt wordt niet ingevoerd. Bij het invoeren van een ingestelde waarde van 0001 ligt de tijd tussen de 0 en 0,1 seconde.
Elk TC nummer kan gebruikt worden als definer in één timer of counter instructie. TC000 t/m TC003 kunnen beter niet gebruikt worden voor TIM, aangezien deze
nummers bij gebruik van TIMH(15) instructies een betere nauwkeurigheid geven. Worden ze niet gebruikt voor TIMH(15) instructies dan kunnen ze echter voor gewone TIM instructies gebruikt worden.
Een timer wordt geactiveerd wanneer de executieconditie aan gaat en wordt gereset (naar de ingestelde waarde) als de executieconditie uit gaat. De TIM instructie meet de tijd in units van 0,1 seconde. Een ingestelde waarde van #10 betekent dus een tijd van 1,0 seconden. De actuele waarde van een timer telt af van de ingestelde waarde (in units van 0,1s) naar 0.
Als de executieconditie lang genoeg aan blijft voor de TIM instructie om terug te tellen naar nul, dan zal de completionvlag van het gebruikte TC nummer aan gaan en aan blijven tot de timer wordt gereset (d.w.z. tot de executieconditie uitgaat).
Het volgende figuur toont de relatie tussen de executieconditie voor TIM en de eraan toegewezen completionvlag.
EXECUTIECONDITIE
COMPLETIONVLAG
AAN UIT
AAN UIT
IW IW
Voorzorgen
Timers in een interlock worden gereset als de executieconditie voor IL (02) uit is. Door het uitzetten van de PLC worden timers eveneens gereset. Als een timer gewenst is die onder deze condities niet gereset wordt, kunnen klokpulsen uit het SR gebied gebruikt worden om timers te maken met CNT instructies. Raadpleeg "counter - cnt" op pagina 93 voor details.
Programma uitvoer wordt voortgezet, zelfs als niet BCD ingestelde waarden worden gebruikt. De tijden worden hierdoor echter onbetrouwbaar.
Vlaggen ER
: IW (ingestelde waarde) is niet in BCD.
Indirect geadresseerd DM woord bestaat niet. Inhoud van *DM woord is niet in BCD opgegeven of de grootte van het DM gebied is overschreden.
Voorbeelden
Alle hier volgende voorbeelden gebruiken OUT instructies met operandbits uit het IR gebied om het resultaat van timers te verwerken. In plaats van deze OUT instructies kunnen natuurlijk ook andere instructies toegepast worden.
Voorbeeld1: Basis toepassing
Het volgende voorbeeld toont twee timers, de ingestelde waarde van de ene wordt opgegeven met een constante, de andere via inputwoord 005. De eerste timer zal gaan lopen als 000.00 aangaat. Na 15 seconden loopt de timer af en zal 010.00 aan gaan. Wanneer 000.00 uitgaat zal de timer gereset worden en wordt 010.00 uitgezet. Wordt de timer gereset voordat deze is afgelopen dan zal 010.00 niet aangaan. Wanneer 000.01 aangaat wordt TIM001 gestart. Deze begint te tellen met de waarde die op het IR woord 005 staat. Bit 010.01 wordt aangezet als
CPM1/CPM1A programmeerhandleiding pagina 87
Instructieset
Voorbeeld 2: Verlengde timers
OMRON
000.01 aan gaat. Wanneer de ingestelde waarde uit woord 005 is afgelopen dan wordt 010.01 uitgezet. Dit bit wordt ook uitgezet als TIM001 wordt gereset, onafhankelijk of deze al is afgelopen of niet.
000.00 TIM
000
#0150
TIM000
000.01 TIM
001
005
TIM001
Adres Instructie Operands
00000 LD 000.00 00001 TIM 000 #0150 00002 LD TIM000 00003 OUT 010.00 00004 LD 000.01 00005 TIM 001 005 00006 AND NOT TIM001 00007 OUT 010.01
Er zijn twee manieren om timers te creëren met een tijd van meer dan 999,9 seconden. Eén manier is om meer dan één timer te gebruiken, de completionvlag van elke timer wordt gebruikt om de volgende te activeren. Een eenvoudig voorbeeld staat hieronder, hier worden twee 900.0 seconde (15 minuten) timers gecombineerd om functioneel een 30 minuten timer te creëren.
000.00 TIM
001
#9000
TIM001
TIM
002
#9000 900,0s
TIM002
015,0s
010.00
Woord 005
010.01
900,0s
010.00
Adres Instructie Operands
00000 LD 000.00 00001 TIM 001 #9000 00002 LD TIM001 00003 TIM 002 #9000 00004 LD TIM002 00005 OUT 010.00
In dit voorbeeld wordt 010.00 30 minuten nadat 000.00 is aangegaan aangezet. TIM kan ook gecombineerd met CNT gebruikt worden of CNT kan worden gebruikt
in combinatie met klokpuls bits uit het SR gebied om langere timers te creëren. Een voorbeeld hiervoor wordt gegeven in "counter - cnt" op pagina 93.
Voorbeeld 3: Aan / uit vertragingen
TIM kan in combinatie met KEEP(11) worden gebruikt om een vertraging in het aan- en uitzetten van een bit te creëren afhankelijk van een gewenste executieconditie.
De completionvlaggen van twee timers worden gebruikt in de executiecondities voor het setten en het resetten van de KEEP(11) instructie. Op deze manier is een aan- en een uitvertraging te creëren. Het bit wiens werking vertraagd dient te worden, wordt als operand in de KEEP(11) gebruikt. Het aan- en uitgaan van het toegewezen bit wordt dus vertraagd door twee ingestelde waarden van twee timers. De twee ingestelde waarden kunnen natuurlijk, als dat gewenst is, hetzelfde zijn.
pagina 88 CPM1/CPM1A programmeerhandleiding
OMRON
Instructieset
In het volgende voorbeeld wordt 005.00 5,0 seconden nadat 000.00 aangaat geset en 3,0 seconden nadat 000.00 uitgaat gereset. Het is noodzakelijk om zowel
005.00 als 000.00 te gebruiken in de executieconditie voor TIM002; 000.00 in een
geïnverteerde conditie is nodig om TIM002 te resetten als 000.00 aangaat en
005.00 is nodig om TIM002 te activeren (als 000.00 uit is).
000.00 TIM
001
005.00 000.00
TIM001
TIM002
000.00
005.00
#0050 005,0s
TIM
002
#0030
S
KEEP(11)
005.00
R
003,0s
Voorbeeld 4: One-shot bits
5,0s 3,0s
Adres Instructie Operands
00000 LD 000.00 00001 TIM 001 #0050 00002 LD 005.00 00003 AND NOT 000.00 00004 TIM 002 #0030 00005 LD TIM001 00006 LD TIM002 00007 KEEP(11) 005.00
De tijd dat een bit aan of uit is kan worden ingesteld door TIM te gebruiken met OUT of OUT NOT. Het volgende diagram toont hoe dit mogelijk is. In dit voorbeeld blijft 010.04 aan voor 1,5 seconde nadat 000.00 aan is gegaan, onafhankelijk van de tijd dat 000.00 aanblijft. Dit wordt bereikt door 200.00 als een zelfhandhavend bit te gebruiken, geactiveerd door 000.00, dat 010.04 aan zet. Wanneer TIM001 afloopt, dus als de ingestelde waarde van TIM001 afgelopen is, wordt 010.04 uitgezet door de completionvlag van TIM001. D.w.z. de geïnverteerde completionvlag die gebruikt is in de instructieregel, creëert een uit executieconditie voor de instructie OUT 010.04.
200.00
000.00
200.00
TIM001
200.00
TIM
001
#0015
001,5s
200.00
000.00
010.04
Adres Instructie Operands
00000 LD 200.00 00001 AND NOT TIM001 00002 OR 000.00 00003 OUT 200.00
TIM001
1,5s 1,5s
010.04
CPM1/CPM1A programmeerhandleiding pagina 89
Instructieset
OMRON
00004 LD 200.00 00005 TIM 001 #0015 00006 LD 200.00 00007 AND NOT TIM001 00008 OUT 010.04
Het volgende netwerk heeft exact dezelfde functie en kan gebruikt worden om geheugen te besparen.
000.00 TIM
001
#0015
001,5s
Voorbeeld 5: Knipperbits
010.04
Adres Instructie Operands
00000 LD 000.00 00001 OR 010.04 00002 TIM 001 #0015 00003 AND NOT TIM001 00004 OUT 010.04
TIM001
010.04
Met twee timers kunnen knipperbits gecreëerd worden die werken op een vast interval als een bepaalde executieconditie aan is. Eén TIM dient om het gespecificeerde bit aan en uit te zetten als de completionvlag van deze timer aan­of uitgaat. De andere TIM dient om de werking van de eerste te beheersen. Wanneer de completionvlag van de eerste timer aangaat wordt de tweede gestart. Wanneer de completionvlag van de tweede timer afloopt worden beide timers gereset en wordt TIM001 opnieuw gestart.
000.00
TIM002
TIM
001
TIM001
TIM001
#0010
TIM
002
#0015 001,5s
010.05
001,0s
000.00
002.05
1,5s 1,5s
1,0s 1,0s
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT TIM002 00002 TIM 001 #0010 00003 LD TIM001 00004 TIM 002 #0015 00005 LD TIM001 00006 OUT 010.05
Een eenvoudiger maar minder flexibele methode om een knipperbit te creëren is een AND tussen een klokpuls uit het SR gebied en de executieconditie die aan is als het knipperbit moet werken. Alhoewel deze methode geen TIM gebruikt, wordt het hier getoond zodat het vergeleken kan worden. Beperkingen van deze methode zijn dat de aan en uit tijd gelijk zijn en afhankelijk van de klokpulsen die in de CPU beschikbaar zijn. De met systeem klokpulsen gecreëerde knipperbits vergen natuurlijk wel minder programma.
In het volgende voorbeeld is de seconde klokpuls (255.02) gebruikt om 010.06 elke seconde aan / uit te zetten. D.w.z. het bit zal 0,5 seconde aan en 0,5 seconde uit zijn. De precieze timing en de initiële status van 010.06 zijn afhankelijk van de status van de klok puls wanneer 000.00 aangaat.
pagina 90 CPM1/CPM1A programmeerhandleiding
OMRON
O
Instructieset
000.00
Adres Instructie Operands
00000 LD 000.00 00001 AND 255.02 00002 OUT 010.06
255.02

4.12.2 Highspeed timer - TIMH(15)

LADDER SYMBOOL DEFINER WAARDEN
Beperkingen
Omschrijving
Voorzorgen
Vlaggen ER
De ingestelde waarde ligt tussen 00,00 en 99,99 seconden. De komma wordt niet ingevoerd. Bij het invoeren van een ingestelde waarde van 0001 ligt de tijd tussen de 0 en 0,01 seconde. Een ingestelde waarde van 0000 deactiveert de timer en maakt de completionvlag direct hoog.
Elk TC nummer kan gebruikt worden als definer in één timer of counter instructie. Het is aan te raden om TC000 t/m TC003 te gebruiken als definer. Het gebruiken
van andere TC nummers leidt tot onnauwkeurigheid als de cyclustijd groter is dan 10ms.
TIMH(15) werkt op dezelfde manier om als TIM behalve dat TIMH de tijd meet in units van 0,01 seconde.
De cyclustijd beïnvloedt de nauwkeurigheid van TIMH(15) als TC004 t/m TC127 worden gebruikt. Gebruik TC000 t/m TC003 als de cyclustijd groter is dan 10ms. Bij gebruik van de TC nummers 000 t/m 003 wordt de TIMH(15) instructie op interrupt basis aangestuurd. De completionvlag van een normale timer instructie wordt door de instructie zelf aangezet. De onnauwkeurigheid van een normale timer is dus afhankelijk van de cyclustijd. Bij highspeed timers die op interrupt basis worden aangestuurd komt de completionvlag op als de tijd is afgelopen. Dus niet op het moment dat de instructie weer gescand wordt.
Raadpleeg de sectie "Timer - TIM" op pagina 87 voor details over de werking en voorbeelden. Op de hierboven aangegeven verschillen na zijn de werking van TIM en TIMH(15) identiek.
Timers in een interlock worden gereset als de executieconditie voor IL (02) uit is. Door het uitzetten van de PLC worden timers eveneens gereset. Als een timer gewenst is die onder deze condities niet gereset wordt, kunnen klokpulsen uit het SR gebied gebruikt worden om timers te maken met CNT instructies. Raadpleeg "counter - cnt" op pagina 93 voor details.
Programma uitvoer wordt voortgezet, zelfs als niet BCD ingestelde waarden worden gebruikt. De tijden worden hierdoor echter onbetrouwbaar.
: IW (ingestelde waarde) is niet in BCD.
Indirect geadresseerd DM woord bestaat niet. Inhoud van *DM woord is niet in BCD opgegeven of de grootte van het DM gebied is overschreden.
TIMH(15)
N
SV
010.06
N: TC nummer
# (000 - 127 (voorkeur 000 - 003))
OPERAND DATAGEBIEDEN
IW: Ingestelde Waarde (BCD)
IR, AR, DM, HR, LR, #

4.12.3 Interval timer - STIM(—)

LADDER SYMBOOL
STIM(-)
C1
C2
C3
@STIM(-)
C1
C2
C3
CPM1/CPM1A programmeerhandleiding pagina 91
PERAND DATAGEBIEDEN
C1: Control data #1
000, 003, 006, 010
C2: Control data #2
IR, AR, DM, HR, TC, LR, #
C3: Control data #3
IR, AR, DM, HR, TC, LR, #
Instructieset
OMRON
Beperkingen
Omschrijving
Start interrupts
Opmerking
Actuele waarde uitlezen
Opmerking
Timers stoppen
Vlaggen ER
C1 moet 000, 003, 006 of 010 zijn. Wanneer C1 000 of 003 is dan kan een constante groter dan 255 niet gebruikt worden op C3. Als C1 006 is dan kunnen DM6144 t/m DM6655 niet gebruikt worden voor C2 of C3. Wanneer C1 010 is moeten C2 en C3 000 zijn.
STIM(—) wordt gebruikt om de interval timer te beheersen door te voorzien in vier basisfuncties: starten van de timer voor een one-shot interrupt, starten van de timer voor scheduled interrupts (interrupts op een vaste tijdbasis), stoppen van de timer en het uitlezen van de actuele waarde van de timer. Afhankelijk van de instelling op C1 wordt één van deze functies uitgevoerd. Mogelijke waarden van C1 zijn in de volgende tabel opgenomen. In het hoofdstuk “Interval timer interrupts” op pagina 46 staat meer informatie over de interval timer.
Functie C1 Waarde
Start timer 000 Start scheduled interrupt 003 Lees de actuele waarde 006 Stop de timer 010
Zet C1 op 000 om de interval timer te activeren in de one-shot mode. Wanneer C1 wordt ingesteld op 003 dan wordt de interval timer geactiveerd in de scheduled interrupt mode.
C2 specificeert de ingestelde waarde (IW) van de timer en kan een constante zijn of het eerste woord van twee opeenvolgende woorden die deze instelling bevatten. De instellingen kunnen een minimaal verschil vertonen afhankelijk van de gebruikte mode.
Als C2 een constante is (#) specificeert het een waarde van 0001 t/m 9999 in BCD. Het interval dat gebruikt wordt is in dit geval 1ms. De tijd kan in dit geval dus worden ingesteld tussen de 1 en 9999ms.
Als C2 een woord adres is, specificeert C2 de waarde (BCD, 0001 t/m 9999) en C2+1 het interval dat gebruikt wordt (BCD, 0005 t/m 0320) in units van 0,1ms. Het interval dat gebruikt kan worden ligt dus tussen de 0,5 en 32ms.
C3 specificeert het subroutine nummer 000 t/m 049. De uiteindelijke ingestelde tijd van de interval timer is: (de inhoud van C2) x (de inhoud van C2+1) x 0,1ms Zet C1 op 006 om de actuele waarde van de timer uit te lezen. C2 is de eerste van twee woorden die gebruikt worden om de actuele waarde van
de timer in op te slaan. Op C2 wordt een aantal opgeslagen (BCD, 0000 t/m 9999), op C2+1 wordt het gebruikt interval opgeslagen (BCD in units van 0,1ms). Elke keer dat het interval dat op C2+1 is opgeslagen afloopt wordt de inhoud van C2 met één verlaagd (mits de STIM instructie elke keer wordt uitgevoerd).
C3 specificeert het woord dat gebruikt wordt om de tijd in op te slaan die verstreken is sinds de waarde op C2 met één verlaagd is (BCD in units van 0,1ms).
De tijd die verstreken is sinds de timer is gestart kan als volgt berekend worden: [(de inhoud van C2) x (de inhoud van C2+1) + (de inhoud van C3)] x 0,1ms. Stel C1 in op 010 om de timer te stoppen. C2 en C3 hebben in dit geval geen functie en moeten worden ingesteld op 000.
: Een waarde is niet in het juiste formaat opgegeven.
Indirect geadresseerd DM woord bestaat niet. Inhoud van *DM woord is niet in BCD opgegeven of de grootte van het DM gebied is overschreden.
De grootte van een geheugengebied is overschreden.
pagina 92 CPM1/CPM1A programmeerhandleiding
OMRON

4.12.4 Counter - CNT

LADDER SYMBOOL DEFINER WAARDEN
Klokpuls
CNT
R
N
SV
N: TC nummer
# (000 - 127)
OPERAND DATAGEBIEDEN
IW: Ingestelde Waarde (BCD)
IR, AR, DM, HR, LR, #
Instructieset
Beperkingen
Omschrijving
Elk TC nummer kan gebruikt worden als definer in één timer of counter instructie. CNT wordt gebruikt om vanaf de ingestelde waarde (IW) af te tellen naar nul. Elke
keer als de executieconditie op de klokpuls ingang van uit naar aan gaat wordt de actuele waarde (IW) met één verlaagd. Als de executieconditie, sinds de vorige keer dat de instructie gescand werd, niet verandert of veranderd is van aan naar uit, wordt de actuele waarde van CNT niet verlaagd. De completionvlag van een counter gaat aan wanneer de actuele waarde nul wordt en blijft aan tot de counter gereset wordt.
CNT wordt gereset met de reset ingang R. Wanneer R aan is wordt de actuele waarde ingesteld op de ingestelde waarde. De counter zal klokpulsen niet tellen zolang de reset ingang (R) aan is. Het terugtellen van de ingestelde waarde naar nul begint vervolgens weer overnieuw als R uitgaat. De actuele waarde van CNT wordt niet gereset door spanningsuitval, het in program mode zetten van de PLC of tijdens actieve interlocks.
Veranderingen in de executiecondities, de completionvlag en de actuele waarde zijn in de volgende figuur getoond. De verschillen in hoogte van de lijn die de actuele waarde weergeeft geven alleen een indicatie van de veranderingen van de actuele waarde.
EXECUTIE CONDITIE KLOKPULS
EXECUTIE CONDITIE RESET (R)
COMPLETION VLAG
AAN UIT
AAN UIT
AAN UIT
Voorzorgen
Vlaggen ER
Voorbeeld 1: Basis toepassing
ACTUELE WAARDE
IW-1
IW-2
0002
0001
0000
IWIW
Programma-uitvoer zal normaal doorgaan als een niet-BCD getal als ingestelde waarde wordt gebruikt. De werking van de counter wordt er echter onbetrouwbaar door.
: IW (ingestelde waarde) is niet in BCD.
Indirect geadresseerd DM woord bestaat niet. Inhoud van *DM woord is niet in BCD opgegeven of de grootte van het DM gebied is overschreden.
In het volgende voorbeeld wordt de actuele waarde verlaagd zodra zowel 000.00 als 000.01 aan zijn en 000.02 uit is en 000.00 of 000.01 de vorige keer dat CNT004 werd uitgevoerd laag waren. Zodra 150 pulsen zijn geteld (de actuele waarde bereikt nul) wordt 200.05 aangezet.
000.00
000.02
CNT004
Adres Instructie Operands
00000 LD 000.00 00001 AND 000.01 00002 LD 000.02
000.01 Klokpuls
CNT
R 004
#0150
200.05
CPM1/CPM1A programmeerhandleiding pagina 93
Instructieset
OMRON
00003 CNT 004 #0150 00004 LD CNT004 00005 OUT 200.05
In het bovenstaande programma zou 000.00 kunnen worden gebruikt om te bepalen wanneer CNT in werking is en 000.01 kan worden gebruikt als het bit wiens veranderingen worden geteld.
Het bovenstaande voorbeeld kan aangepast worden zodat de counter elke keer als de spanning aan wordt gezet gereset wordt. Dit wordt gerealiseerd door de
eerste scan vlag
nemen. Dit wordt hieronder getoond.
000.00
000.02
253.15
uit het SR gebied (253.15) in de reset conditie van CNT op te
000.01 Klokpuls
CNT
R 004
#0150
Voorbeeld 2: Verlengde counters
CNT004
Adres Instructie Operands
00000 LD 000.00 00001 AND 000.01 00002 LD 000.02 00003 OR 253.15 00004 CNT 004 #0150 00005 LD CNT004 00006 OUT 200.05
200.05
Counters die verder moeten tellen dan 9.999 kunnen worden geprogrammeerd door een counter te gebruiken die het aantal maal telt dat een andere counter van de ingestelde waarde heeft teruggeteld naar nul.
In het volgende voorbeeld wordt 000.00 gebruikt om te bepalen wanneer CNT001 actief is. CNT001 telt, wanneer 000.00 aan is, het aantal uit/aan veranderingen van
000.01. CNT001 wordt gereset door zijn completionvlag. Hierdoor begint deze counter direct nadat de actuele waarde nul bereikt direct overnieuw met tellen. CNT002 telt het aantal maal dat de completionvlag van CNT001 aangaat. Bit
000.02 dient als een reset voor de gehele verlengde counter en reset zowel CNT001 als CNT002 wanneer het uit is. De completionvlag van CNT002 wordt gebruikt om CNT001 te resetten om te voorkomen dat CNT001 door kan gaan met tellen als de ingestelde waarde van CNT002 bereikt is.
Omdat in dit voorbeeld de ingestelde waarde voor CNT001 #100 is en die van CNT002 #200 komt de completionvlag van CNT002 op wanneer 100 x 200 of 20,000 uit / aan veranderingen zijn gemaakt door 000.01. Als resultaat zal 010.03 aangaan.
000.00
000.02
CNT001
000.01 Klokpuls
CNT
001
R
#0100
CNT002
CNT001
000.02
CNT002
Adres Instructie Operands
00000 LD 000.00 00001 AND 000.01 00002 LD NOT 000.02 00003 OR CNT001 00004 OR CNT002
Klokpuls
CNT
002
R
#0200
010.03
pagina 94 CPM1/CPM1A programmeerhandleiding
OMRON
Voorbeeld 3: Verlengde timers
Instructieset
00005 CNT 001 #0100 00006 LD CNT001 00007 LD NOT 000.02 00008 CNT 002 #0200 00009 LD CNT002 00010 OUT 010.03
CNT kan op deze manier zo vaak als gewenst gebruikt worden om counters te maken die elke gewenste waarde kunnen tellen.
CNT kan op twee manieren gebruikt worden om verlengde timers te creëren, door TIM en CNT te combineren of door klokpulsen uit het SR gebied te gebruiken.
In het volgende voorbeeld telt CNT002 het aantal maal dat TIM001 zijn ingestelde waarde afgeteld heeft. De completionvlag van TIM001 wordt gebruikt om TIM001 te resetten zodat deze continu loopt en CNT002 het aantal maal kan tellen dat de completionvlag van TIM001 aangaat (CNT002 wordt met één verlaagd op het moment dat de completionvlag van TIM001 aangaat en TIM001 wordt door dezelfde completionvlag gereset). TIM001 wordt ook gereset door de completionvlag van CNT002 zodat de verlengde timer niet kan starten als deze is afgelopen. Om de timer na het aflopen weer te kunnen laten tellen moet eerst CNT002 gereset worden met 000.01, dat fungeert als de reset voor de gehele verlengde timer.
Omdat in dit voorbeeld de ingestelde waarde voor TIM001 5,0 seconden is en die van CNT002 #100, zal de completionvlag van CNT002 aan gaan als 5 seconden x 100, dat is 500 seconden (of 8 minuten en 20 seconden) zijn verlopend. Als resultaat zal 010.01 aangezet worden.
000.00
TIM001
CNT002
TIM
001
#0050
005,0s
TIM001
000.01
CNT002
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT TIM001 00002 AND NOT CNT002 00003 TIM 001 #0050 00004 LD TIM001 00005 LD 000.01 00006 CNT 002 #0100 00007 LD CNT002 00008 OUT 010.01
klokpuls
CNT
002
R
#0100
010.01
In het volgende voorbeeld telt CNT001 het aantal maal dat de 1 seconde klokpuls (bit 255.02) van uit naar aan verandert. Ook hier wordt 000.00 gebruikt om te bepalen of de counter wel of niet moet tellen.
Omdat in dit voorbeeld de ingestelde waarde voor CNT001 #700 is zal de completionvlag van CNT001 aan gaan als 1 seconde x 700, dat is 700 seconden (of 11 minuten en 40 seconden) verlopen zijn. Als resultaat zal 200.02 aangezet worden. Door het kiezen van bijvoorbeeld de 1 minuut klokpuls in plaats van de 1 seconde klokpuls kunnen makkelijk nog langere tijden gecreëerd worden.
000.00
000.01
255.02 klokpuls
CNT
001
R
#0700
CNT001
Adres Instructie Operands
00000 LD 000.00
200.02
CPM1/CPM1A programmeerhandleiding pagina 95
Instructieset
00001 AND 255.02 00002 LD NOT 000.01 00003 CNT 001 #0700 00004 LD CNT001 00005 OUT 200.02
Opmerking
De kortere klokpulsen hoeven niet noodzakelijkerwijs nauwkeuriger timers op te leveren omdat hun korte aan/uit tijden misschien niet goed gedetecteerd kunnen worden door de CPU, speciaal tijdens langere cyclustijden. In het bijzonder de
0.02 seconde en 0.1 seconde klokpulsen kunnen beter niet gebruikt worden om timers te creëren met counter instructies. Alleen als u er zeker van bent dat de cyclustijd van de PLC altijd kort genoeg is (een vuistregel hiervoor is minder dan de helft van de looptijd van de klokpuls) kunt u deze klokpulsen gebruiken.

4.12.5 Omkeerbare counter - CNTR(12)

LADDER SYMBOOL DEFINER WAARDEN
II+
CNTR(12)
DI-
R
IW
OMRON
N: TC nummer
# (000 - 127)
N
OPERAND DATAGEBIEDEN
IW: Ingestelde Waarde (BCD)
IR, AR, DM, HR, LR, #
Beperkingen
Omschrijving
Elk TC nummer kan gebruikt worden als definer in één timer of counter instructie. CNTR(12) is een omkeerbare circulaire counter die wordt gebruikt om te tellen
tussen nul en de ingestelde waarde afhankelijk van veranderingen in twee executiecondities, die in de increment input (II+) en die in de decrement input (DI-).
De actuele waarde wordt verhoogd met één zodra CNTR(12) wordt uitgevoerd met een de executieconditie voor II+
executieconditie voor II+ en de vorige keer dat CNTR(12) werd uitgevoerd
aan
was. D.w.z. voor de instructie op de opgaande flank
uit
op de II+ executieconditie. De actuele waarde wordt met één verlaagd wanneer de CNTR(12) instructie wordt uitgevoerd met een opgaande flank op de DI­executieconditie. Als zowel op de II+ als DI- voorwaarde een opgaande flank wordt gedetecteerd zal de actuele waarde van CNTR(12) niet veranderen.
Als de executiecondities van II+ en DI- niet zijn veranderd of zijn veranderd van aan naar uit dan zal de actuele waarde niet veranderen.
Wanneer de actuele waarde 0000 is en verlaagd wordt dan wordt deze op de ingestelde waarde (IW) gezet en wordt de completionvlag aangezet tot de actuele waarde weer wordt verlaagd. Wanneer de actuele waarde van de counter gelijk is aan de ingestelde waarde en verhoogd wordt, dan wordt de actuele waarde ingesteld op 0000 en wordt de completionvlag aangezet tot de actuele waarde opnieuw verhoogd wordt.
CNTR(12) wordt gereset met de reset ingang R. Wanneer R aan is, wordt de actuele waarde ingesteld op nul. Zolang als de reset ingang aan is, kan de actuele waarde niet verhoogd of verlaagd worden. Tellen is weer mogelijk als R uit is. De actuele waarde van CNTR(12) wordt niet gereset tijdens actieve interlocks, wanneer de spanning van de CPU uitgezet wordt en wanneer de CPU in de program mode gezet wordt.
Veranderingen in de II+ en DI- executiecondities, de completionvlag en de actuele waarde worden hieronder geïllustreerd vanaf een willekeurig moment in de tijd. De hoogte van de lijn die de actuele waarde weergeeft is alleen bedoeld als een indicatie van de verandering in de actuele waarde.
pagina 96 CPM1/CPM1A programmeerhandleiding
OMRON
O
Instructieset
Voorzorgen
EXECUTIECONDITIE II+
EXECUTIECONDITIE DI-
COMPLETIONVLAG
ACTUELE WAARDE
Programma-uitvoer zal normaal doorgaan als een niet-BCD getal als ingestelde
AAN UIT
AAN UIT
AAN UIT
IW-1
IW-2
waarde wordt gebruikt. De werking van de counter wordt er echter onbetrouwbaar door.
Vlaggen ER
: IW (ingestelde waarde) is niet in BCD.
Indirect geadresseerd DM woord bestaat niet. Inhoud van *DM woord is niet in BCD opgegeven of de grootte van het DM gebied is overschreden.

4.12.6 Registreer vergelijkingstabel - CTBL(—)

LADDER SYMBOOL
CTBL(-)
P
C
TB
IW
@CTBL(-)
P
C
TB
0000
IW
IW-1
0001
0000
TB: Eerste woord vergelijkingstabel
IW-2
PERAND DATAGEBIEDEN
P: Poort
000
C: Control data
000 t/m 003
IR, AR, DM, HR, LR
Beperkingen
Omschrijving
Het eerste en het laatste woord van de vergelijkingstabel moeten in hetzelfde datagebied liggen. De lengte van de vergelijkingstabel kan afhankelijk van instellingen variëren.
Wanneer de executieconditie uit is wordt CTBL(—) niet uitgevoerd. Wanneer de executieconditie aan is, slaat CTBL(—) een vergelijkingstabel op die de geregistreerde waarden vergelijkt met de actuele waarde van de highspeed counter. Afhankelijk van de waarde van C zal de vergelijking met de actuele waarde van de highspeed counter direct beginnen of apart gestart moeten worden met INI(—).
De poort operand (P) specificeert de highspeed counter die in de vergelijking gebruikt wordt. Bij de CPM1(A) is deze altijd 000.
De functie van CTBL(—) wordt bepaald door control data C, zoals in de volgende tabel getoond is. De functies worden na de tabel verklaard.
C CTBL(—) functie
000 Registreert een doelwaarde vergelijking en start het vergelijken 001 Registreert een bereik vergelijkingstabel en start het vergelijken 002 Registreert een doelwaarde vergelijking. Het vergelijken moet gestart worden
met INI(—)
003 Registreert een bereik vergelijkingstabel. Het vergelijken moet gestart worden
met INI(—)
Wanneer de actuele waarde overeenkomt met de doelwaarde of binnen het gespecificeerde bereik valt wordt de betreffende subroutine aangeroepen en uitgevoerd. Zie hiervoor ook "Highspeed counter interrupts" op pagina 47.
Als de highspeed counter is geactiveerd in de PC Setup (DM6642) zal deze beginnen te tellen vanaf 0 als de CPM1 begint te werken. De actuele waarde zal niet worden vergeleken met de vergelijkingstabel tot deze is geregistreerd en de vergelijking is geactiveerd met INI(—) of CTBL(—). Het vergelijken kan worden gestart en gestopt of de actuele waarde kan worden gereset met INI(—).
Zodra een vergelijkingstabel is geregistreerd is deze geldig tot de CPM1 in program mode wordt gezet, uit wordt gezet of wanneer een fout optreedt tijdens
CPM1/CPM1A programmeerhandleiding pagina 97
Instructieset
Doel waarde vergelijking
OMRON
het registreren van een nieuwe tabel. Het is aan te raden om, indien mogelijk de gedifferentieerde uitvoering van CTBL(—) te gebruiken om de cyclustijd te reduceren.
Een doelwaarde vergelijkingstabel bevat tot aan zestien doelwaarden en een subroutinenummer voor elke doelwaarde. De corresponderende subroutine wordt aangeroepen en uitgevoerd als de actuele waarde overeenkomt met de doelwaarde. Wanneer een interruptroutine niet noodzakelijk is kan een niet gedefinieerde subroutine in de tabel geplaatst worden.
Het volgende diagram toont de opbouw van een doelwaarde vergelijkingstabel voor gebruik met highspeed counter 0 of highspeed counter 1 of 2 in lineaire mode.
TB Aantal doelwaarden (BCD) 0001 t/m 0016 TB+1 Doelwaarde #1, lage 4 cijfers (BCD) Eén instelling TB+2 Doelwaarde #1, hoge 4 cijfers (BCD) TB+3 Subroutinenummer voor doelwaarde 1 (zie
noot)
---
---
Overige instellingen
1, 2, 3...
Bereik vergelijking
1. Het subroutinenummer kan 0000 t/m 0049 zijn en de subroutine wordt uitgevoerd zolang de actuele waarde van de counter binnen het gespecificeerde bereik ligt. Een waarde FFFF geeft aan dat geen subroutine uitgevoerd moet worden.
Een bereik vergelijkingstabel bevat acht bereiken die worden gedefinieerd door een achtcijferige lage limiet en een achtcijferige hoge limiet en het corresponderende subroutinenummer. De corresponderende subroutine wordt aangeroepen en uitgevoerd wanneer de actuele waarde binnen het opgegeven bereik valt. Wanneer interrupt uitvoer niet noodzakelijk is kan een niet gedefinieerd subroutinenummer ingevoerd worden.
Stel altijd acht bereiken in. Als minder dan acht bereiken nodig zijn stel dan de overige subroutine nummers in op FFFF. Als meer dan acht bereiken nodig zijn kan een andere vergelijkingsinstructie zoals BCMP(—) gebruikt worden om de overige bereiken te vergelijken met de actuele waarde van de highspeed counter. Denk eraan dat deze woorden één keer per cyclus worden gerefreshed.
Er zijn vlaggen in het AR gebied die aangeven dat de actuele waarde van een highspeed counter binnen een of meer van de acht bereiken valt. Deze vlaggen gaan aan wanneer de actuele waarde binnen het bijbehorende bereik valt.
Counter Vlaggen in het AR gebied
Highspeed counter 0 AR11.00 t/m AR11.07 corresponderen met bereik 1 t/m 8
Het volgende diagram toont de opbouw van een bereik vergelijkingstabel voor gebruik met de highspeed counter
TB Lage limiet #1, lage 4 cijfers (BCD) Eerste bereik instelling TB+1 Lage limiet #1, hoge 4 cijfers (BCD) TB+2 Hoge limiet #1, lage 4 cijfers (BCD) TB+3 Hoge limiet #1, hoge 4 cijfers (BCD) TB+4 Subroutine nummer (Zie noot 1)
Overige instellingen TB+35 Lage limiet #8, lage 4 cijfers (BCD) Achtste bereik instelling TB+36 Lage limiet #8, hoge 4 cijfers (BCD) TB+37 Hoge limiet #8, lage 4 cijfers (BCD) TB+38 Hoge limiet #8, hoge 4 cijfers (BCD) TB+39 Subroutine nummer (Zie noot 1)
1, 2, 3...
1. Het subroutinenummer kan 0000 t/m 0049 zijn en de subroutine wordt uitgevoerd zolang de actuele waarde van de counter binnen het gespecificeerde bereik ligt. Een waarde FFFF geeft aan dat geen subroutine uitgevoerd moet worden.
De volgende tabel toont de mogelijke waarden voor doelwaarden, lage limiet waarden en hoge limiet waarden. Het hexadecimale cijfer F op het meest significante cijfer geeft aan dat de waarde negatief is.
pagina 98 CPM1/CPM1A programmeerhandleiding
Loading...