Getalformaten, timers en tellers S_CU CU
Q
S PV R R
CV CV_BCD DEZ
T4 S_ODT
I0.7 S5T#35s I0.5
S
Q
TV
BI
R
BCD
Q8.5 MW0 QW12
1
pagina 1
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Basis PLC
Getalformaten (16 bits) PG
CPU Voorteken (+)
BCD
W#16#296
15
(Integer)
BCD
9
6
0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0
Positieve getallen
INT
2
14
13
12
11 10
9
8
7
6
5
4
3
2
1
0
0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 +296
Voorteken (-)
28
25
= 256 +
= = 32 + 8 = 296
4
23
1
3
W#16#F413 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1
Negatieve getallen
15
14
13
12
11 10
9
8
7
6
5
4
3
2
1
0
1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 INT
(Integer)
28 27
-413
= = 256+ 128 +
24 23 22 = = = 16+8+ 4 = 412
- (412 + 1) = - 413
2 BCD-code
Basis PLC
De afzonderlijke cijfers van een decimaal getal worden met vier binaire cijfers (bits) gecodeerd. De voorstelling met vier bits is een gevolg van het feit dat het decimale cijfer met de hoogste waarde 9 tenminste vier posities vereist in de binaire voorstelling (1001). Voor de voorstelling van de tien decimale cijfers 0 tot 9 wordt in de BCD-code dezelfde voorstelling gebruikt als voor de binaire getallen 0 tot 9.
INTEGER
Het datatype INT (INTEGER) komt overeen met een geheel getal (16 bits). De voortekenbit (bit n° 15) geeft aan, of we met een positief of een negatief getal te maken hebben ("0" = positief, "1" = negatief). Het bereik van een geheel getal (16 bits) ligt tussen -32 768 en +32 767. In het binaire formaat wordt het negatieve formaat van een geheel getal als tweecomplement van het positieve gehele getal voorgesteld. We verkrijgen dit tweecomplement van een negatief getal door de signaaltoestanden van alle bits om te keren en bij het resultaat een "1" op te tellen. De status van de bits van een negatief getal wordt afgevraagd door de bits op "0" te identificeren, "1" bij het resultaat op te tellen en het getal te laten voorafgaan door een min-teken.
pagina 2
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Getalformaten (32 bits) BCD DW#16#296
DINT L#+296
Voorteken (+)
0
0
0
0
2
9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 31
30
29
28
27 26
25
24
23
22
21
20 19
18
17
16 15
14
13
12
11 10
9
+0.75 of +7.5 E-1
8
7
6
5
4
3
2
1
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0
Integer (32 bits) = REAL
6
Algemeen formaat van een geheel getal = (voorteken) • (1.f) • (2eVoorteken reëel getal e = exponent (8 bits) 31
30
29
28
27 26
25
24
23
28
25
23
= 256 +
= = 32 + 8 = 296
127)
f = mantisse (23 bits) 22
21
20 19
18
17
16 15
14
13
12
11 10
9
8
7
6
5
4
3
2
1
0
0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 26 25 24 23 22 21 20 2-1 2-2 2-3 2-4 .....
2-23
Reëel getal = +1,5 * 2 126-127 = 0,75
3
Basis PLC
DINT
De gehele getallen van 32 bits met voorteken worden ook "dubbel integer" (Double Integer) of "lang integer" (Long Integer) genoemd. Het waardenbereik ligt tussen L# -2147483648 en L#+2147483647.
REAL
Een reëel getal (ook een getal met glijdende komma genoemd) is een positief of een negatief getal, waarvan het bereik tussen -1.175495•10-38 en 3.402823•1038 ligt. We kunnen het reële getal ook aanvullen met een exponent, om de gehele macht van 10 aan te geven, waarmee het reële getal vermenigvuldigd moet worden, om de gewenste waarde te bereiken. Voorbeelden :
+10,339 of +1,0339E1 -234567.0 of -2,34567E5
Een reëel getal bezet in het geheugen twee woorden, waarbij de bit met de hoogste waarde het voorteken van het getal aangeeft. De overige bits stellen de exponent en de mantisse voor. Nota: De weergave van de reële getallen in STEP7 voldoet aan de vereisten van de IEEE-norm.
pagina 3
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Laden en transfereren van gegevens (1) LAD
FBD
MOVE
15
MOVE
EN
ENO
IN
OUT
Voorbeelden van laden
STL
EN
MB5
15
IN
OUT
MB5
L
+15
T
MB5
ENO
L +5
// Constante 16 bits (Integer)
L L#523123
// Constante 32 bits (Long Integer)
L B#16#EF
// Hexadecimale byte
L 2#0010 0110 1110 0011
// Binaire waarde 16 bits
L 3.14
// Constante 32 bits (Real)
4
Basis PLC
MOVE (LAD/FBD)
De instructie MOVE kan een waarde of een variabele kopiëren 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.
L en T (STL)
De instructies Laden en Transfereren worden onafhankelijk van het RLO uitgevoerd. De data worden uitgewisseld via de accumulator. De laad-instructie schrijft de bronwaarde in de accumulator 1, te beginnen van rechts, en vult de ongebruikte posities op met nullen (tot aan bit 32). De transfer-instructie kopieert (gedeeltelijk of geheel) de inhoud van de accumulator naar de aangegeven bestemming (zie volgende bladzijden).
pagina 4
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Laden en transfereren van gegevens (2) Inhoud van de accu1
Programma
: : L W#16#CAFE
L W#16#AFFE : : :
Inhoud van de accu2
X
X
X
X
X
X
X
X
Y
Y
Y
Y
Y
Y
Y
Y
0
0
0
0
C 0
A 0
F 0
E 0
X
X
X
X
X
X
X
X
0
0
0
0
A 0
F 0
F 0
E 0
0
0
0
0
C
A
F
E
5
Basis PLC
Accumulator 1
De accumulator 1 vertegenwoordigt het centrale register van de CPU. Bij het laden wordt de te laden waarde in de accumulator 1 geschreven en bij het transfereren wordt de te transfereren waarde in de accumulator 1 gelezen; het resultaat van de aritmetische instructies, de verschuivingsinstructies enz. wordt in de accumulator 1 opgeslagen.
Accumulator 2
Tijdens een laad-operatie wordt de oude waarde in de accumulator 1 eerst overgebracht naar de acummulator 2, vervolgens wordt de accumulator 1 gewist (op nul gezet) en pas dan wordt de nieuwe waarde in de accumulator 1 geschreven. De accumulator 2 wordt ook gebruikt voor de vergelijkingen, de digitale instructies, de reken- en schuifinstructies, die verderop in detail behandeld worden.
pagina 5
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Laden en transfereren van gegevens (3) Inhoud van de accumulator 1 Programma
L MB 0
31
23
L MW 0
23
15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31
L MD 0
7
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31
Laden
15
23
MB0
MB0 7
MB0 15
MB1
0
0
MB1 7
MB2
0
MB3
T QD 4 QD 4 Transfer
T QW 4 QW 4
T QB 4 QB 4
6
Basis PLC
Algemeen
De accumulatoren van de CPU zijn bedoeld voor het uitwisselen van data tussen de verschillende operanden, vergelijkingen en rekenfuncties. De S7-300 heeft twee accumulatoren met 32 bits elk, en de S7-400 heeft vier accumulatoren met 32 bits elk.
Laad-instructie
De laadinstructie stuurt de inhoud van de geadresseerde byte, woord of dubbelwoord naar de accumulator 1.
Transfer-instructie
Bij de transferinstructie blijft de inhoud van de accumulator 1 bewaard, waardoor de informatie naar verschillende geheugenbereiken kan worden gekopieerd. Als er alleen een byte wordt getransfereerd, worden alleen de rechtse 8 bits gekopieerd (zie figuur).
RLO
In LAD en FBD kunnen de laad- en transferinstructies in functie van het RLO uitgevoerd worden, door de enable-input (EN) van de instructie MOVE te gebruiken. In STL zijn de laad- en transferinstructies onafhankelijk van het RLO en worden dus altijd uitgevoerd. Met voorwaardelijke spronginstructies kunnen de laad- en transferinstructies weggelaten worden en kunnen we aldus de laad- en transferinstructies afhankelijk maken van het RLO.
pagina 6
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Timer met inschakelvertraging (SD)
I0.7 S5T#35s I0.5
LAD
FBD
T4 S_ODT
S_ODT
T4
S
Q
TV
BI
R
STL
BCD
Q8.5 I0.7 S5T#35s
MW0 QW12
I0.5
Gegeven type “S5TIME”
0,01s <-0,1s <-1s <-10s <--
S
BI
TV
BCD
R
Q
RLO op S RLO op R
Voorbeeld
Verloop van timer
MW0 QW12 Q8.5 =
A L SD A R L T LC T A =
I0.7 S5T#35s T4 I0.5 T4 T4 MW0 T4 QW12 T4 Q8.5
Q
0 0 1 1
0 1 0 1
Tijdwaarde: 0 . . . 999
7
Basis PLC
Start
De timer wordt gestart, wanneer het RLO aan de ingang "S" van "0" naar "1" gaat. De timer loopt met de tijdwaarde die aan de ingang TV ingesteld is en blijft lopen zolang het signaal op de "S"-ingang "1" blijft.
Reset
Wanneer het RLO = "1" is op de reset-ingang "R", worden de actuele tijdwaarde en de tijdbasis gewist en wordt de uitgang Q gereset.
Digitale uitgangen
De actuele tijdwaarde kan gelezen worden als een binair getal aan de uitgang BI en als een BCD-getal aan de uitgang BCD. De actuele tijdwaarde is de initiële waarde van TV min de waarde van de tijd die verlopen is, sinds de timer werd gestart.
Binaire uitgang
Het signaal aan de uitgang Q gaat naar "1", wanneer de timer correct afgelopen is en de ingang "S" signaalstatus "1" heeft. Wanneer de ingang "S" van "1" naar "0" gaat, voordat de timer afgelopen is, wordt de timer gestopt. In dit geval heeft de uitgang Q de signaalstatus "0".
pagina 7
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Timer met inschakelvertraging met geheugen (SS) LAD
FBD
T4 S_ODTS Q S
I0.7 S5T#35s I0.5
BI
TV R
BCD
T4 S_ODTS
Q8.5 I0.7 S5T#35s
MW0 QW12
STL
I0.5
S
BI
TV
BCD
R
Q
MW0 QW12 Q8.5 =
A L SS A R L T LC T A =
I0.7 S5T#35s T4 I0.5 T4 T4 MW0 T4 QW12 T4 Q8.5
RLO op S RLO op R Verloop van timer
Voorbeeld Q
8
Basis PLC
Start
De timer wordt gestart, wanneer het RLO aan de ingang "S" van "0" naar "1" gaat. De timer loopt met de tijdwaarde die aan de ingang TV ingesteld is en blijft lopen, zelfs wanneer het signaal aan de ingang "S" opnieuw "0" wordt, voordat de timer is afgelopen. Wanneer de ingang "S" opnieuw van status verandert en van "0" naar "1" gaat, terwijl de timer nog aan het lopen is, wordt de timer opnieuw gestart.
Reset
Wanneer het RLO = "1" is op de reset-ingang "R", worden de actuele tijdwaarde en de tijdbasis gewist en wordt de uitgang Q gereset.
Binaire uitgang
De uitgang Q heeft de signaalstatus "1", wanneer de timer correct afgelopen is, zelfs als de signaalstatus van de ingang "S" niet meer "1" is.
pagina 8
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Timer met uitschakelvertraging (SF)
I0.7 S5T#35s I0.5
LAD
FBD
T4 S_OFFDT Q S
T4 S_OFFDT
BI
TV R
BCD
Q8.5 I0.7 S5T#35s
MW0 QW12
I0.5
S TW R
STL
BI BCD Q
MW0 QW12 Q8.5 =
A L SF A R L T LC T A =
I0.7 S5T#35s T4 I0.5 T4 T4 MW0 T4 QW12 T4 Q8.5
RLO op S RLO op R Verloop van timer
Voorbeeld Q
9
Basis PLC
Start
De timer wordt gestart, wanneer het RLO aan de ingang "S" van "1" naar "0" gaat. Wanneer de timer afgelopen is, heeft de uitgang Q signaalstatus "0". Wanneer de signaalstatus aan de ingang "S" van "0" naar "1" gaat, terwijl de timer nog loopt, wordt de timer gestopt en de volgende keer dat de signaalstatus opnieuw van "1" naar "0" gaat, wordt de timer opnieuw gestart.
Reset
Wanneer het RLO = "1" is op de reset-ingang "R", worden de actuele tijdwaarde en de tijdbasis gewist en wordt de uitgang Q gereset. Wanneer de twee ingangen "S" en "R" allebei de signaalstatus "1" hebben, wordt de uitgang Q niet geset, totdat de dominante reset gedeactiveerd is.
Binaire uitgang
Wanneer het RLO aan de ingang "S" van "0" naar "1" gaat, wordt de uitgang Q geactiveerd. Wanneer de ingang "S" gedeactiveerd wordt, blijft de uitgang Q op "1" staan, totdat de geprogrammeerde tijd afgelopen is.
pagina 9
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Pulse-timers (SP) LAD
FBD
T4 S_PULSE Q S
I0.7 S5T#35s I0.5
BI
TV R
BCD
STL
T4 S_PULSE
Q8.5 I0.7 S5T#35s
MW0 QW12
I0.5
S
BI
TV
BCD
R
Q
MW0 QW12 Q8.5 =
A L SP A R L T LC T A =
I0.7 S5T#35s T4 I0.5 T4 T4 MW0 T4 QW12 T4 Q8.5
RLO op S RLO op R Verloop van timer
Voorbeeld Q
10
Basis PLC
Start
Wanneer het RLO aan de ingang "S" van "0" naar "1" gaat, wordt de timer gestart en wordt de uitgang Q op "1" gezet.
Reset
De uitgang Q wordt gereset, wanneer: z de timer afgelopen is, of z het startsignaal van "1" naar "0" gaat, of z de reset-ingang "R" signaalstatus "1" heeft.
pagina 10
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Extended-pulse-timers (SE)
I0.7 S5T#35s I0.5
LAD
FBD
T4 S_PEXT Q S
T4 S_PEXT
BI
TV R
BCD
Q8.5 I0.7 S5T#35s
MW0 QW12
I0.5
STL
S
BI
TV
BCD
R
Q
MW0 QW12 Q8.5 =
A L SE A R L T LC T A =
I0.7 S5T#35s T4 I0.5 T4 T4 MW0 T4 QW12 T4 Q8.5
RLO op S RLO op R Verloop van timer
Voorbeeld Q
11
Basis PLC
Start
Wanneer het RLO aan de ingang "S" van "0" naar "1" gaat, wordt de timer gestart en wordt de uitgang Q op "1" gezet. De uitgang Q behoudt de signaalstatus "1", zelfs wanneer het signaal aan de ingang "S" opnieuw "0" wordt. Wanneer de ingang "S" opnieuw van signaalstatus verandert en van "0" naar "1" gaat, terwijl de timer nog aan het lopen is, wordt de timer opnieuw gestart.
Reset
De uitgang Q wordt gereset, wanneer: z de timer afgelopen is, of z de reset-ingang "R" de signaalstatus "1" heeft.
pagina 11
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Tellers in STEP7 LAD
FBD
C5
C5
S_CUD
I 0.4
STL
S_CUD
Q 8.3 Q
CU
I 0.4
CU
CD
I 0.5
CD
S
I 0.3
S
C#20
PV
I 0.5 I 0.3
C#20
PV
CV
MW 4
CV CV_BCD
MW 4 QW 12 Q 8.3
I 0.7 R
CV_BCD
QW 12
I 0.7
R
Q
12
=
A CU A CD A L S A R L T LC T A =
I0.4 C5 I0.5 C5 I0.3 C#20 C5 I0.7 C5 C5 MW4 C5 QW12 C5 Q8.3
Basis PLC
Telwaarde
Voor elke teller is er in het systeemdatageheugen een 16-bits woord gereserveerd, waarin de telwaarde (0...999) in binaire code kan worden opgeslagen.
Vooruitteller
Wanneer het RLO aan de ingang "CU" van "0" naar "1" gaat, wordt de tellerstand met 1 verhoogd (maximum waarde = 999).
Achteruitteller
Wanneer het RLO aan de ingang "CD" van "0" naar "1" gaat, wordt de tellerstand met 1 verlaagd (minimum waarde = 0).
Set teller
Wanneer het RLO aan de ingang "S" van "0" naar "1" gaat, wordt de teller geset met de waarde aan de ingang "CV”.
Reset teller
Wanneer het RLO = 1 is, wordt de teller gereset. Als er aan de reset-voorwaarde is voldaan, kan de teller niet geset worden en kan er niet geteld worden.
PV
De telwaarde in BCD-code (0...999) wordt ingesteld op de ingang "PV": z onder de vorm van een tijdconstante (C#...) z in BCD-formaat via een data-interface.
CV / CV_BCD
De telwaarde kan als een binair getal of als een BCD-getal in de accumulator geladen worden en vandaaruit naar andere adressen getransfereerd worden.
Q
De signaalstatus van de teller kan aan de uitgang Q geëvalueerd worden: z Tellerstand = 0 -> Q = 0 z Tellerstand >< 0 -> Q = 1
Tellertypes z z z
S_CU = vooruitteller (telt alleen vooruit) (up) S_CD = achteruitteller (telt alleen achteruit) (down) S_CUD = vooruit-/achteruit-teller (telt vooruit en achteruit) (up/down)
pagina 12
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC
Tellen: functiediagram CU
CD
S
R
5 4
Tellerstand
3 2 1 0
Q
13 Nota
Basis PLC
Wanneer de teller de waarde 999 (vooruitteller) of de waarde 0 (achteruitteller) bereikt, blijft de telwaarde onveranderd, zelfs als er nog verdere telimpulsen volgen. In het geval van een vooruit-/achteruitteller blijft de logische toestand van de teller behouden.
pagina 13
Hoofdstuk 5 : Gatalformaten, timers en tellers
Basis PLC