Indirecte adressering



Vergelijkbare documenten
Gegevensopslag in databouwstenen

Getalformaten, timers en tellers

Registers & Adressering. F. Rubben, ing

Deel 2 S7 Graph Ont4 - GA3

6 Programmastructuren

Logische bit-instructies

PLC Automatisering. Nico Bartholomevis KHLim dep IWT

Functies en functiebouwstenen

Hfdst. 2: COMBINATORISCH PROGRAMMEREN

INHOUD. KHLim dep IWT MeRa 1/22

MBUS-64 TCP. VF64 over MODBUS / TCP

Movicon 11. Visualisatie op VIPA Touch Screens Van de VIPA PLC: CPU315 & CPU313. F. Rubben Movicon 11 op VIPA Touch Screens 1

Intro S datum: onderwerp: door: aan: dinsdag 11 juni 2013 Introductie S onder TIA Portal Industrial Automation

Hoe werkt een rekenmachine?

SI-Profinet. Unidrive M700 en Siemens S7-300 PLC (Step 7)

Proeftentamen in1211 Computersystemen I (Opm: de onderstreepte opgaven zijn geschikt voor de tussentoets)

Het Versacom systeem is gedefinieerd in DIN 43861, deel 301 als "transfer protocol A".

Het koppelen van een FC51, via Modbus RTU, aan een AC500-eco.

Labo-oefeningen Automatisatie (Experimentele fase)

De programma-editor LAD FBD STL. 1 Basis PLC. Basis PLC. pagina 1 Hoofdstuk 3 : De programma editor

Calculatie tool. Handleiding. Datum Versie applicatie 01 Versie document

Computerarchitectuur en netwerken. Memory management Assembler programmering

Analoge waarden. 1 Basis PLC. Maximum niveau. Niveau-indicator Minimum niveau. Basis PLC. pagina 1 Hoofdstuk 9 : Analoge waarden

Module nummer Elke speciale module krijgt een eigen module nummer om de betreffende module in te stellen en uit te lezen. Ethernet module FX3u-ENET

De CPU in detail Hoe worden instruc4es uitgevoerd? Processoren 28 februari 2012

9 Tijdsfuncties. 9.1 Voorstelling tijden

Conversies, vergelijkingen, logische, reken- en schuifbewerkingen

Proeftentamen in1211 Computersystemen I (NB de onderstreepte opgaven zijn geschikt voor de tussentoets)

Talstelsels en getalnotaties (oplmodel)

Hfdst. 2: COMBINATORISCHE LOGICA

Antwoorden vragen en opgaven Basismodule

Factuur Lay-out / Factuur Template

How To Do Visualisaties met mbconnect24

00024v1_klm. 24 Siemens Logo. afb. Logo_01* Stuurrelais. Programmeerinstructies. afb. Logo_02* De elektromonteur aan het werk 1

Computerarchitectuur en netwerken. Memory management Assembler programmering

TAPPS Onlineschema. Programmering met TAPPS

13. Symbool-, Lijnstijlbibliotheek (Resource Editor)... 1

Zelftest Programmeren in PL/I

SI-Profibus. Unidrive M700-M702 en Siemens S7-300 PLC (STEP 7)

scc = b) CD AB

Turbo Pascal (deel 1)

MODBUS remote I/O-unit type MODBUS4S110

Een Step 7 project aanmaken

Samenvoeging document syntax

AFO Beheer sjablonen voor documenten

Om een PLC te kunnen programmeren is het belangrijk te weten hoe de PLC het programma verwerkt. (Zie 2.4 blz. 35-)

MOTUS- APP: De gebruikersgids

Galaxy Dimension TOUCHCENTER Handleiding gebruiker

Linux Assembly Uitwerkingen van de vragen en opdrachten

Technische Opleidingen

Hulp krijgen. Systeemberichten. Aanmelden/Afmelden. Pictogrammen op het bedieningspaneel

Samenvatting Computer Architectuur

