Sunteți pe pagina 1din 9

Machine Translated by Google

Sfat Simatic Sfat nr. VC

SFATURI SIMATIC
Automatizare total integrată
Note de aplicare

grup Subiect și autor


Automatizare Indicatori și adresare indirectă în PLC-uri S7, volumul 1 - memorie
Adresarea indirectă
Eddie Prince

Prezentare generală – Adresarea indirectă în PLC-urile S7


Această notă de aplicație oferă o prezentare generală a metodelor și structurilor de adresare indirectă
disponibile în limbajul Statement List (STL) pentru PLC-urile S7. Descrie tipurile de adresare disponibile, inclusiv
adresarea imediată, adresarea directă și adresarea indirectă, cu un accent principal pe adresarea indirectă de
memorie. Documentul include, de asemenea, o bibliotecă STEP7 arhivată de funcții care utilizează aceste metode
de adresare. Funcțiile din bibliotecă demonstrează utilizarea adresei indirecte de memorie pentru a citi și a scrie
în matrice de octeți, numere întregi și numere reale.

Structura unei instrucțiuni STL

Declarația STL este cea mai mică „piesă” a unui program utilizator. Acesta definește o sarcină specifică pe care să
o efectueze CPU, cum ar fi încărcarea unei variabile într-un registru sau efectuarea unei operații matematice.
Structura unei instrucțiuni STL este prezentată mai jos, iar elementele individuale ale instrucțiunii sunt descrise
în continuare.

Operațiunea de etichetare Operand cometariu

Buclă: L MB 12 // Încărcați accu1

A) Etichetă – eticheta este un „nume” opțional atribuit unei declarații utilizate pentru „Sărit” sau
Operații „buclă”.

B) Operare – operațiunea este „sarcina care trebuie efectuată”, cum ar fi încărcare, transfer, adăugare.

C) Operand – operandul este „variabila” (sau datele) care trebuie manipulată de această declarație.
Operandul poate fi o „valoare” reală sau poate fi o adresă de memorie care conține datele sau poate fi
un pointer către o adresă de memorie care conține datele

D) Comentariu – Câmp text opțional pentru documentarea codului programului

Următoarele secțiuni vor descrie diferite metode de adresare a operandului.

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă în memorie

Copyright 2000 de către SIEMENS pagina 1 / 9 Revizia 4

Clienții SIMATIC NET pot folosi gratuit sfaturile aplicației. Aceste sfaturi sunt doar o abordare generală a utilizării SIMATIC NET cu diverse aplicații.
Aplicația dvs. specifică poate fi diferită. Este responsabilitatea dumneavoastră să utilizați corect SIMATIC NET în aplicațiile dumneavoastră.
Machine Translated by Google

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Memorie indirectă


Adresarea
Tipuri de adresare în S7
Există mai multe metode de bază de adresare care pot fi folosite pentru a „identifica” un operand într-un
controler programabil S7. Aceste tipuri de bază sunt după cum urmează:

A) Adresare imediată – Adresarea imediată se referă la utilizarea unei valori numerice ca


un operand. Un exemplu de listă de instrucțiuni ar fi încărcarea unei constante în acumulator.
Nu există operand „adresă” în această operație, operandul este conținut în instrucțiune

A. L 14 // Încărcați acumulatorul cu valoarea întreagă 14

B) Adresare directă - Adresarea directă se referă la utilizarea unei adrese reale de memorie sau obiect
pentru a specifica locația operandului. Un exemplu de listă de instrucțiuni ar fi încărcarea valorii
conținute în cuvântul Marker 46 în acumulator. Adresa operandului este denumită în mod explicit în
operație
A. L MW46 // Încărcați acumulatorul cu conținutul MW46

C) Adresare indirectă – Adresarea indirectă se referă la utilizarea unui „pointer” pentru a indica unde poate fi
găsită adresa operandului. Un exemplu de listă de instrucțiuni ar fi încărcarea acumulatorului cu conținutul
unui cuvânt de memorie, a cărui adresă este conținută într-un pointer. Adresa operandului nu este
calculată până la runtime. Acoladele sunt folosite pentru a semnifica o adresă indirectă către operand

