Omron CQM1 Programming Manual [nl]

Cat. No. W228-NL2-03
SYSMAC C-series
Programmeerbare besturingen
CQM1
PROGRAMMEERHANDLEIDING
OMRON

Mededeling

CQM1 Programmeerhandleiding uitgebreid
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. 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 CQM1 kunt U de volgende handleidingen raadplegen. Nederlandstalig CQM1 Installatie handleiding
CQM1 Programmeerhandleiding SYSWIN handleiding
Engelstalig W228 CQM1/CPM1 Programming manual
W226 CQM1 Operation manual W238 CQM1 Dedicated I/O units operation manual
Naast de diverse handleidingen die voor de CQM1 beschikbaar zijn kunt u SYSTOOLS gebruiken voor het maken van instellingen in de PC Setup van de CQM1. 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.
CQM1 Programmeerhandleiding pagina 1
CQM1 Programmeerhandleiding uitgebreid
ELECTRONICS B.V.
© OMRON 1997,
OMRON CQM1 Instructieset Publicatie november 2000 Document referentie NLMAN-CQM1-Programmeerhandleiding uitgebreid Revisie. 1 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 CQM1 Programmeerhandleiding
OMRON

Inhoudsopgave

1 Schrijven en invoeren van het programma 9
1.1 Terminologie 9
1.2 Basis ladderdiagrammen 9
1.3 Programmeer overwegingen 20
1.4 Bit statussen aansturen 26
1.5 Werkbits (interne relais) 28
1.6 Programmeer voorzorgsmaatregelen 30
1.7 Programma uitvoer 31
Inhoudsopgave
1.2.1 Basis begrippen 10
1.2.2 Mnemonic code 10
1.2.3 Ladder instructies 11
1.2.4 De END instructie 13
1.2.5 Logische blok instructies 14
1.2.6 Het coderen van meerdere “uitvoerende” instructies 20
1.3.1 Vertakkende instructie regels 20
1.3.2 Springen 25
1.4.1 DIFFERENTIATE UP en DIFFERENTIATE DOWN 26
1.4.2 KEEP 27
1.4.3 Zelfhandhavende bits 27
1.5.1 Werkbit toepassingen 28
1.5.2 Reduceren van complexe condities 28
1.5.3 Gedifferentieerde condities 29
2 CQM1 PC Setup 32
2.1 Basis CQM1 werking en I/O afhandeling 36
2.2 CQM1-CPU45 analoge ingangen instellen 39
2.3 CQM1 pulsuitgang functies instellen en gebruik 40
2.3.1 Type van pulsuitgangen 40
2.3.2 Standaard puls uitsturing op een uitgang 40
2.3.3 Standaard puls uitsturing op poort 1 en 2 42
2.3.4 Variabele duty-ratio puls uitsturing op poort 1 en 2 48
2.3.5 Bepalen van de status van poort 1 en 2 49
2.4 Instellen en gebruik van de CQM1 interrupt functies 50
2.4.1 Interrupt typen 50
2.4.2 Input interrupts 52
2.4.3 Alle interrupts maskeren 56
2.4.4 Interval timer interrupts 56
2.4.5 Highspeed counter 0 interrupts 58
2.4.6 Highspeed counter 0 overflows / underflows 63
2.4.7 Highspeed counter 1 en 2 interrupts (CQM1-CPU43-E) 64
2.4.8 Absolute highspeed counter interrupts (CQM1-CPU44-E) 70
2.5 CQM1 communicatie functies 74
2.5.1 Instellingen 75
2.5.2 Hostlink en RS-232C communicatie parameters 76
2.5.3 Poorten aansluiten 77
2.5.4 Hostlink communicatie 77
2.5.5 RS-232C communicatie 79
2.5.6 One-to-one link communicatie 80
2.6 Uitbreidingsinstructies 81
2.7 Analoge instellingen (alleen CQM1-CPU42-E) 82
3 Geheugengebieden 84
3.1 Introductie 84
3.2 Geheugengebieden voor de CQM1 85
3.2.1 Geheugengebied functie 85
3.3 Toewijzen van I/O bits 88
3.4 Opslaan van DM en UM in memorycassettes 89
3.4.1 Memorycassettes en inhoud 89
3.4.2 Memorycassette capaciteit en UM gebied grootte 90
3.4.3 Schrijven naar de memorycassette 91
CQM1 Programmeerhandleiding pagina 3
Inhoudsopgave
OMRON
3.4.4 Uitlezen van de memorycassette 92
3.4.5 Memorycassette inhoud vergelijken 92
3.5 Datagebied structuur 93
3.5.1 Data structuur 94
3.5.2 Verschillende vormen data omzetten 94
3.5.3 Decimale punt 94
3.5.4 Signed en unsigned binaire data 95
3.6 IR (interne relais) gebied 96
3.7 SR (speciale relais) gebied 96
3.7.1 SR gebied overzicht 96
3.7.2 Forced status hold bit 98
3.7.3 I/O status hold bit 98
3.7.4 Output inhibit bit 99
3.7.5 FAL (failure alarm) gebied 99
3.7.6 Lage batterijspanning vlag 99
3.7.7 Cyclustijd te groot errorvlag 99
3.7.8 Eerste scan vlag 99
3.7.9 Klokpuls bits 99
3.7.10 STEP(08) uitgevoerd vlag 100
3.7.11 Instructie executie errorvlag, ER 100
3.7.12 Rekenkundige vlaggen 100
3.8 AR (auxiliary relais) gebied 101
3.8.1 AR gebied overzicht 101
3.8.2 Error historie bits 102
3.8.3 Kalender/klok gebied en bits 103
3.8.4 Power-OFF counter 103
3.8.5 SCAN(18) cyclustijd vlag 103
3.8.6 FALS adres 104
3.8.7 Cyclustijd indicators 104
3.9 DM (data memory) gebied 104
3.9.1 Indirect adresseren 104
3.9.2 Error historie gebied 104
3.10 HR (holding relais) gebied 104
3.11 TC (timer/counter) gebied 105
3.12 LR (link relais) gebied 106
3.13 Programmageheugen 106
3.14 TR (temporary relais) gebied 106
4 Instructieset 107
4.1 Notatie 107
4.2 Instructie formaat 107
4.3 Datagebieden, definer waarden en vlaggen 108
4.3.1 Indirect adresseren 109
4.3.2 Constanten benoemen 109
4.4 Gedifferentieerde instructies 109
4.5 Alfabetische instructielijst op mnemonic 110
4.6 Ladderdiagram instructies 113
4.6.1 LD, LD NOT, AND, AND NOT, OR en OR NOT 113
4.6.2 AND LD en OR LD 114
4.7 Bitcontrol instructies 114
4.7.1 Uitgangen en hulprelais aansturen - OUT en OUT NOT 114
4.7.2 Setten en resetten - SET en RSET 115
4.7.3 Op- en neergaande flanken - DIFU(13) en DIFD(14) 116
4.7.4 Status vasthouden - KEEP(11) 117
4.8 Interlocks - IL(02) en ILC(03) 119
4.9 Springen - JMP(04) en JME(05) 121
4.10 Programma einde - END(01) 122
4.11 No operation - NOP(00) 122
4.12 Timer en counter instructies 122
4.12.1 Timer - TIM 123
4.12.2 Highspeed timer - TIMH(15) 127
4.12.3 Interval timer - STIM(—) 128
4.12.4 Counter - CNT 129
4.12.5 Omkeerbare counter - CNTR(12) 132
pagina 4 CQM1 Programmeerhandleiding
OMRON
Inhoudsopgave
4.12.6 Registreer vergelijkingstabel - CTBL(—) 133
4.12.7 Mode control - INI(—) 137
4.12.8 Actuele waarde highspeed counter lezen - PRV(—) 138
4.13 Schuiven van data 139
4.13.1 Schuifregister - SFT(10) 140
4.13.2 Omkeerbaar schuifregister - SFTR(84) 142
4.13.3 Arithmetic shift left - ASL(25) 143
4.13.4 Arithmetic shift right - ASR(26) 143
4.13.5 Roteer links - ROL(27) 144
4.13.6 Roteer rechts - ROR(28) 144
4.13.7 Schuif één digit naar links - SLD(74) 145
4.13.8 Schuif één digit naar rechts - SRD(75) 145
4.13.9 Schuif woord - WSFT(16) 145
4.13.10 Asynchroon schuifregister - ASFT(—) 146
4.14 Data verplaatsen 147
4.14.1 Verplaatsen - MOV(21) 147
4.14.2 Verplaats geïnverteerd - MVN(22) 148
4.14.3 Set blok - BSET(71) 148
4.14.4 Verplaats blok - XFER(70) 149
4.14.5 Verwissel data - XCHG(73) 150
4.14.6 Distribueer één woord - DIST(80) 150
4.14.7 Verzamel data - COLL(81) 151
4.14.8 Verplaats bit - MOVB(82) 152
4.14.9 Verplaats digit - MOVD(83) 153
4.14.10 Verplaats bits - XFRB(—) 153
4.15 Datavergelijking 154
4.15.1 Vergelijken - CMP(20) 154
4.15.2 Dubbel vergelijken - CMPL(60) 156
4.15.3 Meervoudige woorden vergelijken - MCMP(19) 157
4.15.4 Bereiken vergelijken - BCMP(68) 158
4.15.5 Tabel vergelijken - TCMP(85) 159
4.15.6 Binair vergelijken met sign - CPS(—) 160
4.15.7 Dubbel binair vergelijken met sign - CPSL(—) 160
4.15.8 Bereik vergelijken met sign - ZCP(—) 161
4.15.9 Dubbel bereik vergelijken met sign - ZCPL(—) 162
4.16 Dataconversie 163
4.16.1 BCD naar binair - BIN(23) 163
4.16.2 Dubbel BCD naar dubbel binair - BINL(58) 164
4.16.3 Binair naar BCD - BCD(24) 164
4.16.4 Dubbel binair naar dubbel BCD - BCDL(59) 165
4.16.5 4 naar 16 decoder - MLPX(76) 165
4.16.6 16 naar 4 encoder - DMPX(77) 167
4.16.7 7 segment decoder - SDEC(78) 168
4.16.8 ASCII conversie - ASC(86) 170
4.16.9 ASCII naar hexadecimaal - HEX(—) 171
4.16.10 Schalen - SCL(—) 173
4.16.11 Signed binair naar BCD schalen - SCL2(—) 174
4.16.12 BCD naar signed binair schalen - SCL3(—) 176
4.16.13 Uren naar seconden - SEC(—) 177
4.16.14 Seconden naar uren - HMS(—) 178
4.16.15 Kolom naar woord - LINE(—) 179
4.16.16 Woord naar kolom - COLM(—) 179
4.16.17 2's complement - NEG(—) 180
4.16.18 Dubbel 2's complement - NEGL(—) 181
4.17 BCD calculaties 181
4.17.1 Increment - INC(38) 182
4.17.2 Decrement - DEC(39) 182
4.17.3 Zet Carry - STC(40) 182
4.17.4 Wis Carry - CLC(41) 182
4.17.5 BCD optellen - ADD(30) 183
4.17.6 Dubbel BCD optellen - ADDL(54) 184
4.17.7 BCD aftrekken - SUB(31) 185
4.17.8 Dubbel BCD aftrekken - SUBL(55) 186
4.17.9 BCD vermenigvuldigen - MUL(32) 188
CQM1 Programmeerhandleiding pagina 5
Inhoudsopgave
OMRON
4.17.10 Dubbel BCD vermenigvuldigen - MULL(56) 188
4.17.11 BCD Delen - DIV(33) 189
4.17.12 Dubbel BCD delen - DIVL(57) 190
4.17.13 Wortel trekken - ROOT(72) 190
4.18 Binaire berekeningen 191
4.18.1 Binair optellen - ADB(50) 192
4.18.2 Dubbel binair optellen - ADBL(—) 193
4.18.3 Binair aftrekken - SBB(51) 194
4.18.4 Dubbel binair aftrekken - SBBL(—) 196
4.18.5 Binair vermenigvuldigen - MLB(52) 197
4.18.6 Signed binair vermenigvuldigen - MBS(—) 198
4.18.7 Dubbel signed binair vermenigvuldigen - MBSL(—) 198
4.18.8 Binair delen - DVB(53) 199
4.18.9 Signed binair delen - DBS(—) 200
4.18.10 Dubbel signed binair delen - DBSL(—) 200
4.19 Speciale rekenkundige instructies 201
4.19.1 Vind maximum - MAX(—) 201
4.19.2 Vind minimum - MIN(—) 202
4.19.3 Gemiddelde waarde - AVG(—) 203
4.19.4 Tel reeks op - SUM(—) 204
4.19.5 Lineaire benadering - APR(—) 206
4.20 Logische instructies 208
4.20.1 Complement - COM(29) 209
4.20.2 Logische AND - ANDW(34) 209
4.20.3 Logische OR - ORW(35) 209
4.20.4 Exclusive OR - XORW(36) 210
4.20.5 Exclusive NOR - XNRW(37) 210
4.21 Subroutine en interrupt aansturing 211
4.21.1 Overzicht 211
4.21.2 Subroutine definitie en return - SBN(92)/RET(93) 211
4.21.3 Subroutine aanroep - SBS(91) 212
4.22 Step instructies 213
4.22.1 Stap definitie en stap starten - STEP(08) / SNXT(09) 213
4.23 Speciale instructies 220
4.23.1 Failure alarm en severe failure alarm - FAL(06) / FALS(07) 220
4.23.2 Toon boodschap - MSG(46) 220
4.23.3 Bit counter - BCNT(67) 222
4.23.4 I/O Refresh - IORF(97) 222
4.23.5 Data tracing - TRSM(45) 222
4.23.6 Macro - MCRO(—) 223
4.23.7 Frame checksum - FCS(—) 223
4.23.8 Failure point detection - FPD(—) 225
4.23.9 Interrupt beheer - INT(89) 228
4.23.10 Puls - PULS(—) 230
4.23.11 Speed output - SPED(—) 231
4.23.12 Puls output - PLS2(—) 232
4.23.13 Acceleration control - ACC(—) 234
4.23.14 Puls met variabele duty-ratio - PWM(-) 236
4.23.15 Data zoeken - SRCH(-) 237
4.23.16 PID control - PID(-) 238
4.24 Communicatie instructies 239
4.24.1 Receive - RXD(-) 239
4.24.2 Transmit - TXD(-) 240
4.25 Geavanceerde I/O instructies 242
4.25.1 7-Segment display output - 7SEG(-) 242
4.25.2 Digital switch input - DSW(-) 242
4.25.3 Hexadecimal key input -HKY(-) 243
4.25.4 TEN KEY INPUT - TKY(-) 243
5 Appendix 245
5.1 Conversietabel hexadecimaal, BCD, binair 245
5.2 Conversietabel hex, ASCII 245
5.3 Index 246
pagina 6 CQM1 Programmeerhandleiding
OMRON