ANALYSE ANALYSE. 1 Probleemstelling. Monday 28 September Gunter Schillebeeckx. 1 Probleemstelling 2 Gegeven 3 Gevraagd Samenvatting Oefeningen

Märklin draaischijf 7286 met draaischijf decoder TT-DEC aansturen via het draaischijf symbool in het beeldscherm van de Central Station 3 (plus)

VRIJ TECHNISCH INSTITUUT Burg.Geyskensstraat BERINGEN. De PLC geïntegreerd in de PC. Vak: Toegepaste informatica Auteur: Ludwig Theunis

BLOK 3 HOOFDSTUK 8 PARAGRAAF 2

Communicatie. Basis PLC. pagina 1 Hoofdstuk 11: Communicatie. Basis PLC PG 720

WinCCFlex. WinCC Flex MeRa 1/22

Het koppelen van de u-remote aan de AC500-eco via Modbus TCP. A quick start guide. Jaap Ruiten

QR-code op aanvoerbrief 2.xx.0: Specificaties

Mapsource. handleiding Mapsource vs

AFO 139 Automatische export

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Outlook electronics Handleiding Visor page: 1/9

Hfdst. 1: INLEIDING 1.1. DOEL VAN DE PLC: = Automatisering. 3 functionele onderdelen: Verwerkingsdeel. Relais. Contactor

SafeLine VA4 Bedieningsinstructies

De computer als processor

1. Open de Bibliotheek verkenner. Dit kunt u in de Lint modus doen via View, de groep Toon, Bibliotheek Verkenner.

Tips en Tricks basis. Microsoft CRM Revisie: versie 1.0

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

Zelftest Inleiding Programmeren

HANDLEIDING MEMOKEY 100C

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Workshop Programmeren met STEP 7 op de DeskTop- en EduLabXorter

RAM geheugens. Jan Genoe KHLim. Situering RAM-geheugens. Geheugens. Halfgeleider Geheugens. Willekeurig toegankelijk geheugen

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

LearnOSM. Verschuiving van afbeeldingen

Turbo Pascal deel 3 MSX CLUB MAGAZINE 36. Erik van Bilsen. Scanned, ocr ed and converted to PDF by HansO, 2001

Instructie voor een mail-merge VZVZ toestemmingsformulier in Word.

Gebruikhandleiding TC-500

SUBSITE BEHEREN. 1. Verticale navigatie maken

ACCEPETEREN RESERVERING

Gebruiksaanwijzing. SBP 2300 Babyschaal

Welkom bij de S / ET200SP failsafe workshop. Doel van deze oefeningen is om u een indruk te geven van de mogelijkheden van de S F-CPU.

Selenium IDE Webdriver. Introductie

PC Docking Station voor gebruik met (RA109, RP109, RS109 / RA107, RP107, RS107) CD-ROM met on-line Help informatie OVER DEZE GEBRUIKSAANWIJZING INHOUD

VLT AutomationDrive FC 302 Integrated Motion Controller IMC

7. Module Transformatie... 1

Computertechniek vorige examens

Groep Automatisering KHLim Univ Campus gebouw B Diepenbeek

Antwoorden zijn afgedrukt!!!!!!!

Transcriptie:

Indirecte adressering 1 pagina 1