A. L MW [POINTER_LOCATION] // Încărcați acumulatorul de la un MW a cărui adresă este


stocată ca POINTER în POINTER_LOCATION

Două tipuri de adresare indirectă


Adresarea indirectă în PLC-urile S7 poate fi apoi subdivizată în două tipuri:

A) Adresare indirectă în memorie – În adresarea indirectă în memorie, „pointerul” către adresa


operandului este stocat într-o locație de memorie. Indicatorii pot fi stocați în locații „cuvânt dublu”
în memoria Marker (MD), Local (LD), Global Data Block (DBD) sau Instance Data Block (DID).
Adresarea indirectă de memorie este convenabilă de utilizat atunci când aveți mai multe pointeri pe
care îi folosiți în program

B) Registru Adresare indirectă – În registrul de adresare indirectă, un registru de adrese este utilizat
pentru a calcula adresa reală a datelor. „Indicatorul” către adresa reală a datelor este stocat într-unul
dintre cele două registre de adrese ale PLC-ului, iar acesta este combinat cu o valoare „offset” pentru
a calcula adresa variabilei. Înregistrați adresa indirectă este forma cel mai bine acceptată de STL,
deoarece puteți afișa direct conținutul registrului de adrese pentru a vedea unde este îndreptat
indicatorul. Adresarea indirectă Register se execută, de asemenea, mai rapid decât adresarea indirectă
în memorie. Adresarea indirectă a Registrului poate fi folosită și pentru situații de programare în care
nu cunoașteți în mod explicit Zona de memorie a datelor reale până la timpul de execuție. Înregistrați
adresarea indirectă este tratată mai complet într-o notă a aplicației însoțitoare „Indicatori și adresare
indirectă în PLC-urile S7, volumul 2 – Înregistrați adresarea indirectă”

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă în memorie

Copyright 2000 de către SIEMENS pagina 2 / 9 Revizia 4

Clienții SIMATIC NET pot folosi gratuit sfaturile aplicației. Aceste sfaturi sunt doar o abordare generală a utilizării SIMATIC NET cu diverse aplicații.
Aplicația dvs. specifică poate fi diferită. Este responsabilitatea dumneavoastră să utilizați corect SIMATIC NET în aplicațiile dumneavoastră.
Machine Translated by Google

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Memorie indirectă


Adresarea
Adresarea indirectă în memorie a memoriei Marker este prezentată mai jos:

Exemplu cometariu

L MW [MD44] Acumul de încărcare din cuvântul marker a cărui adresă este stocată în MD 44, Dacă
MD44 conține Pointerul P#122.0, atunci această operație va încărca conținutul MW122
în acumulator.

L MW [DBD12] Acum . de la cuvântul marcator a cărui adresă este în DBD 12, Dacă DBD
12 conține pointerul P#122.0, atunci această operație va încărca conținutul
MW122 în acumulator.

Adresarea indirectă în memorie a memoriei de intrare periferică este prezentată mai jos:

Exemplu cometariu

L PIB [MD22] Acumul de încărcare de la octetul PI a cărui adresă este în MD 22, Dacă MD22
conține pointerul P#122.0, atunci această operație va încărca conținutul PIB 122 în
acumulator.

L PIW [DBD38] Încărcare acum. din cuvântul PI a cărui adresă este în DBD 38, dacă DBD 38
conține Pointerul P#122.0, atunci această operație va încărca conținutul PIW 122 în
acumulator.

Register Adresarea indirectă a memoriei de intrare periferică este prezentată mai jos:

Exemplu cometariu

