8/10/2019 Simatic S7 Instruction set
1/31
8/10/2019 Simatic S7 Instruction set
2/31
S7 Instructieset
8/10/2019 Simatic S7 Instruction set
3/31
S7 instuctieset Pagina - 1 /29 -
KHLim dep IWT BN -
5. Instructieset S7
5.1. Bit instructies
Bit instructies werken met twee binaire waarden, 1 en 0. Het kan een ingang, een uitgang of een andercontact zijn waarbij 1 aangeeft dat de ingang of het contact geactiveerd is of dat de uitgang aangestuurd is. 0
geeft aan dat de ingang of het contact niet geactiveerd is of de uitgang niet aangestuurd is.
Het resultaat van de bewerking noemt men Result of Logic Operation of RLO
De elementen kunnen zichtbaar gemaakt worden in STL wat staat voor Statement List, in LAD wat staat
voor Ladder logic en in FBD wat staat voor Function Block Diagram
Overzicht van alle bit elementen :
5.1.1. Afvragen van 1 signaal
Dit element is 1 als er spanning is aan de ingang 0.3
5.1.2. Afvragen van 0 signaal
Dit element is 1 als er geen spanning is aan de ingang 0.4
5.1.3. De aanstuurfunctie
Dit element zal spanning op de uitgang 5.0 brengen als de RLO gelijk is aan 1
5.1.4. De AND instructie
De uitgang zal 1 worden als er spanning is aan ingang 0.1 en0.2 en0.3 enals er geen spanning is aan ingang
0.4
LAD
8/10/2019 Simatic S7 Instruction set
4/31
S7 instuctieset Pagina - 2 /29 -
KHLim dep IWT BN -
STL
FBD
5.1.5. De OR - instructie
De uitgang zal 1 worden als er spanning is aan ingang 0.1 of0.2 of0.3 ofals er geen spanning is aan ingang 0.4
LAD
STL
FBD
8/10/2019 Simatic S7 Instruction set
5/31
S7 instuctieset Pagina - 3 /29 -
KHLim dep IWT BN -
5.1.6. De XOR instructie
De uitgang zal 1 worden als n van beide ingangen 1 is
LAD
STL
FBD
5.1.7. De SET instructie
De set instructie wordt alleen uitgevoerd wanneer de RLO = 1 . Wanneer de RLO =0 zal de status blijven
zoals hij was
In onderstaand voorbeeld zal Merker 0.0 geset worden als de signaalstatus van I0.0 1 is.
LAD
STL
FBD
5.1.8. De RESET instructie
De reset instructie wordt alleen uitgevoerd wanneer de RLO =1 . Wanneer de RLO =0 zal de status blijven
zoals hij was
In onderstaand voorbeeld zal Merker 0.0 gereset worden als de signaalstatus van I0.1 1 is.
LAD
8/10/2019 Simatic S7 Instruction set
6/31
S7 instuctieset Pagina - 4 /29 -
KHLim dep IWT BN -
STL
FBD
5.1.9. De SET/RESET instructie ( reset dominant )
Als de beide voorwaarden set en reset 1 zijn, zal de instructie die als laatste bewerkt wordt prioriteit hebben
boven de andere.
In onderstaand voorbeeld zal merker 0.0 geset worden als de signaalstatus van ingang 0.0 1 is. De merker zal
gereset worden als de signaalstatus van ingang 0.1 1 is. Als de twee ingangen samen een signaalstatus 1
hebben zal de merker gereset worden omdat de reset als laatste geprogrammeerd staat.
LAD
STL
FBD
5.1.10. De RESET/SET instructie ( set dominant )
Als de beide voorwaarden set en reset 1 zijn, zal de instructie die als laatste bewerkt wordt prioriteit hebben
boven de andere.
In onderstaand voorbeeld zal merker 0.0 geset worden als de signaalstatus van ingang 0.0 1 is. De merker zal
gereset worden als de signaalstatus van ingang 0.1 1 is. Als de twee ingangen samen een signaalstatus 1
hebben zal de merker geset worden omdat de set als laatste geprogrammeerd staat.
LAD
8/10/2019 Simatic S7 Instruction set
7/31
8/10/2019 Simatic S7 Instruction set
8/31
S7 instuctieset Pagina - 6 /29 -
KHLim dep IWT BN -
5.1.12. De INVERT - instructie
De Invert instructie zal de toestand van de RLO gaan inverteren.
In ons voorbeeld zal de toestand van M0.0 AND I1.0 omgekeerd worden. De uitgang 5.1 zal dus 1 worden als
de toestand van de serieschakeling van merker en ingang 0 is.
LAD
STL
FBD
5.1.13. De SAVE instructie
Met de SAVE - geheugeninstructie wordt de inhoud van het RLO opgeslagen in de binaire - resultaatbit van het
statuswoord. De statusbit kan weer opgevraagd worden met instructie A BR
LAD
STL
FBD
5.1.14. De CLR / SET instructie
De CLR instructie zorgt ervoor dat het RLO op 0 wordt gezet.De SET instructie zorgt ervoor dat het RLO op 1 wordt gezet.
Deze instructies hebben geen voorstelling in LAD en FBD
8/10/2019 Simatic S7 Instruction set
9/31
S7 instuctieset Pagina - 7 /29 -
KHLim dep IWT BN -
5.1.15. De positieve flankdetectie
Een flankdetectie- functie is nodig wanneer er van een programma- onderdeel afgevraagd wordt, of het voor de
eerste keer is in- of uitgeschakeld.
Als ingang I1.0 voor de eerste keer van 0 naar 1 verandert zal de positieve flankdetectie dit detecteren en de
RLO op 1 brengen voor n PLC cyclus tijd. Een puls van n cyclustijd verschijnt aan de uitgang Q8.0. Voor
de functie van een positieve flank wordt er een flankmerker gespecificeerd waarin de status van het RLO
opgeslagen wordt. Dit is om een aanvullende signaalwissel in de volgende cyclus te identificeren.
LAD
STL
FBD
5.1.16. De negatieve flankdetectie
Bij een negatieve flankdetectie zal de RLO op 1 gebracht worden als de status van ingang 0.0 van 1 naar 0
verandert. Een puls van n cyclustijd zal er verschijnen op uitgang 5.0. In de flankmerker 0.0 wordt de status
van de RLO opgeslagen om in de volgende cyclus gebruikt te kunnen worden.
LAD
STL
FBD
LET OP: in werkelijkheid benvloed de flankdetectie het huidige RLO. Indien niet n maar meerdere inputs
afgevraagd worden, wordt het resultaat van de gehele verknoping afgevraagd op de positieve of negatieve flank.
8/10/2019 Simatic S7 Instruction set
10/31
S7 instuctieset Pagina - 8 /29 -
KHLim dep IWT BN -
5.1.17. Positieve adres flankdetectie
Positieve adres flankdetectie vergelijkt de toestand van ingang 1.0 met de toestand (van die ingang) van de vorige
scan die opgeslagen is in merker 1.0. Als de toestand van de RLO van 0 naar 1 veranderde, zal de toestand
van de RLO 1 zijn na deze instructie.
LAD
STL
FBD
5.1.18. Negatieve adres flankdetectie
Negatieve adres flankdetectie vergelijkt de toestand van ingang 0.0 met de toestand (van die ingang) van de vorige
scan die opgeslagen is in merker 0.0. Als de toestand van de RLO van 1 naar 0 veranderde, zal de toestand
van de RLO 1 zijn na deze instructie.
LAD
STL
FBD
8/10/2019 Simatic S7 Instruction set
11/31
S7 instuctieset Pagina - 9 /29 -
KHLim dep IWT BN -
5.2. TimersEen speciaal gedeelte van het geheugen van de CPU is gereserveerd voor timers. In dit geheugengedeelte is er
voor iedere timer een 16-bit woord gereserveerd. Het aantal beschikbare timers is afhankelijk van de CPU. De
tijdwaarde kan liggen tussen 10 ms en 9990 s ( 2 uur 46 minuten en 30 seconden).
De tijdwaarde zal gestart worden bij een positieve flank aan de set- ingang van de timer. Bij een positieve flank
aan de reset ingang zal de timer stoppen en de uitgang laag worden. De toestand van de timer kan worden
opgevraagd aan uitgang Q. Deze is 1 of 0. De actuele timerwaarde kan binair (L) opgevraagd worden aan
uitgang BI en in BCD code (LC) aan uitgang BCD. Deze waarden dienen in een 16-bit woord worden
opgeslagen.
We hebben keuze uit volgende timers:
5.2.1. Timer met inschakelvertraging S_ODT
8/10/2019 Simatic S7 Instruction set
12/31
S7 instuctieset Pagina - 10 /29 -
KHLim dep IWT BN -
5.2.2. Timer met inschakelvertraging met geheugen S_ODTS
5.2.3. Timer met uitschakelvertraging S_OFFDT
8/10/2019 Simatic S7 Instruction set
13/31
S7 instuctieset Pagina - 11 /29 -
KHLim dep IWT BN -
5.2.4. Pulse S5 timer S_PULSE
5.2.5. Extended pulse timer S_PEXT
8/10/2019 Simatic S7 Instruction set
14/31
S7 instuctieset Pagina - 12 /29 -
KHLim dep IWT BN -
5.2.6. Tijd - notatie
De in te stellen tijd van de timers is van het data type S5TIME (16 bits)
Mogelijke eenheden: h(uren), m(minuten), s(seconden), ms(milliseconden)
Het in te geven formaat is:
s5t#_xh_ym_zs_xxms
De grenzen en de resolutie van de S5TIME notatie:
Grenzen Resolutie
10 ms tot 9 s 990 ms 0.01 seconden
100 ms tot 1 m 39 s 900 ms 0.1 seconden
1 s tot 16 m 39 s 1 seconden
10 s tot 2 h 46 m 30 s 10 seconden
Waarden groter dan 2h46m30s worden niet aanvaard.
Voorbeelden:
S5TIME#4S 4 seconden
s5t#2h_15m 2 uur en 15 minuten
S5T#1H_12M_20S 1 uur, 12 minuten en 20 seconden
Een waarden waarvan de resolutie te hoog is voor de bepaalde grenzen worden naar beneden afgerond tot een
aanvaardbare resolutie.
Voorbeeld: 2h10ms ligt in de grens 10 s tot 2 h 46 m 30 s met een resolutie van 10 seconden. Deze waarden
zal afgerond worden tot 2h en 0s
8/10/2019 Simatic S7 Instruction set
15/31
S7 instuctieset Pagina - 13 /29 -
KHLim dep IWT BN -
5.3. TellersEen speciaal gedeelte van het geheugen van de CPU is gereserveerd voor het bijhouden van de tellerstand. In dit
geheugengedeelte is er voor iedere teller een 16 bit woord gereserveerd. Het aantal tellers is afhankelijk van de
CPU. De tellerwaarde kan liggen tussen 0 en 999.
De preset waarde, die ingesteld is aan de PV ingang wordt bij een positieve flank op ingang S ingelezen in de
teller. Bij een positieve flank op de ingang CU zal de tellerinhoud met 1 vermeerderd worden. Bij een positieve
flank op de ingang CD zal de tellerinhoud met 1 verminderd worden. Als we een positieve flank aanleggen op
de reset R ingang zal de tellerinhoud op nul gezet worden. De actuele tellerinhoud kan men binair lezen op
uitgang CV en in BCD code op de uitgang CV_BCD. De uitgang Q van de teller is 1 als de tellerinhoud
groter is dan nul, en is 0 als de tellerinhoud gelijk is aan nul.
We hebben keuze uit volgende tellers :
5.3.1. De up en down counter S_CUD
8/10/2019 Simatic S7 Instruction set
16/31
S7 instuctieset Pagina - 14 /29 -
KHLim dep IWT BN -
5.3.2. De up counter S_CU
5.3.3. De down counter S_CD
8/10/2019 Simatic S7 Instruction set
17/31
S7 instuctieset Pagina - 15 /29 -
KHLim dep IWT BN -
5.3.4. Teller - notatie
De tellerwaarde wordt opgeslagen in een 16 bit woord. De enige mogelijkheid om dit woord te lezen zijn de
teller- instructies.
De teller waarde in binaire code is opgeslagen in de bits 0 tot en met 9. De tellerwaarde wordt in de teller
ingelezen als deze een positieve flank detecteert op de set ingang. De tellerwaarde moet liggen tussen 0 en 999.
De tellerwaarde kan verhoogd (CU) en verlaagd (CD) worden binnen deze grenzen.
De notatie van de setwaarde om de teller met een bepaalde waarde in te stellen is C#127. De c# staat voor
BCD formaat. Per 4 bits wordt een decade van de teller ingesteld. De bits 0 tot en met 11 vormen zo de BCD
tellerwaarde.
Onderstaande figuur toont
de inhoud van de teller nadat men de BCD waarde c#127 heeft geladen,
de tellerwaarde in binaire vorm nadat de teller is geset.
8/10/2019 Simatic S7 Instruction set
18/31
S7 instuctieset Pagina - 16 /29 -
KHLim dep IWT BN -
5.4. Laden en Transfereren (Move)
De instructie MOVE kan een waarde of een variabele kopiren naar een andere variabele. Als de EN ingang
actief is, zal de waarde / variabele die op de IN ingang ingevuld is, naar de OUT uitgang gekopieerd worden.
ENO heeft hetzelfde signaal als EN, als de instructie geldig is.
Deze instructie is zeer goed te gebruiken om van een bepaald dataformaat naar een ander dataformaat te
transfereren. ( bijvoorbeeld van byte naar woord )
De instructies LADEN en TRASFEREREN maken het in STL mogelijk om waarden en variabelen te kopiren
naar andere waarden en variabelen. De instructie laden en transfereren zijn niet afhankelijk van het RLO. De data
worden uitgewisseld via de accumulator. De laad instructie ( L ) laadt de waarde in de accumulator 1, en de
transfereer instructie ( T ) kopieert de inhoud van accumulator 1 naar de gewenste bestemming. Wanneer er iets
geladen in de accumulator wordt, zal de oude waarde van ACCU 1 naar ACCU 2 geschoven worden.
8/10/2019 Simatic S7 Instruction set
19/31
S7 instuctieset Pagina - 17 /29 -
KHLim dep IWT BN -
Bovenstaand LAD in STL gezet geeft ons:
A I 0.7
JNB _001 jump naar label _001 als I 0.7 0 is
L MW 0 Laad de inhoud van merker woord 0 in ACCU 1
T QW 18 Kopieert de inhoud van ACCU 1 naar uitgangswoord 18
SET RLO op 1 zettenSAVE RLO in BR flag opslaan
CLR ROL op 0 zetten
_001: A BR toestand van BR flag oproepen
= Q 8.0
De S7 300 heeft twee 32 bits accumulatoren, en de S7 400 heeft vier 32 bit accumulatoren.
Enkele voorbeelden van laad instructies:
L IB10 Laad ingangsbyte IB10 in ACCU 1.
L MB120 Laad merkerbyte MB120 in ACCU 1.
L DBB12 Laad databyte DBB12 in ACCU 1.
L DIW15 Laad instant datawoord DIW15 in ACCU 1.
We kunnen ook een getal inladen :
L +5 laad een 16 bit constante
L L#123456 laad een 32 bit constante
L B#16#EF laad een byte in hexadecimaal formaat
L 2#0001_0101_1010_1111 laad een 16 bit binaire waarde
8/10/2019 Simatic S7 Instruction set
20/31
S7 instuctieset Pagina - 18 /29 -
KHLim dep IWT BN -
5.5. Sprong instructie (Logic control)
5.5.1. De onvoorwaardelijke sprong
De onvoorwaardelijke sprong onderbreekt het programma en springt naar een label in het programma. Dit label is
gemarkeerd in LAD en FBD met een bloksymbool.
In STL geeft dit :
8/10/2019 Simatic S7 Instruction set
21/31
S7 instuctieset Pagina - 19 /29 -
KHLim dep IWT BN -
5.5.2. Voorwaardelijke sprong
De RLO ( Result of Logic Operation ) bit bepaalt wanneer de sprong uitgevoerd wordt.
JC: Sprong naar label als de RLO bit 1 is.
JCN: Sprong naar label als de RLO bit 0 is.
Let OP:
Als een voorwaardelijke sprong niet uitgevoerd wordt, zal het programma na de spronginstructie de RLO- bit op
1 zetten.
8/10/2019 Simatic S7 Instruction set
22/31
S7 instuctieset Pagina - 20 /29 -
KHLim dep IWT BN -
5.6. Programma controle
5.6.1. De master control realay
De Master Control Relay is een logische masterschakelaar voor het vrijgeven van een deel van een schakeling. Een gebied dat
met de master control relay gedeactiveerd is, zal de sturingen in dit gebied met "O" aansturen, in plaats van met het door hetprogramma berekende resultaat. Wanneer de master control relay ingeschakeld wordt, zullen de aansturingen verder via het
programma plaatsvinden.
Instructies met een uitgang zullen binnen het MCR-gebied met 0 overschreven worden, als de MCR gelijk is aan 0
(gedeactiveerd). De "set"- en "reset"-instructies veranderen niet van waarde. De waarde nul wordt gestuurd naar transfer-instructies.
MCRA
De instructie MCRActivate activeert de functie "master control relay". De instructies MCR< (master control relay
on) en MCR> (master control relay off) moeten op de instructie MCRA volgen.
MCR
Top Related