Absolute adressering - Directe adressering Operand Operand- Supplementaire Beschrijving adres toegangsbreedte (voorbeeld) I 37.4 byte, woord, Ingangen dubbelwoord Q 27.7 byte, woord, Uitgangen dubbelwoord PIB 655 woord, Ingangsperiferie dubbelwoord PQB 653 woord, Uitgangsperiferie dubbelwoord M 55.0 byte, woord, Merkers dubbelwoord T 114 -- Timers C 13 -- Tellers DBX 2001.6 byte (DBB), woord (DBW), Via het DB-register dubbelwoord (DBD) geadresseerde data DIX 406.1 byte (DIB), woord (DIW), Via het DI-register dubbelwoord (DID) geadresseerde data L 88.5 byte (LB), woord (LW), Lokale-datastack dubbelwoord (LD) 2 Directe adressering Lokale data De instructie bevat het adres waaronder de waarde van de operand opgeslagen is. Bij STEP7 gebeurt de directe adressering op exact dezelfde manier als bij STEP5. Het verschil met S5 bestaat erin dat er met S7 een onderscheid kan gemaakt worden tussen de ingangen en de uitgangen bij directe toegang tot de periferie. Men heeft slechts toegang tot de ingangen in de read -modus (L PIW) en tot de uitgangen in de write - modus (T PQW). Bij STEP7 heeft men bovendien toegang tot de lokale-datastack. Bijvoorbeeld: A L 12.6 (afvragen op toestand 1 van de lokale-databit op het adres 12.6) L LW 12 (laden van het lokale-datawoord in de accumulator 1) DBX/DIX Men heeft ook directe toegang tot de inhoud van de databouwstenen, wanneer deze met de gepaste instructie geopend zijn : A DBX 12.6 A DIX 12.6 (afvragen op toestand 1 van de databit van een DB. Deze bit heeft het adres 12.6) (afvragen op toestand 1 van de databit van een instantiebouwsteen met het adres 12.6) L DBB 12 (laden van de databyte 12 van de DB in de accumulator 1) L DIB 12 (laden in de accumulator 1 van de databyte 12 van de instantie- DB (DI-register)) pagina 2

Directe en indirecte adressering Directe adressering Indirecte adressering in het geheugen A I0.0 A I[MD2] // AND-instructie met de ingangsbit waarvan het adres in MD2 staat L IB20 L IB[DBD4] // Laadt in accu 1 de ingangsbyte waarvan het adres in DBD4 staat OPN DB4 OPN DB[MW7] // Opent de databouwsteen waarvan het nummer in MW7 staat 3 De S7 STL-instructies doen een beroep op een adres in twee delen dat de geheugencel van de te bewerken waarde aangeeft. Het eerste deel van het adres is de identificatie van de operand (bijvoorbeeld IB). Dit eerste deel is zowel nodig voor de directe adressering als voor de indirecte adressering van het geheugen. Het tweede deel van het adres is verschillend voor de twee soorten adressering. Directe adressering Het tweede deel van het adres is de precieze plaats in het geheugen, aangegeven door de identificatie van de operand. Het adres verwijst direct naar de geheugencel van de waarde. Voorbeelden van directe adressering: A I0.0 // voert een AND-instructie uit met de ingangsbit I0.0 L IB20 // laadt de waarde van ingangsbyte 20 in de accumulator 1 OPN DB4 // opent de databouwsteen 4 = Q8.0 // kopieert de toestand van het RLO in de uitgangsbit 8.0 Indirecte adressering Het tweede deel van het adres geeft indirect de geheugenplaats van de waarde aan met behulp van een pointer. De pointer kan zijn: - een woord met het nummer van een timer, een teller, een databouwsteen, een functie of een functiebouwsteen. - een dubbelwoord met de precieze geheugenplaats van een waarde. Voorbeelden van indirecte adressering: L C[MW44] // laadt de telwaarde vanaf het nummer van de teller // waarvan de precieze geheugenplaats bepaald is door // de waarde van MW44 A I[MD2] // vraagt de signaaltoestand af van de ingang waarvan het adres // zich in de pointer MD2 bevindt De indirecte adressering kan alleen in STL geprogrammeerd worden. De andere mogelijkheden van indirecte adressering zijn de indirecte intrazonale en interzonale adressering per register. Voor uitgebreidere informatie, zie het STL manual" STEP7, hoofdstuk 9. pagina 3

