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
Loading...
+ 134 hidden pages