gekwalificeerde gebruiker en alleen voor de doeleinden die in deze handleiding worden beschreven.
De volgende conventies worden gebruikt om voorzorgsmaatregelen te tonen en te classificeren. Schenk
altijd aandacht aan de informatie die getoond wordt. Het geen aandacht schenken aan of negeren van
waarschuwingen kan leiden tot het gewond raken van mensen of schade aan het product.
Gevaar
apparatuur wordt gefabriceerd voor gebruik volgens de juiste procedures door een
Geeft informatie aan die, wanneer er geen acht op wordt geslagen, zeer
waarschijnlijk zal leiden tot ernstige verwonding of verlies van leven.
Waarschuwing
Voorzichtig
Geeft informatie aan die, wanneer er geen acht op wordt geslagen, mogelijk kan
leiden tot ernstige verwonding of verlies van leven en vrijwel zeker tot schade aan
het product.
Geeft informatie aan die, wanneer er geen acht op wordt geslagen, mogelijk kan
leiden tot relatief ernstige verwonding of letsel, schade aan het product of
verkeerde werking van het product.
OMRON product verwijzingen
Namen van OMRON producten beginnen met een hoofdletter in deze handleiding.
Het woord unit wordt gebruikt om een OMRON product aan te duiden, onafhankelijk van het feit of het
woord unit in de naam van het product voorkomt.
Het woord CPM1(A) wordt gebruikt wanneer de betreffende tekst op zowel de CPM1 als de CPM1A van
toepassing is, ook al wordt maar één van beide PLC typen in een bijpassende figuur afgebeeld. Wordt in
de tekst CPM1 of CPM1A gebruikt dan is de besproken optie alleen op dat type van toepassing.
Gebruikte afkortingen en termen zijn verklaard in de appendix.
Visuele hulpmiddelen
De volgende koppen verschijnen in de linkerkolom van de handleiding om u verschillende soorten
informatie snel te laten vinden.
Opmerking
1, 2, 3...
Geeft informatie weer die in het bijzonder praktisch is voor efficiënt en handig
gebruik van het product.
1. Geeft diverse soorten lijsten weer zoals procedures, controlelijsten etc.
Noot
Geeft een noot weer. Wordt gebruikt in combinatie met tabellen.
OMRON manual referenties
Voor het gebruik van de CPM1(A) kunt U de volgende handleidingen raadplegen.
NederlandstaligCPM1(A) installatie handleiding
Naast de diverse handleidingen die voor de CPM1(A) beschikbaar zijn kunt u SYSTOOLS gebruiken voor
het maken van instellingen in de PC Setup van de CPM1(A). Naast programma’s voor het maken van
instellingen in PLC’s en speciale kaarten bevat SYSTOOLS ook SYSHELP. Dit is een help bestand
waarin diverse wetenswaardigheden over OMRON PLC’s zijn gebundeld.
OMRON CPM1/CPM1A ProgrammeerhandleidingPublicatie november 2000
Document referentie NLMAN-CPM1-programmeerhandleiding Revisie. 2
De informatie in dit document is uitvoerig gecontroleerd. OMRON kan echter geen enkele
aansprakelijkheid aanvaarden voor enige incorrectheid of onvolledigheid van deze handleiding. Verder
heeft OMRON het recht onaangekondigd veranderingen aan het product en de handleiding aan te
brengen ter verbetering van de betrouwbaarheid, de functionaliteit en het ontwerp van de handleiding
en/of het product. OMRON is niet aansprakelijk voor enige schade die kan voortvloeien uit het gebruik
van deze handleiding, noch kan het enig onder patent rustende licentie of rechten van anderen,
overdragen.
OMRON is een geregistreerd handelsmerk van OMRON Corporation.
OMRON
OMRON
Alle rechten voorbehouden.
pagina 2CPM1/CPM1A programmeerhandleiding
OMRON
Inhoudsopgave
1Schrijven en invoeren van het programma.................................................7
De CPM1(A) is een compacte, snelle PLC die ontworpen is voor geavanceerde besturingen met een
bereik tot 100 I/O. Deze beknopte handleiding beschrijft de werking van de CPM1(A). Instructies die in
deze handleiding niet worden besproken verwijzen wij u naar de overige handleidingen van deze PLC.
OMRON
Voorzichtig
Sectie 1:
Deze sectie verklaart de basisstappen en -concepten die bekend moeten zijn bij het schrijven van een
eenvoudig ladderdiagram programma. Daarnaast wordt het invoeren van dat programma en het
uitvoeren door de PLC ervan behandeld. De instructies die nodig zijn om de basisopzet van het
ladderdiagram vast te leggen en die de executie beïnvloeden worden uitgelegd.
Sectie 2:
De PC Setup bevat diverse operating parameters die de werking van de CPM1(A) bepalen. Om
maximaal gebruik te maken van de CPM1(A) functionaliteit wanneer interrupt processing en
communicatie functies gebruikt worden kan de PC Setup "op maat" ingesteld worden, afhankelijk van de
taak die uitgevoerd moet worden.
Sectie 3:
Verschillende typen data zijn nodig om een besturing effectief en correct te kunnen laten werken. Om
met deze verschillende typen data overweg te kunnen is de PLC voorzien van een aantal
geheugengebieden voor data opslag, waarbij elk gebied een andere functie heeft. Deze verschillende
gebieden worden hier individueel besproken waarbij alle informatie die nodig is om het te kunnen
gebruiken wordt gegeven.
Sectie 4:
De OMRON SYSMAC CPM1(A) PLC beschikt over een uitgebreide instructieset die het mogelijk maakt
dat gecompliceerde processen eenvoudig geprogrammeerd kunnen worden. Deze sectie beschrijft de
instructies individueel en geeft het ladderdiagram symbool, de data gebieden die gebruikt kunnen worden
en de vlaggen die door de instructie beïnvloed worden.
Appendix:
In de appendix is diverse informatie over de CPM1(A) opgenomen.
Schrijven en invoeren van het programma
CPM1(A) PC Setup
Geheugengebieden
Instructieset
Lees deze handleiding nauwkeurig en wees er zeker van dat u de hierin
weergegeven informatie goed begrijpt voor u begint met het programmeren van
een OMRON PLC.
Aan deze handleiding is de grootst mogelijke zorg besteed. Mochten er ondanks deze zorg nog
onjuistheden of onduidelijkheden vermeld zijn, dan stellen wij ons uitdrukkelijk niet aansprakelijk voor
eventuele gevolgen. Voor suggesties ter verbetering houden wij ons aanbevolen.
pagina 6CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
1 Schrijven en invoeren van het programma
Deze sectie verklaart de basisstappen en -concepten die bekend moeten zijn bij
het schrijven van een eenvoudig ladderdiagram programma. Daarnaast wordt het
invoeren van dat programma en het uitvoeren door de PLC ervan behandeld. De
instructies die nodig zijn om de basisopzet van het ladderdiagram vast te leggen
en die de executie beïnvloeden worden uitgelegd. De complete instructieset die
tijdens het programmeren gebruikt kan worden, is beschreven in het hoofdstuk
over de instructieset.
1.1 Terminologie
Er worden in beginsel twee typen instructies gebruikt bij ladderdiagram
programmeren. Instructies die verbanden leggen tussen de voorwaarden
(condities) in het ladderdiagram en instructies die aan het einde van de
executieconditie geplaatst worden. De eerste zijn in instructievorm alleen zichtbaar
zijn wanneer een programma wordt omgezet naar mnemonics.
De meeste instructies hebben minimaal 1 of meer operands. Operands wijzen of
geven de data aan waarop de instructie uitgevoerd moet worden. Deze data wordt
soms ingevoerd als constante numerieke waarde, maar is meestal het adres van
het woord of bit die de te gebruiken data bevat. Bijvoorbeeld, een MOVE instructie
die 000 als bron (source) operand heeft, verplaatst de inhoud van woord 000 naar
een andere locatie. Deze andere locatie wordt ook als operand ingevoerd. Een bit
waarvan het adres is gebruikt als operand wordt een operandbit genoemd; een
woord waarvan het adres is gebruikt als operand wordt een operandwoord
genoemd. Als de waarde wordt ingevoerd als constante dan wordt het
voorafgegaan door # om aan te geven dat het geen adres is.
Andere termen die gebruikt worden voor het omschrijven van instructies worden
geïntroduceerd in het hoofdstuk "Instructieset" op pagina 71.
1.2 Basis ladderdiagrammen
Een ladderdiagram bestaat uit één verticale lijn aan de linkerzijde waaruit één of
meer horizontale lijnen naar rechts met vertakkingen ontstaan. De verticale lijn aan
de linkerzijde heet de “bus-bar”; de horizontale lijnen heten instructieregels of
rungs. Een onderling verbonden groep van instructieregels wordt een netwerk
genoemd. Op de instructieregels zijn condities geplaatst die de instructies aan de
rechterzijde van het diagram aansturen. De logische combinaties van deze
condities bepalen wanneer de instructies aan de rechterzijde worden uitgevoerd.
Hieronder wordt een ladderdiagram dat uit twee netwerken bestaat getoond.
000.00003.15
000.01
001.00000.02
001.00
000.11
Zoals getoond in het bovenstaande diagram kunnen instructieregels aftakken en
weer bij elkaar komen. De verticale paren lijnen worden condities of contacten
genoemd. Condities zonder diagonale lijn er doorheen worden normaal open
condities genoemd en corresponderen met een LD (load) AND, of OR instructie.
De condities met een diagonale lijn erdoor worden normaal gesloten condities
genoemd en corresponderen met een LD NOT, AND NOT, of OR NOT instructie.
Het nummer boven elke conditie geeft het operandbit voor deze instructie aan. Een
naam onder de conditie geeft het label van het operandbit aan. De status van het
252.08
000.03
HR00.50
HR01.09
LR15.03 244.00
005.01 005.02005.03005.04
000.07
TIM001 LR05.15
210.01210.02
210.05210.07
244.01
004.03004.05
Instructie
Instructie
CPM1/CPM1A programmeerhandleidingpagina 7
Schrijven en invoeren van het programma
met de conditie geassocieerde bit bepaalt de executieconditie voor de er op
volgende instructies of condities.
De manier waarop de uitvoering van de instructies leiden tot een bepaalde
executieconditie wordt hieronder beschreven. Voor we ons hier echter mee bezig
gaan houden zullen eerst een aantal basisbegrippen uitgelegd worden.
1.2.1 Basis begrippen
OMRON
Normaal open / normaal
gesloten condities
Executiecondities
Operandbits
Logische blokken
Elke conditie in een ladderdiagram is aan of uit, afhankelijk van de status van het
operandbit dat eraan is toegewezen. Een normaal open conditie is aan als het
operandbit aan is en uit als het operandbit uit is. Een normaal gesloten conditie is
aan als het operandbit uit is en uit als het operandbit aan is. Normaal gesproken
gebruikt u een normaal open conditie wanneer u wilt dat iets gebeurd als een bit
aan is en een normaal gesloten conditie wanneer u iets wilt laten gebeuren als een
bit uit is.
000.00
Instructie
Normaal open conditie
00000
Instructie
Normaal gesloten conditie
Instructie wordt uitgevoerd
als bit 000.00 AAN is
Instructie wordt uitgevoerd
als bit 000.00 UIT is
Bij ladderdiagramprogrammering bepaalt de logische combinatie van condities
voor een instructie de voorwaarde waardoor de instructie wordt uitgevoerd. Deze
voorwaarde, die aan of uit kan zijn, wordt de executieconditie voor de instructie
genoemd. In principe hebben alle instructies anders dan de LD instructies
executiecondities.
Het operand dat aan een ladder instructie wordt toegewezen kan elk bit in de IR,
SR, HR, AR, LR, of TC gebieden zijn. Dit betekent dat de status van condities in
een ladderdiagram kan worden bepaald door I/O bits, vlaggen, werkbits,
timers/counters, etc. LOAD (LD) en OUTPUT (OUT) instructies kunnen ook bits uit
het TR gebied gebruiken, maar dit kan alleen in een aantal speciale gevallen. Zie
hiervoor "Vertakkende instructie regels" op pagina 19 voor details.
De manier waarop condities instructies aansturen wordt bepaald door de relatie
tussen de condities in de instructieregels die voor deze instructies zijn geplaatst.
Elke reeks condities die samen een logisch resultaat creëren wordt een logisch
blok genoemd. Deze term moet niet verward worden met de blokken die in
SYSWIN gebruikt kunnen worden om een programma te structureren. Alhoewel
netwerken geschreven kunnen worden zonder de individuele logische blokken
waaruit ze zijn opgebouwd te begrijpen, is het analyseren van de logische blokken
noodzakelijk om efficiënt te kunnen programmeren en is het zelfs essentieel
wanneer programma’s ingevoerd moeten worden in mnemonic code.
1.2.2 Mnemonic code
Het ladderdiagram kan niet direct in de PLC ingevoerd worden. Het is noodzakelijk
om het ladderdiagram om te zetten naar mnemonic code. Deze mnemonic code
voorziet in exact dezelfde informatie als het ladderdiagram, maar dan in een vorm
die direct op de PLC ingevoerd kan worden. Feitelijk kunt u een programma direct
schrijven in mnemonic code, alhoewel het niet aan te raden is voor beginners of
voor complexe programma’s. Samengevat, onafhankelijk van het gebruikte
programmeerapparaat wordt het programma in het PLC geheugen opgeslagen in
mnemonic formaat. Dit maakt het belangrijk om deze mnemonic code te begrijpen.
Vanwege het belang van mnemonic code voor het compleet begrijpen van een
programma, wordt de mnemonic code tegelijk met het ladderdiagram uitgelegd.
Onthoud dat het niet noodzakelijk is om mnemonic code te gebruiken als u het
programma met SYSWIN invoert. Alhoewel u mnemonic code, als u er de voorkeur
aan geeft, wel kan gebruiken.
Programmageheugen
pagina 8CPM1/CPM1A programmeerhandleiding
Het programma wordt ingevoerd op adressen in het programmageheugen (UM).
Adressen in het programmageheugen verschillen iets van de adressen in andere
geheugengebieden, omdat elk adres niet per se dezelfde hoeveelheid data hoeft te
bevatten. Elk adres bevat één instructie met alle constanten, labels (definers) en
OMRON
Schrijven en invoeren van het programma
operands (dit wordt later in detail beschreven) die nodig zijn voor die instructie.
Omdat sommige instructies geen operands nodig hebben, terwijl andere tot
maximaal drie operands nodig hebben kunnen, programmageheugen adressen
één tot vier woorden lang zijn.
Programmageheugen adressen starten op regel 00000 en lopen door tot de
capaciteit van het programmageheugen uitgeput is. Het eerste woord van elke
regel definieert de instructie. Alle operands van de instructie worden er achter
geprogrammeerd, op dezelfde regel. De overige woorden die door een instructie
benodigd zijn bevatten de operands die bepalen welke data gebruikt moet worden.
Wanneer een programma wordt omgezet naar mnemonic code, worden instructies
in dit formaat genoteerd, één instructie op een regel, zoals ze in het ladderdiagram
getoond worden. Een voorbeeld van mnemonic code wordt hieronder getoond. De
gebruikte instructies worden beschreven in hoofdstuk "Instructieset" op pagina 71.
Tijdens het invoeren van mnemonic code in SYSWIN wordt de instructienaam
gescheiden van de operands door een Tab of spaties. De operands onderling
worden ook gescheiden door spaties of Tab.
Tijdens het programmeren wordt het adres waarop de instructie wordt geplaatst
automatisch bepaald. Boven in de editor laat SYSWIN het eerste
programmageheugen adres van het netwerk zien. Wanneer een programma
omgezet wordt naar mnemonic code, is het aan te raden om op programma
geheugen adres 00000 te beginnen tenzij er een specifieke reden is om ergens
anders te beginnen. SYSWIN begint altijd op adres 00000.
1.2.3 Ladder instructies
De ladder instructies zijn die instructies die aangestuurd worden door de condities
in het ladderdiagram. Ladder instructies onafhankelijk of in combinatie met de
hieronder beschreven logische blok instructies, vormen de executiecondities
waarop de uitvoering van alle andere instructies is gebaseerd.
LOAD en LOAD NOT
CPM1/CPM1A programmeerhandleidingpagina 9
De eerste conditie waarmee elk logisch blok begint in een ladderdiagram is de
LOAD of LOAD NOT instructie. Elk van deze instructies heeft één regel mnemonic
code nodig. "Instructie" is gebruikt als een dummy instructie in de volgende
voorbeelden en kan elke van de aan de rechterkant in het ladderdiagram
geplaatste instructies zijn. Deze instructies worden ook wel aangeduid met “righthand” 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 LOAD instructie (dit is een normaal open
Schrijven en invoeren van het programma
conditie) de executieconditie aan zijn wanneer 000.00 aan is. Voor de LOAD NOT
instructie (dit is een normaal gesloten conditie) zal het aan zijn wanneer 000.00 uit
is.
AND en AND NOT
OR en OR NOT
Wanneer twee of meer condities in serie zijn geplaatst op dezelfde instructieregel,
wordt de eerste met een LOAD of LOAD NOT instructie geprogrammeerd. De rest
van de condities worden met AND of AND NOT instructies ingevoerd. Het
volgende voorbeeld toont drie instructies die van af de linkerkant gezien een
LOAD, een AND NOT en een AND instructie voorstellen. Elk van deze instructies
heeft één regel mnemonic code nodig.
De instructie zal alleen een aan executieconditie hebben wanneer alle drie de
condities aan zijn. Dit wil zeggen, wanneer 000.00 aan is, 001.00 uit is en LR00.00
aan is.
AND instructies in serie kunnen individueel beschouwd worden, waarbij elke AND
de logische and uitvoert tussen de executieconditie (d.w.z., het totaal van alle
condities tot aan dit punt) en de status van het operandbit van de AND instructie.
Wanneer beide aan zijn, dan wordt een aan executieconditie aangemaakt voor de
volgende instructie. Wanneer een van de twee of beide uit zijn dan is het resultaat
ook uit. De executieconditie voor de eerste AND instructie in een serie is de status
van de eerste conditie op de instructie regel.
Elke AND NOT instructie in een serie bepaalt de logische AND van de
executieconditie en de inverse van het operandbit.
Wanneer twee of meer condities op verschillende instructie regels liggen die
parallel lopen en vervolgens samenkomen, dan wordt de eerste conditie met een
LOAD of LOAD NOT instructie ingevoerd; de overige condities met OR of OR NOT
instructies. Het volgende voorbeeld toont drie condities die ingevoerd moeten
worden (in volgorde vanaf de bovenste) met een LOAD NOT, een OR NOT en een
OR instructie. Wederom heeft elk van deze instructies één regel mnemonic code
nodig.
De instructie heeft een aan executieconditie wanneer één van de drie condities
aan is, dat wil zeggen wanneer 000.00 uit is of 001.00 uit is of wanneer LR00.00
aan is.
OR en OR NOT instructies kunnen individueel beschouwd worden waarbij elke
instructie de logische OR uitvoert tussen de executieconditie en de status van het
bij de OR instructie horende operandbit. Als één van beide aan is dan wordt een
aan executieconditie gegenereerd voor de volgende instructie.
AND en OR Combineren
Wanneer AND en OR instructies gecombineerd worden in meer gecompliceerde
diagrammen, kunnen ze soms ook individueel beschouwd worden, waarbij elke
instructie een logische bewerking uitvoert op de executieconditie en de status van
het operandbit. Het volgende is een voorbeeld. Bestudeer dit voorbeeld tot u ervan
overtuigd bent dat de mnemonic code dezelfde logica voorstelt als het
ladderdiagram.
Hier wordt een AND berekend tussen de status van 000.00 en die van 000.01 om
de executieconditie voor een OR met de status van 002.00 te bepalen. Het
resultaat van deze bewerking bepaalt de executieconditie voor een AND met de
status van 000.02, welke op zijn beurt de executieconditie bepaalt voor een AND
met het inverse (AND NOT) van de status van 000.03.
In meer gecompliceerde diagrammen is het echter noodzakelijk om de juiste
opbouw van de logische blokken te bedenken voor een executieconditie bepaald
kan worden voor de laatste instructie. Dit is waar de AND LOAD en OR LOAD
instructies worden gebruikt. Voor echter deze gecompliceerde diagrammen
behandeld gaan worden, worden eerst de instructies beschreven die benodigd zijn
om een eenvoudig "input-output" programma te kunnen maken.
De eenvoudigste manier om de resultaten van gecombineerde executiecondities te
bepalen is om het direct vast te leggen met de OUTPUT en OUTPUT NOT
instructies. Deze instructies worden gebruikt om de status van het gebruikte
operandbit aan te sturen, afhankelijk van de executieconditie. Met de OUTPUT
instructie wordt het operandbit aan gezet zolang als de executieconditie aan is.
Met de OUTPUT NOT instructie zal het operandbit aan gezet worden zolang de
executieconditie uit is en uit gezet worden zolang de executieconditie aan is. Ze
verschijnen in het ladderdiagram zoals hieronder getoond. In mnemonic code
gebruikt elk van deze instructies één regel.
000.00
010.00
1.2.4 De END instructie
000.01
AdresInstructieOperands
00000LD000.00
00001OUT010.00
AdresInstructieOperands
00000LD000.01
00001OUT NOT010.01
010.01
In het bovenstaande voorbeeld zal 010.00 aan zijn zolang als 000.00 aan is en
010.01 zal uit zijn zolang als 000.01 uit is. In dit voorbeeld zijn 000.00 & 000.01
input bits en 010.00 & 010.01 output bits die zijn toegewezen aan de PLC. De
signalen die binnen komen door de ingangen 000.00 en 000.01 sturen
respectievelijk de output punten 010.00 en 010.01 aan.
De tijd dat een bit aan of uit is kan gemanipuleerd worden door de OUTPUT of
OUTPUT NOT instructie te combineren met TIMER instructies. Raadpleeg "Timer TIM" op pagina 87 voor details.
De laatste instructie die benodigd is om een eenvoudig programma te kunnen
completeren is de END instructie. Wanneer de CPU het programma verwerkt,
worden alle instructies uitgevoerd tot de eerste END instructie. Hierna zal terug
gegaan worden naar het begin van het programma en zal het opnieuw uitgevoerd
worden. Alhoewel een END instructie op elk punt in het programma geplaatst kan
worden, wat soms gedaan wordt voor debugging, zal geen enkele instructie na de
eerste END instructie uitgevoerd worden tot deze END verwijderd wordt. Het
nummer dat achter de END instructie staat in de mnemonic code is de functiecode.
De functiecode kan gebruikt worden om een functie in te voeren, dit wordt later
beschreven. De END instructie heeft geen operands nodig en wordt niet
voorafgegaan door een executieconditie op de instructieregel.
Als er niet ergens in het programma een END instructie staat zal het programma
niet uitgevoerd worden.
U kent nu alle instructies die nodig zijn om eenvoudige “input-output” programma’s
te schrijven. Voor we stoppen met de basis ladderdiagrammen en ons bezig gaan
houden met complexere instructies zullen we ons eerst verdiepen in de logische
blok instructies (AND LOAD en OR LOAD), die soms ook in eenvoudige
programma’s noodzakelijk zijn.
1.2.5 Logische blok instructies
Logisch blok instructies zijn niet verbonden met specifieke condities in het
ladderdiagram. Ze beschrijven de relatie tussen logische blokken in een netwerk.
De AND LOAD instructie voert een logische AND uit op de executiecondities die
twee logische blokken produceren. De OR LOAD instructie voert een logische OR
uit tussen de executiecondities die twee logische blokken produceren.
AND LOAD
Alhoewel het onderstaande netwerk eenvoudig lijkt, is er een AND LOAD instructie
noodzakelijk om het te programmeren.
END(01)
Programma uitvoer
stopt hier
000.00
000.01
000.02
Instructie
000.03
De twee logische blokken worden aangegeven met de gestreepte lijnen.
Bestudering van het voorbeeld toont dat een aan executieconditie wordt
geproduceerd wanneer: één van beide condities in het linker logisch blok aan is
(dat is, wanneer 000.00 of 000.01 aan is) en wanneer één van beide condities in
het rechter logisch blok aan is (dat is, wanneer 000.02 aan is of 000.03 uit is).
Het bovenstaande ladderdiagram kan echter niet omgezet worden naar mnemonic
code met alleen AND en OR instructies. Wanneer een AND tussen 000.02 en het
resultaat van de OR tussen 000.00 en 000.01 wordt uitgevoerd, raakt de OR NOT
tussen 000.02 en 000.03 verloren en zal uitgevoerd worden als een OR NOT
tussen alleen 000.03 en het resultaat van de AND tussen 000.02 en de eerste OR.
Dit is uitgebeeld in de onderstaande figuur. Een OR functie wordt altijd uitgevoerd
met een contact aan de busbar.
000.00
000.01
000.03
000.02
Instructie
Wat hier nodig is, is een manier om beide OR functies onafhankelijk uit te voeren
en de resultaten naderhand te combineren. Om dit te realiseren kunnen we de
LOAD of LOAD NOT instructie in het midden van een instructieregel toepassen.
Wanneer LOAD of LOAD NOT op deze manier wordt uitgevoerd, dan wordt de
huidige executieconditie opgeslagen in een speciale buffer en het logische proces
opnieuw gestart. Voor het combineren van het resultaat van de huidige
executieconditie met dat van een vorige “ongebruikte” executieconditie, kan een
AND LOAD of een OR LOAD instructie gebruikt worden. In dit geval refereert
"LOAD" naar het laden van de laatste ongebruikte executieconditie. Een
pagina 12CPM1/CPM1A programmeerhandleiding
OMRON
OR LOAD
Schrijven en invoeren van het programma
ongebruikte executieconditie wordt aangemaakt voor elke LOAD of LOAD NOT
instructie, behalve de eerste, in een netwerk.
Wordt het eerste ladderdiagram geanalyseerd dan is de instructie voor 000.00 een
LOAD en voor de conditie eronder een OR instructie tussen de status van 000.00
en die van 000.01. De instructie voor 000.02 is een volgende LOAD en voor de
conditie eronder is het een OR NOT instructie, dat is een OR tussen de status van
000.02 en de inverse van de status van 000.03. Om vervolgens de
executieconditie voor de instructie aan de rechterkant te bepalen moet de logische
AND van de executiecondities geproduceerd door deze twee blokken berekend
worden. De AND LOAD instructie doet dit. De mnemonic code van het
ladderdiagram is beneden getoond. De AND LOAD instructie heeft geen operands
nodig, omdat het berekeningen uitvoert met tevoren bepaalde executiecondities.
Het volgende diagram gebruikt een OR LOAD instructie tussen het logische blok
boven en het logische blok beneden. Een aan executieconditie zal gegenereerd
worden voor de instructie aan de rechterkant wanneer of 000.00 aan is en 000.01
uit is, of wanneer 000.02 en 000.03 beide aan zijn. De werking van de OR LOAD
instructie en de mnemonic code ervan is identiek aan die van de AND LOAD
instructie, behalve dat de logische OR wordt bepaald tussen de huidige
executieconditie en de laatste ongebruikte executieconditie.
Natuurlijk gebruiken sommige netwerken zowel de AND LOAD als de OR LOAD
instructies.
Om een diagram te coderen waar meerdere logische blok instructies in
voorkomen, moet het diagram verdeeld worden in logische blokken. Elk blok wordt
begonnen door een LOAD instructie voor de eerste conditie te gebruiken en
vervolgens wordt AND LOAD of OR LOAD gebruikt om de blokken logisch te
combineren. Met zowel AND LOAD als OR LOAD zijn er twee manieren om dit te
realiseren. Één manier is om de logische blok instructie na de eerste twee blokken
in te voeren en vervolgens na elk volgend blok. De andere manier is om eerst alle
blokken die samengevoegd moeten worden te coderen en daarna de logische blok
instructies die ze samenvoegen. In dit geval zullen de laatste twee blokken eerst
gecombineerd moeten worden en vervolgens elk voorgaande blok, op deze manier
terug werkend naar het eerste blok. Alhoewel beide methoden exact hetzelfde
resultaat produceren, kan de tweede methode, die waarbij alle logische blok
instructies samen geprogrammeerd worden, alleen gebruikt worden wanneer acht
of minder blokken gecombineerd moeten worden. Dat is wanneer zeven of minder
logische blok instructies gebruikt moeten worden.
Het volgende netwerk gebruikt AND LOAD in mnemonic code omdat drie paar
parallelle condities in serie liggen. Beide opties voor het coderen worden getoond.
Met de onderste methode kunnen maximaal acht blokken samengevoegd worden.
Er is geen limiet aan het aantal blokken dat met de eerste methode gecombineerd
kan worden.
Het volgende netwerk gebruikt OR LOAD instructies in mnemonic code aangezien
drie paar AND condities parallel aan elkaar liggen.
000.00
000.01
OMRON
010.01
AND LOAD en OR LOAD
combineren
000.02
000.04
000.03
000.05
De eerste conditie van elke reeks wordt begonnen met een LOAD instructie en
vervolgens wordt een AND uitgevoerd met de volgende conditie. De eerste twee
blokken kunnen eerst gecodeerd worden, gevolgd door een OR LOAD, daarna het
laatste blok gevolgd door een volgende OR LOAD; of de drie blokken kunnen eerst
gecodeerd worden, gevolgd door twee OR LOAD’s. De mnemonic code van beide
methoden is hieronder getoond.
Beide codeer methoden die hierboven beschreven zijn kunnen ook gebruikt
worden wanneer AND LOAD en OR LOAD gecombineerd gebruikt worden, zolang
het aantal blokken niet boven de acht komt.
Het volgende diagram bevat twee logische blokken zoals getoond. Het is niet
noodzakelijk om blok b te splitsen aangezien het direct met AND en OR gecodeerd
kan worden.
Alhoewel het volgende netwerk lijkt op het bovenstaande, kan blok b hieronder niet
gecodeerd worden zonder het eerst in twee blokken te splitsen die met OR LOAD
samen gevoegd worden. In dit voorbeeld worden de drie blokken eerst gecodeerd,
vervolgens wordt een OR LOAD gebruikt om de laatste twee blokken te
combineren, gevolgd door een AND LOAD om de executieconditie geproduceerd
door de OR LOAD met de executieconditie van blok a te combineren.
Wanneer de logische blok instructies samen aan het einde van de logische
blokken gecombineerd worden moeten ze zoals hieronder getoond in omgekeerde
volgorde ingevoerd worden. D.w.z., de logische blok instructie voor de laatste twee
blokken wordt eerst gecodeerd worden, gevolgd door de instructie die de
executieconditie van de eerste logische blok instructie en de executieconditie van
het logische blok aan het begin (derde vanaf het einde) van het programma
combineert.
Wanneer bepaald moet worden welke logische blok instructies nodig zijn om een
netwerk te kunnen coderen, is het soms noodzakelijk om het netwerk in grote
blokken onder te verdelen en vervolgens deze grote blokken weer onder te
verdelen in logische blokken die zonder logische blok instructies gecodeerd
kunnen worden. Deze blokken worden vervolgens gecodeerd door eerst de kleine
blokken samen te voegen en vervolgens de grotere. AND LOAD en OR LOAD
worden gebruikt om blokken samen te voegen; deze instructies combineren altijd
de laatste twee bestaande executiecondities, onafhankelijk of deze
executiecondities zijn ontstaan uit een enkele conditie, uit logische blokken of van
voorgaande logische blok instructies.
Wanneer er complexe netwerken gemaakt worden, worden blokken van af het
begin van het netwerk (links boven) gecodeerd, waarbij indien mogelijk eerst naar
beneden wordt gegaan en daarna naar rechts binnen het netwerk. In het algemeen
houdt dit in dat wanneer er een keuze is de OR LOAD voor de AND LOAD
gecodeerd zal worden.
Het volgende netwerk moet eerst verdeeld worden in twee blokken en elk van
deze wordt vervolgens weer onderverdeeld in twee blokken voor het gecodeerd
kan worden. Zoals hieronder getoond benodigen de blokken a en b een AND
LOAD. Voor de AND LOAD gebruikt kan worden moet echter OR LOAD gebruikt
worden om de blokken, boven en onder aan beide kanten, samen te voegen, om
dus a1 en a2; b1 en b2 samen te voegen.
Het volgende type netwerk kan gemakkelijk gecodeerd worden als elk blok in
volgorde wordt gecodeerd: Eerst van boven naar beneden, vervolgens van links
naar rechts. In het volgende netwerk zullen de blokken a en b samen gevoegd
worden door AND LOAD te gebruiken zoals hierboven getoond. Vervolgens zal
blok c worden gecodeerd en een tweede AND LOAD zal gebruikt worden om het
samen te voegen met de executieconditie van de eerste AND LOAD. Vervolgens
wordt blok d gecodeerd en een derde AND LOAD gebruikt voor het samen voegen
van de executieconditie van de tweede AND LD met de conditie van blok d,
enzovoort tot en met blok n.
010.00
Blok aBlok bBlok cBlok n
Het volgende netwerk gebruikt een OR LOAD, gevolgd door een AND LOAD om
het bovenste deel van de code te programmeren, vervolgens zijn er nog twee OR
LOAD’s nodig om de code af te maken.
Alhoewel het programma uitgevoerd zal worden zoals het getekend is, kan het
netwerk getekend worden zoals hieronder waardoor de eerste OR LOAD en AND
pagina 16CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
LOAD niet meer noodzakelijk zijn. Hierdoor wordt het programma vereenvoudigd
waardoor u ruimte in het programmageheugen bespaart en het programma sneller
uitgevoerd zal worden.
Het volgende netwerk gebruikt vijf blokken, welke hier eerst in volgorde gecodeerd
worden voordat OR LOAD en AND LOAD gebruikt worden om ze, vanaf de laatste
twee blokken terugwerkend, samen te voegen. De OR LOAD op programma-adres
00008 voegt de blokken d en e samen, de volgende AND LOAD voegt de ontstane
executieconditie samen met dat van blok c, etc.
Het volgende en laatste voorbeeld ziet er op het eerste gezicht erg ingewikkeld uit,
maar kan gecodeerd worden door gebruik te maken van slechts twee logische blok
instructies. Het netwerk ziet er als volgt uit:
Blok a
OMRON
010.00
010.00
000.02
010.01000.06
005.00
Blok b
000.03
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
pagina 18CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
laatste conditie van de instructie regel. In het volgende voorbeeld, heeft de laatste
instructie regel één conditie meer, een AND met 000.04.
Wanneer een instructieregel vertakt in twee of meer lijnen is het soms noodzakelijk
om interlocks of TR bits te gebruiken om de executieconditie op het punt van de
vertakking vast te leggen. Dit is nodig omdat de instructieregels uitgevoerd worden
tot aan een “right-hand” instructie voordat er teruggegaan wordt naar het punt van
de vertakking om de instructies aan de andere takken uit te voeren. Als er een
conditie is opgenomen in één van de instructie regels na de aftakking, dan kan de
executieconditie veranderd zijn als er weer terug gegaan wordt naar het knooppunt
van de vertakking, waardoor juiste programma-uitvoer onmogelijk wordt. Het
volgende netwerk illustreert dit. In beide netwerken wordt instructie 1 uitgevoerd
voordat teruggesprongen wordt naar het knooppunt van de vertakking en verder
wordt gegaan met de aftakking die leidt naar instructie 2.
Wanneer, zoals getoond is in netwerk A, de executieconditie die aanwezig was op
de aftakking niet veranderd is wanneer er teruggesprongen wordt naar de
aftakking (instructies aan de meest rechterzijde van het netwerk beïnvloeden de
CPM1/CPM1A programmeerhandleidingpagina 19
Schrijven en invoeren van het programma
executieconditie niet), dan zal de aftaklijn correct uitgevoerd worden en hoeven er
geen speciale programmeermaatregelen genomen te worden.
Wanneer, zoals getoond in netwerk B, een conditie is opgenomen tussen het
aftakpunt en de laatste instructie op de bovenste instructieregel, dan zal de
executieconditie op het aftakpunt en de executieconditie na uitvoer van de
bovenste instructieregel soms anders zijn, waardoor het onmogelijk is om een
correcte verwerking van de aftakking te verzekeren.
Er zijn twee manieren om programma aftakkingen te programmeren en om de
executieconditie vast te houden. De ene is het gebruik van TR bits; de andere is
het gebruik van interlocks (IL(02) / IL(03)).
TR bits
Het TR gebied voorziet in acht bits, TR 0 tot en met TR 7, die kunnen worden
gebruikt om executiecondities tijdelijk op te slaan. Als een TR bit is geplaatst op
een aftakpunt, dan wordt de huidige executieconditie opgeslagen op het gekozen
TR bit. Wanneer er teruggekeerd wordt naar het aftakpunt, dan kan het TR bit
gebruikt worden om de executiestatus, die was opgeslagen toen het aftakpunt de
eerste keer werd uitgevoerd, terug te halen voor programma executie.
Het voorgaande netwerk B kan worden geschreven zoals beneden om zeker te
zijn van correcte werking. In mnemonic code wordt de executieconditie opgeslagen
door op het aftakpunt een TR bit te gebruiken als operand van een OUTPUT
instructie. Deze executieconditie wordt vervolgens teruggehaald na de uitvoer van
de “right-hand” instructie door hetzelfde TR bit te gebruiken als operand van een
LOAD instructie
Het bovenstaande netwerk voert de volgende actie uit: de status van 000.00 wordt
geladen (een LOAD instructie) om de initiële executieconditie te bepalen. Deze
executieconditie wordt vervolgens vastgelegd met een OUTPUT instructie op TR0.
Hiermee wordt de executieconditie op het aftakpunt vast gelegd. Vervolgens wordt
een AND uitgevoerd tussen de executieconditie en de status van 000.01 en wordt
instructie 1 dienovereenkomstig uitgevoerd. De executieconditie die was
vastgelegd op het aftakpunt wordt vervolgens weer geladen (een LOAD instructie
met TR0 als operand), er wordt een AND functie uitgevoerd tussen deze geladen
executieconditie en de status van 000.02 en instructie 2 wordt dienovereenkomstig
uitgevoerd.
Het volgende voorbeeld toont een applicatie die gebruik maakt van twee TR bits.
In dit voorbeeld worden TR0 en TR1 gebruikt om de executiecondities op de
aftakpunten op te slaan. Na het uitvoeren van OUT 005.00 wordt de
executieconditie die opgeslagen is in TR 1 geladen voor een AND met de status
van 000.03. De executieconditie die opgeslagen is in TR0 wordt twee keer
geladen, de eerste keer voor een AND met de status van 000.04 en de tweede
keer voor een AND met de inverse van de status van 000.05.
TR bits kunnen zo vaak gebruikt worden als nodig is, zolang hetzelfde TR bit niet
meer dan één keer gebruikt wordt in een instructie blok. In dit geval begint een
nieuw instructie blok elke keer wanneer de programma uitvoering terugkeert naar
de busbar. Als het, in een enkel instructie block, noodzakelijk is om meer dan acht
verschillende aftakkingen te programmeren kunnen interlocks (die hierna uitgelegd
worden) gebruikt worden. In deze situatie kan het ook aan te raden zijn om het
programma te vereenvoudigen.
Wees voorzichtig, wanneer u een ladderdiagram tekent, om geen TR bits te
gebruiken tenzij dit noodzakelijk is. Vaak kan het aantal instructies dat nodig is om
een programma te schrijven drastisch verminderd en het programma zelf
duidelijker worden door het netwerk dusdanig te tekenen dat er geen (of zo weinig
mogelijk) TR bits noodzakelijk zijn. In de onderstaande voorbeelden gebruiken de
netwerken geen TR relais en minder code. In het eerste voorbeeld wordt dit
gerealiseerd door de onderdelen van het netwerk anders te plaatsen. Bij het
tweede voorbeeld gebeurt dit door de tweede output in een eigen netwerk te
plaatsen en door er een aparte LOAD instructie voor te programmeren om de
juiste executieconditie te creëren.
Alhoewel het vereenvoudigen van programma’s altijd van belang is, is soms ook
de volgorde van uitvoering van belang. Bijvoorbeeld, een MOVE instructie kan
noodzakelijk zijn voor de uitvoering van een BINARY ADD instructie om de juiste
data in het gebruikte operandwoord te plaatsen. Deze instructie zal dan ook voor
de BINARY ADD moeten blijven staan. Overweeg altijd eerst de volgorde van
uitvoering voor het programma vereenvoudigd wordt.
000.00
000.00
TR0
000.01
Instructie 1
Instructie 2
Instructie 2
000.01
Instructie 1
CPM1/CPM1A programmeerhandleidingpagina 21
Schrijven en invoeren van het programma
000.00000.03
OMRON
Instructie 1
Interlocks
Opmerking
000.01
000.01
000.00
000.01
TR0
000.02
000.04
000.02
000.04
Instructie 2
000.03
Instructie 1
Instructie 2
TR bits worden alleen gebruikt wanneer er geprogrammeerd wordt in mnemonic
code. In een ladderdiagram moet echter ook rekening worden gehouden met het
aantal aftakpunten dat TR bits nodig heeft en de methoden om het aantal
instructies dat nodig is om een netwerk te programmeren te verminderen.
Wanneer een netwerk meer dan acht TR relais of meer dan acht AND LD of OR
LD instructies gebruikt geeft SYSWIN een foutmelding.
Het probleem van de opslag van executiecondities op aftakkingen kan ook worden
opgelost door de interlock (IL(O2)) en interlock clear (ILC(03)) instructies te
gebruiken om het aftakpunt compleet te elimineren en toch een specifieke
executieconditie een groep instructies aan te laten sturen. De interlock en interlock
clear instructies worden altijd in combinatie gebruikt.
Wanneer een interlock instructie voor een sectie van een ladderdiagram
programma wordt geplaatst, dan zal de executieconditie voor de interlock instructie
de uitvoering van alle instructies tot aan de volgende interlock clear instructie
beheren. Als de executieconditie voor de interlock instructie uit is, dan zullen alle
“right-hand” instructies tot aan de volgende interlock clear instructie uitgevoerd
worden met een uit conditie en zo de gehele sectie ladderdiagram resetten. Het
effect dat dit heeft op bepaalde instructies is beschreven in hoofdstuk “interlocks il(02) en ilc(03)” op pagina 82.
Netwerk B uit het hoofdstuk “vertakkende instructie regels” kan ook uitgevoerd
worden met een interlock. In dit geval zullen de condities die leiden naar het
aftakpunt geplaatst worden in de instructieregel voor de interlock instructie, alle
regels vanaf het aftakpunt worden geschreven als aparte instructieregels en een
nieuwe instructieregel wordt toegevoegd voor de interlock clear instructie. Er zijn
geen condities toegestaan in de instructieregel voor de interlock clear. Merk dat
zowel de interlock als de interlock clear geen operands heeft.
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.
1.3.2 Springen
Een specifieke sectie van een programma kan worden overgeslagen, afhankelijk
van een hiervoor gebruikte executieconditie. Alhoewel het gelijk is aan wat er
gebeurt wanneer de executieconditie voor een INTERLOCK instructie uit is,
behouden met sprongen de operands van alle instructies hun status. Sprongen
kunnen daarom gebruikt worden om apparatuur te bedienen die een aanhoudende
aansturing nodig hebben, bijvoorbeeld pneumatiek and hydrauliek, terwijl
interlocks gebruikt kunnen worden om apparatuur te bedienen die geen
aanhoudende aansturing nodig hebben, bijvoorbeeld elektronische instrumenten.
CPM1/CPM1A programmeerhandleidingpagina 23
Schrijven en invoeren van het programma
Sprongen worden gecreëerd met de JMP(04) en JME(05) instructies. Wanneer de
executieconditie voor een JMP instructie aan is, dan wordt het programma normaal
uitgevoerd, alsof de sprong niet bestaat. Is de executieconditie voor de JMP
instructie uit, dan verplaatst de programma uitvoering zich direct naar de JME
instructie zonder dat de status van iets tussen de JMP en JME instructie verandert.
Alle JMP en JME instructies krijgen sprongnummers toegewezen die liggen tussen
00 en 49. Er zijn twee typen sprongen. Het gebruikte sprongnummer bepaalt het
type van de sprong.
Een sprong met het sprongnummer 01 t/m 49 kan maar één keer gedefinieerd
worden. D.w.z., elk van deze nummers mag één keer gebruikt worden in een JMP
instructie en één keer gebruikt worden in een JME instructie. Wanneer een JMP
instructie waaraan één van deze nummers is toegewezen wordt uitgevoerd, dan
verplaatst de programma uitvoer zich direct naar de JME instructie met hetzelfde
nummer, alsof het programma ertussen niet bestaat. Het netwerk B van het TR bit
en interlock voorbeeld kan hertekend worden, zoals hieronder getoond, met een
sprong. Alhoewel 01 gebruikt is als het sprong nummer, kan elk nummer tussen de
01 en 49 gebruikt worden zolang het niet gebruikt wordt in een ander deel van het
programma. JMP en JME gebruiken geen andere operand en JME heeft nooit
condities in de instructieregel ervoor.
Deze versie van netwerk B zal een kortere executietijd hebben wanneer 000.00 uit
is dan de andere versies.
Het andere type sprong wordt gecreëerd met een sprongnummer 00. Net zoveel
sprongen als gewenst kunnen gecreëerd worden door sprongnummer 00 te
gebruiken. JMP instructies met nummer 00 kunnen opeenvolgend gebruikt worden
zonder dat er een JME tussen gebruikt wordt. Het is zelfs mogelijk om alle JMP 00
instructies naar dezelfde JME 00 te laten springen, dus slechts één JME 00
instructie is benodigd voor alle JMP 00 instructies in het programma. Wanneer 00
wordt gebruikt als sprongnummer voor een JMP instructie, dan wordt de
programma uitvoer vervolgd bij de instructie die volgt op de JME instructie met
sprongnummer 00. Alhoewel, zoals bij alle sprongen, geen statussen veranderd
worden en geen instructies uitgevoerd worden tussen de JMP 00 en JME 00
instructies, zal het programma zoeken naar de volgende JME 00 instructie,
waardoor een enigszins langere executie tijd wordt gecreëerd.
De uitvoering van programma’s die meerdere JMP 00 instructies bevatten voor
een JME 00 instructie is gelijk aan dat van het voorbeeld met meerdere interlock
instructies. Het volgende voorbeeld is hetzelfde als het voorbeeld dat gebruikt is bij
het interlock voorbeeld hierboven, het is alleen hertekend met sprongen. De
uitvoering van dit diagram zal verschillen van het voorbeeld hierboven. In het
vorige diagram zouden de interlocks bepaalde delen van het programma resetten.
pagina 24CPM1/CPM1A programmeerhandleiding
OMRON
Schrijven en invoeren van het programma
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.
1.4.1 DIFFERENTIATE UP en DIFFERENTIATE DOWN
DIFU en DIFD instructies worden gebruikt om het operandbit aan te sturen voor
één scan op de op- of neergaande flank van de executieconditie. De DIFU
instructie zet het operandbit aan voor één scan nadat de executieconditie ervoor
van uit naar aan gaat (opgaande flank); De DIFD instructie zet het operandbit aan
voor één scan nadat de executieconditie ervoor van aan naar uit gaat (neergaande
flank).
000.00
DIFU(13)
200.00
000.01
DIFD(14)
200.01
CPM1/CPM1A programmeerhandleidingpagina 25
Schrijven en invoeren van het programma
AdresInstructieOperands
00000LD000.00
00001DIFU(13)200.00
AdresInstructieOperands
00002LD000.01
00003DIFD(14)200.01
In dit voorbeeld zal 200.00 voor één scan aan gaan wanneer 000.00 aan gaat. De
volgende keer dat DIFU(13) 200.00 uitgevoerd wordt gaat 200.00 uit, onafhankelijk
van de status van 000.00. Bit 200.00 zal pas weer door de DIFU(13) instructie
aangestuurd kunnen worden wanneer 000.00 eerst uit is geweest. Met de DIFD
instructie zal 200.01 aan gezet worden voor één scan nadat 000.01 uit gaat
(200.01 zal tot dan uit zijn) en zal de volgende keer dat DIFD(14) 200.01
uitgevoerd wordt uit gezet worden.
1.4.2 KEEP
De KEEP instructie wordt gebruikt om de status van het operandbit vast te houden,
afhankelijk van twee executiecondities. Om dit te realiseren wordt de KEEP
instructie aangestuurd door twee instructieregels. Wanneer de executieconditie
aan het einde van de eerste instructieregel aan is, wordt het operandbit van de
KEEP instructie aan gezet. Wanneer de executieconditie aan het einde van de
tweede instructieregel aan is wordt het operandbit van de KEEP instructie uit
gezet. Het operandbit van de KEEP instructie zal zijn aan of uit status handhaven
als de executiecondities van beide instructieregels laag zijn, zelfs wanneer deze in
een interlock (tussen IL en ILC) wordt gebruikt.
In het volgende voorbeeld wordt HR00.00 aangezet als 000.02 aan is en 000.03 uit
is. HR00.00 zal dan dezelfde status handhaven tot 000.04 of 000.05 aan gaat. Bij
KEEP zullen, zoals bij alle instructies die meer dan één instructieregel nodig
hebben, de instructieregels gecodeerd worden voor de instructie die ze aansturen.
Alhoewel de KEEP instructie gebruikt kan worden om zelfhandhavende bits (houd
schakelingen) te programmeren, is het soms noodzakelijk om zelfhandhavende
bits te creëren op een andere manier, bijvoorbeeld zodat ze uitgezet kunnen
worden in een interlock in het programma.
Om een zelfhandhavend bit te creëren, zal het operandbit van de OUT instructie
aan het einde van de instructieregel als conditie voor dezelfde OUT instructie in
een OR verbinding in de instructieregel opgenomen moeten worden. Hierdoor zal
het operandbit van de OUT instructie zijn aan of uit status handhaven tot er een
verandering optreed in de andere bits in de instructieregel. Op zijn minst moet één
andere conditie gebruikt worden vlak voor de OUT instructie om als reset te
fungeren. Zonder deze reset zou er geen manier zijn om het operandbit van de
OUT instructie laag te maken.
Het diagram hierboven voor de KEEP instructie kan herschreven worden zoals
hieronder getoond is. Het enige verschil in deze diagrammen zou hun werking in
een interlock zijn als de executieconditie voor de interlock instructie uit is. Zoals in
het diagram met de KEEP instructie worden ook hier twee resetbits gebruikt.
HR00.00 kan dus uitgezet worden door 000.04 en 000.05.
Om tijdens het programmeren condities zo te combineren dat ze direct de juiste
executiecondities genereren is vaak behoorlijk ingewikkeld. Deze moeilijkheden
zijn te overbruggen door bepaalde bits te gebruiken om andere instructies indirect
aan te sturen. Dit kan gerealiseerd worden door werkbits te gebruiken. Meestal
worden vele woorden gebruikt voor dit doel. Deze woorden worden vaak
werkwoorden genoemd.
Werkbits sturen niets aan buiten de PLC en worden ook nergens direct door
aangestuurd. Het zijn bits die geselecteerd kunnen worden door de programmeur
om zoals hierboven beschreven te programmeren. I/O bits en andere bits met een
functie kunnen niet gebruikt worden als werkbits. Alle bits in het IR gebied die niet
gebruikt worden om I/O aan te sturen, alle bits in het HR en LR geheugen en
sommige ongebruikte bits in het AR geheugen kunnen gebruikt worden als
werkbits. Hou altijd een bestand bij waarin u noteert waarvoor en hoe u belangrijke
werkbits gebruikt. Dit helpt bij het plannen, schrijven en debuggen van een
programma.
000.04
000.05
HR00.00
1.5.1 Werkbit toepassingen
Zodra er moeilijkheden ontstaan bij het programmeren van een actie moet er
rekening mee worden gehouden dat de toepassing van werkbits noodzakelijk is.
Daarnaast kunnen werkbits ook gebruikt worden om een programma te
vereenvoudigen.
Werkbits worden vaak gebruikt met de OUT, OUT NOT, DIFU, DIFD en KEEP
instructies. Het werkbit dat wordt gebruikt als operand bij één van deze instructies
kan later gebruikt worden in een conditie om te bepalen wanneer andere
instructies uitgevoerd moeten worden. Werkbits kunnen ook gebruikt worden bij
andere instructies, bijvoorbeeld bij de shift register instructie (SFT(10)).
Begrijpen van het gebruik van werkbits is essentieel voor effectief programmeren.
1.5.2 Reduceren van complexe condities
Werkbits kunnen gebruikt worden om programma’s te vereenvoudigen wanneer
een bepaalde combinatie van condities vaker wordt gebruikt in combinatie met
andere condities en instructies. In het volgende voorbeeld worden 000.00, 000.01,
000.02 en 000.03 gecombineerd tot een logisch blok waarvan de resulterende
executieconditie wordt opgeslagen als de status van 246.00. 246.00 wordt
vervolgens gebruikt met diverse andere condities om uitgangscondities te
genereren voor 001.00, 001.01 en 001.02, om bijvoorbeeld de uitgangen die
hieraan zijn toegewezen aan of uit te sturen.
Werkbits kunnen ook gebruikt worden wanneer een differentiatie van een conditie
gebruikt moet worden om een instructie uit te voeren. In dit voorbeeld moet 010.00
aan blijven zolang als 000.01 aan is en zowel 000.02 als 000.03 uit zijn, of zo lang
als 000.04 aan is en 000.05 uit is. Het bit moet voor één scan aangezet worden als
000.00 aan gaat, tenzij een van de voorgaande condities het continu aan houdt.
Deze actie kan eenvoudig geprogrammeerd worden door 225.00 te gebruiken als
een werkbit voor de operand van de DIFFERENTIATE UP instructie (DIFU(13)).
Als 000.00 aan gaat, zal 225.00 voor één scan aan gezet worden en de volgende
scan uit door de DIFU(13) instructie. Wanneer de andere condities die 010.00
aansturen het niet aan houden dan zal het werkbit 225.00 het bit 010.00 voor
alleen één scan aan houden. (Dit is op een uitgang natuurlijk niet te zien).
000.00
225.00
000.02000.01
000.04
000.05
AdresInstructieOperands
00000LD00.000
DIFU(13)
225.00
010.00
000.03
pagina 28CPM1/CPM1A programmeerhandleiding
Loading...
+ 134 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.