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).
Het aantal condities dat gebruikt kan worden in serie of parallel is ongelimiteerd,
zolang het geheugen van de PLC maar niet overschreden kan worden.
Programmeer daarom zoveel condities als nodig zijn om duidelijke netwerken te
maken. Alhoewel met instructieregels complexe netwerken geschreven kunnen
worden mogen er zich op de verticale lijnen, tussen instructieregels, in het diagram
geen condities bevinden. Diagram A hieronder bijvoorbeeld is niet toegestaan en
moet zoals diagram B getekend worden. De mnemonic code wordt alleen getoond
voor diagram B, het coderen van diagram A is namelijk onmogelijk.
Het aantal maal dat een specifiek bit toegewezen kan worden aan een conditie is
niet gelimiteerd, u kunt ze dus zo vaak als noodzakelijk programmeren om uw
programma te vereenvoudigen. Gecompliceerde netwerken ontstaan vaak door
het zo kort mogelijk schrijven van programma’s of pogingen om bits een zo min
mogelijk aantal keren te gebruiken.
Behalve voor de instructies waarbij condities niet toegestaan zijn (bijvoorbeeld de
ILC en JME, zie hieronder), moet elke instructieregel minimaal één conditie
bevatten om de executieconditie voor de “uitvoerende” instructie te bepalen.
Diagram A, hieronder, moet hertekend worden als diagram B. Als een instructie
continu uitgevoerd moet worden, bijvoorbeeld een uitgang die altijd hoog moet zijn
als het programma verwerkt wordt, kan de altijd aan vlag (Always ON) uit het SR
gebied gebruikt worden.
CPM1/CPM1A programmeerhandleidingpagina 29
Schrijven en invoeren van het programma
Diagram A: FOUT
253.13
Diagram B
AdresInstructieOperands
00000LD253.13
00001Instructie
Er zijn een paar uitzonderingen op deze regel, bijvoorbeeld de ILC, JME en STEP
instructies. Elk van deze instructies wordt gebruikt als tweede instructie van een
paar en wordt aangestuurd door de executieconditie van de eerste instructie van
het paar. In de instructieregels naar deze instructies moeten ook geen condities
opgenomen worden. Raadpleeg "Instructieset" op pagina 71 voor details.
Wanneer u ladderdiagrammen aan het tekenen bent is het van belang om het
aantal instructies dat nodig is om het te coderen in gedachten te houden. In
diagram A hieronder is een OR LOAD instructie nodig om de twee instructieregels
samen te voegen. Dit kan voorkomen worden door het te hertekenen zoals in
dagram B. Hierdoor zijn er geen AND LOAD of OR LOAD instructies nodig.
Raadpleeg "AND LOAD en OR LOAD" op pagina 77 voor meer details.
000.00
OMRON
Instructie
Instructie
200.07
1.7 Programma uitvoer
Wanneer de programma uitvoer wordt gestart, scant de CPU het programma van
de eerste naar de laatste regel, waarbij alle condities stuk voor stuk uitgevoerd
worden. Het is belangrijk dat instructies in de juiste volgorde geplaatst worden
zodat bijvoorbeeld de gewenste data naar een woord verplaatst wordt voordat dit
woord wordt gebruikt als operand door een instructie. Onthoud dat een
instructieregel uitgevoerd wordt tot aan de afsluitende "uitvoerende" instructie
voordat een aftakkende instructieregel van deze eerste regel wordt uitgevoerd tot
aan de "uitvoerende" instructie. De aftakkingen worden van boven naar beneden
uitgevoerd.
Het uitvoeren van het programma is één van de taken die de CPU uit moet voeren
tijdens een scan. De uiteindelijk cyclustijd van het programma wordt ook nog door
andere factoren bepaald.
De PC Setup bevat diverse parameters die de werking van de CPM1(A) bepalen.
Voor maximaal gebruik van de functionaliteit van de CPM1(A), bij gebruik van
interrupts en communicatiefuncties, kan de PC Setup "op maat" ingesteld worden
afhankelijk van de taak die uitgevoerd moet worden.
Bij het verzenden van de CPM1(A) worden alle instellingen op default gezet zodat
de CPM1(A) direct gebruikt kan worden zonder dat er instellingen aangepast
moeten worden. Het is echter aan te raden om deze instellingen te controleren
voordat u begint met programmeren.
Default waarden
De default waarden voor de PC Setup is 0000 voor alle woorden. De default
waarden kunnen ingesteld worden door bit 252.10 aan te zetten.
CPM1(A) PC Setup
Voorzichtig
PC Setup veranderen
Opmerking
Opmerking
PC Setup inhoud
1, 2, 3...
Wanneer het datamemory (DM) wordt gewist met een programmeerapparaat, dan
worden de settings in de PC Setup ingesteld op hun default waarde.
Veranderingen in de PC Setup instellingen zijn werkzaam of beïnvloeden de
werking van de CPM1(A) op verschillende momenten, afhankelijk van de
veranderde instellingen.
DM6600 t/m DM6614: Alleen werkzaam wanneer de CPM1(A) powersupply
aangezet wordt.
DM6615 t/m DM6644: Alleen werkzaam wanneer de het uitvoeren van het
programma begint.
DM6645 t/m DM6655: Direct werkzaam op elk moment dat de CPM1(A) aan staat.
Veranderingen in de PC Setup zijn alleen effectief op de hierboven aangegeven
momenten. Wees er zeker van dat u de juiste maatregelen neemt voor u de
veranderingen in de PC Setup aanbrengt en doorgaat met uw werkzaamheden.
Alhoewel de PC Setup is opgeslagen in DM6600 tot en met DM6655, kunnen de
instellingen alleen gemaakt worden met een programmeerapparaat (bijvoorbeeld
SYSWIN, handprogrammeerapparaat of SYSTOOLS). DM6600 t/m DM6644
kunnen alleen in de PROGRAM mode aangepast worden. DM6645 t/m DM6655
kunnen ingesteld worden in PROGRAM of MONITOR mode.
De PC Setup kan in het programma uitgelezen en niet beschreven worden.
Schrijven kan alleen met een programmeerapparaat gebeuren.
Als een PC Setup instelling verkeerd is, dan wordt een niet fatale fout (errorcode
9B) gegenereerd op het moment dat de CPM1(A) deze instelling leest.
Tegelijkertijd wordt het juiste bit tussen AR24.00 en AR24.02 aan gezet. De foute
instelling zal door de CPM1(A) worden gelezen als default.
De PC Setup is verdeeld in drie categorieën:
1. Instellingen van de basis CPM1(A) werking en I/O processen
2. Instellingen van interrupts
3. Instellingen van communicatie
Deze sectie verklaard de instellingen naar deze classificatie. De onderstaande
tabel toont de instellingen op volgorde van DM adres.
WoordBitFunctie
Startup processing (DM6600 t/m DM6614)
Tijdens de transfer van deze data moet de PLC in program mode staan en direct na de transfer moet de PLC uit/aan gezet
worden.
DM660000 t/m 07Startup mode (alleen actief als de 08 tot en met 15 op 02 ingesteld staan).
00: PROGRAM; 01: MONITOR; 02 : RUN
08 t/m 15Startup mode keuze
00: Programmeerapparaat schakelaar
01: Vervolg in de mode die gebruikt werd voordat de spanning uitgezet werd
02: Instelling in 00 t/m 07
DM660100 t/m 07Gereserveerd (zet op 00)
08 t/m 11
IOM Hold Bit (252.12) Status
0: Reset; 1: Handhaven
CPM1/CPM1A programmeerhandleidingpagina 31
CPM1(A) PC Setup
WoordBitFunctie
12 t/m 15
DM660200 t/m 03Programma geheugen write protect
04 t/m 07Taal van het handprogrammeerapparaat
08 t/m 11Veranderen van de uitbreidingsinstructies
12 t/m 15Gereserveerd
DM6603 t/m
DM6614
Puls uitgang en cyclustijd instellingen (DM6615 t/m DM6619)
Tijdens de transfer van deze data moet de PLC in program mode staan.
DM6615 t/m
DM6616
DM661700 t/m 07Servicingtijd voor de periferie poort (alleen actief wanneer de bits 08 t/m 15 op 01 staan)
DM661800 t/m 07Cyclus monitor tijd (actief wanneer de bits 08 t/m 15 ingesteld staan op 01, 02 of 03)
DM661900 t/m 15Cyclustijd
Interrupt processing (DM6620 t/m DM6639)
Tijdens de transfer van deze data moet de PLC in program mode staan.
DM662000 t/m 03Ingangstijdvertraging voor 000.00 t/m 000.02
DM662100 t/m 07Ingangstijdvertraging voor 001 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
DM662200 t/m 07Ingangstijdvertraging voor 003 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
DM662300 t/m 07Ingangstijdvertraging voor 005 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
DM662400 t/m 07Ingangstijdvertraging voor 007 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
DM662500 t/m 07Ingangstijdvertraging voor 009 (Zelfde instelling als de bits 00 t/m 03 van DM6620)
0: Z fase en software reset, 1: Alleen software reset
OMRON
pagina 32CPM1/CPM1A programmeerhandleiding
OMRON
WoordBitFunctie
08 t/m 15Highspeed counter 0 activeren
00: Gebruik de counter niet, 01: gebruik de counter zoals ingesteld op 00 t/m 07
DM6643 t/m
DM6644
Periferie poort instellingen
De volgende instellingen zijn direct actief na transfer naar de PLC.
DM6645 t/m
DM6649
DM665000 t/m 07Poort instellingen
DM665100 t/m 07Baudrate
DM665200 t/m 15Transmissie vertraging (Hostlink)
DM665300 t/m 07Node nummer (Host link)
DM665400 t/m 15Gereserveerd
Errorlog instellingen (DM6655)
De volgende instellingen zijn direct actief na transfer naar de PLC.
DM665500 t/m 03Stijl
00 t/m 15Gereserveerd
00 t/m 15Gereserveerd
00: Standaard (1 start bit, 7 data bits, even pariteit, 2 stop bits, 9.600 bps)
01: instellingen in DM6651
08 t/m 11Link gebied voor en 1:1 Link op de periferie poort
0: LR00 t/m LR15
12 t/m 15Communicatie mode
0: Hostlink; 2: 1:1 link slave, 3: 1:1 link master, 4: NT link
00: 1.2K, 01: 2.4K, 02:4.8K, 03: 9.6K, 04: 19.2K
Frame formaat
Waarde Start Lengte Stop Pariteit
00:1 bit7 bits1 biteven
01:1 bit7 bits1 bitoneven
02:1 bit7 bits1 bitgeen
03:1 bit7 bits2 biteven
04:1 bit7 bits2 bitoneven
05:1 bit7 bits2 bitgeen
06:1 bit8 bits1 biteven
07:1 bit8 bits1 bitoneven
08:1 bit8 bits1 bitgeen
09:1 bit8 bits2 biteven
10:1 bit8 bits2 bitoneven
11:1 bit8 bits2 bitgeen
0000 t/m 9999: in ms
08 t/m 15Gereserveerd
0: Schuif door nadat 10 records zijn opgeslagen (FIFO)
1: Sla alleen de eerste 10 records op
2 t/m F: Sla geen records op
04 t/m 07Gereserveerd
08 t/m 11Cyclus tijd monitor activeren
0: Detecteer lange cyclussen als niet fatale errors
1: Detecteer te lange cyclussen niet
12 t/m 15Gereserveerd
CPM1(A) PC Setup
2.1 Basis CPM1(A) werking en I/O afhandeling
Startup mode (DM6600)
CPM1/CPM1A programmeerhandleidingpagina 33
De mode waarin de CPM1(A) zal starten als de spanning aangezet wordt, kan
volgens de hieronder getoonde methode ingesteld worden.
Bit150
DM6600
Startup mode (alleen actief als de 08 tot en met 15 op 02 ingesteld staan).
00 : PROGRAM mode
01 : MONITOR mode
02 : RUN mode
Startup Mode Instelling
00 : Programmeer apparaat schakelaar (RUN mode wanneer niet aanwezig)
01 : Vervolg in de mode die gebruikt werd voor dat de spanning afgezet was
02 : Instelling in 00 t/m 07
Default:
Programming Console Mode Selector
CPM1(A) PC Setup
OMRON
Hold bit status (DM6601)
Programma geheugen
tegen overschijven
beschermen (DM6602)
Maak de hieronder getoonde instellingen om te bepalen of, wanneer de
powersupply aangezet wordt, het
Hold Bit
( 25212) de status zullen handhaven die actief was toen de spanning werd
Forced Status Hold Bit
(252.11) en/of het
IOM
uitgezet of dat de vorige status gewist wordt.
Bit 150
00
Default:
Het
Beide wissen
Forced Status Hold Bit
DM6601
Altijd 00
252.12 instelling
0 : Wis status
1 : Houd status
252.11 instelling
0 : Wis status
1 : Houd status
(252.11) bepaalt of de geforceerde set/reset statussen
worden vastgehouden bij het veranderen van PROGRAM mode naar MONITOR
mode.
Het
IOM Hold Bit
(252.12) bepaalt of de status van IR bits en LR bits wordt
vastgehouden wanneer de werking van de CPM1(A) wordt gestart en gestopt.
Op DM6602 kan worden ingesteld of het programmageheugen van de CPM1(A)
mag worden overschreven. Tevens kan hier de taal van het
handprogrammeerapparaat worden ingesteld en of er wijzigingen mogen worden
aangebracht in de uitbreidingsinstructies.
Bit 150
0
DM6602
Periferie poort servicing
tijden (DM6617)
Voorbeeld
Cyclustijd (DM6619)
Programmageheugen
0: Niet tegen overschrijven beveiligd
1: Tegen overschrijven beveiligd
Handprogrammeerapparaat taal
0: Engels
1: Japans
Wijzigen uitbreidingsinstructies
0: Niet toegestaan
1: Toegestaan
Default:
Programma overschrijfbaar, taal is Engels en uitbreidingsinstructies zijn
niet te wijzigen.
De volgende instelling wordt gebruikt om het percentage van de cyclustijd te
bepalen dat wordt gebruikt om de periferie poort te servicen.
Bit 150
DM6617
Servicing tijd (%, actief als op de bits 08 t/m 15 01 staat)
Als DM6617 wordt ingesteld op 0110, dan zal de periferie poort in 10% van de
cyclustijd geserviced worden. Wanneer DM6617 wordt ingesteld op 0115, dan zal
de periferie poort in 15% van de cyclustijd geserviced worden. De servicingtijd is
minimaal 0,34ms. De hele servicingtijd wordt alleen gebruikt wanneer dit
noodzakelijk is.
Maak de instellingen die hieronder getoond zijn om de cyclustijd te normaliseren
en variaties in de I/O responsetijd te elimineren door een minimum cyclustijd in te
stellen.
pagina 34CPM1/CPM1A programmeerhandleiding
OMRON
Ingangstijdvertraging
(DM6620 t/m DM6625)
Ingangstijdvertraging voor
input woord 000
CPM1(A) PC Setup
Bit 150
DM6619
Cyclus tijd (4 cijfers BCD)
0000 : Cyclus tijd variabel
0001 to 9999: Minimum cyclus tijd (Unit: 1 ms)
Default:
Als de actuele cyclustijd korter is dan de minimum ingestelde cyclustijd, dan zal de
uitvoering van het programma wachten tot de minimum tijd is verstreken. Wanneer
de actuele cyclustijd langer is dan de minimum cyclustijd, dan zal de uitvoering
doorgaan en de minimum cyclustijd overschreden worden. AR24.05 wordt hoog
wanneer de minimum cyclustijd, de vorige scan, is overschreden.
Maak de hieronder getoonde instellingen om de tijd in te stellen tussen het aan/uit
gaan van de actuele ingangen van de inputunit en het updaten van het bij deze
ingang horende inputbit. Verander deze instelling wanneer u de ingangstijdvertraging wilt verlengen of verkorten om respectievelijk een stabieler ingangssignaal of een snellere response op een ingang te krijgen.
Ingangssignaal van
een input device
Inputbit status
T = ingangstijdvertraging
Bit 150
Cyclus tijd variabel
TT
DM6620
Ingangstijdvertraging voor
input woord 001 t/m 009
Errorlog instellingen
Cyclus monitor tijd
(DM6618)
Vertraging voor 000.00 t/m 000.02 (1 cijfer BCD; zie hieronder)
Vertraging voor 000.03 en 000.04 (1 cijfer BCD; zie hieronder)
Vertraging voor 000.05 en 000.06 (1 cijfer BCD; zie hieronder)
Vertraging voor 000.07 t/m 000.11 (1 cijfer BCD; zie hieronder)
Default:
Bit 150
Default:
8 ms voor elke ingang
DM6621 t/m 6625
Vertraging voor 001, 003, 005, 007 en 009
Vertraging voor 002, 004, 006 en 008
8 ms voor elke ingang
De negen mogelijke instellingen voor de ingangstijdvertraging worden hieronder
getoond.
Maak de hieronder getoonde instellingen om errors te detecteren en op te slaan in
de errorlog.
Bit 150
DM6618
Cyclus monitor tijd instelling (Als de bits 08 t/m 15 niet 00 zijn)
00 t/m 99 (2 cijfers BCD; unit ingesteld op bits 08 t/m 15)
Cyclus Monitor Tijd Enable en Unit
00 : Instelling disabled (de tijd is vastgesteld op 120 ms)
01 : Instelling op 00 t/m 07 is actief; unit: 10 ms
02 : Instelling op 00 t/m 07 is actief; unit: 100 ms)
03 : Instelling op 00 t/m 07 is actief; unit: 1 s
Default:
120ms
De cyclus monitor tijd wordt gebruikt om te controleren op extreem lange
cyclustijden, zoals bijvoorbeeld kan gebeuren als het programma in een oneindige
loop terecht komt. Als de cyclustijd de cyclus monitor instelling overschrijdt, wordt
een fatale error (FALS 9F) gegenereerd.
CPM1/CPM1A programmeerhandleidingpagina 35
CPM1(A) PC Setup
OMRON
1, 2, 3...
Voorbeeld
Errordetectie en errorlog
werking (DM6655)
1. De meeteenheden die gebruikt wordt voor de maximum en huidige cyclustijden,
zoals opgeslagen in AR26 en AR27 veranderen afhankelijk van de units die
ingesteld zijn voor de cyclus monitor tijd zoals hieronder getoond.
Bits 08 t/m 15 ingesteld op 00 of 01:0,1ms
Bits 08 t/m 15 ingesteld op 02:1ms
Bits 08 t/m 15 ingesteld op 03:10ms
2. Zelfs als de cyclus tijd 1s of langer duurt, zal de cyclustijd zoals uitgelezen met
een programmeerapparaat niet boven de 999,9ms komen. De correcte
maximale en huidige cyclustijden zullen in AR26 en AR27 opgeslagen worden.
Als 0230 is ingesteld op DM6618, zal een FALS 9F error niet optreden tot de
cyclustijd groter is dan 3s. Als de actuele cyclustijd 2.59s is, zal de inhoud van
AR27 2590 (ms) zijn en de cyclustijd zoals uitgelezen met een
programmeerapparaat 999.9ms.
Een "cycle time over" error (niet fatale) wordt gegenereerd als de cyclustijd boven
de 100ms komt, tenzij de detectie van te lange cyclustijden is gedeactiveerd met
de instelling hiervoor op DM6655. Cycle time overrun errors zijn niet fatale errors.
Maak de hieronder getoonde instellingen om te bepalen of een niet fatale error
gegenereerd moet worden wanneer de cyclustijd boven de 100ms komt en de
manier waarop records opgeslagen moeten worden in de errorlog als ze optreden.
Bit 150
0
Default:
0
Cycle time over errors worden gedetecteerd en de 10 tien meest recente
DM6655
Error log opslag methode
0 : Error records voor de 10 meest recente
errors opslaan (oudere errors verwijderen)
1 : Alleen de eerste 10 error records opslaan
(daarna stoppen met opslaan van records)
2 t/m F : Error records niet opslaan
Cycle time over detectie
0 : Detecteer
1 : Detecteer niet
error records worden opgeslagen.
2.2 CPM1A pulsuitgang functie instellen en gebruik
Deze sectie verklaart de instellingen en methoden voor het gebruik van de CPM1A
pulsuitgang functie. Alle CPM1A PLC’s kunnen standaard pulsen uitsturen op een
uitgang. De standaard pulsuitgangen hebben een duty-ratio (ton/T) van 50%. De
frequentie die uitgestuurd kan worden ligt tussen de 20 en 2000Hz.
Opmerking
Alleen de CPM1A PLC typen beschikken over de pulsuitgang functie. De CPM1
PLC typen beschikken niet over deze functie.
Standaard kunnen pulsen uitgestuurd worden op een gespecificeerde uitgang door
de SPED(—) instructie. De pulsen kunnen vanuit één uitgang tegelijk uitgestuurd
worden. Het volgende diagram toont de pulsen die uitgestuurd worden op een
uitgang van CPM1A. De duty-ratio van de puls uitsturing is 50% en de frequentie
kan ingesteld worden van 20Hz t/m 2kHz.
on
t
= 50% (0.5)
T
t
on
T
Wanneer pulsen worden uitgestuurd op een uitgang kan de frequentie in stappen
veranderd worden door de SPED(—) instructie opnieuw uit te voeren met
verschillende frequenties, zoals in het volgende diagram getoond wordt.
pagina 36CPM1/CPM1A programmeerhandleiding
OMRON
1, 2, 3...
Continue puls output
CPM1(A) PC Setup
Frequentie
Tijd
Er zijn twee manieren op de puls uitsturing te stoppen.
1. Na het uitvoeren van SPED(—), zal de puls uitsturing stoppen als een INI(—)
wordt uitgevoerd met C=003 of wanneer SPED(—) opnieuw wordt uitgevoerd
waarbij de frequentie ingesteld is op 0.
2. Het totale aantal pulsen dat uitgestuurd moet worden kan worden ingesteld met
PULS(—) voor de executie van SPED(—). In dit geval moet SPED(—)
uitgevoerd worden in de independent mode. De puls uitsturing stopt
automatisch wanneer het aantal pulsen, ingesteld met PULS(—), uitgestuurd is.
Pulsen worden uitgestuurd op de gespecificeerde uitgang als SPED(—) wordt
uitgevoerd. Stel de gekozen uitgang in met het nummer ervan 00 t/m 01 (D=000
t/m 001) en de frequentie van 20Hz t/m 2000Hz (F=0002 t/m 0200). Zet de mode
op continuous mode (M=001).
@SPED(-)
D
M
F
Aantal pulsen instellen
Frequentie veranderen
Voorbeeld 1: pulsuitgang
met PULS(-) en SPED(-)
De puls uitsturing kan gestopt worden door INI(—) uit te voeren met C=003 of door
SPED(—) opnieuw uit te voeren waarbij de frequentie ingesteld is op 0. De
frequentie kan veranderd worden door SPED(—) opnieuw uit te voeren met een
andere frequentie instelling.
Het totale aantal pulsen dat uitgestuurd wordt kan worden ingesteld met PULS(—)
voor het uitvoeren van SPED(—) in de independent mode. De pulsuitgang zal
automatisch stoppen als het aantal pulsen, ingesteld met PULS(—), is uitgestuurd.
@PULS(-)
000
000
P1
PULS(—) stelt het 8-cijferig aantal pulsen in met P1+1, P1. Het aantal pulsen kan
worden ingesteld van 00000001 t/m 16777215. Het aantal pulsen dat ingesteld is
met PULS(—) wordt uitgestuurd als SPED(—) wordt uitgevoerd in de independent
mode. Het aantal pulsen kan niet worden veranderd tot alle pulsen zijn uitgestuurd.
Het is echter wel mogelijk om de puls uitsturing te stoppen.
@SPED(-)
D
M
F
Wanneer SPED(—) wordt uitgevoerd, zullen pulsen uitgestuurd worden op de
gespecificeerde uitgang (D=000 t/m 001: bit 00 t/m 01) met de gespecificeerde
frequentie (F=0002 t/m 0200: 20Hz t/m 2000Hz). Zet de mode op independent
mode (M=001) om het aantal pulsen uit te sturen dat met PULS(—) is ingesteld.
De frequentie kan veranderd worden door SPED(—) opnieuw uit te voeren met
een andere frequentie instelling.
De frequentie van de pulsuitgang kan veranderd worden door SPED(—) opnieuw
uit te voeren met een andere frequentie instelling. Gebruik dezelfde uitgang (P) en
mode (M) instellingen die gebruikt zijn om de pulsuitgang te starten. De nieuwe
frequentie kan elke frequentie zijn tussen de 20Hz t/m 2000Hz in units van 10Hz
(F=0002 t/m 0200).
Het volgende voorbeeld toont PULS(-) en SPED(-), gebruikt om puls uitsturing op
uitgang 010.00 realiseren. Het aantal pulsen gespecificeerd met PULS(-) (10,000)
CPM1/CPM1A programmeerhandleidingpagina 37
CPM1(A) PC Setup
F
OMRON
starten
worden uitgestuurd als de frequentie wordt veranderd door het uitvoeren van
SPED(-) met verschillende frequentie instellingen.
050.00
000
000
DM 0000
@SPED(-)
000
000
#0100
000.00
@SPED(-)
000
000
#0150
000.01
@SPED(-)
000
000
#0100
000.02
@SPED(-)
000
000
#0050
Als 050.00 AAN gaat, stelt PULS(-) uitgang@PULS(-)
010.00 in op 10,000 pulsen.
Start pulsuitgang op uitgang 010.00
op 1 kHz in independent mode.
Als 000.00 AAN gaat, dan wordt de
frequentie veranderd in 1.5 kHz.
Als 000.01 AAN gaat, dan wordt de
frequentie veranderd in 1 kHz.
Als 000.02 AAN gaat, dan wordt de
frequentie veranderd in 500 Hz.
Let op!
Opmerking
Voorbeeld 2: stoppen van
pulsuitgang met SPED(-)
Het volgende diagram toont de pulsuitgang frequentie als het programma wordt
uitgevoerd.
requentie
1.5 kHz
1.0 kHz
0.5 kHz
Tijd
050.00000.00000.01000.0210,000
gaat AANpulsesgaat AANgaat AANgaat AAN
Wees er zeker van dat de uitgestuurde frequentie boven de minimum frequentie
van het aangestuurde systeem ligt.
Speed control timing kan erg nauwkeurig zijn wanneer de frequentie
veranderingen worden uitgevoerd als interrupt processen.
Het volgende voorbeeld toont PULS(-) en SPED(-), gebruikt om de pulsuitgang op
uitgang 010.00 aan te sturen. De frequentie wordt veranderd door het uitvoeren
van SPED(-) met verschillende frequentie instellingen en uiteindelijk gestopt met
een frequentie instelling van 0.
pagina 38CPM1/CPM1A programmeerhandleiding
OMRON
F
CPM1(A) PC Setup
050.00
000.05
000.06
000.07
000
004
000
@SPED(-)
000
001
#0100
@SPED(-)
000
001
#0150
@SPED(-)
000
001
#0100
@SPED(-)
000
001
#0000
Als 050.00 AAN gaat, Stelt PULS(-) uitgang 010.00 in voor @PULS(-)
pulsuitsturing. Er wordt geen aantal pulsen ingesteld.
Start pulsuitgang met 1 kHz in continuous mode.
Als 000.05 AAN gaat, wordt de frequentie veranderd
in 1.5 kHz.
Als 000.06 AAN gaat, wordt de frequentie veranderd
in 1 kHz.
Als 000.07 AAN gaat, wordt de pulsuitgang
gestopt met een frequentie instelling van 0 Hz.
Het volgende diagram toont de pulsuitgang frequentie van poort 1 als het
programma wordt uitgevoerd.
requentie
1.5 kHz
1.0 kHz
050.00000.05000.06000.07
gaat AANgaat AANgaat AANgaat AAN
Voorzichtig
Wees er zeker van dat de uitgestuurde frequentie boven de minimum frequentie
van het aangestuurde systeem ligt.
2.3 Instellen en gebruik van de CPM1(A) interrupt functies
Deze sectie verklaart de instellingen en methodes voor gebruik van de CPM1(A)'s
interrupt functies.
2.3.1 Interrupt typen
De CPM1(A) heeft drie typen interrupts.
Input interrupts
Interval timer interrupts:
Highspeed counter
interrupts:
Interrupt afhandeling
Input interrupts worden uitgevoerd wanneer een signaal van een extern apparaat
één van de CPU ingangen 000.03 t/m 000.06 aan zet.
Interval timer interrupts worden uitgevoerd door een interval timer met een precisie
van 0,1 ms.
Highspeed counter interrupt wordt uitgevoerd afhankelijk van de huidige waarde
(actuele waarde) van de ingebouwde highspeed counter. Alle CPM1(A) CPU’s
beschikken over highspeed counter 0, die pulsen telt via de CPU ingangen 000.00
t/m 000.02. Phase differential pulsen tot 2.5 kHz of één fase pulsen tot 5 kHz
kunnen worden geteld.
Wanneer een interrupt wordt gegenereerd wordt de gespecificeerde interruptroutine uitgevoerd. Interrupts hebben de volgende prioriteitsvolgorde (Input
interrupt 0 heeft de hoogste prioriteit en highspeed counter interrupt 0 heeft de
laagste).
Wanneer een interrupt met een hogere prioriteit wordt ontvangen gedurende
interrupt uitvoer, dan zal het huidige proces worden gestopt en de nieuw
ontvangen interrupt uitgevoerd worden. Nadat deze routine in zijn geheel is
uitgevoerd zal de uitvoer van de vorige interrupt hervat worden.
Wanneer een interrupt met een lagere of gelijke prioriteit wordt ontvangen tijdens
interrupt uitvoer, dan wordt de nieuw ontvangen interrupt direct uitgevoerd nadat
de routine die op dat moment uitgevoerd wordt geheel uitgevoerd is.
Wanneer u met interrupts gaat werken moet u de volgende voorzorgen treffen:
1. In een interrupt programma kan een nieuwe interrupt gedefinieerd worden. Het
is ook mogelijk om een interrupt te wissen in een interrupt programma.
2. Een ander interrupt programma kan niet in een interrupt programma
geschreven worden.
3. In een interrupt programma kan geen subroutine geschreven worden. Schrijf
geen SBN(92), subroutine definitie, instructie in een interrupt programma.
4. Een interrupt programma kan niet worden geschreven in een subroutine. Schrijf
geen interrupt programma tussen een SBN(92) en RET(93) instructie.
Ingangen die zijn gebruikt als interrupt ingang kunnen niet als normale ingang
worden gebruikt.
De volgende instructies kunnen niet worden uitgevoerd in een interruptsubroutine
als een instructie die de highspeed counter aanstuurt wordt uitgevoerd in het
hoofdprogramma: (255.03 gaat aan).
INI(—), PRV(—), CTBL(—)
De volgende methodes kunnen gebruikt worden om deze beperking te omzeilen:
Alle interruptuitvoer kan gemaskeerd worden terwijl de instructie wordt uitgevoerd.
Executieconditie
@INT(-)
100
000
000
Methode 2
INI(61)
000
000
000
@INT(-)
200
000
000
Voer de instructie opnieuw uit in het hoofdprogramma.
Dit is de programmasectie uit het hoofd programma:
pagina 40CPM1/CPM1A programmeerhandleiding
OMRON
Executieconditie
@PRV(-)
001
002
LR00.00
DM0000
@CTBL(-)
001
000
DM0000
RSET
LR00.00
Dit is de programmasectie uit de interrupt subroutine:
SBN(92)
253.13
255.03LR00.00
000
CTBL(-)
001
000
DM 0000
CPM1(A) PC Setup
Opmerking
2.3.2 Input interrupts
Uitvoer
PC Setup parameters
Interrupt input instellingen
(DM6628)
1. Net zoals bij normale subroutines worden interruptroutines gedefinieerd door
gebruik te maken van SBN(92) en RET(93) instructies aan het einde van het
hoofdprogramma.
2. Wanneer een interruptroutine is gedefinieerd dan zal een "no SBS error"
worden gegenereerd tijdens een programmacheck, maar de uitvoer zal normaal
verlopen. Controleer als deze error voorkomt alle normale subroutines om er
zeker van te zijn dat in het programma een SBS(91) is geprogrammeerd om
deze aan te roepen voor u verder gaat.
De CPM1(A)-10 heeft twee interrupt ingangen (000.03 en 000.04), terwijl de
CPM1(A)-20, 30 en 40 vier interrupt ingangen hebben (000.03 t/m 000.06).
Er zijn twee modes voor uitvoer van Input interrupts. De eerste is de Input Interrupt
Mode, waarin de interrupt wordt uitgevoerd als respons op een extern signaal
(ingang van de PLC). De tweede is de Counter Mode, waarin de signalen van het
externe apparaat op hoge snelheid worden geteld en een interrupt wordt
gegenereerd na elke bepaalde hoeveelheid signalen.
In de Input Interrupt Mode kunnen signalen met een lengte van 300µs of meer
gedetecteerd worden. In de Counter Mode kunnen signalen tot 1kHz geteld
worden.
Wanneer ingang 000.03 t/m 000.06 worden gebruikt als interrupt ingangen moeten
deze eerst in de PC Setup geactiveerd worden. Voor het programma uitgevoerd
kan worden moet eerst de volgende instelling, in PROGRAM mode, veranderd
worden in de PC Setup.
Als deze instellingen niet gemaakt zijn kunnen de interrupts niet in het programma
gebruikt worden.
Interrupts van ingang 000.03 t/m 000.06 krijgen de interrupt nummer 0 t/m 3
toegewezen en activeren de subroutines 0 t/m 3. Wanneer een interrupt niet wordt
gebruikt kunnen de subroutines 0 t/m 3 gewoon in het PLC programma gebruikt
worden.
CPM1(A)-10000.03000,3 ms max1 kHz000
CPM1(A)-20/30/40000.0300interrupt000
Alle ingangen normaal
PLC ModelInterruptInterruptResponsetijdinterrupt
ingangnummerInterrupt
mode
000.0401tijd tot het001
000.0401programma001
000.0502wordt geacti-002
000.0603veerd003
Counter
mode
subroutine
Input refreshing
Input Interrupt Mode
Maskeren van interrupts
Wanneer input refreshing niet gebruikt wordt, dan is de status van ingangen
onbetrouwbaar in een interrupt routine. Afhankelijk van de ingestelde
ingangstijdvertraging kunnen ingangen, zelfs als de ingangen gerefreshed wordt,
niet aan gaan. Dit geldt ook voor de status van de ingang die de interrupt
activeerde.
Bijvoorbeeld, in interrupt subroutine 000 zal de status van ingang 000.03 uit zijn als
de interrupt geactiveerd wordt. In dit geval is het aan te raden om 253.13 (altijd
hoog) te gebruiken in plaats van ingang 000.03.
Wanneer een input interrupt signaal wordt ontvangen, dan wordt het
hoofdprogramma onderbroken en het interrupt programma direct uitgevoerd,
onafhankelijk van het punt binnen de cyclus waar de interrupt binnenkomt. Het
interrupt signaal moet minimaal 200µs aanwezig zijn om gedetecteerd te kunnen
worden.
HoofdprogrammaHoofdprogramma
Interrupt programma
Input interrupt
Gebruik de volgende instructies om Input Interrupts te programmeren in de Input
Interrupt Mode.
Met de INT(—) instructie is het mogelijk om Input Interrupt maskers te zetten of te
wissen zoals benodigd is.
(@)INT
000
000
D
Maak de instellingen met de bits 00 t/m 03 van D,
deze corresponden met de input interrupts 0 to 3.
0 : Masker gewist (Input interrupt is toegestaan)
1 : Masker gezet (Input interrupt niet toegestaan)
Tijdens het opstarten van programma bij de CPM1(A) worden alle Input Interrupts
gemaskeerd.
Wissen van gemaskeerde
interrupts
Als het bij een Input Interrupt behorende bit aan gaat terwijl de interrupt
gemaskeerd is, dan zal deze interrupt worden opgeslagen in het geheugen en zal
deze uitgevoerd worden zodra het masker gewist wordt. Wanneer een opgeslagen
Input Interrupt niet moet worden uitgevoerd als het masker gewist wordt, dan moet
deze interrupt uit het geheugen gewist worden.
pagina 42CPM1/CPM1A programmeerhandleiding
OMRON
CPM1(A) PC Setup
Alleen één interrupt signaal wordt in het geheugen opgeslagen per interrupt
nummer.
Met de INT(—) instructie is het mogelijk om een Input Interrupt uit het geheugen te
wissen.
Uitlezen van de masker
status
Voorbeeld
(@)INT
001
000
D
Als de bits 0 t/m 3 uit D, die corresponderen met input interrupts
0 t/m 3 op "1" zijn ingesteld, dan worden de input interrupts
gewist uit het geheugen.
0 : Input interrupt bewaard.
1 : Input interrupt gewist.
Met de INT(—) instructie kan de status van het Input Interrupt masker uitgelezen
worden.
(@)INT
002
000
D
De status van de meest rechtse bits van de in woord D opgeslagen
data (0 t/m 3) data tonen de masker mask status.
0 : Masker gewist (Input interrupt toegestaan)
1 : Masker gezet (Input interrupt niet toegestaan)
Wanneer ingang 000.03 (Interrupt nr 0) aan gaat, dan zal de programma uitvoer
voor het interrupt programma in subroutine nummer 0 direct worden gestart.
DM6628 moet voor dit voorbeeld worden ingesteld op 0001.
253.15
INT
000
000
SBN(92)
000
Interrupt programma
RET(93)
Subroutine 000
#000E
Demaskeert interrupt 0, maskeert de andere
Counter mode
Opmerking
1, 2, 3...
Opmerking
Externe signalen worden geteld en een interrupt wordt gegenereerd wanneer de
tel waarde een opgegeven setpoint bereikt. Wanneer een interrupt wordt
geactiveerd, dan wordt het hoofdprogramma onderbroken en het interrupt
programma direct uitgevoerd, onafhankelijk van het punt binnen de cyclus waar de
interrupt binnenkomt. Externe signalen met een frequentie tot 1kHz worden geteld.
HoofdprogrammaHoofdprogramma
Interrupt programma
Input interrupt
Setpoint
Gebruik de volgende stappen om Input Interrupts te programmeren die de Counter
Mode gebruiken.
De SR woorden die in de Counter Mode gebruikt worden (240 t/m 243) bevatten
allemaal binaire (hexadecimale) data, geen BCD.
1. Schrijf de ingestelde waarde voor de counter werking op de bij interrupt 0 t/m 3
horende SR woorden. De ingestelde waarden kunnen worden opgegeven
tussen 0000 en FFFF (0 t/m 65535). Een waarde van 0000 zal de teller werking
uitzetten tot een nieuwe waarde wordt ingesteld en stap 2, hieronder getoond,
wordt herhaald.
De onderstaande SR woorden worden gewist tijden het opstarten van de PLC en
moeten vanuit het programma geschreven worden.
Het maximale input signaal dat geteld kan worden is 1 kHz.
Als de Counter mode niet wordt gebruikt, kunnen deze SR bits gebruikt worden
als werkbits.
2. Met de INT(—) instructie kan de Counter Mode ingestelde waarde gerefreshed
worden en de interrupts geactiveerd.
1, 2, 3...
Counter actuele waarde in
counter mode
(@)INT
003
000
D
Als de bits 0 t/m 3 uit D, die corresponderen met input
interrupts 0 to 3, zijn ingesteld op "0", dan wordt de
ingestelde waarde gerefreshed en zijn interrupts toegestaan.
0 : Counter mode ingestelde waarde gerefreshed en masker gewist.
1 : Niets gebeurd (Zet de bits voor alle interrupts die niet
veranderen op "1").
De Input Interrupt waarvoor de ingestelde waarde wordt gerefreshed wordt
geactiveerd in de Counter Mode. Wanneer de counter de ingestelde waarde
bereikt, wordt een interrupt gegenereerd, de counter wordt gereset en zal weer
vanaf de ingestelde waarde terug tellen. Dit gaat door tot de counter werking wordt
gestopt.
1. Als de INT(—) instructie wordt gebruikt tijdens het tellen, dan wordt de actuele
waarde terug gezet op de ingestelde waarde. U moet daarom de
gedifferentieerde variant van deze instructie gebruiken (@INT), anders zal er
mogelijk nooit een interrupt plaats vinden.
2. De ingestelde waarde wordt geactiveerd als de INT(—) instructie wordt
uitgevoerd. De ingestelde waarde kan dus niet veranderd worden door
simpelweg de inhoud van 240 t/m 243 te veranderen. Als de inhoud van deze
registers is veranderd moet de ingestelde waarde gerefreshed worden door de
INT instructie opnieuw uit te voeren.
Counter Interrupts kunnen op dezelfde manier gemaskeerd worden als in de Input
Interrupt Mode, worden echter de maskers op deze manier gewist, dan zal de
Counter Mode niet gehandhaafd worden en de Input interrupt Mode zal
geactiveerd worden. Interrupt signalen die ontvangen zijn voor gemaskeerde
interrupts kunnen gewist worden op dezelfde manier als bij de Input Interrupt
mode.
Wanneer input interrupts worden gebruikt in counter mode, dan wordt de actuele
waarde van de counter opgeslagen in het SR woord dat hoort bij de Input Interrupt
0 t/m 3. De waardes zijn 0000 t/m FFFE (0 t/m 65534), de uitgelezen waarde is
gelijk aan de counter actuele waarde min één.
De actuele waarde voor een interrupt wiens ingestelde waarde 000A is zal getoond
worden als een actuele waarde van 0009 direct nadat INT(—) is uitgevoerd.
Opmerking
Zelfs als de Input Interrupts niet gebruikt worden in Counter Mode, zijn deze SR
bits niet te gebruiken als werkbits.
Voorbeeld
In dit voorbeeld wordt Input Interrupt 0 gebruikt in de Counter Mode. Controleer
voor het uitvoeren van het programma de PC Setup. Op ingang 000.03 moeten 10
pulsen worden ingevoerd, waarna een interrupt wordt gegenereerd.
PC Setup: DM6628: 0001 (000.03 is gebruikt als Interrupt) De default instellingen
zijn gebruikt voor alle andere PC Setup parameters.
pagina 44CPM1/CPM1A programmeerhandleiding
OMRON
253.15 (AAN voor 1 scan)
MOV(21)
#000A
240
CPM1(A) PC Setup
Stel 10 in als SV voor input
interrupt 0 in counter mode.
Wanneer het programma wordt uitgevoerd, dan zal de werking zijn zoals in het
onderstaande diagram is getoond.
000.03
Subroutine 000
Noot
1. De counter zal doorgaan met werken, zelfs als de interruptroutine verwerkt
wordt.
2.3.3 Alle interrupts maskeren
Alle interrupts, inclusief Input Interrupts, Interval Timer Interrupts en highspeed
counter interrupts, kunnen als groep ge(de)maskeerd worden met de INT(—)
instructie. Deze methode is een toevoeging op het maskeren van individuele
soorten interrupts. Verder zal het wissen van de maskeringen voor alle interrupts
niet de maskeringen van de individuele interrupts wissen, maar ze herstellen naar
de gemaskeerde conditie die bestond voordat INT(—) werd uitgevoerd om ze als
groep te maskeren.
Gebruik INT(—) niet om interrupts als groep te maskeren, tenzij dit nodig is om
tijdelijk alle interrupts te maskeren. Gebruik INT(—) instructies in dit geval altijd in
paren, waarbij de eerste INT(—) instructie de interrupts maskeert en de tweede
deze bewerking ongedaan maakt.
INT(—) kan niet gebruikt worden om alle interrupts te (de)maskeren vanuit een
interrupt routines.
Interrupts maskeren
Gebruik de INT(—) instructie om alle interrupts te deactiveren.
@INT
003
000
#000E
SBN(92)
000
RET(93)
10 counts10 counts10 counts
(zie noot 1) (zie noot 1)
Interrupts worden enabled in counter
mode voor interrupt 0. (SV: 10)
(@)INT
100
000
000
Als een interrupt wordt gegenereerd wanneer interrupts gemaskeerd zijn, dan zal
interrupt processing niet worden uitgevoerd maar de gegenereerde interrupt zal
worden opgeslagen voor de input, interval timer en highspeed counter interrupts.
De interrupts worden vervolgens geserviced zodra deze gedemaskeerd worden.
Interrupts demaskeren
Gebruik de INT(—) instructie zoals hieronder getoond om interrupts te
demaskeren.
(@)INT
200
000
000
CPM1/CPM1A programmeerhandleidingpagina 45
CPM1(A) PC Setup
2.3.4 Interval timer interrupts
Snelle, nauwkeurig timer interrupts kunnen worden gegenereerd door gebruik te
maken van interval timers. De CPM1(A) beschikt over één interval timer.
Modes
Opstarten in de one-shot
mode
Er zijn twee modes waarin de interval timer kan werken. De one-shot Mode, waarin
één interrupt wordt uitgevoerd als de tijd verstreken is en de scheduled Interrupt
Mode waarin de interrupt wordt herhaald op een vast interval.
Gebruik de STIM (—) instructie om de interval timer in de one-shot mode te
starten.
Elke keer als het interval gespecificeerd in C2 + 1 afloopt, zal de timer de actuele
waarde met één verlagen. Wanneer de actuele waarde 0 bereikt, zal de
opgegeven subroutine éénmaal worden aangeroepen en de timer stoppen.
De tijd die verloopt tussen het starten van de STIM instructie en de afloop er van
kan als volgt worden berekend:
(Inhoud van woord C2) x (Inhoud van woord C2 + 1) x 0,1ms =(0,5 t/m
319968,0ms)
Als een constante is ingesteld op C2, dan zal de ingestelde waarde van de timer
die waarde nemen en het interval zal 10 zijn (1ms; de ingestelde waarde wordt
uitgedrukt in ms)
Gebruik de STIM(—) instructie om de interval timer in de scheduled interrupt mode
te starten.
(@)STIM
C1
C2
C3
C1: Interval timer nr (003)
C2: Timer ingestelde waarde (eerste woord)
C3: Subroutine nr. (4 cijfers BCD): 0000 t/m 0255
De betekenis van de instellingen blijft hetzelfde als bij de one-shot mode, maar in
de scheduled interrupt mode zal de actuele waarde van de timer teruggezet
worden op de ingestelde waarde en zal de timer opnieuw gestart worden nadat de
interrupt subroutine is uitgevoerd. In de scheduled interrupt mode worden
interrupts repeterend uitgevoerd op een vast interval tot de uitvoer wordt gestopt.
Uitlezen van de timers
verlopen tijd
Gebruik de STIM(—) instructie om de verlopen tijd van de timer uit te lezen.
(@)STIM
C1
C2
C3
C1: Interval timer nr. (006)
C2: Eerste woord van parameter 1
C3: Parameter 2
C2: Aantal keer dat de waarde van de timer is verlaagd (4 cijfers BCD)
C2 + 1: Timer tijdsinterval (4 cijfers BCD; unit: 0.1 ms)
C3: De verlopen tijd sinds de vorige verlaging van de timer waarde (4 cijfers
BCD; unit: 0.1 ms)
De tijd die verlopen is sinds de interval timer is gestart kan als volgt berekend
worden:
pagina 46CPM1/CPM1A programmeerhandleiding
OMRON
Stoppen van timers
Voorbeeld
CPM1(A) PC Setup
{(Inhoud van woord C2) x (Inhoud van woord C2 + 1) + (Inhoud van woord C3)} x
0.1 ms
Als de gespecificeerde interval timer is gestopt dan wordt "0000" opgeslagen.
Gebruik de STIM(—) instructie om de interval timer te stoppen.
(@)STIM
010
000
000
Na uitvoer van de STIM instructie zoals hierboven getoond zal de interval timer
stoppen.
In dit voorbeeld wordt een interrupt om de 2,4ms (0,6ms x 4) aangeroepen door
middel van een interval timer. Zet voor het uitvoeren van het programma alle
parameters in de PC Setup op default. (De ingangen worden niet gerefreshed voor
de uitvoer van de interrupt subroutine.)
253.15 Eerste Scan Vlag
AAN voor 1 cyclus
MOV(21)
#0004
DM 0010
Interval timer ingestelde waarden:
Stelt de ingestelde waarde van de
interval timer in op 4.
MOV(21)
#0006
DM 0011
001.00
@STIM
003
DM 0010
#0023
001.00
@STIM
010
000
000
SBN(92)
RET(93)
Stelt het interval voor de timer in op 0,6 ms.
Interval timer 1 start als IR001.00 AAN gaat.
Interval timer 1 stopt als IR001.00 UIT gaat.
Elke 2,4 ms loopt de tijd van interval timer 1 af
en wordt subroutine 023 aangeroepen.023
Wanneer het programma wordt uitgevoerd dan wordt subroutine 023 elke 2,4ms
aangeroepen zolang 001.00 aan is.
001.00
Subroutine 023
2,4 ms2,4 ms2,4 ms
2.3.5 Highspeed counter interrupts
Pulsen van een encoder die aangesloten is op de ingangen 000.00 t/m 000.02 van
de CPM1(A) CPU kunnen met een hoge snelheid geteld worden. Het is mogelijk
om, afhankelijk van de getelde waarde, interrupts uit te voeren. Voor de counter
gebruikt kan worden moet deze in de PC Setup geactiveerd worden.
CPM1/CPM1A programmeerhandleidingpagina 47
CPM1(A) PC Setup
Up/d
I
Signaal typen & tel modes
OMRON
Bit 150
DM6642
Counter mode
0: Up/down
4: Incrementing
Reset methode
0: Z-fase & Software
1: Alleen software
Counter instelling
00: Counter niet gebruikt
01: Counter geactiveerd
Default:
Veranderingen in de instelling in DM6642 zijn alleen effectief na het opnieuw
starten van de uitvoer van het programma (uitzetten van de voedingsspanning of
de PLC in program mode zetten).
Twee typen signalen kunnen worden ingelezen van een puls encoder. De tel mode
die gebruikt wordt voor highspeed counter 0 is afhankelijk van het signaal type.
Counter is niet in gebruik
Up/down mode
: Een phase-difference 4X twee fase signaal (A-fase en B-fase)
en een Z-fase signaal worden gebruikt om te tellen. De getelde waarde wordt
verhoogd of verlaagd afhankelijk van het fase verschil tussen de twee fase (A
en B) signalen.
Incrementing mode:
Één tel signaal (puls) en een teller reset signaal worden
gebruikt. De teller wordt verhoogd afhankelijk van het tel signaal.
own mode
A-fase
B-fase
ncrementing mode
Tel
ingang
Reset methoden
Opmerking
Teller
1 2 3 4
VerhogenVerlagen
5 6 7 8 7 6 5 4
3 2 1 0
Teller 1234
Alleen verhogen
Één van de verderop beschreven methoden moet gebruikt worden om de counter
te resetten wanneer deze herstart wordt. De counter wordt automatisch gereset
wanneer de uitvoer van het programma wordt gestart of gestopt.
De volgende signaalovergangen worden gezien als voorwaartse (optellende)
pulsen: A-fase opgaande flank gevolgd door B-fase opgaande flank gevolgd door
A-fase neergaande flank gevolgd B-fase neergaande flank. De volgende signaalovergangen worden gezien als teruggaande (verlagende) pulsen: B-fase
opgaande flank gevolgd door A-fase opgaande flank gevolgd door B-fase
neergaande flank gevolgd A-fase neergaande flank.
Het tel bereik loopt van -32767 tot 32767 voor de Up/Down Mode en van 0 tot
65535 voor de Incrementing Mode. Pulsen kunnen worden geteld met een
frequentie tot 2.5 kHz in Up/Down Mode en tot 5.0 kHz in Incrementing Mode.
De Up/Down Mode gebruikt altijd een 4X phase-difference signaal. Het aantal
getelde pulsen voor elke encoder omwenteling is 4 maal de resolutie van de
encoder. Selecteer de encoder gebaseerd op de telbare bereiken.
Één van de twee methoden hieronder beschreven moet worden gebruikt om de
actuele waarde van de counter te resetten. (D.w.z. instellen op 0).
Z-fase signaal + software reset:
het Z-fase signaal (reset input) en het
De actuele waarde wordt gereset wanneer
Highspeed Counter 0 Resetbit
(252.00)
beide aan zijn.
Software reset:
Counter 0 Resetbit
De actuele waarde wordt gereset wanneer het
(252.00) aan wordt gezet.
Highspeed
pagina 48CPM1/CPM1A programmeerhandleiding
OMRON
Z-f
t
Soft
t
CPM1(A) PC Setup
Opmerking
Highspeed counter interrupt
Bedrading
ase signaal + software rese
1 of meer cycly
Z-fase
(reset input)
252.00
1 of meer cycly
Gereset door interruptGereset door cyclusNiet gereset
De status van het
Binnen 1 cyclus
Highspeed Counter 0 Resetbit
252.00
Binnen 1 cyclus
(252.00) wordt één keer per
ware rese
1 of meer cycly
Gereset door cyclus
cyclus, tijdens de I/O refresh, doorgegeven aan de highspeed counter. Om de
counter betrouwbaar te resetten is het dus noodzakelijk om het minimaal één
cyclus aan te houden.
De "Z" in "Z-fase" is een afkorting voor "Zero" (Engels voor nul). Het is een signaal
dat de encoder één keer rond is gedraaid.
Voor highspeed counter interrupts wordt een vergelijkingstabel gebruikt in plaats
van het “Tel tot” principe. De teller controle kan worden uitgevoerd op één van de
twee hieronder beschreven methoden. In de vergelijkingstabel worden de met de
actuele waarde te vergelijken condities en interruptroutine combinaties
opgeslagen.
Doel waarde:
Een maximum van 16 vergelijkingscondities (waarde en de telrichting) en interruptroutine combinaties worden opgeslagen in de vergelijkingstabel. Wanneer de counter actuele waarde en de telrichting gelijk zijn aan de
vergelijkingscondities, dan wordt de gespecificeerde interruptroutine uitgevoerd.
Bereik vergelijken:
Acht vergelijkingscondities (hoge en lage limieten) en
interruptroutine combinaties worden opgeslagen in de vergelijkingstabel.
Wanneer de actuele waarde groter of gelijk is aan de lage limiet en kleiner of
gelijk aan de hoge limiet dan wordt de gespecificeerde interruptroutine
uitgevoerd.
Hieronder worden de aansluitingen van de puls encoder op de input terminal van
de CPU gegeven, afhankelijk van de telmode.
Terminal nr.Up/Down ModeIncrementing Mode
000.00Encoder A-fasePuls count input
000.01Encoder B-fase---
000.02Encoder Z-faseReset input
Programmeren
Beheersen van highspeed
counter interrupts
Wanneer alleen de software reset wordt gebruikt dan kan terminal 000.02 worden
gebruikt als normale ingang. In de Incrementing Mode kan terminal 000.01 worden
gebruikt als normale ingang.
Gebruik de volgende stappen om de highspeed counter te programmeren.
De highspeed counter begint met tellen nadat de juiste instellingen in de PC Setup
zijn gemaakt. Vergelijkingen zullen echter niet worden uitgevoerd met de
vergelijkingstabel en interrupts worden niet uitgevoerd tot de CTBL(—) instructie
wordt uitgevoerd.
De highspeed counter wordt ingesteld op "0" als de voedingsspanning aan wordt
gezet en wanneer de uitvoer van het programma wordt gestart en gestopt.
De huidige waarde van de highspeed counter kan worden uitgelezen op 248 en
249.
1. Gebruik de CTBL (—) instructie om de vergelijkingstabel in de CPM1(A) op te
slaan en om de vergelijkingen te starten.
000 : Doel tabel ingesteld en vergelijken gestart
001 : Bereik tabel ingesteld en vergelijken gestart
002 : Doel tabel alleen ingesteld
003 : Bereik tabel alleen ingesteld
TB : Begin woord van de vergelijkings tabel
Als C is ingesteld op 000, dan worden de vergelijkingen uitgevoerd in de doel
mode; Als C 001 is dan worden ze uitgevoerd in de bereik vergelijking mode.
De vergelijkingstabel wordt door de instructie opgeslagen en wanneer deze
bewerking uitgevoerd is, zal het vergelijken gestart worden. Als de
CPM1/CPM1A programmeerhandleidingpagina 49
CPM1(A) PC Setup
Opmerking
Uitlezen van de huidige
waarde
Uitlezen van 248 en 249
OMRON
vergelijkingen worden uitgevoerd zullen highspeed interrupts worden
uitgevoerd zoals dit in de vergelijkingstabel is opgeslagen. Zie voor meer details
"Registreer vergelijkingstabel - CTBL(—)" op pagina 97.
In de bereik vergelijking mode worden de resultaten van de vergelijking normaal
opgeslagen in AR11.00 t/m AR11.07.
Als C is ingesteld op 002, dan worden de vergelijkingen uitgevoerd in de doel
mode als C 003 is dan worden ze uitgevoerd in de bereik vergelijking mode. Bij
beide instellingen wordt de vergelijkingstabel opgeslagen, maar de
vergelijkingen zullen niet gestart worden. De INI(—) instructie moet in dit geval
gebruikt worden om de vergelijkingen te starten.
2. Voer de INI (—) instructie uit zoals hieronder getoond om de vergelijkingen te
stoppen.
(@)INI
000
001
000
Zet de tweede operand op “000” om de vergelijkingen opnieuw te starten en
voer de INI(—) instructie uit.
Zodra een tabel is opgeslagen dan wordt deze in de CPM1(A) bewaard zolang
de CPM1(A) het programma uitvoert en er geen andere tabel wordt
opgeslagen.
Er zijn twee manieren om de actuele waarde uit te lezen. De eerste is om deze
direct uit 248 en 249 te lezen, de tweede is door gebruik te maken van de PRV(—)
instructie.
De actuele waarde van de highspeed counter is opgeslagen in 248 en 249 zoals
hieronder getoond. Het meest linkse cijfer van 249 zal “F” bevatten als het getal
negatief is.
Meest linker 4 cijfersMeest rechter 4 cijfers
249248
Opmerking
De PRV(—) instructie
gebruiken
Actuele waarde veranderen
Up/Down Mode : F0032767 (-32767) t/m 00032767
Incrementing mode: 00000000 t/m 00065535
Deze woorden worden één keer per cyclus gerefreshed, tijdens de I/O refresh,
Zodat er een verschil kan bestaan tussen de uitgelezen actuele waarde en de
huidige actuele waarde.
Wanneer de highspeed counter niet wordt gebruikt kunnen deze woorden (bits)
worden gebruikt als werkbits.
Lees de actuele waarde van de highspeed counter uit door de PRV(—) instructie
te gebruiken.
(@)PRV
000
000
P1
P1: Eerste woord van de actuele waarde
De actuele waarde van de highspeed counter is opgeslagen zoals hieronder
getoond. Het meest linkse cijfer zal “F” bevatten als het getal negatief is.
Meest linker 4 cijfersMeest rechter 4 cijfers
P1+1P1
Up/Down Mode : F0032767 (-32767) t/m 00032767
Incrementing mode: 00000000 t/m 00065535
De actuele waarde wordt uitgelezen op het moment waarop de PRV(—) instructie
wordt uitgevoerd.
Er zijn twee manieren om de actuele waarde van de highspeed counter te
veranderen. De eerste manier is door deze te resetten door één van de reset
methodes te gebruiken. In dit geval wordt de huidige waarde ingesteld op 0. De
tweede manier is door gebruik te maken van de INI(—) instructie.
pagina 50CPM1/CPM1A programmeerhandleiding
OMRON
CPM1(A) PC Setup
De methode die de INI(—) instructie gebruikt wordt hier uitgelegd. Refereer naar
het begin van deze verklaring voor een verklaring van de reset methodes voor
highspeed counter 0.
Verander de huidige waarde van de counter door de INI(—) instructie zoals
hieronder getoond te gebruiken.
Voorbeeld
(@)INI
000
002
D
D: Eerste woord voor opslag van de veranderingen
in de actuele waarde.
Meest linker 4 cijfersMeest rechter 4 cijfers
D+1D
Up/Down Mode : F0032767 (-32767) t/m 00032767
Incrementing mode: 00000000 t/m 00065535
Zet op het meest linker cijfer van D+1 een F om een negatief getal in te kunnen
stellen.
Dit voorbeeld toont een programma waarin de highspeed counter in de
Incrementing Mode wordt gebruikt. Vergelijkingen worden uitgevoerd in de doel
mode en afhankelijk van de huidige waarde van de counter zullen de verschillende
subroutines uitgevoerd worden. Stel de PC Setup als volgt in voor het uitvoeren
van het programma:
DM6642: 0114 (Highspeed counter gebruikt met software reset en in de
Incrementing Mode). Gebruik voor alle ander PC Setup instellingen de default
waarden.
Als aanvulling moet de volgende data opgeslagen worden voor de
vergelijkingstabel:
Slaat de vergelijkingstabel op in doel mode
en start de vergelijking.
SBN(92)
030
Interrupt programma 030
RET(93)
SBN(92)
031
Interrupt programma 031
RET(93)
2.3.6 Highspeed counter overflows / underflows
Als het toegestane telbereik voor de highspeed counter wordt onder- of
overschreden en een underflow of overflow status zal optreden zal de actuele
waarde van de counter blijven staan op 0FFF FFFF voor overflows en FFFF FFFF
voor underflows tot de overflow/underflow status wordt gewist door de counter te
resetten. De toegestane telbereiken zijn als volgt:
1. De waarden die hierboven gegeven worden zijn theoretisch waarbij wordt
aangenomen dat de PLC een aannemelijk korte cyclus tijd heeft. Actueel zullen
waarden voorkomen die één cyclus voor de overflow/underflow error voorkwam
aanwezig waren.
2. Het zesde en zevende cijfer van de highspeed counters actuele waarde zijn
normaal gesproken 00, maar kunnen gebruikt worden als “Overflow/Underflow
vlaggen" door te detecteren of deze bits uit of aan zijn. Hiermee kan
gedetecteerd worden of waarden buiten de toegestane bereiken zijn gekomen.
De highspeed counter kan gereset worden op één van de hiervoor besproken
methoden of automatisch door de programma uitvoer te herstarten. De highspeed
counter en de gerelateerde functies zullen niet normaal functioneren tot de
underflow/overflow status is gewist. De werking tijdens een overflow/underflow
status is als volgt:
Ö
Werking van de vergelijkingstabel stopt.
De vergelijkingstabel wordt niet gewist.
Ö
Interruptroutines van de highspeed counter worden niet uitgevoerd.
Ö
CTBL(—) kan alleen gebruikt worden om een nieuwe vergelijkingstabel te
Ö
registreren. Als een poging wordt gedaan om de werking van de
vergelijkingstabel te starten dan zal deze niet gestart en ook niet
geregistreerd worden.
INI(—) kan niet gebruikt worden om de werking van de vergelijkingstabel te
Ö
starten of te stoppen of om de actuele waarde aan te passen.
PRV(—) zal alleen 0FFF FFFF of FFFF FFFF uitlezen als actuele waarde.
Ö
Gebruik de volgende procedure om een overflow/underflow status te herstellen.
1. Reset de counter.
2. Stel indien nodig de actuele waarde in met PRV(—).
3. Stel indien nodig de vergelijkingstabel in met CTBL(—).
4. Start de vergelijkingstabel met INI(—).
1. Reset de counter.
2. Stel indien nodig de actuele waarde in met PRV(—).
3. Stel de vergelijkingstabel in en start de werking van deze met CTBL(—) en
INI(—).
De bereik vergelijkingsvlaggen in AR11 blijven hun waarde handhaven na het
herstellen. De interruptroutine voor een interruptconditie die direct na het herstel
ontstaat zal niet worden uitgevoerd als dezelfde interruptconditie al was ontstaan
voor de overflow/underflow status optrad. Als de uitvoer van de interruptroutine
noodzakelijk is moet AR11 gewist worden voor u de overflow/underflow status
hersteld.
Wanneer de highspeed counter wordt gereset, dan wordt de actuele waarde
ingesteld op 0. Het tellen zal beginnen van 0 en de vergelijkingstabel,
uitvoeringsstatus en uitvoeringsresultaten zullen hun status/waarde behouden.
Wanneer de highspeed counter wordt gestart, dan wordt de counter mode in de
PC Setup gelezen en de actuele waarde ingesteld op 0, underflow/overflow
statussen worden gewist, de geregistreerde vergelijkingstabel en de executie
status ervan wordt gewist (Bereik vergelijkingsresultaten worden altijd gewist
wanneer de werking wordt begonnen of wanneer de vergelijkingstabel wordt
geregistreerd).
Wanneer de highspeed counter wordt gestopt wordt de actuele waarde
vastgehouden, de vergelijkingstabel en de executie status wordt gewist en de
bereik vergelijkingsresultaten worden vastgehouden.
2.4 CPM1(A) communicatie functies
De volgende typen communicatie kunnen worden uitgevoerd door periferie poort
van de CPM1(A).
Hostlink communicatie met een computer of terminal.
pagina 52CPM1/CPM1A programmeerhandleiding
OMRON
One-to-one link communicatie met een andere CPM1(A), CQM1 of
C200HS/E/G/X PLC.
NT-link naar een OMRON NT terminal. Deze communicatievorm naar OMRON
terminals werkt aanzienlijk sneller dan Hostlink.
Opmerking
Met de CPM1(A)-CIF01 of CPM1(A)-CIF11 kan de periferie poort worden omgezet
naar RS232C of RS422.
Deze sectie verklaart de benodigde instellingen in de PC Setup en methodes om
deze communicatie te gebruiken.
2.4.1 Communicatie PC Setup
De PC Setup parameters in DM6650 t/m DM6654 worden gebruikt voor
instellingen voor de communicatie poort.
Opmerking
Als de dipswitch op de CPM1(A)-CIF01 op host wordt gezet dan worden de PC
Setup communicatie parameters genegeerd en worden de onderstaande
instellingen gebruikt voor de periferie poort.
Mode:Hostlink
Node nummer:00
Start bits:1 bit
Data lengte:7 bits
Stop bits:2 bits
Pariteit:Even
Baudrate:9.600 bps (2.400bps & 1 stopbit bij CPU’s van voor juli
Transmission delay:Geen
CPM1(A) PC Setup
‘95)
One-to-one link
Hostlink nodenummer
De instellingen in DM6650 bepalen de belangrijkste communicatie parameters,
zoals in het volgende diagram getoond wordt.
Bit 150
DM6650
Poort instellingen
00: Standaard communicatie condities
01: Communicatie zoals ingesteld op DM6646, DM6651
Link woorden voor one-to-one link
0: LR 00 t/m LR 15
Communicatie mode
0: Hostlink
2: One-to-one link slave
3: One-to-one link master
4: NT-link
Default:
Hostlink met standaard parameters
Om een 1:1 link te gebruiken zijn de enige instellingen de communicatiemode en
de linkwoorden. Stel de communicatiemode voor één van de PLC’s in op de 1:1
master en de andere op de 1:1 slave. Stel vervolgens de linkwoorden in bij de PLC
die ingesteld is als master. De instelling op de bits 08 t/m 11 is alleen geldig bij de
master van de 1:1 link. (Let op!, 1:1 link is alleen te gebruiken in combinatie met de
CPM1(A)-CIF01).
Een nodenummer moet ingesteld worden voor Hostlink communicatie om het
verschil aan te kunnen geven tussen nodes wanneer er meer dan 1 node in de
communicatie is opgenomen. Deze instelling is alleen nodig voor Hostlink
communicatie. Om Hostlink communicatie te kunnen gebruiken moet Hostlink
worden ingesteld als communicatiemode en moeten de communicatie parameters
worden ingesteld.
Bit 150
00
Default:
00
DM6653
Nodenummer
(2 cijfers BCD): 00 t/m 31
CPM1/CPM1A programmeerhandleidingpagina 53
CPM1(A) PC Setup
Stel het nodenummer in op 00, tenzij er meerdere nodes in één netwerk zijn
opgenomen.
2.4.2 Hostlink communicatie
Selecteer Hostlink communicatie en stel vervolgens de communicatie parameters
in zoals hieronder beschreven. Zorg ervoor dat de communicatie instellingen van
de CPM1(A) exact overeen komen met die van het apparaat waarmee
gecommuniceerd moet worden.
Standaard communicatie
Als de volgende instellingen correct zijn voor de communicatie zet dan de twee
rechter cijfers van DM6650 op 00. Door deze instelling worden de ingevoerde
parameters op DM6651 genegeerd.
Start bits:1 bit
Data lengte:7 bits
Stop bits:2 bits
Pariteit:Even
Baudrate:9.600 bps
Afhankelijk van het apparaat dat aangesloten is op de periferie poort, kan het
nodig zijn om een transmissie vertraging in te stellen. Wanneer dit het geval is, stel
dan de transmissie vertraging in om de toegestane tijd te regelen. De transmissie
vertraging is de tijd die de PLC zal wachten met het versturen van een volgend
byte nadat er een is verzonden.
Bit 150
DM6652
Transmissie vertraging (4 cijfers BCD; unit 10 ms)
Hostlink communicatie
Default:
Hostlink communicatie is ontwikkeld door OMRON om één of meer PLC’s met een
Geen vertraging
computer te kunnen laten communiceren via een RS-232C kabel waarbij de
computer data uit de PLC kan lezen of ernaar kan schrijven. Normaal stuurt de
computer een commando naar de PLC en stuurt de PLC automatisch een
pagina 54CPM1/CPM1A programmeerhandleiding
OMRON
response terug. De communicatie wordt dus uitgevoerd zonder dat de PLC er
actief bij is betrokken. De PLC kan ook communicatie opbouwen naar de computer
indien dit noodzakelijk is. In dit geval wordt gesproken over event driven
communicatie.
Over het algemeen zijn er twee manieren om Hostlink communicatie te
implementeren. De ene manier is gebaseerd op C-mode commando’s en de
andere op FINS (CV-mode) commando’s. De CPM1(A) ondersteunt alleen de Cmode commando’s.
2.4.3 One-to-one link communicatie
Als twee CPM1(A)'s op 1:1 basis worden gekoppeld via de periferie poort, dan
kunnen ze het LR geheugen gezamenlijk delen. Wanneer twee PLC’s one-to-one
worden gekoppeld, dan zal de een als master en de ander als slave fungeren.
Opmerking
One-to-one link
Bij de CQM1 en C200HS/E/G/X kan de periferie poort niet worden gebruikt voor
een 1:1 link. Bij deze CPU’s dient de RS232C poort gebruikt te worden. Bij de
CPM1(A) kan een 1:1 link alleen gebruikt worden in combinatie met een CPM1(A)CIF01.
Een one-to-one link staat twee PLC's toe om data gemeenschappelijk te delen in
het LR gebied. Zoals in het onderstaande diagram getoond, zal data die
geschreven wordt in een woord in het LR gebied van de ene PLC automatisch
naar hetzelfde woord in het LR gebied van de andere PLC worden geschreven.
Elke PLC krijgt een aantal vaste woorden toegewezen waarop geschreven kan
worden en een aantal vaste woorden waar de andere PLC op mag schrijven.
Master
CPM1(A) PC Setup
Slave
Opmerking
Communicatie procedure
Voorbeeld
Master gebied
Slave gebied
Schrijf "1"
1
Automatisch geschreven
1
Schrijf "1"
1
Master gebied
Slave gebied
De woorden die door de PLC’s gebruikt worden staan in de onderstaande tabel.
Deze zijn afhankelijk van de in de PC Setup ingestelde link woorden voor de
master.
De CPM1(A) ondersteund alleen de optie LR00 t/m LR15 voor de grootte van het
LR gebied. Word een CPM1(A) gebruikt in combinatie met een CQM1 of
C200HS/E/X/G, dan moet bij deze PLC’s dus ook voor deze instelling worden
gekozen.
Als de instellingen voor de master en de slave correct zijn gemaakt, dan wordt de
one-to-one link automatisch gestart door simpelweg de spanning op beide PLC’s
te zetten. De 1:1 link werkt onafhankelijk van de mode van de PLC.
Dit voorbeeld toont een programma dat de statussen van de ene CPU doorgeeft
aan de andere. Dit gebeurt door middel van een one-to-one link die ingesteld staat
op de RS-232C poort. Voor het programma uitgevoerd kan worden moeten de
volgende instellingen in de PC Setup gemaakt worden.
Master: DM6645: 3000 (one-to-one link master; LR 00 t/m LR 15 wordt gebruikt)
Slave: DM6645: 2000 (one-to-one link slave)
Voor de rest van de parameters in de PC Setup wordt aangenomen dat ze op de
standaard waarde staan ingesteld. De woorden die voor de one-to-one link worden
gebruikt zijn hieronder getoond.
MasterSlave
LR00
LR07
LR08
LR15
Schrijven
Lezen
Lezen
Schrijven
LR00
LR07
LR08
LR15
CPM1/CPM1A programmeerhandleidingpagina 55
CPM1(A) PC Setup
Master
Slave
OMRON
Wanneer het programma in zowel de master als de slave wordt uitgevoerd, zal de
status van woord 001 van elke unit op woord 10 van de andere unit getoond
worden. Woord 001 is een ingangswoord en 10 is een uitgangswoord.
253.13
MOV(21)
AltijdAAN
253.13
AltijdAAN
001
LR00
MOV(21)
LR08
10
MOV(21)
001
LR08
MOV(21)
LR00
10
2.5 Analoge instellingen
In de CPM1(A) verplaatst de analoge instellingen functie automatisch de
instellingen van de CPU's potentiometers naar woord 250 en 251. Deze functie is
handig wanneer ingestelde waarden in het programma voorkomen die tijdens
bedrijf veranderd moeten worden. Deze ingestelde waarden kunnen aangepast
worden door aan de potentiometers op de CPU te draaien.
De volgende figuur geeft de IR woorden aan die bij de potentiometers horen. De
potentiometers zijn ondergebracht onder hetzelfde luikje op de CPU waar zich de
periferiepoort bevindt.
01
De instellingen van de potentiometers worden opgeslagen in BCD en kunnen
variëren van 0000 t/m 0200. Gebruik een precisieschroevendraaier om de
instellingen aan te passen. Draai de schakelaars met de klok mee om de waarde
te verhogen.
Opmerking
De CPM1(A) vernieuwt zolang de CPU aan staat de woorden 250 t/m 251
voortdurend met de waarde die ingesteld is op de potentiometers. Overschrijf deze
woorden niet met het programma of periferie.
Het adres voor schakelaar 0 is woord 250
Het adres voor schakelaar 1 is woord 251
2.6 Quick response ingangen
De CPM1(A)-10CDR PLC’s beschikken over twee quick response ingangen en de
CPM1(A)-20CDR en 30CDR over vier quick response ingangen. Voor de quick
response ingangen en de interrupt ingangen worden dezelfde PLC ingangen
gebruikt.
Quick response ingangen gebruiken een interne buffer, zodat ingangssignalen
korter dan één cyclus gedetecteerd kunnen worden. Signalen met een pulsbreedte
tot 0,2ms kunnen met deze functie gedetecteerd worden, onafhankelijk van hun
timing ten opzichte van de cyclus van de PLC.
pagina 56CPM1/CPM1A programmeerhandleiding
OMRON
CPM1(A) PC Setup
Instellen
Programma voorbeeld
Input
000.03
IR000.03
in de PLC
overheadI/O refresh Programma
uitvoer
1 scan
overheadI/O refresh Programma
uitvoer
PLC modelInput bitsMin input puls breedte
CPM1(A)-10CDR000.03 & 000.040,2 ms
CPM1(A)-20CDR/30CDR000.03 t/m 000.06
De ingangen 000.03 t/m 000.06 (000.03 & 000.04 voor CPM1(A)-10CDR) kunnen
worden ingesteld als quick response ingangen op DM6628 zoals in de volgende
figuur getoond is.
Het onderstaande programma kan gebruikt worden om ingang 000.03 als quick
response ingang te gebruiken. DM6628 moet worden ingesteld op 0002, de rest
van de PC Setup wordt ingesteld op de default waarde.
253.15
INT(89)
000
000
#000E
CPM1/CPM1A programmeerhandleidingpagina 57
Geheugengebieden
OMRON
3 Geheugengebieden
Verschillende typen data zijn nodig om een besturing effectief en correct te kunnen
laten werken. Om met deze verschillende typen data overweg te kunnen is de PLC
voorzien van verschillende geheugengebieden voor data opslag, waarin elk gebied
een andere functie heeft. De gebieden die gebruikt worden in het programma
worden datagebieden genoemd. Het andere geheugengebied is het
programmageheugen, waar het programma zelf in wordt opgeslagen. Deze
gebieden worden hier individueel besproken waarbij alle informatie die nodig is om
het te kunnen gebruiken wordt gegeven. Daarom wordt het SR en TR geheugen
hier ook besproken, alhoewel dit strikt gezien geen geheugengebieden zijn.
3.1 Introductie
Details waaronder de naam, het acroniem en de functie van elke gebied worden in
de volgende tabel samengevat. Op de laatste twee na zijn dit datagebieden. Data
en geheugengebieden worden normaal gesproken benoemd met hun acroniem.
GebiedAcroniemFunctie
Interne relaisIRGebruikt om I/O punten aan te sturen en om tijdelijke data in op te slaan.
Speciale relaisSRBevat systeem klokpulsen, vlaggen, bits met speciale functies en status informatie.
Auxiliary relaisARBevat vlaggen en bits voor speciale functies. Dit gebied houdt de status vast na
spanningsuitval.
DatageheugenDMGebruikt voor interne dataopslag en manipulatie. Dit gebied houdt de status vast na
spanningsuitval.
Holding relaisHRGebruikt om data (bits) in op te slaan waarvan de status vastgehouden moet worden als de
spanning van de PLC wordt afgezet.
Timer/CounterTIM / CNT
(TC)
Link relaisLRBeschikbaar als werkbits. Bij diverse soorten OMRON netwerken wordt dit gebied gebruikt
Temporary relais TRGebruikt om tijdelijk executiecondities in op te slaan. Deze bits kunnen alleen met de LOAD
Programma
geheugen
UMBevat het programma dat wordt uitgevoerd door de CPU.
Gebruikt om timers en counters te definiëren en de timer- en countervlaggen te bereiken.
Wanneer dit gebied wordt uitgelezen of bewerkt met instructies op woordniveau wordt de
actuele waarde van een timer of counter uitgelezen. Wordt het gebruikt als bitoperand dan
wordt de completionvlag van een timer of counter uitgelezen. De completionvlag is hoog als
een timer of counter is afgelopen.
als gemeenschappelijk geheugen.
(LD) en Output (OUT) instructies aangestuurd worden. Bij het programmeren in een
ladderdiagram mogen ze niet gebruikt worden. Het opslaan van de status van een
executieconditie is nodig tijdens het programmeren van bepaalde aftakkingen in
ladderdiagrammen.
Werkbits en woorden
Wanneer sommige bits en woorden in bepaalde datagebieden niet gebruikt
worden voor hun eigenlijke doel, kunnen ze vrij in het programma gebruikt worden
om statussen in op te slaan. Woorden en bits die op deze manier gebruikt worden,
worden werkwoorden en werkbits (helpwoorden, helpbits) genoemd. Bijna alle
ongebruikte bits kunnen worden gebruikt als werkbits. Deze bits worden verderop
in dit hoofdstuk gebied voor gebied uitgelegd. Het daadwerkelijk toepassen van
werkbits en werkwoorden wordt uitgelegd in de sectie “Programma uitvoer” op
pagina 30.
Vlaggen en controlebits
Sommige datagebieden bevatten vlaggen en/of controlebits. Vlaggen zijn bits die
automatisch aan- en uitgezet worden om een bepaalde status van de PLC of
instructie weer te geven. Alhoewel sommige vlaggen door de gebruiker aan- en
uitgezet kunnen worden, zijn de meeste vlaggen read only. De gebruiker mag
alleen de status van de vlag uitlezen, deze vlaggen zijn niet direct aan te sturen.
Controlebits zijn bits die door de gebruiker aan- en uitgezet kunnen worden om
bepaalde aspecten binnen de werking van de PLC of een instructie te
beïnvloeden. Elk bit dat een naam heeft gekregen, met de naam bit in plaats van
vlag, is een controlebit. Bijvoorbeeld restartbits zijn controlebits.
pagina 58CPM1/CPM1A programmeerhandleiding
OMRON
3.2 Geheugengebieden voor de CPM1(A)
Deze sectie beschrijft de structuur van de CPM1(A)'s geheugengebieden en
verklaart hoe deze te gebruiken. Een overzicht van de verschillende
geheugengebieden voor de CPM1(A) kan in de sectie hierover worden gevonden
3.2.1 Geheugengebied functie
Geheugengebieden
Geheugengebied structuur
DatagebiedGrootteWoordenBitsFunctie
IR gebied1Input gebied160000 t/m 009000.00 t/m
Output gebied010 t/m 019010.00 t/m
Werk
gebieden
SR gebied384 bits232 t/m 255232.00 t/m
TR gebied8 bits---TR0 t/m
HR gebied
AR gebied
LR gebied
Timer/Counter gebied
DM
gebied
Gebruiker programma
(user program) gebied
(UM gebied)
2
2
1
Read/Write21.000
2
Read-only
Error historie
4
gebied
PC Setup
3
4
4
De volgende geheugengebieden kunnen gebruikt worden bij de CPM1(A).
---DM gebied data kan alleen worden geadresseerd in
---Kan niet overschreven worden door het programma
---Gebruikt om de tijd van voorkomen en de errorcode
---Gebruikt om diverse instellingen van de PLC in op te
Deze bits kunnen worden toegewezen aan externe
I/O.
Werkbits hebben geen speciale functie en kunnen vrij
gebruikt worden in het programma
Deze bits hebben specifieke functies. Het zijn een
aantal vlaggen en control bits
Deze bits worden gebruikt om tijdelijke statussen van
programma vertakkingen in op te slaan
Deze bits kunnen gebruikt worden om bits op te slaan
waarvan de status behouden moet worden als de
spanning van de CPU wordt afgezet
Deze bits hebben specifieke functies. Het zijn een
aantal vlaggen en control bits
Gebruikt door de 1:1 datalink met de periferie poort
Dezelfde nummers worden gebruikt voor timers en
voor counters. TC000 wordt gebruikt door de interval
timer.
woord georiënteerde instructies. De hier opgeslagen
waarden behouden hun waarde bij spanningsuitval.
weg te zetten van errors die zijn voorgekomen
slaan
bij spanningsuitval.
Noot
1. IR en LR bits die niet gebruikt worden voor hun toegewezen functie kunnen
gebruikt worden als werkbits.
2. De inhoud van het HR, AR, CNT en read/write DM geheugen wordt door een
condensator van back-up spanning voorzien. Bij 25ºC zal deze condensator het
geheugen voor 20 dagen vasthouden. Raadpleeg de installatie handleiding van
de CPM1(A) voor informatie over het effect van de omgevingstemperatuur op
de back-up tijd van de condensator.
3. Wanneer een actuele waarde geadresseerd moet worden, wordt het TC
nummer gebruikt als woord data, wanneer completionvlaggen geadresseerd
moeten worden wordt het nummer gebruikt als bit data.
4. Data in DM1000 t/m DM1022 & DM6144 t/m DM6655 kan niet worden
overschreven door het PLC programma. Het is echter wel mogelijk om deze
data met SYSWIN of een handprogrammeerapparaat te overschrijven.
Opmerking
De woorden 020 t/m 199 uit het IR gebied zijn bij de CPM1(A) niet aanwezig. Deze
kunnen dus ook niet gebruikt worden in het programma.
Een uitgebreidere uitleg van de verschillende geheugengebieden volg verderop in
dit hoofdstuk.
CPM1/CPM1A programmeerhandleidingpagina 59
Geheugengebieden
3.3 Toewijzen van I/O bits
De volgende tabel toont de bits in het IR geheugen die aan de I/O van een CPM1
CPU en uitbreidingsunit worden toegewezen. Op een CPM1 CPU kan 1 uitbreiding
worden aangesloten. Dit kan een CPM1 uitbreidingsunit zijn, maar ook een
CPM1A uitbreidingsunit mag op een CPM1 worden aangesloten. Alle CPM1 CPU’s
zijn uit te breiden
Aantal I/O op de CPU10203040
CPU
aansluitingen
Uitbreidings-
unit
Voedingsspanning
TypenummerRelais
Ingangen
Uitgangen
Ingangen
Uitgangen
uitgangen
6pts
000.00 t/m 000.05
4pts
010.00 t/m 010.03
12pts
001.00 t/m 001.11
8pts
011.00 t/m 011.07
ACDCACDCACDC-----CPM110CDR-A
CPM110CDR-D
12pts
000.00 t/m 000.11
8pts
010.00 t/m 010.07
12pts
001.00 t/m 001.11
8pts
011.00 t/m 011.07
CPM120CDR-A
CPM120CDR-D
18pts
000.00 t/m 000.11
001.00 t/m 001.05
12pts
010.00 t/m 010.07
011.00 t/m 011.03
12pts
002.00 t/m 002.11
8pts
012.00 t/m 012.07
CPM130CDR-A
CPM130CDR-D
De volgende tabel toont de bits in het IR geheugen die aan de I/O van een CPM1A
CPU en uitbreidingsunit worden toegewezen. Op een CPM1 CPU kan 1 uitbreiding
worden aangesloten. Dit kan een CPM1 uitbreidingsunit zijn, maar ook een
CPM1A uitbreidingsunit mag op een CPM1 worden aangesloten. Alleen de
CPM1A CPU’s met 30 en 40 I/O zijn uit te breiden.
Wanneer een datagebied benoemd wordt, moet het acroniem voor dat gebied altijd
ingevoerd worden, behalve voor het IR en SR gebied. Alhoewel de acroniemen
voor IR en SR in deze tekst soms genoemd worden, zijn ze niet nodig tijdens
invoer van het programma. SYSWIN zal zelfs een foutmelding geven wanneer de
acroniemen SR en IR worden ingevoerd. Van elk datagebied dat in deze tekst
genoemd wordt zonder acroniem kunt u aannemen dat het in het SR of IR gebied
ligt. Omdat IR en SR adressen opeenvolgend in het geheugen geplaatst zijn, zijn
de woord en bitadressen voldoende om het onderscheid tussen deze twee
gebieden te maken.
De actuele locatie van data binnen een gebied (behalve voor het TC gebied) wordt
bepaald door het adres. Het adres bepaalt het woord en/of bit in een gebied waar
de data geplaatst is. Het TC gebied bestaat uit TC nummers, waarvan elk wordt
pagina 60CPM1/CPM1A programmeerhandleiding
OMRON
Geheugengebieden
gebruikt voor een specifieke timer of counter in het programma. Raadpleeg het
hoofdstuk "TC (timer/counter) gebied" op pagina 69 voor meer details over TC
nummers en hoofdstuk "Timer en counter instructies" op pagina 86 voor informatie
over de werking van timers en counters. Alhoewel voor het timer/counter gebied
de acroniem TC wordt gebruikt wordt tijdens het programmeren TIM voor timers en
CNT voor counters gebruikt.
De overige datagebieden (d.w.z. de IR, SR, HR, DM, AR en LR gebieden) bestaan
uit woorden, waarbij elk woord bestaat uit 16 bits, die genummerd zijn van 00 t/m
15 van rechts naar links. De IR woorden 000 en 001 zijn hieronder getoond met
bitnummers. De inhoud van elk woord is getoond met alleen nullen. Bit 00 wordt
het meest rechter bit en 15 het meest linker bit genoemd.
De term minst significant wordt ook vaak gebruikt voor het meest rechter bit en de
term meest significant voor het meest linker bit. Deze termen worden in deze
handleiding niet vaak gebruikt, omdat een enkel data woord vaak wordt gesplitst in
twee of meer delen, waarbij elk deel wordt gebruikt voor verschillende parameters
of operands. Hierbij kan bij gebruik van de termen “meest” en “minst” significant
verwarring ontstaan.
Bit nummer 151413121110090807060504030201 00
IR woord 000000000000000000 0
IR woord 001000000000000000 0
Het DM gebied is alleen op woordniveau te adresseren. Het is niet direct mogelijk
om een individueel bit in een DM woord te adresseren. Data in de IR, SR, HR, AR
en LR gebieden is bereikbaar op zowel woord- als bitniveau, afhankelijk van de
instructie die voor het verwerken van de data gebruikt wordt.
Om een woord uit een van deze gebieden te benoemen, is alles wat nodig is het
acroniem (indien nodig) en het adres van het woord. Om een bit uit een gebied te
benoemen moet het acroniem ingevoerd worden gevolgd door het adres van het
woord en het adres van het bit in dat woord. In SYSWIN worden woord- en
bitadres van elkaar gescheiden door een punt (.). Wordt de punt in SYSWIN niet
ingevoerd dan wordt aangenomen dat de laatst twee ingevoerde cijfers het
bitadres in het woord zijn. Het nummer van een bit mag tussen de 00 en 15 liggen
en wordt decimaal ingevoerd.
Hetzelfde TC nummer kan gebruikt worden om zowel de actuele waarde van de
timer of counter te adresseren of het bit dat functioneert als de completionvlag voor
de timer of counter. Dit wordt in meer detail beschreven in hoofdstuk "TC
(timer/counter) gebied" op pagina 69.
3.4.1 Data structuur
GebiedWoord toewijzingBit toewijzing
IR000000.15 (meest linker bit in woord 000)
SR252252.00 (meest rechter bit in woord 252)
DMDM0250Niet mogelijk
TCTIM057 of CNT115 (voor de
actuele waarde)
LRLR12LR12.00
TIM057 of CNT115 (voor de completionvlag)
Woorddata die ingevoerd wordt als decimale waarde wordt opgeslagen in BCD
formaat (binary-coded decimal); woorddata die ingevoerd wordt als hexadecimale
waarde wordt opgeslagen in binair formaat. Elke vier bits van een woord
representeren één digit. Dit element van vier bits wordt ook wel een nibble
genoemd. Zowel het hexadecimale als het decimale digit is numeriek equivalent
aan de waarde van de vier bits waaruit het digit is opgebouwd. Eén woord data
bevat dus vier digits, die van rechts naar links worden genummerd. De aan deze
digits toegewezen nummers en de daarbij horende bitnummers voor een woord
worden hieronder getoond.
Wanneer gerefereerd wordt naar de digits in een woord, wordt het digit met het
nummer 0 het meest rechter of meest significante digit (LSD) genoemd en het digit
met het nummer 3 het meest linker of meest significante digit (MSD).
Wanneer data wordt geplaatst op datagebieden moet het in het juiste formaat
worden ingevoerd. Dit is geen probleem wanneer individuele bits geadresseerd
worden. Deze worden alleen aan (equivalent van de binaire waarde 1) of uit (een
binaire waarde 0) gezet. Echter bij het invoeren van woorddata is het belangrijk of
dit decimaal (BCD) of hexadecimaal ingevoerd moet worden, afhankelijk van wat
de gebruikte instructie wenst. Het hoofdstuk "Instructieset" op pagina 71
specificeert het door instructies gebruikte data formaat.
3.4.2 Verschillende vormen data omzetten
Binaire en hexadecimale data kan eenvoudig omgezet worden tussen deze twee
talstelsels, aangezien elke vier bits van een binair nummer numeriek gelijk zijn aan
één cijfer van een hexadecimaal nummer. Het binaire getal 0101111101011111
wordt omgezet naar een hexadecimaal getal door steeds een groepje van vier bits
apart te nemen vanaf het meest rechter bit. Binair 1111 is gelijk aan hexadecimaal
F; binair 0101 is gelijk aan hexadecimaal 5. Het hexadecimale equivalent is dus
5F5F of 24,415 decimaal (4095 x 5 + 265 x 15 + 16 x 5 + 15).
Decimaal en BCD kunnen eenvoudig omgezet worden. In dit geval is elk BCD
cijfer (d.w.z. elke groep van vier bits) numeriek equivalent aan het
corresponderende decimale cijfer. De BCD bits 0101011101010111 worden
geconverteerd naar decimaal door elke groep van vier bits vanaf rechts apart te
nemen. Binair 0101 is gelijk aan decimaal 5; binair 0111 is gelijk aan decimal 7.
Het decimale equivalent is dus 5757. Houd in de gaten dat dit niet dezelfde waarde
is als het hexadecimale equivalent van 0101011101010111 dat 5757
hexadecimaal is of 22359 decimaal (4095 x 5 + 256 x 7 + 16 x 5 + 7).
Omdat het numerieke equivalent van elke vier BCD binaire bits gelijk is aan een
decimaal cijfer, kunnen bits combinaties die een numeriek groter resultaat
opleveren dan 9 niet gebruikt worden. D.w.z., 1011 is niet toegestaan omdat dit het
numerieke equivalent is van hexadecimaal B, wat niet uitgedrukt kan worden in
één cijfer in decimale notatie. De binaire code 1011 is natuurlijk wel toegestaan in
een hexadecimale code en is equivalent aan het hexadecimale cijfer B.
Er zijn instructies beschikbaar om data van BCD naar hexadecimaal of vice versa
om te zetten. Raadpleeg het hoofdstuk "Dataconversie" op pagina 120 voor meer
details. Tabellen met het binaire equivalent van hexadecimale en BCD cijfers zijn
opgenomen in de appendix (“conversietabel hexadecimaal, bcd, binair” op pagina
159).
OMRON
3.4.3 Decimale punt
De decimale punt wordt alleen bij timers gebruikt. Hier representeert het minst
significante cijfer tienden van een seconde. (De punt wordt echter bij de timer
waarde niet ingevoerd). Alle andere instructies in de PLC werken in principe met
integers.
3.5 IR (interne relais) gebied
Het IR gebied wordt gebruikt om I/O punten aan te sturen en om intern in de PLC
data op te kunnen slaan en te manipuleren. Het IR gebied is op bit- en woordbasis
benaderbaar.
Woorden in het IR gebied die worden gebruikt om I/O punten aan te sturen worden
I/O woorden genoemd. Bits in I/O woorden worden I/O bits genoemd. Bits in het IR
gebied die niet zijn toegewezen aan I/O kunnen worden gebruikt als werkbits.
Werkbits uit het IR gebied worden gereset als de voedingsspanning wordt
onderbroken of als de verwerking van het PLC programma wordt gestopt of
gestart.
I/O woorden
pagina 62CPM1/CPM1A programmeerhandleiding
Een signaal dat van buiten de PLC naar binnen gaat is een inputsignaal, het bit dat
eraan is toegewezen is een inputbit. Een signaal dat vanuit de PLC naar buiten
gaat is een outputsignaal, het erbij horende bit is een outputbit. Om een uitgang
OMRON
Inputbit gebruik
Outputbit gebruik
I/O adressen
1, 2, 3...
Werkbits
Geheugengebieden
aan te zetten moet het erbij horende outputbit aangezet worden. Wanneer een
input aan gaat, gaat het erbij horende inputbit ook aan. Deze feiten kunnen
gebruikt worden in het programma in inputstatussen te bereiken en
outputstatussen aan te sturen via I/O bits.
Inputbits kunnen gebruikt worden om externe signalen op de PLC aan te sluiten en
kunnen op elke mogelijke manier in het programma gebruikt worden. Elke inputbit
kan zo vaak als gewenst in het programma gebruikt worden om een juiste
aansturing te krijgen. Inputbits kunnen niet gebruikt worden in instructies die een
bitstatus aansturen zoals de OUT, DIFU en KEEP instructies.
Outputbits worden gebruikt om resultaten uit het programma naar buiten te
brengen en kunnen op elke plaats in het programma gebruikt worden. Omdat
uitgangen maar één keer per scan worden aangestuurd (d.w.z. een keer per
uitvoer van het programma), kan elk outputbit maar in één instructie die de status
aanstuurt gebruikt worden. Dit zijn instructies als OUT, KEEP(11), DIFU(13),
DIFD(14) en SFT(10). Als contact mag het outputbit zo vaak gebruikt worden als
gewenst is. Als een outputbit meer dan één keer in het programma wordt
aangestuurd, wordt de status van de uitgang bepaald door de laatste instructie die
het bit aanstuurt.
Inputbits beginnen op 000.00 en outputbits beginnen op 010.00. Bij de CPM1(A)
kan alleen 000.00 t/m 009.15 gebruikt worden voor inputbits en alleen 010.00 t/m
019.15 kan gebruikt worden voor outputbits. Alhoewel het I/O gebied uit 20
woorden bestaat kan de CPM1(A) momenteel maximaal 50I/O aansturen.
1) Bij het IR gebied wordt het acroniem IR niet voor het bit of woordnummer
geplaatst. Bij de andere datagebieden gebeurd dit wel.
2) Inputbits kunnen niet worden gebruikt in output instructies. Gebruik hetzelfde
outputbit niet in meer dan één OUT en/of OUT NOT instructie. In principe is het
niet echt fout om het wel te doen, maar het kan vreemde effecten opleveren die
voor veel gebruikers niet verklaarbaar zijn.
Bij de CPM1(A) kunnen de bits 200.00 t/m 231.15 vrijelijk in het programma
gebruikt worden als werkbit. Ze kunnen echter alleen gebruikt worden in het
programma en niet voor externe I/O. Werkbits worden allemaal uitgezet wanneer
de CPM1(A) voedingsspanning uitgezet wordt of wanneer de PLC begint of stopt
met het verwerken van het programma.
3.6 SR (speciale relais) gebied
Het SR gebied bevat vlaggen en controlebits die gebruikt kunnen worden voor het
bekijken van de werking van de PLC, voor toegang tot de klokpulsen en instructie
status en errorvlaggen. Het adresbereik van het SR gebied hangt af van het type
CPU dat wordt geprogrammeerd.
De volgende tabellen geven een lijst van vlaggen en controlebits in het SR gebied
en hun functie. De meeste van deze bits worden verderop in dit hoofdstuk meer in
detail beschreven. In principe is de beschrijving op volgorde van het bitnummer.
Alleen bits die bij dezelfde functie horen zijn gegroepeerd.
Tenzij anders vermeld wordt zijn vlaggen uit tot de gespecificeerde conditie
optreedt, waarop ze aangezet worden. Restartbits zijn normaal uit maar als de
gebruiker ze aan en vervolgens uit zet zal de gespecificeerde functie gereset
worden. Andere controlebits zijn uit tot de gebruiker de status verandert.
3.6.1 SR gebied overzicht
De toewijzing van vlaggen en bits in het Special Relais Gebied is afhankelijk van
het geselecteerde CPU type. Niet alle CPU typen ondersteunen alle bits of
woorden in het SR Gebied.
WoordBit(s)Functie
232 t/m 235 00 t/m 15Macro functie input gebied (werkbits als de MCRO(99) instructie
236 t/m 239 00 t/m 15Macro functie output gebied (werkbits als de MCRO(99)
01 t/m 07Niet gebruikt
08Periferie poort resetbit
09Niet gebruikt
10PC Setup resetbit
11Forced status hold bit
uit: De status van bits die geforceerd zijn ge(re)set wordt gewist
wanneer de PLC van PROGRAM mode naar MONITOR mode
wordt geschakeld.
aan: De status van bits die geforceerd zijn ge(re)set wordt
vastgehouden wanneer de PLC van PROGRAM mode naar
MONITOR mode wordt geschakeld.
12Data retention control bit
uit: De status van IR en LR bits wordt gereset wanneer de
werking van de PLC wordt gestart of gestopt.
aan: De status van IR en LR bits wordt vastgehouden wanneer
de werking van de PLC wordt gestart of gestopt.
13Niet gebruikt
14Errorlog resetbit
15Niet gebruikt
25300 t/m 07FAL error code
08Niet gebruikt
09Cyclustijd te groot errorvlag (Hoog als de cyclustijd boven de
100ms komt)
10 t/m 12Niet gebruikt
13Altijd aan vlag
14Altijd uit vlag
15Eerste scan vlag
254001 minuut klokpuls
010.02 seconde klokpuls
02Negatief (N) vlag
03 t/m 05Niet gebruikt
06Differential monitor complete vlag
07STEP(08) uitgevoerd vlag
18 t/m 15Niet gebruikt
255000.1-seconde klokpuls
010.2-seconde klokpuls
021.0-seconde klokpuls
03Instructie executie error (ER) vlag
04Carry (CY) vlag
05Groter dan (GR) vlag
06Gelijk aan (EQ) vlag
07Kleiner dan (LE) vlag
Opmerking
Schrijven is niet mogelijk op een aantal woorden uit het SR gebied
3.6.2 Forced status hold bit
Het
Forced status hold bit
gereset zijn hetzelfde blijft als de PLC wordt geschakeld van PROGRAM naar
MONITOR mode om de verwerking van het programma te stoppen of te starten.
Als het
forced status hold bit
Als het bit uit is worden alle bits in hun standaard staat (uit) gezet wanneer de
werking van het programma wordt gestart of gestopt. Het
alleen effectief wanneer het in de PC Setup geactiveerd is.
pagina 64CPM1/CPM1A programmeerhandleiding
bepaalt of de status van bits die geforceerd geset of
aan is, zullen de bit statussen vastgehouden worden.
forced status hold bit
is
OMRON
Geheugengebieden
Status handhaven tijdens
opstarten
De status van het
interruptie. Het
forced status hold bit
forced status hold bit
mode wordt gezet. Het
is niet werkzaam wanneer de PLC in de RUN
forced status hold bit
verandert niet door een spannings-
kan alleen met periferie ingesteld
worden. De PLC kan het niet vanuit het programma aansturen.
De status van het
forced status hold bit
en dus de status van de geforceerd
gesette en geresette bits kan worden vastgehouden wanneer de spanning uit- /
aangezet wordt. Dit wordt gerealiseerd door het in de PC Setup in te stellen. Als
deze optie wordt gebruikt zal de status van het
forced status hold bit
worden
bewaard als de voedingsspanning uit/aan wordt gezet. Als dit wordt gedaan en het
forced status hold bit
is aan, dan zal de status van de geforceerd gesette en
geresette bits worden bewaard zoals getoond in de volgende tabel. Het gebruik
van het
Forced status hold
bit beïnvloedt de werking niet als de PLC in RUN mode
staat. Bij het schakelen naar de RUN mode worden geforceerde bits altijd op hun
standaard waarde (dat is uit) ingesteld.
Status voor shutdownStatus na het opstarten
Forced status hold
bit
AANUitgevoerdAANStatus bewaard
UITUitgevoerdUITStandaard status
PC Setup
Niet uitgevoerdUITStandaard status
Niet uitgevoerdUITStandaard status
Forced status hold
bit
geforceerde set /
reset bits
Raadpleeg het hoofdstuk "Instructieset" op pagina 71 voor details over de SYS(49)
instructie.
3.6.3 I/O status hold bit
Status handhaven tijdens
opstarten
Het
I/O status hold bit
bepaalt of de status van bits in het IR en LR gebied wordt
bewaard wanneer de werking van de PLC wordt gestart en gestopt of van de
PROGRAM naar MONITOR of RUN mode geschakeld. Als het
I/O status hold bit
aan is, worden de statussen bewaard; als het uit is, worden alle bits in het IR en
LR gebied gereset. Het
I/O status hold bit
is alleen effectief wanneer het in de PC
Setup geactiveerd is.
De status van het
Het
I/O status hold bit
I/O status hold bit
kan alleen met een periferie ingesteld worden. De PLC kan
veranderd niet door een spanningsinterruptie.
het niet vanuit het programma aansturen.
De status van het
I/O status hold bit
en dus de status van de bits in het IR en LR
gebied kan worden vastgehouden wanneer de spanning uit- en aangezet wordt.
Dit wordt gerealiseerd door in de PC Setup een instelling te maken. Als deze optie
wordt gebruikt zal de status van het
I/O status hold bit
voedingsspanning uit/aan wordt gezet. Als dit wordt gedaan en het
is aan, dan zal de status van de bits in het IR en LR gebied worden bewaard
bit
worden bewaard als de
I/O status hold
zoals getoond in de volgende tabel.
Status voor shutdownStatus na het opstarten
I/O status hold bitPC SetupI/O status hold bitIR en LR bits
AANUitgevoerdAANStatus bewaard
Niet uitgevoerdUITGereset
UITUitgevoerdUITGereset
Niet uitgevoerdUITGereset
Raadpleeg het hoofdstuk "Instructieset" op pagina 71 voor details over de SYS(49)
instructie.
3.6.4 FAL (failure alarm) gebied
Een 2 cijferige BCD FAL code wordt hier geplaatst wanneer een FAL of FALS
instructie wordt uitgevoerd. Deze errorcodes kunnen door de gebruiker
gedefinieerd worden om fouten die in een proces optreden middels errorcodes
zichtbaar te maken voor errordiagnose. De PLC kan ook FAL codes op deze bits
plaatsen, zoals bijvoorbeeld bij het te laag worden van de batterijspanning.
CPM1/CPM1A programmeerhandleidingpagina 65
Geheugengebieden
1-min klokpul
0.02
Dit gebied kan gereset worden door een FAL instructie uit te voeren met een
operand 00, door een failure read uit te voeren met de programmingconsole of
door een error clear te geven in het status venster van SYSWIN.
3.6.5 Cyclustijd te groot errorvlag
De cyclustijd te groot errorvlag gaat aan als de cyclustijd boven de 100ms komt.
De ALARM/ERROR indicator op het front van de CPU zal in dit geval gaan
knipperen. Programma uitvoer zal niet stoppen tot de voor de watchdog timer
maximale tijdlimiet is overschreden. Timing in het programma kan onnauwkeurig
worden als de cyclustijd boven de 100ms komt.
3.6.6 Eerste scan vlag
OMRON
3.6.7 Klokpuls bits
De
eerste scan vlag
programma en gaat uit als het programma één keer is uitgevoerd. De
kan gebruikt worden om counters of delen van het programma te initialiseren.
vlag
gaat aan als de PLC begint met de verwerking van het
eerste scan
Een voorbeeld van het initialiseren van een counter wordt gegeven in hoofdstuk
"Timer en counter instructies" op pagina 86.
Vijf klokpulsen zijn beschikbaar voor timing in het programma. Elk klokpuls bit is
aan voor de eerste helft van de tijd en uit voor de tweede helft. Met andere
woorden, elke klokpuls heeft een duty factor van 50%.
Deze klokpuls bits worden vaak gebruikt om van counters timers te maken. Een
voorbeeld hiervan wordt gegeven in het hoofdstuk "Timer en counter instructies"
op pagina 86.
s
30s30s
1min.
0.1-s klokpuls
.05s.05s
0.1s
-s klokpuls
.01s.01s
.02s
0.2-s klokpuls
0.1s0.1s
0.2s
1.0-s klokpuls
0.5s0.5s
1.0s
Pas op:
Aangezien de 0.1 seconde en 0.02
seconde klokpulsen voor 50 of 100 ms
AAN zijn is het mogelijk dat de CPU
deze pulsen niet kan lezen als de
cyclustijd te lang wordt.
3.6.8 STEP(08) uitgevoerd vlag
De
STEP(08) uitgevoerd vlag
STEP wordt geactiveerd met de SNXT(09) instructie.
gaat voor één programma cyclus aan wanneer een
3.6.9 Instructie executie errorvlag, ER
De
Instructie executie errorvlag
instructie uit te voeren met incorrecte operand data. De meest voorkomende
oorzaak van een instructie error is gebruik van niet-BCD operand data wanneer
BCD data gewenst is of een indirect geadresseerd DM woord dat niet bestaat
wordt aangeroepen. Wanneer de ER vlag aan is zal de actuele instructie niet
uitgevoerd worden. Aangezien elke functie in de PLC dit bit gebruikt is het alleen
direct achter een instructie uit te lezen.
pagina 66CPM1/CPM1A programmeerhandleiding
gaat aan als een poging is gedaan om een
OMRON
3.6.10 Rekenkundige vlaggen
De volgende vlaggen worden gebruikt bij het schuiven van data, rekenkundige
bewerkingen en vergelijkingen. Ze worden in deze handleiding meestal aangeduid
meet tweeletterige afkortingen.
Opmerking
Carry vlag, CY
Groter dan vlag, GR
Gelijk aan vlag, EQ
Kleiner dan vlag, LE
Opmerking
Deze vlaggen worden allemaal gereset wanneer de END(01) instructie wordt
uitgevoerd en kunnen daarom niet met een programmeerapparaat bekeken
worden.
Raadpleeg "Schuiven van data" op pagina 101, "Datavergelijking" op pagina 115,
"BCD calculaties" op pagina 127 en "Binaire berekeningen" op pagina 136 voor
details over het gebruik van deze vlaggen.
De
carry vlag
een rekenkundige bewerking of wanneer er een “1” uit een shift of rotate instructie
wordt geschoven. De inhoud van CY wordt gebruikt door sommige rekenkundige
instructies, d.w.z. deze wordt bij het resultaat opgeteld of ervan afgetrokken. Deze
vlag kan worden geset of gereset vanuit het programma met de
clear carry
De
groter dan vlag
eerste van twee operands groter is dan de tweede.
De
gelijk aan vlag
eerste van twee operands gelijk is aan de tweede of wanneer het resultaat van een
rekenkundige bewerking gelijk is aan 0.
De
kleiner dan vlag
eerste van twee operands kleiner is dan de tweede.
De vier rekenkundige vlaggen worden uitgezet als de END(01) instructie wordt
uitgevoerd.
Geheugengebieden
gaat aan wanneer er een overdracht plaatsvindt in het resultaat van
set carry
CLC instructies.
gaat aan als het resultaat van een vergelijking toont dat de
gaat aan als het resultaat van een vergelijking toont dat de
gaat aan als het resultaat van een vergelijking toont dat de
STC en
3.7 AR (auxiliary relais) gebied
AR woordadressen lopen van AR00 t/m AR15; AR bitadressen lopen van AR00.00
t/m AR15.15. De meeste woorden en bits in het AR gebied zijn toegewezen aan
speciale functies zoals transmissie counters, vlaggen en control bits.
Het AR gebied onthoudt statussen tijdens spanningsuitval en tijdens het schakelen
van MONITOR of RUN mode naar PROGRAM mode. De toewijzing van de bits is
getoond in de volgende sectie en wordt verklaard in de daaropvolgende tekst.
3.7.1 AR gebied overzicht
De vlaggen en bits toewijzing in het auxiliary relais gebied is afhankelijk van de
geselecteerde CPU.
Woord(en)Bit(s)Functie
00 t/m 01---Niet gebruikt
AR0200 t/m 07Niet gebruikt
08 t/m 11Aantal op de CPU aangesloten I/O units
12 t/m 15Niet gebruikt
03 t/m 07---Niet gebruikt
0800 t/m 07Niet gebruikt
13 t/m 15Niet gebruikt
0900 t/m 15Niet gebruikt
1000 t/m 15Spanning uit counter (4 cijfers BCD)
1100 t/m 07Highspeed counter 0 bereik vergelijking vlaggen
08 t/m 14Niet gebruikt
15Puls uitgang status
1200 t/m 15Niet gebruikt
1300Power-up PC Setup error vlag (DM6600 t/m 6614)
01Start-up PC Setup error vlag (DM6615 t/m 6644)
02RUN PC Setup error vlag (DM6645 t/m 6655)
03, 04Niet gebruikt
CPM1/CPM1A programmeerhandleidingpagina 67
Geheugengebieden
De onderstaande secties beschrijven de belangrijkste AR bits. Voor een verklaring
van de overige bits wordt verwezen naar de Engelstalige manuals. De meeste niet
verklaarde bits worden alleen voor bepaalde zeer specifieke functies gebruikt; in
dat geval worden ze in deze handleiding behandeld bij deze functie.
3.7.2 Power-OFF counter
AR10 bevat in 4-cijfers BCD het aantal maal dat de spanning van de PLC is
uitgezet. Indien nodig kan deze waarde veranderd worden door er 0000 in te
schrijven met SYSWIN. De power-OFF counter wordt elke keer gerefreshed als de
spanning op CPU/Powersupply wordt gezet.
OMRON
Woord(en)Bit(s)Functie
05Lange cyclustijd vlag (hoog als cyclustijd boven de op DM6619
ingestelde tijd komt)
06, 07Niet gebruikt
08Niet aanwezig adres gebruikt (Is hoog als een niet in de
CPM1(A) aanwezig adres in het programma wordt gebruikt)
09Flash memory checksum error
10Read only DM checksum error
11PC Setup checksum error
12Programma checksum error of een niet toegestane instructie
gebruikt
13Instructietabel checksum error
14, 15Niet gebruikt
AR13.05 is hoog wanneer de cyclustijd die ingesteld is in de PC Setup korter is
dan de actuele cyclustijd.
AR13.05 wordt elke scan gerefreshed als de PLC in RUN of MONITOR mode is.
3.7.4 Cyclustijd indicators
AR14 bevat de grootste cyclustijd die is opgetreden sinds de uitvoer van het
programma is begonnen. AR1527 bevat de cyclustijd van de vorige scan.
Beide tijden worden default opgegeven in tienden van milliseconden in een 4
cijferig BCD getal (000.0ms t/m 999.9ms) en worden elke cyclus gerefreshed
Afhankelijk van de instelling op DM6618 kan deze tijd ook worden opgegeven in
units van 10, 100 of 1000ms.
3.8 DM (data memory) gebied
Het DM gebied is een datageheugen waarin gelezen en geschreven kan worden.
Bij sommige CPU’s is een deel van het DM gebied alleen te lezen. Voor de een
aantal CPU’s wordt dit in de onderstaande tekst aangegeven. Raadpleeg voor
specifieke CPU’s het Operation Manual voor meer details.
Alhoewel het DM gebied is samengesteld uit 16 bit woorden zoals de andere data
gebieden kan het DM geheugen niet op bitniveau geadresseerd worden. Het DM
gebied behoudt statussen tijdens spanningsinterrupties.
Error historie gebied
Sommige CPU’s gebruiken een deel van het Read/Write DM Gebied om records in
op te slaan die de aard, tijd en datum van storingen bevatten die in de PLC zijn
voorgekomen. De tijd en datum velden in deze records worden alleen ingevuld bij
PLC’s die zijn voorzien van een kalender/klok functie. Raadpleeg de handleiding
van de gebruikte CPU voor details over de codering van errors en de structuur van
de error records.
De inhoud van het fixed DM, de PC Setup, het PLC programma en de
instructietabel worden in zijn geheel opgeslagen in een flash rom.
pagina 68CPM1/CPM1A programmeerhandleiding
OMRON
3.9 HR (holding relais) gebied
Het HR gebied wordt gebruikt om diverse soorten data in op te slaan of te
manipuleren. Het gebied kan op woord- en bitniveau geadresseerd worden. HR
bits kunnen in willekeurige volgorde gebruikt worden en kunnen zo vaak
geprogrammeerd worden als gewenst is, met dien verstande dat het voor elk bit in
de CPU aan te raden is om het maar één keer als output aan te sturen.
Het HR gebied onthoudt de status wanneer de operating mode van de PLC wordt
veranderd en wanneer de spanning wordt uitgezet.
Bits en woorden uit het HR gebied kunnen gebruikt worden om data vast te
houden als de PLC gestopt wordt. Daarnaast kunnen HR bits ook gebruikt worden
voor diverse speciale toepassingen zoals het creëren van latchrelais met de KEEP
instructie etc. Dit wordt besproken in het hoofdstuk "geheugengebieden" op pagina
58 en in "Programma uitvoer" op pagina 30.
Geheugengebieden
Voorzichtig
Gebruik nooit een input bit van een NC (normally closed) input op de reset conditie
van een KEEP(11) instructie wanneer het input device een AC powersupply
gebruikt. De vertraging in het uitgaan van de PLC’s DC powersupply (relatief ten
opzichte van de AC powersupply op het input device) kan ervoor zorgen dat het
aan de KEEP(11) instructie toegewezen bit wordt gereset wanneer de besturing
wordt uitgezet. Deze situatie wordt hieronder getoond.
Input Unit
A
NOOIT
3.10 TC (timer/counter) gebied
Het TC gebied wordt gebruikt om timers en counters te creëren en te
programmeren en bevat de completionvlaggen, ingestelde waarden en actuele
waarden voor alle timers en counters. Tot al deze gebieden wordt toegang
gekregen met het TC nummer. Het bereik van deze nummers voor de
verschillende CPU typen kan worden gevonden in sectie "geheugengebieden" op
pagina 58. Elk TC nummer kan als timer of counter gedefinieerd worden met één
van de volgende instructies: TIM, TIMH, CNT of CNTR(12). Er hoeft geen prefix
(TIM of CNT) ingevoerd te worden wanneer een TC nummer in een timer of
counter instructie gebruikt wordt.
Zodra een TC nummer is toegewezen met een van de bovenstaande instructies is
het niet mogelijk om deze een tweede keer toe te wijzen voor dezelfde of een
andere instructie. Als hetzelfde TC nummer is gebruikt in meer dan één van deze
instructies of tweemaal in dezelfde instructie dan wordt een error gegenereerd
tijdens de program check. Er zijn geen beperkingen voor de volgorde waarin TC
nummers gebruikt worden. Voor het dubbel gebruiken van dezelfde TC nummers
bij meerdere instructies gelden dezelfde regels als voor het dubbel gebruiken van
uitgangen. Alhoewel dit in sommige situaties nodig kan zijn, is het aan te raden om
dit achterwege te laten.
Een TC nummer kan worden gebruikt als operand in één of meer instructies,
anders dan de hierboven genoemde. Wanneer een timernummer gebruikt wordt
als operand in een instructie moet het nummer vooraf worden gegaan door de
prefix TIM. De TIM prefix wordt gebruikt onafhankelijk van de timer instructie die
gebruikt is om de timer te definiëren. Wanneer een counternummer gebruikt wordt
als operand in een instructie moet het nummer vooraf worden gegaan door de
prefix CNT. De CNT prefix wordt ook onafhankelijk gebruikt van de counter
instructie die gebruikt is om de counter te definiëren. De TIM en CNT prefixen
worden gebruikt om een veld in het TC gebied aan te duiden. Het in mogelijk om
met de TIM prefix een veld op te geven dat door een counter gebruikt wordt. In dit
geval zal de counter waarde getoond worden. Alhoewel het verder geen
consequenties heeft voor de uitvoer van het programma is het voor het overzicht in
het programma niet aan te raden om TIM en CNT prefixen om te wisselen.
S
KEEP(11)
A
R
B
CPM1/CPM1A programmeerhandleidingpagina 69
Geheugengebieden
TC nummers kunnen worden gebruikt voor operands die bitdata willen hebben en
voor operands die woorddata gebruiken. Wordt een TC nummer gebruikt in een
instructie op bitniveau dan geeft het nummer toegang tot de completionvlag van de
timer of counter. Wanneer een TC nummer wordt gebuikt in een instructie die
woorddata verlangt dan geeft het TC nummer toegang tot een geheugenlocatie die
de actuele waarde van de timer of counter bevat.
Het TC gebied bewaart de ingestelde waarden van timers en counters tijdens
spanningsuitval. De actuele waarden van timers worden gereset wanneer PLC
begint met de uitvoer van het programma. De actuele waarde van counters worden
niet gereset bij spanningsuitval of het starten van het programma.
Opmerking
TIM000 wordt gebruikt tijdens het programmeren om drie zaken aan te duiden. De
timer met het TC nummer 000, de completionvlag van deze timer en de actuele
waarde van deze timer. De samenhang zal duidelijk zijn. De eerste is altijd een
instructie, de tweede is altijd een bit en de derde is altijd een woord. Dit geldt voor
alle TC nummers, onafhankelijk of de prefix TIM of CNT is.
3.11 LR (link relais) gebied
Het LR gebied wordt gebruikt als gemeenschappelijk gebied om data tussen PLC’s
uit te wisselen. Deze data transfer is mogelijk bij een 1:1 link. Bepaalde woorden
worden toegewezen als schrijf woorden aan elke PLC. Op deze woorden kan de
PLC data plaatsen waarna het automatisch wordt verplaatst naar dezelfde LR
woorden bij de andere PLC’s in het netwerk. De schrijf woorden van elke PLC
kunnen op deze manier door de andere PLC’s in het netwerk gelezen worden. Een
PLC kan alleen data op de schrijf woorden in het LR gebied plaatsen, alle andere
woorden kunnen alleen gelezen worden. Wordt er data geplaatst op de lees
woorden in het LR gebied dan zal dit worden overschreven door de data uit schrijf
woorden uit andere PLC’s.
Het LR gebied is op woord- of bitniveau toegankelijk. Het toegestane bereik aan
LR woorden is gedefinieerd in "geheugengebieden" op pagina 58 voor de
verschillende CPU typen. Elk deel van het LR gebied dat niet is gebruikt door de
communicatie kan worden gebruikt als werkwoorden of werkbits.
Data in het LR gebied wordt niet onthouden bij spanningsuitval of wanneer de PLC
in PROGRAM mode wordt gezet.
OMRON
3.12 Programmageheugen
Programmageheugen is het geheugen waarin het door de gebruiker geschreven
programma wordt opgeslagen. Het programmageheugen wordt meestal aangeduid
met UM. De grootte van het programmageheugen is afhankelijk van het type van
de CPU. Om instructies in het programmageheugen op te slaan kan een
handprogrammeerapparaat of SYSWIN gebruikt worden.
3.13 TR (temporary relais) gebied
TR gebied
Wanneer een complex ladderdiagram niet kan worden geprogrammeerd in
mnemonic code zoals het op het scherm staat, dan worden deze bits gebruikt om
tijdelijk aan/uit executiecondities op programma aftakkingen op te slaan. Deze acht
bits kunnen alleen in statementlist bij LD en OUT instructies gebruikt worden. TR
adressen lopen van TR0 t/m TR7. Elk van deze bits kan zo vaak als gewenst
gebruikt worden in elke gewenste volgorde. Wanneer in ladderdiagram
geprogrammeerd wordt plaatst SYSWIN de benodigde TR bits automatisch. Het
gebruik van TR bits wordt beschreven in de sectie "Vertakkende instructie regels"
op pagina 19.
Hetzelfde TR bit kan in principe niet meer dan één keer gebruikt worden in
hetzelfde instructie blok, maar kan opnieuw gebruikt worden in een ander instructie
blok. De aan/uit status van TR bits kan niet worden bekeken met periferie zoals
bijvoorbeeld SYSWIN.
pagina 70CPM1/CPM1A programmeerhandleiding
OMRON
4 Instructieset
Instructieset
De OMRON SYSMAC C- en CV-serie PLC’s beschikken over een uitgebreide
instructieset die het mogelijk maken dat gecompliceerde processen eenvoudige
geprogrammeerd kunnen worden. De volgende secties beschrijven de instructies
individueel en geven het ladderdiagramsymbool, de datagebieden die gebruikt
kunnen worden en de vlaggen die door de instructie beïnvloed worden.
De instructies waarover OMRON PLC’s beschikken worden in een aantal instructie
groepen onderverdeeld. Deze groepen zijn:
Ö
Ladderdiagram instructies
Bit control instructies
Ö
Timer en counter instructies
Ö
Data schuif instructies
Ö
Data verplaatsing instructies
Ö
Ö
Data vergelijking instructies
Data conversie instructies
Ö
BCD calculatie instructies
Ö
Binaire calculatie instructies
Ö
Logische instructies
Ö
Subroutines
Ö
Speciale instructies
Ö
Block programma instructies
Ö
Netwerk instructies.
Ö
Sommige instructies, bijvoorbeeld timer en counter instructies, worden gebruikt om
andere instructies aan te sturen. D.w.z., een timer completionvlag kan gebruikt
worden om een bit aan te zetten wanneer de voor de timer ingestelde tijd is
afgelopen. Alhoewel deze instructies vaak gebruikt worden om outputbits met de
OUT instructie aan te sturen, kunnen ze ook gebruikt worden om weer andere
instructies aan te sturen. De output instructies die in voorbeelden gebruikt worden
kunnen over het algemeen vervangen worden door andere instructies om het
programma te modificeren voor specifieke applicaties anders dan het direct
aansturen van uitgangen.
4.1 Notatie
In het vervolg van deze handleiding worden alle instructies aangeduid met hun
mnemonics. Bijvoorbeeld, de output instructie wordt OUT genoemd, de en
instructie AND en de load instructie LD. Als u er niet zeker van bent welke
mnemonic een instructie gebruikt, raadpleeg dan de sectie "Alfabetische
instructielijst op mnemonic" op pagina 74.
Als een instructie een functiecode heeft wordt deze tussen haken achter de
mnemonic geplaatst. Deze functiecodes bestaan bij de C-serie uit een tweecijferig
decimaal nummer en worden gebruikt tijdens het programmeren van de functies.
In SYSWIN is het mogelijk om naast het functienummer ook de naam in te voeren.
De functie worden hieronder kort beschreven.
Een @ voor een mnemonic geeft aan dat de gedifferentieerde uitvoering van deze
instructie is gebruikt. Gedifferentieerde instructies worden uitgelegd in
"Gedifferentieerde instructies" op pagina 73.
4.2 Instructie formaat
De meeste instructies hebben minimaal één operand. Operands verwijzen naar de
data waarop of waarmee de instructie zijn taak kan uitvoeren. Deze worden soms
ingevoerd als numerieke waarden (constanten), maar zijn meestal de adressen
van woorden in een datagebied die de data bevatten waarop de bewerking moet
worden uitgevoerd. Een bit waarvan het adres wordt gebruikt als operand wordt
een operandbit en een woord waarvan het adres wordt gebruikt als een operand
wordt een operandwoord genoemd. Bij sommige instructies duidt het woordadres
CPM1/CPM1A programmeerhandleidingpagina 71
Instructieset
in een instructie op het eerste woord van een reeks woorden die de gewenste data
bevatten.
Elke instructie gebruikt één of meer woorden in het programma geheugen. Het
eerste woord is het instructie woord. Dit woord specificeert de instructie en bevat
de definers (hieronder beschreven) of operandbits die door de instructie gebruikt
worden. De overige operands, die de instructie gebruikt, worden in de volgende
woorden opgeslagen, één operand per woord. Sommige instructies gebruiken tot
aan vier woorden uit het programmageheugen.
Een definer is een operand die nauw verbonden is met de instructie. Deze
operands definiëren de instructie meer dan dat ze aangeven welke data gebruikt
dient te worden. Voorbeelden van definers zijn TC nummers die gebruikt worden in
timer en counter instructies en sprongnummers die bepalen welke spronginstructie
is gekoppeld met welke sprong end instructie. Bit operands worden ook in
hetzelfde woord als de instructie opgeslagen, alhoewel deze niet worden
beschouwd als definers. Bij SYSWIN is het verschil tussen definers en operands
niet duidelijk te zien.
4.3 Datagebieden, definer waarden en vlaggen
Deze sectie bevat, naast de beschrijving van elke instructie, het ladderdiagram
symbool, de datagebieden die als operand en de waarden die als definer gebruikt
kunnen worden. Daarnaast wordt ook het type van de data die de instructie
gebruikt (HEX of BCD) en het type van de operand (bit, woord of meerdere
woorden) aangegeven.
Niet alle adressen in de gespecificeerde datagebieden zijn toegestaan voor een
operand. Bijvoorbeeld, als een operand bestaat uit twee woorden, dan kan het
laatste woord uit een datagebied niet worden toegewezen als het eerste woord van
de operand. Immers, alle woorden van een enkele operand moeten in hetzelfde
datagebied liggen. Andere specifieke beperkingen worden per instructie gegeven
in een subsectie. Raadpleeg het hoofdstuk “geheugengebieden" op pagina 58 voor
conventies in het gebruik van adressen en de adressen van vlaggen en control
bits.
Opmerking
Het IR en SR gebied moeten beschouwd worden als aparte datagebieden. Als een
operand toegang heeft tot het ene gebied hoeft dezelfde operand niet
noodzakelijkerwijs toegang te hebben tot het andere gebied. Een enkele operand
kan echter de grenzen tussen het IR en SR gebied overschrijden. D.w.z. dat het
laatste woord in het IR gebied mag worden gespecificeerd voor een operand die
meer dan één woord lang is, zolang het SR gebied is toegestaan voor deze
operand.
Wanneer het IR gebied als input operand gebruikt kan worden is het ook
toegestaan om het SR gebied te gebruiken. Ook als het IR gebied als output
operand gebruikt kan worden is het toegestaan om het SR gebied te gebruiken, in
dit geval mogen echter alleen die bits/woorden uit het SR gebied gebruikt worden
waarop data mag worden geschreven. Voor een instructie die met woorden werkt,
geldt dat als het resultaat op een woord in het SR gebied wordt geplaatst dit hele
woord beschreven moet kunnen worden. Wordt het resultaat op meer dan één
woord in het SR gebied geplaatst, dan moeten al deze woorden beschreven
kunnen worden.
Bij de instructies die in dit hoofdstuk behandeld worden wordt het SR gebied niet
als apart geheugengebied vermeld. De regels uit de bovenstaande alinea gelden
in dat geval voor het gebruik van het SR gebied.
De vlaggen subsectie geeft een lijst van vlaggen die door de uitvoer van de
instructie beïnvloed worden. De meest gebruikte vlaggen zijn hieronder
weergegeven.
OMRON
AfkortingNaam
ERInstructie executie errorvlag
CYCarry vlag
GRGroter dan vlag
EQGelijk aan vlag
LEKleiner dan vlag
pagina 72CPM1/CPM1A programmeerhandleiding
OMRON
ER is de vlag die het meest gebruikt wordt om te controleren of een instructie
correct uitgevoerd wordt. Wanneer ER aan gaat, geeft dit aan dat een error is
voorgekomen tijdens het uitvoeren van deze instructie. Het is zaak om het ER bit
direct achter de instructie uit te lezen en de status op te slaan, aangezien elke
instructie (op de logische na) het ER bit aanstuurt. De vlaggen subsectie van elke
instructie geeft een lijst van mogelijkheden waarom het ER bit aan zou kunnen zijn.
ER gaat aan als operands niet correct zijn ingevoerd. Instructies zijn niet
uitgevoerd wanneer ze het ER bit aanzetten. Een tabel met instructies en de
vlaggen die erdoor beïnvloed worden is opgenomen in de appendix.
4.3.1 Indirect adresseren
Normaal, wanneer een woord uit een datagebied is gespecificeerd bij een
instructie wordt de bewerking van de instructie rechtstreeks op de inhoud van dat
woord uitgevoerd. Bijvoorbeeld, stel een MOV(21) (uitleg op pagina 108) instructie
wordt uitgevoerd met als eerste operand DM0100 en LR15 als de tweede. Dan
wordt de inhoud van woord DM0100 door deze instructie verplaatst naar woord
LR15.
Het is echter mogelijk om indirecte DM adressen te gebruiken als operand voor de
meeste instructies. Om een indirect DM adres aan te geven wordt een asterix (*)
voor het DM woord geplaatst, zoals bijvoorbeeld in *DM0100. Bij het gebruiken van
een indirect adres bevat het operands adres niet de data die gebruikt gaan worden
maar het adres van een ander DM woord. De inhoud van dat indirect aangewezen
DM woord zal door de instructie gebruikt worden. Als *DM0100 wordt gebruikt in
het voorbeeld hierboven en de inhoud van DM0100 is 0324, dan zal *DM0100
betekenen dat de inhoud van DM0324 als operand wordt gebruikt door de
instructie en dat de inhoud van DM0324 wordt verplaatst naar LR15.
MOV(21)
*DM0100
LR15
Indirect adres
Woord Inhoud
DM0099 4C59
DM0100 0324
DM0101 F35A
Instructieset
Wijst naar DM0324
Wanneer indirect adresseren gebruikt wordt, moet het adres van het gewenste
woord in BCD worden opgegeven en het moet een woord specificeren dat binnen
de grenzen van het DM gebied ligt. In het bovenstaande voorbeeld zou de inhoud
van *DM0000 voor een CPM1(A) in BCD tussen de 0000 en 999 moeten liggen
(1000 en hoger is read only of bestaat niet). Wordt hier niet aan voldaan dan zal de
instructie het ER bit hoog zetten en niet uitgevoerd worden.
4.3.2 Constanten benoemen
Alhoewel als operand meestal datagebied adressen worden ingevoerd, worden
vaak ook constanten ingevoerd als operand. Definers kunnen zelfs alleen maar als
constante worden ingevoerd. Het te gebruiken bereik voor een bepaalde definer of
constante hangt af van de gebruikte instructie. Constanten moeten worden
ingevoerd in het formaat dat de instructie wenst, d.w.z. in BCD of in hexadecimaal.
Kan als operand van een instructie naast een constante ook een adres uit een
datagebied worden opgegeven dan moet de constante worden voorafgegaan door
#. Kan als operand alleen een constante worden ingevoerd dan mag de # meestal
niet worden ingevoerd. Een voorbeeld zijn definers, die altijd een constante zijn. Bij
definers wordt nooit een # ingevoerd voor het nummer. Denk hierbij bijvoorbeeld
aan de TC nummers bij timers en counters.
4.4 Gedifferentieerde instructies
DM0324 5555
DM0325 2506
DM0326 D541
5555 verplaatst naar LR15
De meeste instructies zijn beschikbaar in een gedifferentieerde en een nietgedifferentieerde uitvoering. Gedifferentieerde instructies zijn te herkennen aan
een @ voor de instructie mnemonic.
Een niet-gedifferentieerde instructie wordt elke keer als deze gescand wordt
uitgevoerd, zolang de executieconditie aan is. Een gedifferentieerde instructie
CPM1/CPM1A programmeerhandleidingpagina 73
Instructieset
OMRON
wordt slechts één keer uitgevoerd als de executieconditie van uit naar aan gaat.
Als de executieconditie niet verandert of veranderd is van aan naar uit sinds de
vorige keer dat de instructie gescand is, dan zal deze niet uitgevoerd worden. De
volgende twee voorbeelden tonen hoe dit werkt met MOV(21) en @MOV(21), die
gebruikt worden om de data op het adres dat aangegeven wordt, door de eerste
operand te verplaatsen naar het adres dat wordt aangegeven door de tweede
operand.
000.00
MOV(21)
Diagram A
000.00
Diagram B
AdresInstructieOperands
00000LD000.00
00001MOV(21)HR10DM0000
AdresInstructieOperands
00000LD000.00
00001@MOV(21)HR10DM0000
In diagram A zal de niet-gedifferentieerde MOV(21) instructie de inhoud van HR10
naar DM0000 kopiëren zolang deze gescand wordt en 000.00 aan is. Als de
cyclustijd 80ms is en 000.00 is aan voor 2,0 seconden, dan wordt deze kopieer
bewerking 25 maal uitgevoerd en alleen de laatste waarde die naar DM0000 is
gekopieerd zal bewaard worden.
In diagram B zal de gedifferentieerde @MOV(21) de inhoud van HR10 maar één
keer naar DM0000 kopiëren, op het moment dat 000.00 aan gaat. Zelfs in het
geval dat 000.00 2,0 seconden aan blijft met dezelfde 80ms cyclustijd, zal de
kopieer bewerking slechts één maal worden uitgevoerd, op het moment dat de
status van 000.00 van uit in aan veranderd. Aangezien de inhoud van HR10 kan
veranderen tijdens de 2 seconden dat 000.00 aan is, kan de uiteindelijke inhoud
van DM0000 na 2 seconden verschillen, afhankelijk of MOV(21) of @MOV(21) is
gebruikt.
Alle operands, ladderdiagram symbolen en andere specificaties voor instructies
zijn hetzelfde, onafhankelijk of de gedifferentieerde of niet-gedifferentieerde
uitvoering van de instructie is gebruikt. Tijdens invoer worden dezelfde
functiecodes of mnemonics gebruikt, er moet echter een @ ingevoerd worden voor
het functienummer of mnemonic om de gedifferentieerde uitvoering van de
instructie te krijgen. In SYSWIN is het mogelijk om met de cursor op een functie
die al is ingevoerd te gaan staan en de slash (/) op het toetsenbord te bedienen
om deze alsnog te differentiëren. De meeste, maar niet alle, instructies hebben
een gedifferentieerde uitvoering.
De SYSMAC C-serie PLC’s beschikken ook over differentiatie instructies:
DIFU(13) en DIFD(14). DIFU(13) werkt identiek aan de gedifferentieerde instructie,
maar wordt gebruikt om een bit voor één scan aan te zetten. DIFD(14) zet ook een
bit voor één scan aan, maar doet dit als de executieconditie verandert van aan
naar uit. Raadpleeg “differentiate up en differentiate down” op pagina 25 voor
details.
HR10
DM0000
@MOV(21)
HR10
DM0000
4.5 Alfabetische instructielijst op mnemonic
De volgende tabel geeft de instructies weer die bij de CPM1(A) PLC’s beschikbaar
zijn. Deze tabel kan gebruikt worden om de functiecode van een mnemonic op te
zoeken. Het @ symbool geeft aan dat de instructies over een gedifferentieerde
variant beschikt. Bedenk dat niet elke instructie toepasbaar is bij elke PLC/CPU.
Raadpleeg de sectie over de specifieke instructies om te controleren bij welke
CPU’s een instructie toegepast kan worden (
in de tabel een — is geplaatst zijn uitbreidingsinstructies die niet standaard in de
instructietabel zitten.
pagina 74CPM1/CPM1A programmeerhandleiding
“Toepasbaar bij”
). Instructies waarbij
OMRON
Instructieset
MNEMONICCodeNaam
ADB (@)50BINARY ADD
ADD (@)30BCD ADD
ANDGeenAND
AND LDGeenAND LOAD
AND NOTGeenAND NOT
ANDW (@)34LOGICAL AND
ASC (@)86ASCII CONVERT
ASFT (@)—ASYNCHRONOUS SHIFT REGISTER
ASL (@)25ARITHMETIC SHIFT LEFT
ASR (@)26ARITHMETIC SHIFT RIGHT
BCD (@)24BINARY TO BCD
BCMP (@)68BLOCK COMPARE
BCNT (@)67BIT COUNTER
BIN (@)23BCD-TO-BINARY
BSET (@)71BLOCK SET
CLC (@)41CLEAR CARRY
CMP (@)20COMPARE
CMPL60DOUBLE COMPARE
CNTGeenCOUNTER
CNTR12REVERSIBLE COUNTER
COLL (@)81DATA COLLECT
COM (@)29COMPLEMENT
CTBL (@)—COMPARISON TABLE LOAD
DEC (@)39DECREMENT BCD
DIFD14DIFFERENTIATE DOWN
DIFU13DIFFERENTIATE UP
DIST (@)80SINGLE WOORD DISTRIBUTE
DIV (@)33BCD DIVIDE
DIVL (@)57DOUBLE BCD DIVIDE
DMPX (@)7716-to-4 ENCODER
DVB (@)53BINARY DIVIDE
END01END
FAL (@)06FAILURE ALARM
FALS07SEVERE FAILURE ALARM
IL02INTERLOCK
ILC03INTERLOCK CLEAR
INC (@)38INCREMENT
INI (@)—MODE CONTROL
INT (@)89INTERRUPT CONTROL
IORF (@)97I/O REFRESH
JME05SPRONG END
JMP04SPRONG
KEEP11KEEP
LDGeenLOAD
LD NOTGeenLOAD NOT
MCRO (@)99MACRO
MLB (@)52BINARY MULTIPLY
MLPX (@)764-TO-16 DECODER
MOV (@)21MOVE
MOVB (@)82MOVE BIT
MOVD (@)83MOVE DIGIT
MSG (@)46MESSAGE
MUL (@)32BCD MULTIPLY
MULL (@)56DOUBLE BCD MULTIPLY
MVN (@)22MOVE NOT
NOP00NO OPERATION
ORGeenOR
OR LOADGeenOR LOAD
OR NOTGeenOR NOT
ORW (@)35LOGICAL OR
OUTGeenOUTPUT
OUT NOTGeenOUTPUT NOT
PRV (@)—HIGHSPEED COUNTER actuele waarde lezen
RET93SUBROUTINE RETURN
ROL (@)27ROTATE LEFT
CPM1/CPM1A programmeerhandleidingpagina 75
Instructieset
LADDER SYMBOOL
OPERAND DATAGEBIEDEN
OMRON
MNEMONICCodeNaam
ROR (@)28ROTATE RIGHT
RSETgeenRESET
SBB (@)51BINARY SUBTRACT
SBN92SUBROUTINE DEFINE
SBS (@)91SUBROUTINE ENTRY
SDEC (@)787-SEGMENT DECODER
SETgeenSET
SFT10SHIFT REGISTER
SFTR (@)84REVERSIBLE SHIFT REGISTER
SLD (@)74ONE DIGIT SHIFT LEFT
SNXT09STEP START
SRD (@)75ONE DIGIT SHIFT RIGHT
STC (@)40SET CARRY
STEP08STEP DEFINE
STIM (@)—INTERVAL TIMER
SUB (@)31BCD SUBTRACT
SUBL (@)55DOUBLE BCD SUBTRACT
TCMP (@)85TABLE COMPARE
TIMGeenTIMER
TIMH15HIGHSPEED TIMER
WSFT (@)16WOORD SHIFT
XCHG (@)73DATA EXCHANGE
XFER (@)70BLOCK TRANSFER
XNRW (@)37EXCLUSIVE NOR
XORW (@)36EXCLUSIVE OR
Opmerking
Wanneer het programma ingevoerd is moet dit met een END(01) instructie op het
laatste adres worden afgesloten.
4.6 Ladderdiagram instructies
Ladderdiagram instructies omvatten de logische instructies en logische blok
instructies en worden gebruikt in de executiecondities in het ladderdiagram.
Logische blok instructies worden gebruikt om complexere netwerken te kunnen
programmeren.
4.6.1 LOAD, LOAD NOT, AND, AND NOT, OR en OR NOT
LOAD - LD
LOAD NOT - LD NOT
AND - AND
AND NOT - AND NOT
B
B
B
B
B: Bit
IR, AR, HR, TC, LR, TR
B: Bit
IR, AR, HR, TC, LR
B: Bit
IR, AR, HR, TC, LR
B: Bit
IR, AR, HR, TC, LR
B: Bit
IR, AR, HR, TC, LR
B: Bit
IR, AR, HR, TC, LR
Beperkingen
OR - OR
OR NOT - OR NOT
Er is geen limiet aan het aantal maal dat deze instructies gebruikt kunnen worden
B
B
noch aan de volgorde waarin ze gebruikt kunnen worden zolang als de geheugen
capaciteit van de PLC niet wordt overschreden.
Omschrijving
Deze zes basisinstructies vind u terug in de condities van het ladderdiagram. De
status van de bits die toegewezen zijn aan deze instructies bepalen de
executieconditie voor alle andere instructies in het ladderdiagram. Dit is uitgebreid
pagina 76CPM1/CPM1A programmeerhandleiding
OMRON
beschreven in "Programma uitvoer" op pagina 30. Elk van deze instructies en elk
bitadres kan zo vaak gebruikt worden als nodig is in elk van de bovenstaande
instructies.
De status van het bit operand (B) dat toegewezen is aan een LD of LD NOT
bepaalde de eerste executieconditie. AND berekent de logische EN tussen de
executieconditie en de status van het gebruikte operandbit; AND NOT berekent de
logische EN tussen de executieconditie en de inverse status van de gebruikte
operandbit. OR berekent de logische OF tussen de executieconditie en de status
van het gebruikte operandbit; OR NOT berekent de logische OF tussen de
executieconditie en de inverse status van de gebruikte operandbit. Gebruikte TR
bits worden in een ladderdiagram niet weergegeven.
Vlaggen
Er worden geen vlaggen beïnvloed door deze instructie.
4.6.2 AND LOAD en OR LOAD
Instructieset
Omschrijving
Vlaggen
AND LOAD - AND LD
OR LOAD - OR LD
000.00
000.01000.03
000.00000.01
000.02000.03
000.02
Wanneer instructies worden samengevoegd in blokken die niet logisch
gecombineerd kunnen worden met alleen OR en AND bewerkingen moet AND LD
of OR LD worden gebruikt. AND en OR instructies voeren een logische bewerking
uit tussen de status van het gebruikte operandbit en de executieconditie. AND LD
en OR LD voeren een logische bewerking uit tussen twee executiecondities, de
actuele en de laatste ongebruikte.
Tijdens het invoeren van ladderdiagrammen is het niet noodzakelijk om AND LD
en OR LD instructies te gebruiken. Deze instructies zijn echter wel noodzakelijk om
het ladderdiagram programma om te zetten naar de mnemonic uitvoering
(statement list) die uiteindelijk door de PLC verwerkt wordt.
Om het aantal gebruikte instructies in een programma te reduceren is een zeker
begrip van de werking van logische blok instructies aan te raden. De procedures
voor het invoeren, beperkingen en voorbeelden worden uitgelegd in hoofdstuk
"Logische blok instructies" op pagina 12.
Er worden geen vlaggen beïnvloed door deze instructie.
4.7 Bitcontrol instructies
Er zijn vijf instructies die gebruikt worden om de statussen van bits te manipuleren.
deze instructies zijn OUT, OUT NOT, DIFU(13), DIFD(14) en KEEP(11). Deze
instructies worden gebruikt om bits op verschillende manieren aan en uit te zetten.
Voor de nieuwere PLC’s (CPM1(A), CQM1 en C200HS) zijn er twee instructies
toegevoegd, SET en RSET.
CPM1/CPM1A programmeerhandleidingpagina 77
Instructieset
O
O
4.7.1 Uitgangen en hulprelais aansturen - OUT en OUT NOT
LADDER SYMBOOL
OUTPUT - OUT
B
OMRON
PERAND DATAGEBIEDEN
B; Bit
IR, AR, HR, TC, LR, TR
Beperkingen
Omschrijving
Vlaggen
OUTPUT NOT - OUT NOT
LADDER SYMBOOL
B
OPERAND DATAGEBIEDEN
B; Bit
IR, AR, HR, TC, LR
Het is aan te raden om elk outputbit slechts in één bitcontrol instructie te
gebruiken. Raadpleeg de sectie "IR (interne relais) gebied" op pagina 62 voor
details over dubbel gebruik van bits bij bitcontrol instructies.
OUT en OUT NOT worden gebruikt om de status van het aan de instructie
toegewezen bit aan of uit te zetten, afhankelijk van status van de executieconditie.
OUT zet het toegewezen bit aan als de status van de executieconditie aan is en
zet het toegewezen bit uit als de executieconditie uit is. Bij gebruik van TR bits
wordt de OUT instructie op het aftak punt geplaatst in plaats van aan het einde van
de instructieregel. Raadpleeg "Vertakkende instructie regels" op pagina 19 voor
details.
OUT NOT zet het toegewezen bit uit als de status van de executieconditie aan is
en aan als de executieconditie uit is.
OUT en OUT NOT kunnen gebruikt worden om de uitvoer te beïnvloeden door de
bits die toegewezen zijn aan condities in het ladderdiagram aan en uit te zetten,
waardoor condities voor andere instructies veranderd kunnen worden. Dit maakt
het mogelijk om een complex set van condities te gebruiken om de status van een
enkel werkbit bepalen waarna dat werkbit kan worden gebruikt om andere
instructies aan te sturen.
De tijd dat een bit aan of uit is kan worden bepaald door de OUT en OUT NOT
instructies te combineren met TIM instructies. Voorbeelden hiervoor zijn
opgenomen in "Timer - TIM" op pagina 87.
Er worden geen vlaggen beïnvloed door deze instructie.
4.7.2 Setten en resetten - SET en RSET
LADDER SYMBOOL
SET
B
RSET
B
Omschrijving
Voorzorgen
Vlaggen
Voorbeeld
SET zet het operandbit aan wanneer de executieconditie aan is en beïnvloedt de
status van het operandbit niet wanneer executieconditie uit is. RSET zet het
operandbit uit wanneer de executieconditie aan is en beïnvloedt de status van het
operandbit niet wanneer de executieconditie uit is.
De werking van SET verschilt van die van OUT omdat de OUT instructie het
operandbit uit zet zolang de executieconditie uit is. Zo verschilt RSET ook van
OUT NOT omdat OUT NOT het operandbit aan zet zolang de executieconditie uit
is.
De status van operandbits voor SET en RSET instructies geprogrammeerd tussen
IL(02) en ILC(03) of JMP(04) en JME(05) verandert niet als de interlock- of sprongconditie laag is.
Er worden geen vlaggen beïnvloed door deze instructie.
Het volgende voorbeeld toont het verschil tussen OUT en SET/RSET. In het eerste
netwerk (diagram A), wordt de status (aan of uit) van 010.00 direct bepaald door
000.00. In het tweede netwerk (diagram B), gaat 010.01 aan als 000.01 aan gaat
en blijft aan (zelfs als 000.01 uit gaat) tot 000.02 aan gaat.
Inplaats van SET en RSET kan ook de instructie KEEP(11) gebruikt worden (zie
pagina 80). Bij gebruik van de instructie KEEP(11) moet binnen één netwerk zowel
de SET als de RESET conditie bepaald worden. Dit bevordert de leesbaarheid van
het programma.
4.7.3 Op- en neergaande flanken - DIFU(13) en DIFD(14)
LADDER SYMBOOL
DIFU(13)
B
010.00
SET
010.01
RSET
010.01
PERAND DATAGEBIEDEN
B: Bit
IR, AR, HR, LR
Beperkingen
Omschrijving
Voorzorgen
Vlaggen
DIFD(14)
B
B: Bit
IR, AR, HR, LR
Het is aan te raden om elk outputbit slechts in één bitcontrol instructie te
gebruiken. Raadpleeg de sectie "IR (interne relais) gebied" op pagina 62 voor
details over dubbel gebruik van bits bij bitcontrol instructies.
DIFU(13) en DIFD(14) worden gebruikt om het toegewezen bit voor één scan aan
te zetten.
Wanneer uitgevoerd, vergelijkt DIFU(13) de actuele executieconditie met de vorige
executieconditie. Als de vorige executieconditie uit was en de actuele aan is, dan
zal DIFU(13) het toegewezen bit aan zetten. Als de vorige executieconditie aan
was en de actuele executieconditie is aan of uit, dan zal DIFU(13) het toegewezen
bit uit zetten of het uit laten als het bit al uit was. Het toegewezen bit zal dus nooit
langer dan één scan aan zijn (ervan uitgaande dat de instructie elke scan wordt
uitgevoerd).
Wanneer uitgevoerd, vergelijkt DIFD(14) de actuele executieconditie met de vorige
executieconditie. Als de vorige executieconditie aan was en de actuele uit is, dan
zal DIFD(14) het toegewezen bit aan zetten. Als de vorige executieconditie uit was
en de actuele executieconditie is aan of uit, dan zal DIFD(14) het toegewezen bit
uit zetten of het uit laten als het bit al uit was. Het toegewezen bit zal dus nooit
langer dan één scan aan zijn (ervan uitgaande dat de instructie elke scan wordt
uitgevoerd).
Deze instructies worden gebruikt wanneer de gedifferentieerde variant van een
bepaalde instructie (d.w.z. die met een @ als prefix) niet beschikbaar is en toch
een eenmalige (één scan) uitvoering van de instructie gewenst is. Ze kunnen ook
gebruikt worden bij de niet-gedifferentieerde uitvoering van instructies die wel een
gedifferentieerde uitvoering hebben om het programma te vereenvoudigen.
Voorbeelden hiervan worden hieronder getoond.
Er worden geen vlaggen beïnvloed door deze instructie.
De werking van DIFU(13) en DIFD(14) kan onzeker zijn als de instructies tussen IL
en ILC, tussen JMP en JME of in subroutines geprogrammeerd zijn. Raadpleeg
pagina 82 en 84 hierover. Aangezien de flankdetectie (DIFU(13) en DIFD(14))
CPM1/CPM1A programmeerhandleidingpagina 79
Instructieset
Voorbeeld 1: Wanneer geen
gedifferentieerde instructie
gebruikt word
OMRON
instructies de actuele executieconditie vergelijken met de vorige moet bekend zijn
wat de vorige executieconditie was. Tijdens de eerste scan is niet bekend wat de
vorige executieconditie was, dus worden eventuele flanken niet gedetecteerd. Bij
gebruikt van interlocks, sprongen en subroutines wordt voor de flank detectie
gekeken naar de vorige keer dat het programma tussen IL en ILC, tussen JMP en
JME of in de subroutine werd uitgevoerd
In diagram A hieronder zal de CMP (20) instructie, zodra deze wordt uitgevoerd
met een aan executieconditie, de inhoud van de twee operand woorden (HR10 en
DM0000) vergelijken en afhankelijk hiervan de rekenkundige vlaggen (GR, EQ en
LE) aan of uit zetten. Als de executieconditie aan blijft, kunnen de statussen van
deze vlaggen elke scan veranderen als de inhoud van één of beide operands
verandert. Diagram B echter, geeft een voorbeeld van hoe DIFU(13) kan worden
gebruikt om er zeker van te zijn dat CMP(20) alleen wordt uitgevoerd als de
executieconditie aan gaat (op de opgaande flank).
Alhoewel een gedifferentieerde uitvoering van MOV(21) beschikbaar is, is het niet
mogelijk het onderstaande diagram te tekenen met deze uitvoering omdat maar
één van de condities in de executieconditie voor de MOV(21) gedifferentieerd
uitgevoerd is.
Het is aan te raden om elk outputbit slechts in één bitcontrol instructie te
gebruiken. Raadpleeg de sectie "IR (interne relais) gebied" op pagina 62 voor
details over dubbel gebruik van bits bij bitcontrol instructies.
KEEP(11) wordt gebruikt om de status van het toegewezen bit vast te houden
afhankelijk van twee executiecondities. Deze executiecondities hebben in de
bovenstaande figuur de labels S en R. S is de set input; R de reset input.
KEEP(11) werkt als een latchrelais dat wordt geset door S en gereset door R.
Wanneer S aangaat zal het toegewezen bit aangaan en aanblijven tot het gereset
wordt, onafhankelijk of S aanblijft of uitgaat. Wanneer R aangaat zal het
toegewezen bit uitgaan en uitblijven, onafhankelijk of R aanblijft of uitgaat. De
relatie tussen de executiecondities en de KEEP(11) bit status wordt hieronder
getoond.
S EXECUTIECONDITIE
R EXECUTIECONDITIE
STATUS VAN B
KEEP(11) werkt zoals de zelfhandhavende bits zoals beschreven in
“zelfhandhavende bits” op pagina 26. De volgende twee netwerken hebben
dezelfde functie. Eén van de twee netwerken gebruikt de KEEP(11) instructie en
gebruikt één instructie minder dan het andere netwerk. Bij gebruik van een KEEP
instructie houden bits hun status vast, zelfs als het netwerk geprogrammeerd wordt
tussen en IL en ILC instructie waarvan de executieconditie laag is.
Het voordeel van het gebruik van KEEP(11) in plaats van logica om een “houd
circuit” te creëren is dat bij het gebruik van een KEEP(11) functie in één oogopslag
duidelijk is dat het netwerk een houd functie bevat. Bij gebruik van een overname
contact (zoals hierboven met logica gerealiseerd is) moet het netwerk meer
geïnterpreteerd worden.
Bij de KEEP(11) instructie heeft de reset prioriteit. D.w.z. dat als de reset ingang
aan is, het bij KEEP(11) gebruikte operandbit altijd uit is. Een eenvoudige manier
om de set prioriteit te geven bij een KEEP(11) instructie is hieronder getoond. Door
het extra bit dat met een OUT instructie aan de SET conditie hangt in de reset op
te nemen wordt deze geblokkeerd op het moment dat de SET aan is.
000.02
200.00
S
KEEP(11)
Vlaggen
200.00000.03
Er worden geen vlaggen beïnvloed door deze instructie.
005.00
R
CPM1/CPM1A programmeerhandleidingpagina 81
Instructieset
OMRON
Voorzorgen
Voorbeeld
Gebruik nooit een input bit van een NC (normally closed) input op de reset conditie
van een KEEP(11) instructie wanneer het input device een AC powersupply
gebruikt. De vertraging in het uitgaan van de PLC’s DC powersupply (relatief ten
opzichte van de AC powersupply op het input device) kan ervoor zorgen dat het
aan de KEEP(11) instructie toegewezen bit wordt gereset wanneer de besturing
wordt uitgezet. Deze situatie wordt hieronder getoond.
Input Unit
A
NOOIT
A
S
R
KEEP(11)
B
Bits die gebruikt zijn als operandbit voor een KEEP(11) instructie worden niet
gereset door interlocks. Raadpleeg pagina 82 voor details.
Als een AR of HR bit wordt gebruikt, wordt de status van dit bit vastgehouden,
zelfs als de spanning van de CPU wegvalt. KEEP(11) kan dus gebruikt worden om
bits te programmeren die de status onthouden die ze hadden toen de PLC werd
uitgezet. Een voorbeeld hiervan kan een waarschuwingsscherm zijn dat op een
terminal getoond moet worden als een installatie opgestart wordt nadat het,
vanwege een noodsituatie, op een abnormale manier is afgesloten. De bits 000.02,
000.03 en 000.04 geven aan dat een bepaald type error is voorgekomen. Bit
000.05 wordt aangezet om het waarschuwingsscherm te resetten. HR00.00, die
aangaat als één van de error ingangen aangaat, geeft aan dat een error situatie is
voorgekomen en wordt gebruikt om het waarschuwingsscherm via 005.00 op te
roepen.
KEEP(11) kan ook gebruikt worden in combinatie met TIM om bits te produceren
die bepaalde vertragingen hebben in het aan en uitgaan. Raadpleeg hiervoor
"Timer - TIM" op pagina 87.
4.8 Interlocks - IL(02) en ILC(03)
LADDER SYMBOOL
LADDER SYMBOOL
Omschrijving
IL(02) wordt altijd gebruikt in combinatie met ILC(03) om interlocks in een
programma te creëren. Interlocks worden gebruikt om, zoals bij gebruik van TR
relais, aftakkingen te creëren. Echter, wanneer de executieconditie voor IL(02) uit
is, verschilt de werking van instructies tussen IL(02) en ILC(03) van vertakkingen
die met TR bits zijn geprogrammeerd. Als de executieconditie van IL(02) aan is,
wordt het programma uitgevoerd zoals het is geschreven, met een
IL(02)
ILC(03)
005.00
Activeert een
waarschuwingsscherm
aan
pagina 82CPM1/CPM1A programmeerhandleiding
OMRON
DIFU(13) en DIFD(14) in
interlocks
Instructieset
executieconditie gebruikt om elke instructie regel te starten van het punt waar
IL(02) is geplaatst tot de volgende ILC(03). Raadpleeg "Vertakkende instructie
regels" op pagina 19 voor basis beschrijvingen van beide methoden.
Als de executieconditie voor IL(02) uit is, zullen de instructies in de sectie tussen
IL(02) en ILC(03) worden behandeld zoals in de volgende tabel is getoond:
InstructieBehandeling
OUT en OUT NOTToegewezen bit gaat uit.
TIM en TIMH(15)Wordt gereset.
CNT en CNTR(12)Actuele waarde wordt gehandhaafd.
KEEP(11)Bit status wordt gehandhaafd.
DIFU(13) en DIFD(14)Niet uitgevoerd (zie hieronder).
Alle andereNiet uitgevoerd.
IL(02) en ILC(03) hoeven niet noodzakelijkerwijs in paren gebruikt te worden.
IL(02) kan diverse keren achter elkaar worden gebruikt, waarbij elke IL(02) een
interlock sectie creëert tot de volgende ILC(03). ILC(03) kan niet worden gebruikt
tot er minimaal één IL(02) is ingevoerd tussen deze ILC(03) en een voorgaande
ILC(03) of het begin van het programma.
Veranderingen in de executieconditie voor een DIFU(13) of DIFD(14) instructie
worden niet opgeslagen als de DIFU(13) of DIFD(14) is geprogrammeerd tussen
een IL(02) en ILC(03) en de executieconditie voor de IL(02) is uit. Wanneer
DIFU(13) of DIFD(14) wordt uitgevoerd in een interlock sectie direct nadat de
executieconditie voor de IL(02) is aangegaan, dan zal de executieconditie voor de
DIFU(13) of DIFD(14) worden vergeleken met de executieconditie die bestond
voordat de interlock actief werd (d.w.z. voordat de interlock conditie voor IL(02)
uitging). Het ladderdiagram en de bitstatus veranderingen hiervoor zijn hieronder
getoond. De interlock is in werking als 000.00 uit is. Merk op dat 200.00 niet
aangaat op punt A ook al is 000.01 uit en vervolgens weer aangegaan.
Er moet minimaal één ILC (03) geprogrammeerd worden na één of meerdere
IL(02) instructies. Alhoewel zoveel IL(02) instructies als nodig kunnen worden
gebruikt met één ILC(03), kunnen ILC(03) instructies niet worden gebruikt zonder
minimaal één IL(02) ervoor, d.w.z. dat nesten niet mogelijk is. Zodra een ILC(03)
wordt uitgevoerd worden alle interlocks tussen de actieve ILC(03) en de
voorgaande ILC(03) gewist.
Wanneer meer dat één IL(02) wordt gebruikt met een enkele ILC(03), verschijnt
een error boodschap als de program check wordt uitgevoerd. Het programma
wordt echter normaal uitgevoerd.
Er worden geen vlaggen beïnvloed door deze instructie.
Het volgende voorbeeld toont IL(02) die tweemaal gebruikt wordt voor een ILC(03).
Wanneer de executieconditie voor de eerste IL(02) uit is, zal TIM011 worden
gereset naar 1.5 seconde, CNT001 zal niet veranderen en 010.02 wordt uitgezet.
Wanneer de executieconditie voor de eerste IL(02) aan is en de executieconditie
voor de tweede IL(02) uit is, zal TIM011 worden uitgevoerd afhankelijk van de
status van 000.01, CNT001 verandert niet en 010.02 wordt uitgezet. Wanneer de
executiecondities voor beide IL(02)’s aan zijn wordt het programma normaal
uitgevoerd.
4.9 Springen - JMP(04) en JME(05)
LADDER SYMBOOL
JMP(04)
N
JMP(05)
N
Beperkingen
Omschrijving
Sprongnummers 01 t/m 49 mogen maar één keer gebruikt worden in een JMP(04)
en één keer in een JME(05) instructie. D.w.z. dat elk nummer gebruikt kan worden
om één sprong te definiëren. Sprong nummer 00 kan zo vaak als gewenst gebruikt
worden.
JMP(04) wordt altijd in combinatie met JME(05) gebruikt om sprongen te
definiëren, d.w.z. om direct van het ene punt naar het andere punt in een
ladderdiagram te gaan. JMP(04) definieert het punt waar de sprong gemaakt
wordt, JME(05) definieert de bestemming van de sprong. Wanneer de
executieconditie voor JMP(04) aan is, wordt geen sprong gemaakt en wordt het
programma vervolgd bij de instructie achter de JMP(04) instructie. Wanneer de
executieconditie voor JMP(04) uit is, wordt een sprong gemaakt naar de JME(05)
instructie met hetzelfde nummer en wordt het programma vervolgd met de
instructie die volgt op de JME(05) instructie.
Als het sprongnummer voor JMP(04) tussen 01 en 49 ligt worden sprongen,
wanneer gemaakt, direct uitgevoerd naar de JME(05) met hetzelfde
sprongnummer zonder dat enige instructie tussen de JMP(04) en JME(05) wordt
PERAND DATAGEBIEDEN
N: Sprongnummer
# (00 to 49)
N: Sprongnummer
# (00 to 49)
pagina 84CPM1/CPM1A programmeerhandleiding
OMRON
DIFU(13) en DIFD(14) in
sprongen
Voorzorgen
Vlaggen
Voorbeelden
Instructieset
uitgevoerd. De status van timers, counters, bits gebruikt met OUT, bits gebruikt
met OUT NOT en alle andere statusbits aangestuurd door de instructies tussen de
JMP(04) en JMP(05) zullen niet veranderen. Elk van de sprongnummers tussen 01
en 99 kan worden gebruikt om één sprong te definiëren. Omdat alle instructies
tussen de JMP(04) en JME(05) worden overgeslagen kunnen de sprongnummers
01 t/m 99 worden gebruikt om de cyclustijd te reduceren.
Als het sprongnummer voor JMP(04) 00 is, zal de CPU zoeken naar de volgende
JME(05) met een sprongnummer 00. Om dit te doen moet deze door het
programma zoeken. Dit veroorzaakt een langere cyclustijd (wanneer de
executieconditie uit is) dan bij de andere sprongen. De status van timers, counters,
bits gebruikt in OUT, bits gebruikt in OUT NOT en alle andere statussen
aangestuurd door instructies tussen de JMP(04) 00 en JMP(05) 00 worden niet
veranderd. Sprongnummer 00 kan zo vaak als gewenst gebruikt worden. Een
sprong van JMP(04) 00 gaat altijd naar de volgende JME(05) 00 in het
programma. Het is dus mogelijk om een aantal maal achtereenvolgend JMP(04)
00 te gebruiken om naar dezelfde JME(05) 00 te springen. Het heeft echter geen
zin om een reeks JME(05) 00 instructies te programmeren, omdat alle sprongen
naar JME(05) 00 zullen eindigen bij de eerste die gevonden wordt. Aangezien bij
JMP(04) 00 wordt gesprongen naar de volgende JME(05) 00 in het programma is
het niet mogelijk om met JMP(04) 00 terug te springen in het programma.
Alhoewel DIFU(13) en DIFD(14) zijn gemaakt om het toegewezen bit voor één
scan aan te zetten, hoeven zij dit niet noodzakelijkerwijs te doen wanneer ze
geprogrammeerd zijn tussen een JMP(04) en JME(05). Zodra DIFU(13) of
DIFD(14) een bit heeft aangezet, zal het bit aanblijven tot de volgende keer dat
DIFU(13) of DIFD(14) wordt uitgevoerd. In het normale programma houdt dit de
volgende scan in. Bij een sprong betekent dit de volgende keer dat de sprong van
JMP(04) naar JME(05) niet is gemaakt. D.w.z. dat wanneer een bit wordt aangezet
door DIFU(13) of DIFD(14) en vervolgens wordt, in de volgende scan, een sprong
gemaakt zodat DIFU(13) of DIFD(14) wordt overgeslagen, dan zal het toegewezen
bit aan blijven tot de executieconditie voor de JMP(04) die de sprong beheerst aan
gaat.
Wanneer na de JMP(04) geen JME(05) met hetzelfde nummer gebruikt is zal een
error melding getoond worden wanneer de program check wordt uitgevoerd. Ook
wanneer de JME(05) instructie voor de JMP(04) instructie wordt geplaatst wordt
deze melding gegenereerd, het programma wordt in dit geval normaal uitgevoerd.
Deze error boodschap verschijnt ook als er voor een JME(05) 00 meermaals
JMP(04) 00 is geplaatst. Ook in dit geval zal het programma normaal worden
uitgevoerd.
Er worden geen vlaggen beïnvloed door deze instructie.
Voorbeelden van programma’s met sprongen worden getoond in "Springen" op
pagina 23.
4.10 Programma einde - END(01)
LADDER SYMBOOL
Omschrijving
Vlaggen
CPM1/CPM1A programmeerhandleidingpagina 85
END(01) is nodig als de laatste instructie in een programma. Wanneer een
programma is voorzien van subroutines, dan wordt de END(01) geplaatst achter
de laatste subroutine. Geen enkele instructie achter de END(01) zal worden
uitgevoerd. END(01) kan overal in het programma geplaatst worden om alle
instructies tot aan dat punt uit te voeren. Dit wordt soms gedaan om fouten te
kunnen vinden in een programma. Deze extra END(01) instructie moet echter weer
verwijderd worden om de rest van het programma uit te voeren.
Als er geen END(01) in het programma is gezet, wordt geen instructie uitgevoerd
en verschijnt de errormelding "no END instruction". SYSWIN voegt automatisch
een END(01) instructie toe tijdens het downloaden als u deze bent vergeten. In dit
geval betekent deze melding vaak dat u een te groot programma in het geheugen
van de PLC heeft geladen.
END(01) zet de ER, CY, GR, EQ en LE vlaggen uit.
END(01)
Instructieset
4.11 No operation - NOP(00)
OMRON
Omschrijving
Vlaggen
LADDER SYMBOOL
De instructie NOP(00) heeft geen functie. Wanneer NOP(00) wordt gevonden in
een programma wordt niets gedaan en gaat de CPU verder met de volgende
instructie in het programma. Wanneer het geheugen wordt gewist voor het
downloaden wordt een NOP(00) geplaatst op alle adressen.
Er worden geen vlaggen beïnvloed door deze instructie.
NOP(00)
4.12 Timer en counter instructies
TIM en TIMH zijn aftellende opkomtijd vertragende timer instructies die een TC
nummer en een ingestelde waarde nodig hebben.
CNT is een aftellende counter instructie en CNTR is een omkeerbare counter
instructie. Beide gebruiken een TC nummer en een ingestelde waarde. Beide
gebruiken eveneens meerdere executiecondities voor tel en reset signalen.
Elk TC nummer kan maar één keer gebruikt worden, d.w.z. zodra het is gebruikt
als definer in één van de timer of counter instructies, kan het niet opnieuw gebruikt
worden. Zodra gedefinieerd, kunnen TC nummers zo vaak als nodig gebruikt
worden als operands in instructies anders dan timer en counter instructies.
TC nummers lopen van 000 t/m 127. Bij het gebruik van een TC nummer als
definer in een timer of counter instructie moet de prefix niet ingevoerd worden.
Zodra gedefinieerd als een timer kan een TC nummer voorafgegaan door een
prefix TIM gebruikt worden als operand in diverse instructies. De TIM prefix wordt
gebruikt, onafhankelijk van de timerinstructie die gebruikt is om de timer te
definiëren. Zodra gedefinieerd als een counter kan het TC nummer voorafgegaan
door de prefix CNT gebruikt worden als operand in bepaalde instructies. De prefix
CNT wordt ook gebruikt, onafhankelijk van de counter instructie die was gebruikt
om de counter te definiëren.
De TIM en CNT prefixen worden gebruikt om een veld in het TC gebied aan te
duiden. Het is mogelijk om met de TIM prefix een veld op te geven dat door een
counter gebruikt wordt. In dit geval zal de counter waarde getoond worden.
Alhoewel het verder geen consequenties heeft voor de uitvoer van het programma
is het voor het overzicht in het programma niet aan te raden om TIM en CNT
prefixen om te wisselen.
TC nummers kunnen worden gebruikt voor operands die bitdata willen hebben en
voor operands die woorddata gebruiken. Wordt een TC nummer gebruikt in een
instructie op bitniveau dan geeft het nummer toegang tot de completionvlag van de
timer of counter. Wanneer een TC nummer wordt gebruikt in een instructie die
woorddata verlangt dan geeft het TC nummer toegang tot een geheugenlocatie die
de actuele waarde van de timer of counter bevat. De actuele waarde van een timer
of counter kan dus gebruikt worden als operand in een CMP(20) of een andere
instructie die gebruik van het TC gebied toestaat.
Het TC gebied bewaart de ingestelde waarden van timers en counters tijdens
spanningsuitval. De actuele waarden van timers worden gereset wanneer de PLC
begint met de uitvoer van het programma. Raadpleeg de sectie over interlocks
voor details over de werking van timers en counters in interlock circuits. De actuele
waarde van counters worden niet gereset bij spanningsuitval of het starten van het
programma.
Opmerking
pagina 86CPM1/CPM1A programmeerhandleiding
TIM000 wordt gebruikt tijdens het programmeren om drie zaken aan te duiden. De
timer met het TC nummer 000, de completionvlag van deze timer en de actuele
waarde van deze timer. De samenhang zal duidelijk zijn. De eerste is altijd een
instructie, de tweede is altijd een bit gebruikt in een instructie en de derde is altijd
een woord gebruikt in een functie. Dit geldt voor alle TC nummers, onafhankelijk of
de prefix TIM of CNT is.
Een ingestelde waarde kan ingevoerd worden als een constante of als een woordadres in een datagebied. Als een woord uit het IR gebied, dat toegewezen is aan
een input unit, wordt toegewezen als de ingestelde waarde kan de input unit
dusdanig aangesloten worden dat de ingestelde waarde kan worden ingevoerd
OMRON
4.12.1 Timer - TIM
Instructieset
met bijvoorbeeld duimwielschakelaars. Timers en counters die op deze manier zijn
aangesloten kunnen alleen ingesteld worden als de PLC in de RUN of MONITOR
mode staat. Alle ingestelde waarden (inclusief extern ingestelde waarden) moeten
worden opgegeven in BCD.
LADDER SYMBOOLDEFINER WAARDEN
TIM
N
IW
N: TC nummer
# (000 - 127)
OPERAND DATAGEBIEDEN
IW: Ingestelde waarde (BCD)
IR, AR, DM, HR, LR, #
Beperkingen
Omschrijving
De ingestelde waarde ligt tussen 000,0 en 999,9 seconde. De decimale punt wordt
niet ingevoerd. Bij het invoeren van een ingestelde waarde van 0001 ligt de tijd
tussen de 0 en 0,1 seconde.
Elk TC nummer kan gebruikt worden als definer in één timer of counter instructie.
TC000 t/m TC003 kunnen beter niet gebruikt worden voor TIM, aangezien deze
nummers bij gebruik van TIMH(15) instructies een betere nauwkeurigheid geven.
Worden ze niet gebruikt voor TIMH(15) instructies dan kunnen ze echter voor
gewone TIM instructies gebruikt worden.
Een timer wordt geactiveerd wanneer de executieconditie aan gaat en wordt
gereset (naar de ingestelde waarde) als de executieconditie uit gaat. De TIM
instructie meet de tijd in units van 0,1 seconde. Een ingestelde waarde van #10
betekent dus een tijd van 1,0 seconden. De actuele waarde van een timer telt af
van de ingestelde waarde (in units van 0,1s) naar 0.
Als de executieconditie lang genoeg aan blijft voor de TIM instructie om terug te
tellen naar nul, dan zal de completionvlag van het gebruikte TC nummer aan gaan
en aan blijven tot de timer wordt gereset (d.w.z. tot de executieconditie uitgaat).
Het volgende figuur toont de relatie tussen de executieconditie voor TIM en de
eraan toegewezen completionvlag.
EXECUTIECONDITIE
COMPLETIONVLAG
AAN
UIT
AAN
UIT
IWIW
Voorzorgen
Timers in een interlock worden gereset als de executieconditie voor IL (02) uit is.
Door het uitzetten van de PLC worden timers eveneens gereset. Als een timer
gewenst is die onder deze condities niet gereset wordt, kunnen klokpulsen uit het
SR gebied gebruikt worden om timers te maken met CNT instructies. Raadpleeg
"counter - cnt" op pagina 93 voor details.
Programma uitvoer wordt voortgezet, zelfs als niet BCD ingestelde waarden
worden gebruikt. De tijden worden hierdoor echter onbetrouwbaar.
VlaggenER
: IW (ingestelde waarde) is niet in BCD.
Indirect geadresseerd DM woord bestaat niet. Inhoud van *DM woord is
niet in BCD opgegeven of de grootte van het DM gebied is overschreden.
Voorbeelden
Alle hier volgende voorbeelden gebruiken OUT instructies met operandbits uit het
IR gebied om het resultaat van timers te verwerken. In plaats van deze OUT
instructies kunnen natuurlijk ook andere instructies toegepast worden.
Voorbeeld1: Basis
toepassing
Het volgende voorbeeld toont twee timers, de ingestelde waarde van de ene wordt
opgegeven met een constante, de andere via inputwoord 005. De eerste timer zal
gaan lopen als 000.00 aangaat. Na 15 seconden loopt de timer af en zal 010.00
aan gaan. Wanneer 000.00 uitgaat zal de timer gereset worden en wordt 010.00
uitgezet. Wordt de timer gereset voordat deze is afgelopen dan zal 010.00 niet
aangaan. Wanneer 000.01 aangaat wordt TIM001 gestart. Deze begint te tellen
met de waarde die op het IR woord 005 staat. Bit 010.01 wordt aangezet als
CPM1/CPM1A programmeerhandleidingpagina 87
Instructieset
Voorbeeld 2: Verlengde
timers
OMRON
000.01 aan gaat. Wanneer de ingestelde waarde uit woord 005 is afgelopen dan
wordt 010.01 uitgezet. Dit bit wordt ook uitgezet als TIM001 wordt gereset,
onafhankelijk of deze al is afgelopen of niet.
Er zijn twee manieren om timers te creëren met een tijd van meer dan 999,9
seconden. Eén manier is om meer dan één timer te gebruiken, de completionvlag
van elke timer wordt gebruikt om de volgende te activeren. Een eenvoudig
voorbeeld staat hieronder, hier worden twee 900.0 seconde (15 minuten) timers
gecombineerd om functioneel een 30 minuten timer te creëren.
In dit voorbeeld wordt 010.00 30 minuten nadat 000.00 is aangegaan aangezet.
TIM kan ook gecombineerd met CNT gebruikt worden of CNT kan worden gebruikt
in combinatie met klokpuls bits uit het SR gebied om langere timers te creëren.
Een voorbeeld hiervoor wordt gegeven in "counter - cnt" op pagina 93.
Voorbeeld 3: Aan / uit
vertragingen
TIM kan in combinatie met KEEP(11) worden gebruikt om een vertraging in het
aan- en uitzetten van een bit te creëren afhankelijk van een gewenste
executieconditie.
De completionvlaggen van twee timers worden gebruikt in de executiecondities
voor het setten en het resetten van de KEEP(11) instructie. Op deze manier is een
aan- en een uitvertraging te creëren. Het bit wiens werking vertraagd dient te
worden, wordt als operand in de KEEP(11) gebruikt. Het aan- en uitgaan van het
toegewezen bit wordt dus vertraagd door twee ingestelde waarden van twee
timers. De twee ingestelde waarden kunnen natuurlijk, als dat gewenst is,
hetzelfde zijn.
pagina 88CPM1/CPM1A programmeerhandleiding
OMRON
Instructieset
In het volgende voorbeeld wordt 005.00 5,0 seconden nadat 000.00 aangaat geset
en 3,0 seconden nadat 000.00 uitgaat gereset. Het is noodzakelijk om zowel
005.00 als 000.00 te gebruiken in de executieconditie voor TIM002; 000.00 in een
geïnverteerde conditie is nodig om TIM002 te resetten als 000.00 aangaat en
005.00 is nodig om TIM002 te activeren (als 000.00 uit is).
De tijd dat een bit aan of uit is kan worden ingesteld door TIM te gebruiken met
OUT of OUT NOT. Het volgende diagram toont hoe dit mogelijk is. In dit voorbeeld
blijft 010.04 aan voor 1,5 seconde nadat 000.00 aan is gegaan, onafhankelijk van
de tijd dat 000.00 aanblijft. Dit wordt bereikt door 200.00 als een zelfhandhavend
bit te gebruiken, geactiveerd door 000.00, dat 010.04 aan zet. Wanneer TIM001
afloopt, dus als de ingestelde waarde van TIM001 afgelopen is, wordt 010.04
uitgezet door de completionvlag van TIM001. D.w.z. de geïnverteerde
completionvlag die gebruikt is in de instructieregel, creëert een uit executieconditie
voor de instructie OUT 010.04.
Met twee timers kunnen knipperbits gecreëerd worden die werken op een vast
interval als een bepaalde executieconditie aan is. Eén TIM dient om het
gespecificeerde bit aan en uit te zetten als de completionvlag van deze timer aanof uitgaat. De andere TIM dient om de werking van de eerste te beheersen.
Wanneer de completionvlag van de eerste timer aangaat wordt de tweede gestart.
Wanneer de completionvlag van de tweede timer afloopt worden beide timers
gereset en wordt TIM001 opnieuw gestart.
Een eenvoudiger maar minder flexibele methode om een knipperbit te creëren is
een AND tussen een klokpuls uit het SR gebied en de executieconditie die aan is
als het knipperbit moet werken. Alhoewel deze methode geen TIM gebruikt, wordt
het hier getoond zodat het vergeleken kan worden. Beperkingen van deze
methode zijn dat de aan en uit tijd gelijk zijn en afhankelijk van de klokpulsen die in
de CPU beschikbaar zijn. De met systeem klokpulsen gecreëerde knipperbits
vergen natuurlijk wel minder programma.
In het volgende voorbeeld is de seconde klokpuls (255.02) gebruikt om 010.06
elke seconde aan / uit te zetten. D.w.z. het bit zal 0,5 seconde aan en 0,5 seconde
uit zijn. De precieze timing en de initiële status van 010.06 zijn afhankelijk van de
status van de klok puls wanneer 000.00 aangaat.
pagina 90CPM1/CPM1A programmeerhandleiding
OMRON
O
Instructieset
000.00
AdresInstructieOperands
00000LD000.00
00001AND255.02
00002OUT010.06
255.02
4.12.2 Highspeed timer - TIMH(15)
LADDER SYMBOOLDEFINER WAARDEN
Beperkingen
Omschrijving
Voorzorgen
VlaggenER
De ingestelde waarde ligt tussen 00,00 en 99,99 seconden. De komma wordt niet
ingevoerd. Bij het invoeren van een ingestelde waarde van 0001 ligt de tijd tussen
de 0 en 0,01 seconde. Een ingestelde waarde van 0000 deactiveert de timer en
maakt de completionvlag direct hoog.
Elk TC nummer kan gebruikt worden als definer in één timer of counter instructie.
Het is aan te raden om TC000 t/m TC003 te gebruiken als definer. Het gebruiken
van andere TC nummers leidt tot onnauwkeurigheid als de cyclustijd groter is dan
10ms.
TIMH(15) werkt op dezelfde manier om als TIM behalve dat TIMH de tijd meet in
units van 0,01 seconde.
De cyclustijd beïnvloedt de nauwkeurigheid van TIMH(15) als TC004 t/m TC127
worden gebruikt. Gebruik TC000 t/m TC003 als de cyclustijd groter is dan 10ms.
Bij gebruik van de TC nummers 000 t/m 003 wordt de TIMH(15) instructie op
interrupt basis aangestuurd. De completionvlag van een normale timer instructie
wordt door de instructie zelf aangezet. De onnauwkeurigheid van een normale
timer is dus afhankelijk van de cyclustijd. Bij highspeed timers die op interrupt
basis worden aangestuurd komt de completionvlag op als de tijd is afgelopen. Dus
niet op het moment dat de instructie weer gescand wordt.
Raadpleeg de sectie "Timer - TIM" op pagina 87 voor details over de werking en
voorbeelden. Op de hierboven aangegeven verschillen na zijn de werking van TIM
en TIMH(15) identiek.
Timers in een interlock worden gereset als de executieconditie voor IL (02) uit is.
Door het uitzetten van de PLC worden timers eveneens gereset. Als een timer
gewenst is die onder deze condities niet gereset wordt, kunnen klokpulsen uit het
SR gebied gebruikt worden om timers te maken met CNT instructies. Raadpleeg
"counter - cnt" op pagina 93 voor details.
Programma uitvoer wordt voortgezet, zelfs als niet BCD ingestelde waarden
worden gebruikt. De tijden worden hierdoor echter onbetrouwbaar.
: IW (ingestelde waarde) is niet in BCD.
Indirect geadresseerd DM woord bestaat niet. Inhoud van *DM woord is
niet in BCD opgegeven of de grootte van het DM gebied is overschreden.
TIMH(15)
N
SV
010.06
N: TC nummer
# (000 - 127 (voorkeur 000 - 003))
OPERAND DATAGEBIEDEN
IW: Ingestelde Waarde (BCD)
IR, AR, DM, HR, LR, #
4.12.3 Interval timer - STIM(—)
LADDER SYMBOOL
STIM(-)
C1
C2
C3
@STIM(-)
C1
C2
C3
CPM1/CPM1A programmeerhandleidingpagina 91
PERAND DATAGEBIEDEN
C1: Control data #1
000, 003, 006, 010
C2: Control data #2
IR, AR, DM, HR, TC, LR, #
C3: Control data #3
IR, AR, DM, HR, TC, LR, #
Instructieset
OMRON
Beperkingen
Omschrijving
Start interrupts
Opmerking
Actuele waarde uitlezen
Opmerking
Timers stoppen
VlaggenER
C1 moet 000, 003, 006 of 010 zijn. Wanneer C1 000 of 003 is dan kan een
constante groter dan 255 niet gebruikt worden op C3. Als C1 006 is dan kunnen
DM6144 t/m DM6655 niet gebruikt worden voor C2 of C3. Wanneer C1 010 is
moeten C2 en C3 000 zijn.
STIM(—) wordt gebruikt om de interval timer te beheersen door te voorzien in vier
basisfuncties: starten van de timer voor een one-shot interrupt, starten van de
timer voor scheduled interrupts (interrupts op een vaste tijdbasis), stoppen van de
timer en het uitlezen van de actuele waarde van de timer. Afhankelijk van de
instelling op C1 wordt één van deze functies uitgevoerd. Mogelijke waarden van
C1 zijn in de volgende tabel opgenomen. In het hoofdstuk “Interval timer interrupts”
op pagina 46 staat meer informatie over de interval timer.
FunctieC1 Waarde
Start timer000
Start scheduled interrupt003
Lees de actuele waarde006
Stop de timer010
Zet C1 op 000 om de interval timer te activeren in de one-shot mode. Wanneer C1
wordt ingesteld op 003 dan wordt de interval timer geactiveerd in de scheduled
interrupt mode.
C2 specificeert de ingestelde waarde (IW) van de timer en kan een constante zijn
of het eerste woord van twee opeenvolgende woorden die deze instelling bevatten.
De instellingen kunnen een minimaal verschil vertonen afhankelijk van de
gebruikte mode.
Als C2 een constante is (#) specificeert het een waarde van 0001 t/m 9999 in
BCD. Het interval dat gebruikt wordt is in dit geval 1ms. De tijd kan in dit geval dus
worden ingesteld tussen de 1 en 9999ms.
Als C2 een woord adres is, specificeert C2 de waarde (BCD, 0001 t/m 9999) en
C2+1 het interval dat gebruikt wordt (BCD, 0005 t/m 0320) in units van 0,1ms. Het
interval dat gebruikt kan worden ligt dus tussen de 0,5 en 32ms.
C3 specificeert het subroutine nummer 000 t/m 049.
De uiteindelijke ingestelde tijd van de interval timer is:
(de inhoud van C2) x (de inhoud van C2+1) x 0,1ms
Zet C1 op 006 om de actuele waarde van de timer uit te lezen.
C2 is de eerste van twee woorden die gebruikt worden om de actuele waarde van
de timer in op te slaan. Op C2 wordt een aantal opgeslagen (BCD, 0000 t/m 9999),
op C2+1 wordt het gebruikt interval opgeslagen (BCD in units van 0,1ms). Elke
keer dat het interval dat op C2+1 is opgeslagen afloopt wordt de inhoud van C2
met één verlaagd (mits de STIM instructie elke keer wordt uitgevoerd).
C3 specificeert het woord dat gebruikt wordt om de tijd in op te slaan die
verstreken is sinds de waarde op C2 met één verlaagd is (BCD in units van
0,1ms).
De tijd die verstreken is sinds de timer is gestart kan als volgt berekend worden:
[(de inhoud van C2) x (de inhoud van C2+1) + (de inhoud van C3)] x 0,1ms.
Stel C1 in op 010 om de timer te stoppen.
C2 en C3 hebben in dit geval geen functie en moeten worden ingesteld op 000.
: Een waarde is niet in het juiste formaat opgegeven.
Indirect geadresseerd DM woord bestaat niet. Inhoud van *DM woord is
niet in BCD opgegeven of de grootte van het DM gebied is overschreden.
De grootte van een geheugengebied is overschreden.
pagina 92CPM1/CPM1A programmeerhandleiding
OMRON
4.12.4 Counter - CNT
LADDER SYMBOOLDEFINER WAARDEN
Klokpuls
CNT
R
N
SV
N: TC nummer
# (000 - 127)
OPERAND DATAGEBIEDEN
IW: Ingestelde Waarde (BCD)
IR, AR, DM, HR, LR, #
Instructieset
Beperkingen
Omschrijving
Elk TC nummer kan gebruikt worden als definer in één timer of counter instructie.
CNT wordt gebruikt om vanaf de ingestelde waarde (IW) af te tellen naar nul. Elke
keer als de executieconditie op de klokpuls ingang van uit naar aan gaat wordt de
actuele waarde (IW) met één verlaagd. Als de executieconditie, sinds de vorige
keer dat de instructie gescand werd, niet verandert of veranderd is van aan naar
uit, wordt de actuele waarde van CNT niet verlaagd. De completionvlag van een
counter gaat aan wanneer de actuele waarde nul wordt en blijft aan tot de counter
gereset wordt.
CNT wordt gereset met de reset ingang R. Wanneer R aan is wordt de actuele
waarde ingesteld op de ingestelde waarde. De counter zal klokpulsen niet tellen
zolang de reset ingang (R) aan is. Het terugtellen van de ingestelde waarde naar
nul begint vervolgens weer overnieuw als R uitgaat. De actuele waarde van CNT
wordt niet gereset door spanningsuitval, het in program mode zetten van de PLC
of tijdens actieve interlocks.
Veranderingen in de executiecondities, de completionvlag en de actuele waarde
zijn in de volgende figuur getoond. De verschillen in hoogte van de lijn die de
actuele waarde weergeeft geven alleen een indicatie van de veranderingen van de
actuele waarde.
EXECUTIE CONDITIE
KLOKPULS
EXECUTIE CONDITIE
RESET (R)
COMPLETION VLAG
AAN
UIT
AAN
UIT
AAN
UIT
Voorzorgen
VlaggenER
Voorbeeld 1: Basis
toepassing
ACTUELE WAARDE
IW-1
IW-2
0002
0001
0000
IWIW
Programma-uitvoer zal normaal doorgaan als een niet-BCD getal als ingestelde
waarde wordt gebruikt. De werking van de counter wordt er echter onbetrouwbaar
door.
: IW (ingestelde waarde) is niet in BCD.
Indirect geadresseerd DM woord bestaat niet. Inhoud van *DM woord is
niet in BCD opgegeven of de grootte van het DM gebied is overschreden.
In het volgende voorbeeld wordt de actuele waarde verlaagd zodra zowel 000.00
als 000.01 aan zijn en 000.02 uit is en 000.00 of 000.01 de vorige keer dat
CNT004 werd uitgevoerd laag waren. Zodra 150 pulsen zijn geteld (de actuele
waarde bereikt nul) wordt 200.05 aangezet.
000.00
000.02
CNT004
AdresInstructieOperands
00000LD000.00
00001AND000.01
00002LD000.02
000.01
Klokpuls
CNT
R004
#0150
200.05
CPM1/CPM1A programmeerhandleidingpagina 93
Instructieset
OMRON
00003CNT004#0150
00004LDCNT004
00005OUT200.05
In het bovenstaande programma zou 000.00 kunnen worden gebruikt om te
bepalen wanneer CNT in werking is en 000.01 kan worden gebruikt als het bit
wiens veranderingen worden geteld.
Het bovenstaande voorbeeld kan aangepast worden zodat de counter elke keer
als de spanning aan wordt gezet gereset wordt. Dit wordt gerealiseerd door de
eerste scan vlag
nemen. Dit wordt hieronder getoond.
000.00
000.02
253.15
uit het SR gebied (253.15) in de reset conditie van CNT op te
Counters die verder moeten tellen dan 9.999 kunnen worden geprogrammeerd
door een counter te gebruiken die het aantal maal telt dat een andere counter van
de ingestelde waarde heeft teruggeteld naar nul.
In het volgende voorbeeld wordt 000.00 gebruikt om te bepalen wanneer CNT001
actief is. CNT001 telt, wanneer 000.00 aan is, het aantal uit/aan veranderingen van
000.01. CNT001 wordt gereset door zijn completionvlag. Hierdoor begint deze
counter direct nadat de actuele waarde nul bereikt direct overnieuw met tellen.
CNT002 telt het aantal maal dat de completionvlag van CNT001 aangaat. Bit
000.02 dient als een reset voor de gehele verlengde counter en reset zowel
CNT001 als CNT002 wanneer het uit is. De completionvlag van CNT002 wordt
gebruikt om CNT001 te resetten om te voorkomen dat CNT001 door kan gaan met
tellen als de ingestelde waarde van CNT002 bereikt is.
Omdat in dit voorbeeld de ingestelde waarde voor CNT001 #100 is en die van
CNT002 #200 komt de completionvlag van CNT002 op wanneer 100 x 200 of
20,000 uit / aan veranderingen zijn gemaakt door 000.01. Als resultaat zal 010.03
aangaan.
CNT kan op deze manier zo vaak als gewenst gebruikt worden om counters te
maken die elke gewenste waarde kunnen tellen.
CNT kan op twee manieren gebruikt worden om verlengde timers te creëren, door
TIM en CNT te combineren of door klokpulsen uit het SR gebied te gebruiken.
In het volgende voorbeeld telt CNT002 het aantal maal dat TIM001 zijn ingestelde
waarde afgeteld heeft. De completionvlag van TIM001 wordt gebruikt om TIM001
te resetten zodat deze continu loopt en CNT002 het aantal maal kan tellen dat de
completionvlag van TIM001 aangaat (CNT002 wordt met één verlaagd op het
moment dat de completionvlag van TIM001 aangaat en TIM001 wordt door
dezelfde completionvlag gereset). TIM001 wordt ook gereset door de
completionvlag van CNT002 zodat de verlengde timer niet kan starten als deze is
afgelopen. Om de timer na het aflopen weer te kunnen laten tellen moet eerst
CNT002 gereset worden met 000.01, dat fungeert als de reset voor de gehele
verlengde timer.
Omdat in dit voorbeeld de ingestelde waarde voor TIM001 5,0 seconden is en die
van CNT002 #100, zal de completionvlag van CNT002 aan gaan als 5 seconden x
100, dat is 500 seconden (of 8 minuten en 20 seconden) zijn verlopend. Als
resultaat zal 010.01 aangezet worden.
In het volgende voorbeeld telt CNT001 het aantal maal dat de 1 seconde klokpuls
(bit 255.02) van uit naar aan verandert. Ook hier wordt 000.00 gebruikt om te
bepalen of de counter wel of niet moet tellen.
Omdat in dit voorbeeld de ingestelde waarde voor CNT001 #700 is zal de
completionvlag van CNT001 aan gaan als 1 seconde x 700, dat is 700 seconden
(of 11 minuten en 40 seconden) verlopen zijn. Als resultaat zal 200.02 aangezet
worden. Door het kiezen van bijvoorbeeld de 1 minuut klokpuls in plaats van de 1
seconde klokpuls kunnen makkelijk nog langere tijden gecreëerd worden.
De kortere klokpulsen hoeven niet noodzakelijkerwijs nauwkeuriger timers op te
leveren omdat hun korte aan/uit tijden misschien niet goed gedetecteerd kunnen
worden door de CPU, speciaal tijdens langere cyclustijden. In het bijzonder de
0.02 seconde en 0.1 seconde klokpulsen kunnen beter niet gebruikt worden om
timers te creëren met counter instructies. Alleen als u er zeker van bent dat de
cyclustijd van de PLC altijd kort genoeg is (een vuistregel hiervoor is minder dan
de helft van de looptijd van de klokpuls) kunt u deze klokpulsen gebruiken.
4.12.5 Omkeerbare counter - CNTR(12)
LADDER SYMBOOLDEFINER WAARDEN
II+
CNTR(12)
DI-
R
IW
OMRON
N: TC nummer
# (000 - 127)
N
OPERAND DATAGEBIEDEN
IW: Ingestelde Waarde (BCD)
IR, AR, DM, HR, LR, #
Beperkingen
Omschrijving
Elk TC nummer kan gebruikt worden als definer in één timer of counter instructie.
CNTR(12) is een omkeerbare circulaire counter die wordt gebruikt om te tellen
tussen nul en de ingestelde waarde afhankelijk van veranderingen in twee
executiecondities, die in de increment input (II+) en die in de decrement input (DI-).
De actuele waarde wordt verhoogd met één zodra CNTR(12) wordt uitgevoerd met
een
de executieconditie voor II+
executieconditie voor II+ en de vorige keer dat CNTR(12) werd uitgevoerd
aan
was. D.w.z. voor de instructie op de opgaande flank
uit
op de II+ executieconditie. De actuele waarde wordt met één verlaagd wanneer de
CNTR(12) instructie wordt uitgevoerd met een opgaande flank op de DIexecutieconditie. Als zowel op de II+ als DI- voorwaarde een opgaande flank wordt
gedetecteerd zal de actuele waarde van CNTR(12) niet veranderen.
Als de executiecondities van II+ en DI- niet zijn veranderd of zijn veranderd van
aan naar uit dan zal de actuele waarde niet veranderen.
Wanneer de actuele waarde 0000 is en verlaagd wordt dan wordt deze op de
ingestelde waarde (IW) gezet en wordt de completionvlag aangezet tot de actuele
waarde weer wordt verlaagd. Wanneer de actuele waarde van de counter gelijk is
aan de ingestelde waarde en verhoogd wordt, dan wordt de actuele waarde
ingesteld op 0000 en wordt de completionvlag aangezet tot de actuele waarde
opnieuw verhoogd wordt.
CNTR(12) wordt gereset met de reset ingang R. Wanneer R aan is, wordt de
actuele waarde ingesteld op nul. Zolang als de reset ingang aan is, kan de actuele
waarde niet verhoogd of verlaagd worden. Tellen is weer mogelijk als R uit is. De
actuele waarde van CNTR(12) wordt niet gereset tijdens actieve interlocks,
wanneer de spanning van de CPU uitgezet wordt en wanneer de CPU in de
program mode gezet wordt.
Veranderingen in de II+ en DI- executiecondities, de completionvlag en de actuele
waarde worden hieronder geïllustreerd vanaf een willekeurig moment in de tijd. De
hoogte van de lijn die de actuele waarde weergeeft is alleen bedoeld als een
indicatie van de verandering in de actuele waarde.
pagina 96CPM1/CPM1A programmeerhandleiding
OMRON
O
Instructieset
Voorzorgen
EXECUTIECONDITIE II+
EXECUTIECONDITIE DI-
COMPLETIONVLAG
ACTUELE WAARDE
Programma-uitvoer zal normaal doorgaan als een niet-BCD getal als ingestelde
AAN
UIT
AAN
UIT
AAN
UIT
IW-1
IW-2
waarde wordt gebruikt. De werking van de counter wordt er echter onbetrouwbaar
door.
VlaggenER
:IW (ingestelde waarde) is niet in BCD.
Indirect geadresseerd DM woord bestaat niet. Inhoud van *DM woord is
niet in BCD opgegeven of de grootte van het DM gebied is overschreden.
4.12.6 Registreer vergelijkingstabel - CTBL(—)
LADDER SYMBOOL
CTBL(-)
P
C
TB
IW
@CTBL(-)
P
C
TB
0000
IW
IW-1
0001
0000
TB: Eerste woord vergelijkingstabel
IW-2
PERAND DATAGEBIEDEN
P: Poort
000
C: Control data
000 t/m 003
IR, AR, DM, HR, LR
Beperkingen
Omschrijving
Het eerste en het laatste woord van de vergelijkingstabel moeten in hetzelfde
datagebied liggen. De lengte van de vergelijkingstabel kan afhankelijk van
instellingen variëren.
Wanneer de executieconditie uit is wordt CTBL(—) niet uitgevoerd. Wanneer de
executieconditie aan is, slaat CTBL(—) een vergelijkingstabel op die de
geregistreerde waarden vergelijkt met de actuele waarde van de highspeed
counter. Afhankelijk van de waarde van C zal de vergelijking met de actuele
waarde van de highspeed counter direct beginnen of apart gestart moeten worden
met INI(—).
De poort operand (P) specificeert de highspeed counter die in de vergelijking
gebruikt wordt. Bij de CPM1(A) is deze altijd 000.
De functie van CTBL(—) wordt bepaald door control data C, zoals in de volgende
tabel getoond is. De functies worden na de tabel verklaard.
CCTBL(—) functie
000Registreert een doelwaarde vergelijking en start het vergelijken
001Registreert een bereik vergelijkingstabel en start het vergelijken
002Registreert een doelwaarde vergelijking. Het vergelijken moet gestart worden
met INI(—)
003Registreert een bereik vergelijkingstabel. Het vergelijken moet gestart worden
met INI(—)
Wanneer de actuele waarde overeenkomt met de doelwaarde of binnen het
gespecificeerde bereik valt wordt de betreffende subroutine aangeroepen en
uitgevoerd. Zie hiervoor ook "Highspeed counter interrupts" op pagina 47.
Als de highspeed counter is geactiveerd in de PC Setup (DM6642) zal deze
beginnen te tellen vanaf 0 als de CPM1 begint te werken. De actuele waarde zal
niet worden vergeleken met de vergelijkingstabel tot deze is geregistreerd en de
vergelijking is geactiveerd met INI(—) of CTBL(—). Het vergelijken kan worden
gestart en gestopt of de actuele waarde kan worden gereset met INI(—).
Zodra een vergelijkingstabel is geregistreerd is deze geldig tot de CPM1 in
program mode wordt gezet, uit wordt gezet of wanneer een fout optreedt tijdens
CPM1/CPM1A programmeerhandleidingpagina 97
Instructieset
Doel waarde vergelijking
OMRON
het registreren van een nieuwe tabel. Het is aan te raden om, indien mogelijk de
gedifferentieerde uitvoering van CTBL(—) te gebruiken om de cyclustijd te
reduceren.
Een doelwaarde vergelijkingstabel bevat tot aan zestien doelwaarden en een
subroutinenummer voor elke doelwaarde. De corresponderende subroutine wordt
aangeroepen en uitgevoerd als de actuele waarde overeenkomt met de
doelwaarde. Wanneer een interruptroutine niet noodzakelijk is kan een niet
gedefinieerde subroutine in de tabel geplaatst worden.
Het volgende diagram toont de opbouw van een doelwaarde vergelijkingstabel
voor gebruik met highspeed counter 0 of highspeed counter 1 of 2 in lineaire
mode.
1. Het subroutinenummer kan 0000 t/m 0049 zijn en de subroutine wordt
uitgevoerd zolang de actuele waarde van de counter binnen het
gespecificeerde bereik ligt. Een waarde FFFF geeft aan dat geen subroutine
uitgevoerd moet worden.
Een bereik vergelijkingstabel bevat acht bereiken die worden gedefinieerd door
een achtcijferige lage limiet en een achtcijferige hoge limiet en het
corresponderende subroutinenummer. De corresponderende subroutine wordt
aangeroepen en uitgevoerd wanneer de actuele waarde binnen het opgegeven
bereik valt. Wanneer interrupt uitvoer niet noodzakelijk is kan een niet gedefinieerd
subroutinenummer ingevoerd worden.
Stel altijd acht bereiken in. Als minder dan acht bereiken nodig zijn stel dan de
overige subroutine nummers in op FFFF. Als meer dan acht bereiken nodig zijn
kan een andere vergelijkingsinstructie zoals BCMP(—) gebruikt worden om de
overige bereiken te vergelijken met de actuele waarde van de highspeed counter.
Denk eraan dat deze woorden één keer per cyclus worden gerefreshed.
Er zijn vlaggen in het AR gebied die aangeven dat de actuele waarde van een
highspeed counter binnen een of meer van de acht bereiken valt. Deze vlaggen
gaan aan wanneer de actuele waarde binnen het bijbehorende bereik valt.
1. Het subroutinenummer kan 0000 t/m 0049 zijn en de subroutine wordt
uitgevoerd zolang de actuele waarde van de counter binnen het
gespecificeerde bereik ligt. Een waarde FFFF geeft aan dat geen subroutine
uitgevoerd moet worden.
De volgende tabel toont de mogelijke waarden voor doelwaarden, lage limiet
waarden en hoge limiet waarden. Het hexadecimale cijfer F op het meest
significante cijfer geeft aan dat de waarde negatief is.
pagina 98CPM1/CPM1A programmeerhandleiding
Loading...
+ 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.