LAR1 P#20.0 Preîncărcați Registrul de adrese 1 (AR1) cu un indicator (20.0). Apoi încărcați
L acumulatorul cu conținutul Marker Byte adresat de suma AR1 și offset-ul
MB [AR1, P#0.0]
P#0.0. În acest caz, acumulatorul ar fi încărcat cu conținutul MB20

Caz special – Adresarea indirectă a obiectelor bloc


Anumite obiecte bloc din arhitectura PLC S7 sunt identificate printr-o adresă „întreg”.
mai degrabă decât o adresă structurată Byte.Bit. Aceste obiecte includ următoarele:

Blocuri de date globale DB xxx Blocuri de date ale instanțelor ÎN xxx

Cronometre T xxx Contoare C xxx

Funcții FC xxx Blocuri funcționale FB xxx

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă în memorie

Copyright 2000 de către SIEMENS pagina 3 / 9 Revizia 4

Clienții SIMATIC NET pot folosi gratuit sfaturile aplicației. Aceste sfaturi sunt doar o abordare generală a utilizării SIMATIC NET cu diverse aplicații.
Aplicația dvs. specifică poate fi diferită. Este responsabilitatea dumneavoastră să utilizați corect SIMATIC NET în aplicațiile dumneavoastră.
Machine Translated by Google

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Memorie indirectă


Adresarea

Aceste obiecte bloc pot fi adresate indirect prin utilizarea unei forme întregi de adresare indirectă de memorie.
Exemple de această formă de adresare indirectă sunt prezentate în tabelul de mai jos

Adresarea indirectă în memorie a obiectelor bloc

Exemplu cometariu

OPN DB [MW22] Aceasta va deschide un bloc de date a cărui adresă (numărul blocului de date)
este stocată ca număr întreg în MW22. Dacă MW22 conține valoarea întreagă
126, apoi blocul de date 126 va fi deschis.

RT [MW14} Această operațiune resetează cronometrul al cărui număr este stocat în MW14.
Dacă MW14 conține 24, atunci Timer #24 va fi resetat

Indicatori

Pointerii sunt „tipuri de date” speciale care sunt structurate pentru a conține o adresă de memorie S7. Pointerii pot
fi stocați ca „date” fie în locații de memorie, fie în registrele CPU S7. Există trei „clase” de pointeri conținute în
arhitectura S7. Acestea includ:

A) Pointeri de zonă – o structură de 32 de biți care specifică o anumită adresă

B) Pointeri DB – o structură de 48 de biți care combină un pointer de zonă și un număr DB de 16 biți

C) ANY Pointers – o structură de 80 de biți cu specificații suplimentare pentru adresa variabilă.

Această notă de aplicație va descrie „indicatori de zonă” în detaliu. Mai multe informații despre pointerii DB și
ORICE pointeri pot fi găsite și în nota aplicației însoțitoare „Pointers and indirect addressing in S7 PLCs, Volume 2
– Register Indirect Addressing”.

Indicatori de zonă

În general, un indicator de zonă trebuie să conțină cele trei componente de bază, așa cum se arată mai jos,
pentru a specifica o locație în memoria S7

Zona de adresă Adresa octet Adresă de biți

A) Zona de adresă – zona de adrese a adresei descrie zona de memorie care este adresată. În general, zonele
de adrese S7 includ I/O periferice (PI și PQ), imagine de intrare și ieșire (I și Q), memorie de marcare (M),
date globale (DBx), date de instanță (DIx), date locale temporare (L ), și date locale temporare ale „blocului
apelant” (V). Zona de adrese poate conține, de asemenea, o specificație „nulă”, adică indicatorul care conține
doar o valoare „byte.bit”

B) Adresă octet – adresa octet este un număr care specifică decalajul octet în memorie
zonă. Adresa octet a unei zone de adrese începe de la octetul 0

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă în memorie

Copyright 2000 de către SIEMENS pagina 4 / 9 Revizia 4

Clienții SIMATIC NET pot folosi gratuit sfaturile aplicației. Aceste sfaturi sunt doar o abordare generală a utilizării SIMATIC NET cu diverse aplicații.
Aplicația dvs. specifică poate fi diferită. Este responsabilitatea dumneavoastră să utilizați corect SIMATIC NET în aplicațiile dumneavoastră.
Machine Translated by Google

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă


în memorie
C) Adresă de biți – aceasta conține numărul de biți al octetului adresat de mai sus. Adresa de biți
este un număr de la 0 la 7.