Voor wat betreft deze handleiding

De CQM1 is een compacte, snelle PLC die ontworpen is voor geavanceerde besturingen met een bereik tot 192 I/O. Deze beknopte handleiding beschrijft de werking van de CQM1. Voor functies die in deze handleiding niet worden besproken verwijzen wij u naar de overige handleidingen.
Voor wat betreft deze handleiding
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 CQM1 bepalen. Om maximaal gebruik te maken van de CQM1 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 CQM1 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 CQM1 opgenomen. 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.
Schrijven en invoeren van het programma
CQM1 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.
CQM1 Programmeerhandleiding pagina 7
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 in het ladderdiagram en die in instructievorm alleen zichtbaar zijn wanneer een programma wordt omgezet naar mnemonics en instructies die in een ladderdiagram aan het einde van de executieconditie geplaatst worden en uitgevoerd worden wanneer deze conditie “hoog” is.
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 107.
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 leiden naar instructies aan de rechterzijde van het diagram. De logische combinaties van deze condities bepalen wanneer en hoe de instructies aan de rechterzijde worden uitgevoerd. Hieronder wordt een ladderdiagram dat uit twee netwerken bestaat getoond.
000.00 063.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 met de conditie geassocieerde bit bepaalt de executieconditie voor de er op volgende instructies of condities.
252.08
000.03
HR00.50
HR01.09
LR25.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
CQM1 Programmeerhandleiding pagina 9
Schrijven en invoeren van het programma
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 er 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
Normaal open conditie
00000
Normaal gesloten conditie
Instructie
Instructie
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 aan en uit condities voor een instructie de samengestelde conditie waardoor de instructie wordt uitgevoerd. Deze conditie, die aan of uit kan zijn, wordt de executieconditie voor deze 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 OUT (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 20 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 10 CQM1 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 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.
OMRON
Schrijven en invoeren van het programma
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 "Basis ladderdiagrammen" op pagina 9 en in "Instructieset" op pagina 107.
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 105.01 00010 MOV(21) DM0000 DM0500 00011 DIFU(13) 205.02 00012 AND 000.05 00013 OUT 105.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.
LD en LD NOT
AND en AND NOT
CQM1 Programmeerhandleiding pagina 11
De eerste conditie waarmee elk logisch blok begint in een ladderdiagram is de LD of LD 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 LD instructie (dit is een normaal open conditie) de executieconditie aan zijn wanneer 000.00 aan is. Voor de LD NOT instructie (dit is een normaal gesloten conditie) zal het aan zijn wanneer 000.00 uit is.
Wanneer twee of meer condities in serie zijn geplaatst op dezelfde instructieregel, wordt de eerste met een LD of LD NOT instructie geprogrammeerd. De rest van de
Schrijven en invoeren van het programma
000.00
condities worden met AND of AND NOT instructies ingevoerd. Het volgende voorbeeld toont drie instructies die van af de linkerkant gezien een LD, een AND NOT en een AND instructie voorstellen. Elk van deze instructies heeft één regel mnemonic code nodig.
OR en OR NOT
000.00
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT 001.00 00002 AND LR00.00 00003 Instructie
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 LD of LD 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 LD NOT, een OR NOT en een OR instructie. Wederom heeft elk van deze instructies één regel mnemonic code nodig.
001.00 LR00.00
OMRON
Instructie
AND en OR Combineren
001.00
LR00.00
Adres Instructie Operands
00000 LD NOT 000.00 00001 OR NOT 001.00 00002 OR LR00.00 00003 Instructie
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.
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.
000.00
000.01 000.02
002.00
000.03 Instructie
Adres Instructie Operands
00000 LD 000.00 00001 AND 000.01 00002 OR 002.00 00003 AND 000.02 00004 AND NOT 000.03
pagina 12 CQM1 Programmeerhandleiding
OMRON
000.00
002.00
OUT en OUT NOT
Schrijven en invoeren van het programma
00005 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 LD en OR LD 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 OUT en OUT NOT instructies. Deze instructies worden gebruikt om de status van het gebruikte operandbit aan te sturen, afhankelijk van de executieconditie. Met de OUT instructie wordt het operandbit aan gezet zolang als de executieconditie aan is. Met de OUT 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.

1.2.4 De END instructie

000.01
Adres Instructie Operands
00000 LD 000.00 00001 OUT 002.00
Adres Instructie Operands
00000 LD 000.01 00001 OUT NOT 002.01
002.01
In het bovenstaande voorbeeld zal 002.00 aan zijn zolang als 000.00 aan is en
002.01 zal uit zijn zolang als 000.01 uit is. In dit voorbeeld kunnen 000.00 en
000.01 input bits zijn en 002.00 en 002.01 output bits toegewezen aan I/O units die door de PLC aangestuurd worden. De signalen die binnen komen door de ingangen 000.00 en 000.01 sturen respectievelijk de output punten 002.00 en
002.01 aan. De tijd dat een bit aan of uit is kan gemanipuleerd worden door de OUT of OUT
NOT instructie te combineren met TIMER instructies. Raadpleeg "Timer - TIM" op pagina 123 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.
000.00
000.01 Instructie
END(01)
Adres Instructie Operands
00000 LD 000.00 00001 AND NOT 000.01 00002 Instructie 00003 END(01)
Programma uitvoer stopt hier
CQM1 Programmeerhandleiding pagina 13
Schrijven en invoeren van het programma
000.00
000.02
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 LD en OR LD), 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 LD instructie voert een logische AND uit op de executiecondities die twee logische blokken produceren. De OR LD instructie voert een logische OR uit tussen de executiecondities die twee logische blokken produceren.
AND LD
Alhoewel het onderstaande netwerk eenvoudig lijkt, is er een AND LD instructie noodzakelijk om het te programmeren.
OMRON
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.
Instructie
000.01
000.03
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 LD of LD NOT instructie in het midden van een instructieregel toepassen. Wanneer LD of LD 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 LD of een OR LD instructie gebruikt worden. In dit geval refereert "LD" naar het laden van de laatste ongebruikte executieconditie. Een ongebruikte executieconditie wordt aangemaakt voor elke LD of LD NOT instructie, behalve de eerste, in een netwerk.
Wordt het eerste ladderdiagram geanalyseerd dan is de instructie voor 000.00 een LD 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 LD 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 LD instructie doet dit. De mnemonic code van het ladderdiagram is beneden getoond. De AND LD instructie heeft geen operands nodig, omdat het berekeningen uitvoert met tevoren bepaalde executiecondities.
Adres Instructie Operands
00000 LD 000.00
pagina 14 CQM1 Programmeerhandleiding
OMRON
OR LD
Logische blok instructies in series
Schrijven en invoeren van het programma
00001 OR 000.01 00002 LD 000.02 00003 OR NOT 000.03 00004 AND LD
Het volgende diagram gebruikt een OR LD 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 LD instructie en de mnemonic code ervan is identiek aan die van de AND LD instructie, behalve dat de logische OR wordt bepaald tussen de huidige executieconditie en de laatste ongebruikte executieconditie.
000.00
000.01
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 LD als de OR LD 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 LD instructie voor de eerste conditie te gebruiken en vervolgens wordt AND LD of OR LD gebruikt om de blokken logisch te combineren. Met zowel AND LD als OR LD 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 LD in mnemonic code omdat drie paar parallelle condities in serie liggen. Beide opties voor het coderen worden getoond.
000.00
000.02
000.03
000.02
000.04
Instructie
105.00
000.01
Adres Instructie Operands
00000 LD 000.00 00001 OR NOT 000.01 00002 LD NOT 000.02 00003 OR 000.03 00004 AND LD 00005 LD NOT 000.04 00006 OR 000.05 00007 AND LD 00008 OUT 105.00
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 105.00
000.03
000.05
CQM1 Programmeerhandleiding pagina 15
Schrijven en invoeren van het programma
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 LD instructies in mnemonic code aangezien drie paar AND condities parallel aan elkaar liggen.
000.00
000.01
OMRON
105.01
AND LD en OR LD combineren
000.02
000.40
000.03
000.05
De eerste conditie van elke reeks wordt begonnen met een LD instructie en vervolgens wordt een AND uitgevoerd met de volgende conditie. De eerste twee blokken kunnen eerst gecodeerd worden, gevolgd door een OR LD, daarna het laatste blok gevolgd door een volgende OR LD; of de drie blokken kunnen eerst gecodeerd worden, gevolgd door twee OR LD’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 105.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 105.01
Beide codeer methoden die hierboven beschreven zijn kunnen ook gebruikt worden wanneer AND LD en OR LD 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
105.01
002.01
000.04
Blok a Blok b
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 105.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 LD samen gevoegd worden. In dit voorbeeld worden de drie blokken eerst gecodeerd, vervolgens wordt een OR LD gebruikt om de laatste twee blokken te combineren, gevolgd door een AND LD om de executieconditie geproduceerd door de OR LD met de executieconditie van blok a te combineren.
pagina 16 CQM1 Programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
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 105.02
105.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 LD en OR LD 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 LD voor de AND LD 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 LD. Voor de AND LD gebruikt kan worden moet echter OR LD 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.
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
000.06
Blok b2
105.03
CQM1 Programmeerhandleiding pagina 17
Schrijven en invoeren van het programma
LR00.00
00008 AND 000.07 00009 OR LD 00010 AND LD 00011 OUT 105.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 LD te gebruiken zoals hierboven getoond. Vervolgens zal blok c worden gecodeerd en een tweede AND LD zal gebruikt worden om het samen te voegen met de executieconditie van de eerste AND LD. Vervolgens wordt blok d gecodeerd en een derde AND LD 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.
Blok a Blok b Blok c Blok n
Het volgende netwerk gebruikt een OR LD, gevolgd door een AND LD om het bovenste deel van de code te programmeren, vervolgens zijn er nog twee OR LD’s nodig om de code af te maken.
000.00
000.01
OMRON
105.00
LR00.00
000.02 000.03
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.05
000.07
Alhoewel het programma uitgevoerd zal worden zoals het getekend is, kan het netwerk getekend worden zoals hieronder waardoor de eerste OR LD en AND LD 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.00
000.01
000.04
000.06
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
000.05
000.07
pagina 18 CQM1 Programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
00009 OR LD 00010 OUT LR00.00
Het volgende netwerk gebruikt vijf blokken, welke hier eerst in volgorde gecodeerd worden voordat OR LD en AND LD gebruikt worden om ze, vanaf de laatste twee blokken terugwerkend, samen te voegen. De OR LD op programma-adres 00008 voegt de blokken d en e samen, de volgende AND LD voegt de ontstane executieconditie samen met dat van blok c, etc.
000.00
Blok a Blok b
000.01
000.02
Blok c Blok d
000.04
000.03
000.06
000.05
000.07
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.03
000.04
LR00.00
LR00.00
000.05
000.01
000.02
Adres Instructie Operands
00000 LD 000.06 00001 AND 000.07 00002 OR 000.05 00003 AND 000.03 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
105.00
010.00
000.02
010.01 000.06
105.00
000.03
Blok b
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.
CQM1 Programmeerhandleiding pagina 19
Schrijven en invoeren van het programma
OMRON
Blok a
000.00 000.01
LD
000.00
000.01
AND
OR LD
105.00
OR 005.00
00002
AND
AND NOT
010.00 010.01
AND
000.03
000.02
000.03
Adres Instructie Operands
00000 LD 000.00 00001 AND 000.01 00002 LD 010.00 00003 AND 010.01 00004 OR LD 00005 OR 105.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 105.00
LD
Blok b
AND LD
105.00
010.00
010.01
000.04
LD AND
LD
Blok c
000.05
000.04
000.05
000.06
000.06

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 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.01
000.02
HR00.00
000.03
000.04
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 105.00 00007 AND 000.04 00008 OUT 105.06
HR00.01
105.00
105.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
pagina 20 CQM1 Programmeerhandleiding
OMRON
TR bits
Schrijven en invoeren van het programma
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.
Aftak
000.00
punt
000.02
Netwerk A: Correcte Werking
Adres Instructie Operands
00000 LD 000.00 00001 Instructie 1 00002 AND 000.02 00003 Instructie 2
Aftak
000.00
Netwerk B: Incorrecte Werking
Adres Instructie Operands
00000 LD 000.00 00001 AND 000.01 00002 Instructie 1 00003 AND 000.02 00004 Instructie 2
punt
000.01
000.02
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 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)).
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 OUT instructie. Deze executieconditie wordt vervolgens teruggehaald na de uitvoer van de “right­hand” instructie door hetzelfde TR bit te gebruiken als operand van een LD instructie
Instructie 1
Instructie 2
Instructie 1
Instructie 2
TR0
000.00
Netwerk B: Gecorrigeerd met een TR bit
000.01 Instructie 1
000.02 Instructie 2
CQM1 Programmeerhandleiding pagina 21
Schrijven en invoeren van het programma
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
Het bovenstaande netwerk voert de volgende actie uit: de status van 000.00 wordt geladen (een LD instructie) om de initiële executieconditie te bepalen. Deze executieconditie wordt vervolgens vastgelegd met een OUT 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 LD 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.
OMRON
TR0
000.00 000.01
000.04
000.05
Adres Instructie Operands
00000 LD 000.00 00001 OUT TR0 00002 AND 000.01 00003 OUT TR1 00004 AND 000.02 00005 OUT 105.00 00006 LD TR1 00007 AND 000.03 00008 OUT 105.01 00009 LD TR0 00010 AND 000.04 00011 OUT 105.02 00012 LD TR0 00013 AND NOT 000.05 00014 OUT 105.03
TR1
000.02
000.03
105.00
105.01
105.02
105.03
In dit voorbeeld worden TR0 en TR1 gebruikt om de executiecondities op de aftakpunten op te slaan. Na het uitvoeren van OUT 105.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
pagina 22 CQM1 Programmeerhandleiding
OMRON
Opmerking
Schrijven en invoeren van het programma
plaatsen en door er een aparte LD 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.
TR0
000.00
000.00
000.00 000.03
000.01 Instructie 1
Instructie 2
Instructie 2
000.01 Instructie 1
Instructie 1
Interlocks
Opmerking
TR0
000.01
000.01
000.00
000.01
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(02)) 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 119.
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.
CQM1 Programmeerhandleiding pagina 23
Schrijven en invoeren van het programma
000.00
000.01
000.02
Adres Instructie Operands
00000 LD 000.00 00001 IL(02) 00002 LD 000.01 00003 Instructie 1 00004 LD 000.02 00005 Instructie 2 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
000.01
000.02
000.03
000.04
000.05
000.06
OMRON
IL(02)
Instructie 1
Instructie 2
ILC(03)
IL(02)
Instructie 1
IL(02)
Instructie 2
Instructie 3
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.
pagina 24 CQM1 Programmeerhandleiding
OMRON
1.3.2 Springen
Schrijven en invoeren van het programma
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.
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 99. Er zijn twee typen sprongen. Het gebruikte sprongnummer bepaalt het type van de sprong.
Een sprong met het sprongnummer 01 t/m 99 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 99 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 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.
CQM1 Programmeerhandleiding pagina 25
Schrijven en invoeren van het programma
000.00
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. Sprongen daarentegen veranderen geen enkele status tussen de JMP en JME instructies.
000.01
000.02
000.03
000.04
000.05
000.06
OMRON
JMP(04)
00
Instructie 1
JMP(04) 00
00
Instructie 2
Instructie 3
Instructie 4
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

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.
JME(05)
00

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).
pagina 26 CQM1 Programmeerhandleiding
OMRON
1.4.2 KEEP
Schrijven en invoeren van het programma
000.00
DIFU(13)
092.00
000.01
DIFD(14)
092.01
Adres Instructie Operands
00000 LD 000.00 00001 DIFU(13) 092.00
Adres Instructie Operands
00002 LD 000.01 00003 DIFD(14) 092.01
In dit voorbeeld zal 092.00 voor één scan aan gaan wanneer 000.00 aan gaat. De volgende keer dat DIFU(13) 092.00 uitgevoerd wordt gaat 092.00 uit, onafhankelijk van de status van 000.00. Bit 092.00 zal pas weer door de DIFU(13) instructie aangestuurd kunnen worden wanneer 000.00 eerst uit is geweest. Met de DIFD instructie zal 092.01 aan gezet worden voor één scan nadat 000.01 uit gaat (092.01 zal tot dan uit zijn) en zal de volgende keer dat DIFD(14) 092.01 uitgevoerd wordt uit gezet worden.
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 KEEP (11)
HR00.00
000.04
000.05
S: set voorwaarde
R: reset voorwaarde
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.
CQM1 Programmeerhandleiding pagina 27
Schrijven en invoeren van het programma
HR00.00
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.
000.02 000.03
OMRON
000.04
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.05
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.
pagina 28 CQM1 Programmeerhandleiding
Loading...
+ 220 hidden pages