Indirecte adressering van het geheugen Pointer in het formaat woord L 11 T MW 60 OPN DB [MW 60] OPN DB 11 Voor timers, counters en bouwsteenoproepen Bit 15 7 0 BBBB BBBB BBBB BBBB Pointer in het formaat dubbelwoord L P#24.0 T MD 50 Andere instructies L I W [MD50] L IW 24 Bereik Toegangs- Adres breedte Bit 31 23 15 7 0 0000 0000 0000 0BBB BBBB BBBB BBBB BXXX 4 Indirecte adressering Met STEP7 kan er indirect geadresseerd worden. van het geheugen De adressering gebeurt door middel van een merkerwoord of een datawoord (DB of lokale data) voor de oproep van bouwstenen, de timers en de tellers. Voor de andere instructies gebruikt men een merkerdubbelwoord of een datadubbelwoord. De parameter moet opgeslagen worden in het dubbelwoord in het pointerformaat, bijvoorbeeld L P#24.0 laadt het byte-adres 24 en het bit-adres 0 in het pointerformaat. Bij de instructie geeft men het bereik (I, Q, M, etc.), de toegangsbreedte (bit, byte, woord en dubbelwoord) en een operand aan. Deze laatste bevat het adres van de instructie. Pointerformaat: Pointer in het formaat woord: formaat INTEGER (geheel getal) Pointer in het formaat dubbelwoord : Bit 31 23 15 7 0 0000 0000 0000 0BBB BBBB BBBB BBBB BXXX BBB_BBBB_BBBB_BBBB_B= byte-adres XXX = bitadres pagina 4

Voorbeeld van indirecte adressering e 5 Beschrijving In het bovenstaande voorbeeld is er in het netwerk 1 een databouwsteen geopend door indirecte adressering. Om deze instructie uit te voeren, hebben we een parameter van het type geheel getal gedeclareerd (dbnr) die het nummer van de te openen databouwsteen zal krijgen. Dit nummer wordt getransfereerd naar het merkerwoord 100. Om een databouwsteen door indirecte adressering te openen, kan het DBnummer in een woord opgeslagen worden. In het netwerk 2 hebben we een lus geprogrammeerd die de eerste tien datawoorden wist. Om de lus te programmeren, hebben we de instructie LOOP gebruikt. De transfer van de wiswaarde wordt gerealiseerd door indirecte adressering. Alvorens met de lus te beginnen, hebben we het merkerdubbelwoord MD40 (de pointer) geladen met het adres van het laatste te wissen datawoord (dit is woord 18). Bij elke lusdoorgang wordt het byte-adres dat opgeslagen is in MD40 met 2 verminderd, aangezien we de bouwsteen woord per woord wissen. Opmerking Opdat het programma leesbaar zou blijven, hebben we geen test van het bestaan van de databouwsteen geprogrammeerd. In de praktijk is het ook interessant, het beginadres en de lengte van het te wissen bereik parametreerbaar te maken. pagina 5