Pointerii de zonă pe 32 de biți sunt construiti așa cum se arată în figura de mai jos. Este format din 4 octeți de
informații. Conținutul octetilor este descris mai jos.

Schimbați N Schimb N+1 Schimb N+2 Schimb N+3

Tip de zonă 00000AAAA YYYYYYYY YYYYYXXX

Unde:

XXX = adresa biților (valorile variază de la „000” la „111”

YYYYYYYYYYYYYYYY = Adresă octet (valorile variază de la hex „0000‟ la „FFFF‟

Tip de zonă = zona de memorie așa cum este specificat în tabelul de mai jos

„Tipul de zonă” Tip de zonă

Valoarea biților

00000000 „Area intern pointer”, adică un pointer care nu include


Tip de zonă de adresă în valoarea indicatorului

10000000 I/O periferice (PI sau PQ)

10000001 Intrări (I)

10000010 Ieșiri (Q)

10000011 Memorie marker (M)

10000100 Date globale (DBX)

10000101 Date de instanță (DIX)

10000110 Date locale temporare (L)

10000111 Date locale temporare ale blocului predecesor (apelant) (V)

Un tip de date Pointer este identificat în limbajele de programare S7 prin formatul „P#adresă”, unde „adresă” este
adresa de memorie care trebuie transformată într-un pointer, de exemplu:

Octet 1 Octetul 2 Octetul 3 Octetul 4

P# 12.0 creează o valoare indicator de P# 00000000 00000000 00000000 01100000

12.3 creează o valoare indicator de 00000000 00000000 00000000 01100011

P# M12.3 creează o valoare pointer de 10000011 00000000 00000000 01100011

Pointerii pot fi, de asemenea, creați folosind numele simbolic al unei locații de memorie. De exemplu, dacă tabelul de
simboluri include un simbol numit „Valve_12” care este atribuit lui M12.3, atunci folosind

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă în memorie

Copyright 2000 de către SIEMENS pagina 5 / 9 Revizia 4


Clienții SIMATIC NET pot folosi gratuit sfaturile aplicației. Aceste sfaturi sunt doar o abordare generală a utilizării SIMATIC NET cu diverse aplicații.
Aplicația dvs. specifică poate fi diferită. Este responsabilitatea dumneavoastră să utilizați corect SIMATIC NET în aplicațiile dumneavoastră.
Machine Translated by Google

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă


în memorie
indicatorul „P# Valve_12” creează aceeași valoare indicator ca „P# M12.3”. Un tip de date pointer poate fi apoi
utilizat ca „operanzi imediati” în instrucțiunile STL, așa cum se arată în tabelul de mai jos.

Pregătirea indicatorilor pentru utilizare ca adrese indirecte

Operațiunea Pointerului „Zona Internă”. Descriere

LP# 123.0 Această operație instruiește CPU să încarce


acumulatorul cu un „pointer intern de zonă” pentru „123.0”
După executarea acestei instrucțiuni, acumulatorul va conține
următoarea valoare de 32 de biți:
00000000 00000000 00000011 11011000

LP# 123.0 Această operație în doi pași încarcă un „pointer intern de zonă” în
acumulator și apoi transferă valoarea indicatorului în MD4, care
T MD4 poate fi acum utilizat pentru o operație de adresare indirectă.
MD4 conține acum
00000000 00000000 00000011 11011000

LP# 123.0 Această operație în trei pași încarcă un indicator cu valoarea 123,0
în acumulator și stochează indicatorul în locația cuvântului dublu
T MD4 MD4. A treia instrucțiune va folosi apoi „indicatorul” găsit în MD4
. pentru a indica locația M123.0 și va încărca conținutul MB123 în
acumulator.
L MB [MD4]
Operațiunea indicatorului „Încrucișare zonă”. Descriere

LP#M123.0 Această operație instruiește CPU să încarce


acumulatorul cu un „pointer de trecere a zonei” pentru
„M123.0” După executarea acestei instrucțiuni,
acumulatorul va conține următoarea valoare de 32 de biți:
10000011 00000000 00000011 11011000

LP#M123.0 Această operație în doi pași încarcă un pointer către M123.0 în


acumulator și apoi transferă valoarea pointerului în MD4, care
T MD4 poate fi acum utilizat pentru o operație de adresare indirectă.
MD4 conține acum
10000011 00000000 00000011 11011000

LP#M123.0 Această operație în trei pași încarcă un pointer către M123.0 în


acumulator și stochează indicatorul în locația cuvântului dublu
T MD4 MD4. A treia instrucțiune va folosi apoi „indicatorul” găsit în MD4
. pentru a indica locația M123.0 și va încărca conținutul MB123 în
acumulator.
LB [MD4]

Lucrul cu Adresarea indirectă în memorie - Instrucțiuni


Adresarea indirectă a memoriei poate fi utilizată în următoarele instrucțiuni din lista de instrucțiuni:

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă în memorie

Copyright 2000 de către SIEMENS pagina 6 / 9 Revizia 4


Clienții SIMATIC NET pot folosi gratuit sfaturile aplicației. Aceste sfaturi sunt doar o abordare generală a utilizării SIMATIC NET cu diverse aplicații.
Aplicația dvs. specifică poate fi diferită. Este responsabilitatea dumneavoastră să utilizați corect SIMATIC NET în aplicațiile dumneavoastră.
Machine Translated by Google

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Memorie indirectă


Adresarea
Operațiune Mnemonice STL Probă

Operații logice binare A, AN, O, ON, X, XN AM [MD12]

OT [QW12]*

Memoria binară =, S, R, FP, FN = Q [MD66]


Funcții
RC [MW88]*

Funcțiile acumulatorului L, T T QW [DID44]

LT [MW12]*
Funcții de bloc OPN (aDB de deschidere) OPN DB [mw12]*

(Specificarea indirectă a S, R, CU, CD (contra-acțiuni) CU C [DBW56]*


memoriei întregi a obiectelor))
SP, SE, SD, SS, SF (temporizatoare de pornire) SE T [MW12]*

CALL, UC, CC (blocuri de coduri de apelare) UC FC [MW12]*


*
Indicatori întregi de memorie pentru obiecte bloc

Lucrul cu Adresarea indirectă a memoriei - Indexare


Indicatorii de zonă pot fi utilizați pentru a efectua citirea și scrierea indexate dintr-un tabel sau o matrice de
elemente de date. Acest lucru poate fi realizat cu ușurință prin crearea unui pointer de zonă care conține adresa
de pornire a tabelului de date și apoi adăugarea unui „increment de pointer” la indicatorul de tabel care este egal
cu „indexul” dorit în tabelul de date. Exemplul de mai jos arată o rutină pentru accesarea unui element din tabelul
de octeți începând cu locația MB20

// Aceasta presupune că există un simbol întreg numit „index” care // Locație Element
conține indexul (de la 0 la 179) în tabel de masă

indicele L // încărcați o variabilă „index” în tabel MB20 Elementul 0

SLD 3 // Schimbați la stânga cu 3 biți pentru a crea un „indicator de index” MB21 Elementul 1

LP#20.0 // încarcă indicatorul la începutul tabelului MB22 Elementul 2

+D // Adăugați „indicator de index” la „începutul indicatorului de tabel” MB24 Elementul 3

T MD100 // Stocați pointerul indexat în MD100 … …


L MB [MD100] // citește elementul tabelului în acumulator MB200 Element 180

Exemplu de bibliotecă de funcții STEP7


Obiectul inserat mai jos este o bibliotecă arhivată de funcții STEP7 care demonstrează utilizarea adresei indirecte
de memorie pentru efectuarea unor operațiuni de manipulare a datelor utilizate în mod obișnuit cu privire la
matrice. Puteți copia acest obiect arhivat într-un folder de pe hard disk și apoi puteți prelua arhiva folosind
managerul de programe STEP7. Odată ce arhiva este preluată, aceasta va adăuga o nouă bibliotecă, numită
„Array_Functions” la pachetul dumneavoastră STEP7. Funcțiile din această bibliotecă sunt

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă în memorie

Copyright 2000 de către SIEMENS pagina 7 / 9 Revizia 4

Clienții SIMATIC NET pot folosi gratuit sfaturile aplicației. Aceste sfaturi sunt doar o abordare generală a utilizării SIMATIC NET cu diverse aplicații.
Aplicația dvs. specifică poate fi diferită. Este responsabilitatea dumneavoastră să utilizați corect SIMATIC NET în aplicațiile dumneavoastră.
Machine Translated by Google

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Memorie indirectă


Adresarea
apoi disponibil pentru utilizare în dezvoltarea programelor PLC. De asemenea, puteți deschide această
bibliotecă în Program Manager și transferați programul STEP7 numit „Simple Arrays” într-un PLC S7 pentru
testare.

Programul „Simple Arrays” include un set de șase Funcții (FC10 până la FC15) pentru citirea și scrierea în matrice
de date BYTE, INTEGER sau FLOATING POINT. Programul include, de asemenea, un OB1 principal, trei blocuri
de date care conțin matrice de testare și trei tabele TVA pentru exercitarea acestor funcții.

Biblioteca cu șase funcții de manipulare a matricei va fi disponibilă pentru utilizare în catalogul de instrucțiuni,
așa cum se arată în figura de mai jos.

Informații conexe

Mai multe informații detaliate despre limbajul de programare Listă de instrucțiuni S7 pot fi găsite într-un
manual de Hans Berger numit „Automatizarea cu STEP7 în STL și SCL” ISBN
Numărul 3-89578-140-1

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă în memorie

Copyright 2000 de către SIEMENS pagina 8 / 9 Revizia 4

Clienții SIMATIC NET pot folosi gratuit sfaturile aplicației. Aceste sfaturi sunt doar o abordare generală a utilizării SIMATIC NET cu diverse aplicații.
Aplicația dvs. specifică poate fi diferită. Este responsabilitatea dumneavoastră să utilizați corect SIMATIC NET în aplicațiile dumneavoastră.
Machine Translated by Google

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Memorie indirectă


Adresarea
Considerații hardware și software

Note generale

Sfaturile pentru aplicații SIMATIC sunt furnizate pentru a oferi utilizatorilor produselor Simatic ale Siemens câteva
indicații cu privire la modul în care, din punctul de vedere al tehnicii de programare, pot fi rezolvate anumite sarcini.
Aceste instrucțiuni nu pretind să acopere toate detaliile sau variațiile echipamentelor și nici nu prevăd orice
eventualitate posibilă. Utilizarea Sfaturilor de aplicație Simatic este gratuită.

Siemens își rezervă dreptul de a face modificări în specificațiile prezentate aici sau de a face îmbunătățiri în orice
moment, fără notificare sau obligație. Nu exonerează utilizatorul de responsabilitatea de a folosi practici corecte în
aplicarea, instalarea, operarea și întreținerea echipamentului achiziționat. În cazul în care apare un conflict între
informațiile generale conținute în această publicație, conținutul desenelor sau al materialului suplimentar, sau
ambele, acestea din urmă vor avea prioritate.

Siemens nu este răspunzător, indiferent de motivul legal, pentru daune sau vătămări corporale rezultate din
utilizarea sfaturilor de aplicare.

Toate drepturile rezervate. Orice formă de duplicare sau distribuire, inclusiv extrase, este permisă numai cu
autorizarea expresă a SIEMENS.

Indicatori și adresare indirectă în PLC-urile S7, volumul 1 - Adresare indirectă în memorie

Copyright 2000 de către SIEMENS pagina 9 / 9 Revizia 4


Clienții SIMATIC NET pot folosi gratuit sfaturile aplicației. Aceste sfaturi sunt doar o abordare generală a utilizării SIMATIC NET cu diverse aplicații.
Aplicația dvs. specifică poate fi diferită. Este responsabilitatea dumneavoastră să utilizați corect SIMATIC NET în aplicațiile dumneavoastră.

S-ar putea să vă placă și