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.
NederlandstaligCQM1 Installatie handleiding
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.
OMRON CQM1 InstructiesetPublicatie 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 2CQM1 Programmeerhandleiding
OMRON
Inhoudsopgave
1Schrijven en invoeren van het programma9
1.1Terminologie9
1.2Basis ladderdiagrammen9
1.3Programmeer overwegingen20
1.4Bit statussen aansturen26
1.5Werkbits (interne relais)28
1.6Programmeer voorzorgsmaatregelen30
1.7Programma uitvoer31
Inhoudsopgave
1.2.1Basis begrippen10
1.2.2Mnemonic code10
1.2.3Ladder instructies11
1.2.4De END instructie13
1.2.5Logische blok instructies14
1.2.6Het coderen van meerdere “uitvoerende” instructies20
1.3.1Vertakkende instructie regels20
1.3.2Springen25
1.4.1DIFFERENTIATE UP en DIFFERENTIATE DOWN26
1.4.2KEEP27
1.4.3Zelfhandhavende bits27
1.5.1Werkbit toepassingen28
1.5.2Reduceren van complexe condities28
1.5.3Gedifferentieerde condities29
2CQM1 PC Setup32
2.1Basis CQM1 werking en I/O afhandeling36
2.2CQM1-CPU45 analoge ingangen instellen39
2.3CQM1 pulsuitgang functies instellen en gebruik40
2.3.1Type van pulsuitgangen40
2.3.2Standaard puls uitsturing op een uitgang40
2.3.3Standaard puls uitsturing op poort 1 en 242
2.3.4Variabele duty-ratio puls uitsturing op poort 1 en 248
2.3.5Bepalen van de status van poort 1 en 249
2.4Instellen en gebruik van de CQM1 interrupt functies50
2.4.1Interrupt typen50
2.4.2Input interrupts52
2.4.3Alle interrupts maskeren56
2.4.4Interval timer interrupts56
2.4.5Highspeed counter 0 interrupts58
2.4.6Highspeed counter 0 overflows / underflows63
2.4.7Highspeed counter 1 en 2 interrupts (CQM1-CPU43-E)64
4.15.7Dubbel binair vergelijken met sign - CPSL(—)160
4.15.8Bereik vergelijken met sign - ZCP(—)161
4.15.9Dubbel bereik vergelijken met sign - ZCPL(—)162
4.16Dataconversie163
4.16.1BCD naar binair - BIN(23)163
4.16.2Dubbel BCD naar dubbel binair - BINL(58)164
4.16.3Binair naar BCD - BCD(24)164
4.16.4Dubbel binair naar dubbel BCD - BCDL(59)165
4.16.54 naar 16 decoder - MLPX(76)165
4.16.616 naar 4 encoder - DMPX(77)167
4.16.77 segment decoder - SDEC(78)168
4.16.8ASCII conversie - ASC(86)170
4.16.9ASCII 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.17BCD calculaties181
4.17.1Increment - INC(38)182
4.17.2Decrement - DEC(39)182
4.17.3Zet Carry - STC(40)182
4.17.4Wis Carry - CLC(41)182
4.17.5BCD optellen - ADD(30)183
4.17.6Dubbel BCD optellen - ADDL(54)184
4.17.7BCD aftrekken - SUB(31)185
4.17.8Dubbel BCD aftrekken - SUBL(55)186
4.17.9BCD vermenigvuldigen - MUL(32)188
CQM1 Programmeerhandleidingpagina 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.18Binaire berekeningen191
4.18.1Binair optellen - ADB(50)192
4.18.2Dubbel binair optellen - ADBL(—)193
4.18.3Binair aftrekken - SBB(51)194
4.18.4Dubbel binair aftrekken - SBBL(—)196
4.18.5Binair vermenigvuldigen - MLB(52)197
4.18.6Signed binair vermenigvuldigen - MBS(—)198
4.18.7Dubbel signed binair vermenigvuldigen - MBSL(—)198
4.18.8Binair delen - DVB(53)199
4.18.9Signed binair delen - DBS(—)200
4.18.10 Dubbel signed binair delen - DBSL(—)200
4.19Speciale rekenkundige instructies201
4.19.1Vind maximum - MAX(—)201
4.19.2Vind minimum - MIN(—)202
4.19.3Gemiddelde waarde - AVG(—)203
4.19.4Tel reeks op - SUM(—)204
4.19.5Lineaire benadering - APR(—)206
4.20Logische instructies208
4.20.1Complement - COM(29)209
4.20.2Logische AND - ANDW(34)209
4.20.3Logische OR - ORW(35)209
4.20.4Exclusive OR - XORW(36)210
4.20.5Exclusive NOR - XNRW(37)210
4.21Subroutine en interrupt aansturing211
4.21.1Overzicht211
4.21.2Subroutine definitie en return - SBN(92)/RET(93)211
4.21.3Subroutine aanroep - SBS(91)212
4.22Step instructies213
4.22.1Stap definitie en stap starten - STEP(08) / SNXT(09)213
4.23Speciale instructies220
4.23.1Failure alarm en severe failure alarm - FAL(06) / FALS(07)220
4.23.2Toon boodschap - MSG(46)220
4.23.3Bit counter - BCNT(67)222
4.23.4I/O Refresh - IORF(97)222
4.23.5Data tracing - TRSM(45)222
4.23.6Macro - MCRO(—)223
4.23.7Frame checksum - FCS(—)223
4.23.8Failure point detection - FPD(—)225
4.23.9Interrupt 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.24Communicatie instructies239
4.24.1Receive - RXD(-)239
4.24.2Transmit - TXD(-)240
4.25Geavanceerde I/O instructies242
4.25.17-Segment display output - 7SEG(-)242
4.25.2Digital switch input - DSW(-)242
4.25.3Hexadecimal key input -HKY(-)243
4.25.4TEN KEY INPUT - TKY(-)243
5Appendix245
5.1Conversietabel hexadecimaal, BCD, binair245
5.2Conversietabel hex, ASCII245
5.3Index246
pagina 6CQM1 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 Programmeerhandleidingpagina 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.02005.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 Programmeerhandleidingpagina 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 10CQM1 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.
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 Programmeerhandleidingpagina 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.
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.
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.
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.
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
AdresInstructieOperands
00000LD000.00
00001OUT002.00
AdresInstructieOperands
00000LD000.01
00001OUT NOT002.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.
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.
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.
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.
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.
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.
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 16CQM1 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.
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.
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 aBlok bBlok cBlok 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.
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.
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.
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.01000.06
105.00
000.03
Blok b
000.05000.00000.01000.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.
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.
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 20CQM1 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.
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 “righthand” instructie door hetzelfde TR bit te gebruiken als operand van een LD
instructie
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.
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 22CQM1 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.00000.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.
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.
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 24CQM1 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.
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 Programmeerhandleidingpagina 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.
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 26CQM1 Programmeerhandleiding
OMRON
1.4.2 KEEP
Schrijven en invoeren van het programma
000.00
DIFU(13)
092.00
000.01
DIFD(14)
092.01
AdresInstructieOperands
00000LD000.00
00001DIFU(13)092.00
AdresInstructieOperands
00002LD000.01
00003DIFD(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.
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 Programmeerhandleidingpagina 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.
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 28CQM1 Programmeerhandleiding
Loading...
+ 220 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.