Adressenregisters in het systeem SIMATIC S7 Adressenregisters AR1 en AR2 Bit 31 23 15 7 0 AR1 a000 0RRR 0000 0BBB BBBB BBBB BBBB BXXX Bit 31 23 15 7 0 AR2 a000 0RRR 0000 0BBB BBBB BBBB BBBB BXXX a = 0 intrazone a = 1 interzone RRR = zone-identificatie als a=1 BBB_BBBB_BBBB_BBBB_B= byte-adres XXX = bitadres 6 Opmerking Nota Verklaring Er bestaan twee adressenregisters in de SIMATIC S7, de registers AR1 en AR2. Deze registers worden ook impliciet gebruikt door STEP7 voor tijdelijke opslag in het buffergeheugen. Namelijk voor AR1 bij de transfer van complexe actuele parameters naar de in de FC of de FB opgeroepen bouwsteen en de read - of write -toegang tot de formele operanden in de opgeroepen bouwsteen, voor AR2 bij de oproep van een FB met een bijhorende instantiedatabouwsteen en de toegang tot één van de instantie-data. Wanneer de bovenstaande gevallen zich voordoen in het programma, moet eerst de inhoud van de adressenregisters in het programma bewaard worden. Om zeker te zijn van een correcte uitvoering van de functiebouwstenen, mag het register AR2 niet veranderd worden binnen de functiebouwstenen. De adressenregisters kunnen gebruikt worden voor de indirecte adressering. We beschikken over SIMATIC S7-instructies die voorzien zijn om deze registers te gebruiken. Voorbeeld : A I [AR1,P#12.2], waarbij de verplaatsing (offset P#12.2 opgeteld wordt bij de inhoud van AR1 vóór de uitvoering van de instructie. pagina 6

Structuur van de adressenregisters Structuur : 31 23 15 7 0 10000RRR 00000BBB BBBBBBBB BBBBBXXX Codering : Bit 31=1 het adressenregister bevat een adres met zone-identificatie Bit 31=0 het adressenregister bevat een adres zonder zone-identificatie Interzone-adres : (bit 31 = 1) RRR zone-identificatie: 000 periferie 001 ingangen 010 uitgangen 011 merkers 100 data in register DB1 (DB) 101 data in register DB2 (DI) 110 lokale data van de bouwsteen 111 lokale data van de oproepende bouwsteen Intrazone-adres : B...B nummer van geadresserde byte XXX nummer van geadresseerde bit 7 Adressenregister Deze voorstelling wordt in het gehele systeem gebruikt in het geval van indirecte adressering. De adressenregisters bevatten de intrazonale en interzonale adressen voor de instructies die geadresseerd zijn met indirecte adressering per register. De adressenregisters worden ook gebruikt om complexe datatypes, bijvoorbeeld arrays, onder de vorm van parameters naar codebouwstenen te transfereren. Voorinstelling van Voor de voorinstelling van de adressenregisters hebben we de instructies LAR1 en het adressenregister LAR2 ter beschikking. De instructies TAR1 en TAR2 zijn voorzien om de inhoud van de adressenregisters af te vragen. De constante pointer P# laat toe, de zone-identificatie en het byte- of bitadres in de adressenregisters in te geven. De compiler voorziet in de beschreven configuratie. Voorbeeld : LAR1 P# I 100.0 Het adressenregister 1 is vooringesteld met de interzonale pointer I100.0. pagina 7

Wijziging van adressenregisters LAR1 operand Laadt de waarde van de operanden in het adressenregister 1. De inhoud van de ACCU 1 wordt niet veranderd. LAR2 operand Laadt de waarde van de operanden in het adressenregister 2. De inhoud van de ACCU 1 wordt niet veranderd. TAR1 operand Transfereert de inhoud van het adressenregister 1 naar de operanden. AR1 wordt niet veranderd. TAR2 operand Transfereert de waarde van het adressenregister 2 naar de operanden. AR2 wordt niet veranderd. "operand" kan zijn: ACCU1, ARn, DBD n, DID n, LD n, MD n TAR +AR1 (2) +AR1 (2) pointerconstante Verwisselt de inhoud van AR1 en AR2 Telt de inhoud van ACCU1-L op bij AR1 of AR2 Telt de pointer-constante op bij AR1 of AR2 Deze instructies hebben geen invloed op het statuswoord. 8 Opmerking De pointerconstante voor de instructies +AR1 en +AR2 moet gedefinieerd worden in het formaat P#Byte.Bit. De inhoud van ACCU1-L kan zijn: -32 768 < ACCU1-L < 32 767. LAR1 Er kan in de pointer een lokale variabele gedeclareerd worden. Voorbeeld: LAR1 P##START, als de lokale variabele de identificatie START draagt. pagina 8

Indirecte adressering per register Voorbeeld : AR1 31 23 15 7 0 00000000 00000000 00000000 01010000 00000RRR 00000BBB BBBBBBBB BBBBBXXX Ingang : + 200 LAR1 P#10.0 // Voorinstelling L MW [AR1, P#200.0] L MW 210 Bereik Toegangs- Adressen- Constante Uitgevoerde breedte register verschuiving instructie (verplaatsing) 9 Indirecte adressering In STEP7 kunnen instructies indirect geadresseerd worden via een adressenper register register. We beschikken hiervoor over twee adressenregisters (AR1, AR2). Bij de instructie specificeren we een bereik (bijvoorbeeld: M, I, Q, etc.), een toegangsbreedte (byte, woord, etc.), een adressenregister en een constante verschuiving (offset). Het gespecificeerde adressenregister bevat het basisadres. Met het basisadres en de verschuiving (offset), bepaalt men het adres waar de waarde van de operand opgeslagen is. De pointerconstante (P#...) in STEP7 laat toe, de adresstructuur van het adressenregister te gebruiken. Zoals bij de operandeningave, kan men het basisadres voor het adressenregister en de verschuiving definiëren met behulp van de pointerconstanten (zie ook: interzonale indirecte adressering per register). Bij de definitie van een adres via de accumulator moet er rekening gehouden worden met de structuur van het adressenregister. Toepassing Dynamische adressering, adressering van data-elementen in lusprogrammering. pagina 9

Indirecte interzonale adressering per register Voorbeeld : AR1 31 23 15 7 0 10000001 00000000 00000011 00100000 10000RRR 00000BBB BBBBBBBB BBBBBXXX Ingang : + 110 LAR1 P#I100.0 // Voorinstelling L B [AR1, P#110.0] LIB 210 Toegangs- Adressen- Constante Uitgevoerde breedte register verschuiving instructie (verplaatsing) 10 Interzonale indirecte adressering per register De adressering per adressenregister kan ook interzonaal uitgevoerd worden. In de instructies geeft men alleen de vaste toegangsbreedte (byte, woord, etc.), een adressenregister en een constante verschuiving aan. Het gespecificeerde adressenregister bevat het basisadres met het overeenstemmende bereik. Met het basisadres en de verschuiving bepaalt men het adres waar de waarde van de operand opgeslagen is. Het adres wordt bepaald door een binaire optelling. De indirecte adressering per register bestaat ook voor bitadressen. Voorbeeld: LAR1 P# I100.0 A [AR1, P#110.5] A I 210.5 instructie uitgevoerd voor bovenstaande registerinhoud Toepassingen : Hetzelfde type structuur, maar andere databereiken, dynamische toegang tot de data. Toegang tot lokale data van de oproepende bouwsteen. Toegangsbreedtes: declaratie D = dubbelwoord declaratie W = woord declaratie B = byte zonder declaratie = bit pagina 10

Status van adressenregisters visualiseren DB10.DBW3 11 De Program Editor kan u verschillende mogelijkheden tonen, om u te helpen, uw programma te corrigeren. U kan items selecteren zoals de RLO-bit en de statusbit of de inhoud van de bijhorende registers. LAD STL In LAD-modus toont de editor de statusbit (stroom op contacten) en het RLO (stroom op rail). Instructies met toegang tot woordwaarden zoals timers en tellers tonen ook de inhoud van de actuele waarde (of de inhoud van accumulator 1). In STL-modus voorziet de editor meer opties. Naast de in LAD beschikbare debug-tools, kan u de status van andere objecten bekijken. Default status: de inhoud van accumulator 1, tenzij er timer- of tellerinstructies gebruikt werden. In timer- en teller-instructies wordt de actuele tijd of telwaarde getoond (in hexadecimaal). Registers en accumulatoren: de inhoud van accumulator 1 en 2, de inhoud van adresregisters AR1 en AR2, en de twee databouwsteen-registers DBR1 en DBR2. Indirect: de inhoud van een indirecte geheugenreferentie wordt getoond in de statuskolom. Dit betekent dat de pointer zelf getoond wordt, in plaats van de data waarnaar hij verwijst. Dit laat u toe te controleren, of de referentie wel degelijk naar de juiste data verwijst, wanneer u indirecte adressering gebruikt. Om de informatie te kiezen die u in de online STL-status wil zien, selecteert u Options -> Customize -> markeer de gewenste kolommen in de dialoogbox -> bevestig met OK. pagina 11