Data:
01/09/98
Plik Nr: Pro2_1d.1
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Instrukcje zależne od bitu stanu, operacje na
akumulatorze, arytmetyka zmiennoprzecinkowa
i parametry złożone
Data:
01/09/98
Plik Nr: Pro2_1d.2
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Słowo stanu
Znaczenie bitów w słowie stanu (STW)
Przykłady w STL:
A OV
Test znacznika przepełnienia
A OS
Test przepełn. kumulowan.
A UO
Niedozwolona operacja
A BR
Test znacznika BR
Test znaczników wyniku (CC0, CC1)
A ==0 Wynik równy 0
A >0
Wynik większy od 0
A <>0 Wynik różny od 0
A =<0 Wynik mniejszy lub równy 0
itd.
(lub O xx, AN xx, ON xx,X xx, XN xx)
Bit
Symbol
Znaczenie
0
/FC
Pierwsze zapytanie
1
RLO
Wynik połączenia
2
STA
Stan
3
OR
Lub
4
OS
Przepełn. kumulow.
5
OV
Przepełnienie
6
CC0
Znacznik wyniku
7
CC1
Znacznik wyniku
8
BR
Wynik binarny
9...15
nie wy-
--
korzystane
NEUA_T1D
LAD
SFC
OV
M 4.0
S
S
OV
M 4.0
Data:
01/09/98
Plik Nr: Pro2_1d.3
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Skoki zależne od bitu stanu
JO etykieta
1)
Skocz jeśli bit "OV" w słowie stanu = 1
JOS etykieta
1)
Skocz jeśli bit "OS" w słowie stanu = 1
JZ etykieta
1)
Skocz jeśli w słowie stanu bit CC1" = 0 a bit "CC0"
= 0
(Wynik = 0)
JN etykieta
1)
Skocz jeśli w słowie stanu bit "CC1" różny od bitu
"CC0"
(Wynik <> 0)
JP etykieta
1)
Skocz jeśli w słowie stanu bit "CC1" = 1 a bit "CC0"
= 0
(Wynik > 0)
JM etykieta
1)
Skocz jeśli w słowie stanu bit "CC1" = 0 a bit "CC0"
= 1
(Wynik < 0)
JPZ etykieta
1)
Połączenie skoków JZ i JP
(Wynik >= 0)
JMZ etykieta
1)
Połączenie skoków JM i JZ
(Wynik <= 0)
JUO etykieta
1)
Skocz jeśli liczba rzeczywista jest niewłaściwa lub
wykonana została próba dzielenia przez zero
1) etykieta może składać się z 4 znaków alfanumerycznych
NEUA_T4D
Data:
01/09/98
Plik Nr: Pro2_1d.4
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Dodatkowe instrukcje skoków
Instrukcja
Znaczenie
JCI M001
Skocz jeśli BR = "1"
JCIN M002
Skocz jeśli BR = "0"
Rozdzielacz skoków
L Recipe no..
//Załaduj receptę
JL OVER
//Rozdzielacz skoków z 3 pozycjami
JU Rec0
//Skok do recepty 0 (zawartość akumulatora = 0)
JU Rec1
//Skok do recepty 1 (zawartość akumulatora = 1)
JU Rec2
//Skok do recepty 2 (zawartość akumulatora = 2)
//Skok przy złym numerze recepty >2 lub <0
OVER: JU ERR
...
Rec0: L DBW 4
...
NEUA_T4D
Data:
01/09/98
Plik Nr: Pro2_1d.5
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Instrukcje tworzenia pętli
Aktualizacja licznika pętli
Część kodu
do wielokrotnego
wykonania
Dekrementacja licznika pętli
Licznik pętli
<>0 ?
Tak
Nie
Dalej
L +4
// załaduj licznik pętli
NEXT: T MW10
// początek pętli
.
// kod
.
// kod
.
// kod
.
// kod
.
// kod
L MW10
// ponowne załaduj licznik pętli
Loop NEXT
// licznik pętli -1 i skok do
// etykiety NEXT jeśli akumulator
// ACCU1 większy od 0
W tym przykładzie sekwencja programu
między etykietą NEXT i instrukcją Loop
NEXT wykonana zostanie czterokrotnie.
Instrukcja LOOP
Data:
01/09/98
Plik Nr: Pro2_1d.6
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
BE
Koniec bloku (zakończenie bloku)
BEC
Warunkowe zakończenie bloku (zależne od RLO)
(RET)
przy wyświetlaniu LAD
przy wyświetlaniu SFC
BEU
Bezwarunkowe zakończenie bloku
(w obrębie jednego bloku)
Polecenia zakończenia bloku
NEUA_T4D
RET
Data:
01/09/98
Plik Nr: Pro2_1d.7
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Proszę wykonać ćwiczenia
od 1.1 do 1.3
Ćwiczenia: Skoki zależne od bitu stanu, lista
skoków
Data:
01/09/98
Plik Nr: Pro2_1d.8
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Liczba rzeczywista/zmiennoprzecinkowa w
SIMATIC S7
Zbiór wartości:
-3,402 823 E+38 do -1,175 495E-38
oraz +/-0
i
+1,175 495E-38 do +3,402 823E+38, przy czym E+38 = 10
+38
Wprowadzanie na programatorze:
np. 3.14 lub -5000.24
Reprezentacja liczby zmiennoprzecinkowej w podwójnym słowie (format wewnętrzny):
31
VZ
23
Wykładnik „e”
0
Mantysa „f”
(8 bitów)
(23 bity)
VZ równe 0 lub 1 // „e” równe 1 .. 254 // „f” równe 0 .. (2
-1
+2
-2
+... 2
-23
)
VZ = 0 oznacza liczbę dodatnią, VZ = 1 oznacza liczbę ujemną
Liczba zmiennoprzecinkowa obliczana jest według następującego wzoru:
Liczba = VZ * 2
(e-127)
* (1.f ), przy czym 0<e<255 i f=bit22*1/2
1
+bit20*1/2
2
+.....
i 1.f = 1 + f
7 6 5 4 3 2 1 0
22
1 0przyporządkowanie bitów
21
20
2
-1
2
-2
2
-22
2
-23
Format wprowadzania/wyprowadzania
NEUA_T4D
Data:
01/09/98
Plik Nr: Pro2_1d.9
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Rozszerzone rodzaje obliczeń
zmiennoprzecinkowych
Funkcje trygonometryczne
SIN
COS
TAN
ASIN
ACOS
ATAN
Funkcje logarytmiczne
LN
EXP
Kwadrat, pierwiastek kwadratowy
SQR
SQRT
Następujące instrukcje wykonywane są niezależnie od bitu RLO.
NEUA_T4D
Kąt
Data:
01/09/98
Plik Nr: Pro2_1d.10
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Funkcje trygonometryczne
SIN
Oblicz sinus kąta w radianach umieszczonego w akumulatorze ACCU1 i zapisz
wynik w ACCU1.
COS
Oblicz cosinus kąta w radianach umieszczonego w akumulatorze ACCU1 i
zapisz wynik w ACCU1.
TAN
Oblicz tangens kąta w radianach umieszczonego w akumulatorze ACCU1 i
zapisz wynik w ACCU1.
Wartości kątowe w formacie zmiennoprzecinkowym (0...) należy umieścić w ACCU1.
Wyniki funkcji również w formacie zmiennoprzecinkowym (-1.0 ...+1.0) umieszczane są
w ACCU1. Słowo stanu jest modyfikowane.
ASIN
Oblicz arcussinus wartości umieszczonej w akumulatorze ACCU1 i zapisz
wynik w radianach w ACCU1. ( -1.0 <= wartość wejściowa <= +1.0)
ACOS
Oblicz arcuscosinus wartości umieszczonej w akumulatorze ACCU1 i zapisz
wynik w radianach w ACCU1. ( -1.0 <= wartość wejściowa <= +1.0)
ATAN
Oblicz arcustangens wartości umieszczonej w akumulatorze ACCU1 i zapisz
wynik w radianach w ACCU1.
Argumenty funkcji w formacie zmiennoprzecinkowym należy umieścić w ACCU1.
Wyniki funkcji również w formacie zmiennoprzecinkowym (- 2 ..) umieszczane są
w ACCU1. Słowo stanu jest modyfikowane.
NEUA_T4D
Data:
01/09/98
Plik Nr: Pro2_1d.11
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Funkcje logarytmiczne
LN
// Oblicz logarytm naturalny (o podstawie e) z liczby zmiennoprzecinkowej
// umieszczonej w akumulatorze ACCU1 i zapisz wynik w ACCU1.
EXP
// Oblicz liczbę o podstawie e i wykładniku umieszczonym w ACCU1
// i zapisz wynik w ACCU1.
// Wykładnik i wynik są liczbami zmiennoprzecinkowymi.
NEUA_T4D
Data:
01/09/98
Plik Nr: Pro2_1d.12
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Kwadrat i pierwiastek kwadratowy
SQR
Przemnóż liczbę w akumulatorze ACCU1 przez nią samą.
Wynik zapisz w ACCU1. Argument i wynik są liczbami
zmiennoprzecinkowymi.
SQRT
Oblicz pierwiastek kwadratowy z liczby w ACCU1. Wynik zapisz
do ACCU1. Argument i wynik są liczbami zmiennoprzecinkowymi.
Przykład:
L MD 6
// Załaduj wartość MD 6 (wartość 4.0)
SQR
T MD 10
// Zapisz wynik do MD 10 (wartość 16.0)
Przykład:
L MD 20
// Załaduj wartość MD 20 (wartość 16.0)
SQRT
T MD 30
// Zapisz wynik do MD 30 (wartość 4.0)
NEUA_T4D
Data:
01/09/98
Plik Nr: Pro2_1d.13
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Dodatkowe operacje na akumulatorze
Instrukcje dotyczące różnych akumulatorów
POP
PUSH
TAK
ENT
LEAVE
Instrukcje dotyczące tylko akumulatora ACCU1
TAW
TAD
INC
DEC
RLDA, RRDA
Następujące instrukcje wykonywane są niezależnie od bitu RLO.
NEUA_T4D
Data:
01/09/98
Plik Nr: Pro2_1d.14
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Operacje dotyczące różnych akumulatorów
PUSH
Skopiuj zawartość ACCU1 do ACCU2 (ACCU1 pozostanie niezmieniony);
w procesorze S7 z 4 akumulatorami skopiuj wcześniej zawartość ACCU3
do ACCU4 i zawartość ACCU2 do ACCU3.
POP
Skopiuj zawartość ACCU2 do ACCU1 (ACCU2 pozostanie w procesorze
dwu-akumulatorowym niezmieniony);
w procesorze S7 z 4 akumulatorami skopiuj również zawartość ACCU3 do
ACCU2 i zawartość ACCU4 do ACCU3.
ENT
Skopiuj zawartość ACCU3 do ACCU4 i zawartość ACCU2 do ACCU3.
ACCU1 i ACCU2 pozostaną niezmienione. Instrukcja ta dostępna jest
tylko w procesorach z 4 akumulatorami.
LEAVE Skopiuj zawartość ACCU3 do ACCU2 i zawartość ACCU4 do ACCU3.
ACCU1 i ACCU4 pozostaną niezmienione. Instrukcja ta dostępna jest
tylko w procesorach z 4 akumulatorami.
TAK
Zamień zawartość akumulatora ACCU1 z akumulatorem ACCU2
NEUA_T4D
Dodatkowo w S7-400 ( z 4 akumulatorami):
Data:
01/09/98
Plik Nr: Pro2_1d.15
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Operacje dotyczące tylko akumulatora ACCU1
TAD
Wymień zawartość ACCU1-L-L z zawartością ACCU1-H-H, oraz
zawartość ACCU1-L-H z zawartością ACCU1-H-L. Rejestr ACCU2
pozostanie niezmieniony. Słowo stanu pozostanie niezmienione.
TAW
Wymień zawartość ACCU1-L-L z zawartością ACCU1-L-H.
ACCU1-H oraz ACCU2 pozostaną niezmienione. Słowo stanu
pozostanie niezmienione.
INC
Powiększ zawartość ACCU1-L-L o 1 (0<= wartość <=255).
ACCU1-L-H, ACCU1-H i ACCU2 pozostaną niezmienione.
Słowo stanu pozostanie niezmienione.
DEC
Pomniejsz zawartość ACCU1-L-L o 1 (0<= wartość <=255).
ACCU1-L-H, ACCU1-H i ACCU2 pozostaną niezmienione.
Słowo stanu pozostanie niezmienione.
RLDA, RRDA
Przesuń (32-bitową) zawartość rejestru ACCU1 o 1 bit odpowiednio
w lewo lub w prawo. Najbardziej/najmniej znaczący bit ACCU1
kopiowany jest do znacznika CC1 w słowie stanu, a do
najmniej/najbardziej znaczącego bitu w ACCU1 wpisywana jest
poprzednia wartość tego znacznika. Znaczniki CC0 i OV w słowie
stanu zostaną skasowane.
NEUA_T4D
Data:
01/09/98
Plik Nr: Pro2_1d.16
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Tworzenie dopełnienia
INVI
=
Uzupełnienie do jeden słowa
INVD
=
Uzupełnienie do jeden podwójnego
słowa
NEGI
=
Uzupełnienie do dwóch słowa
(przemnożenie liczby całkowitej przez
-1)
NEGD =
Uzupełnienie do dwóch podwójnego
słowa
(przemnożenie liczby całkowitej przez
-1)
NEGR
=
Zmiana znaku liczby rzeczywistej
0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1
1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0
INVI
1
1
0
0
Bit 15
Bit 0
ACCU1
ACCU1
przed
po
NEUA_T4D
Bit 16
Data:
01/09/98
Plik Nr: Pro2_1d.17
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Proszę wykonać ćwiczenia
od 1.4 do 1.6
Ćwiczenia: Funkcje akumulatora
Data:
01/09/98
Plik Nr: Pro2_1d.18
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Złożone parametry bloków
W części deklaracyjnej bloków programowych parametrom bloków mogą zostać
przypisane:
elementarne typy danych,
złożone typy danych,
oraz typy parametralne.
Do złożonych typów danych należą:
• Struktura,
• Tablica,
• DATE_AND_TIME,
• STRING[n]
• Uniwersalny typ danych UDT
Do typów parametralnych należą:
• POINTER i ANY
• Timer i Counter
• BLOCK_FB i BLOCK_FC
• BLOCK_DB i BLOCK_SDB
Data:
01/09/98
Plik Nr: Pro2_1d.19
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Struktura i tablica
Wykorzystanie struktur i tablic
PRGA_T6D
Data:
01/09/98
Plik Nr: Pro2_1d.20
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Przekazywanie struktur
Symboliczne nazewnictwo parametrów
Bez nazw symbolicznych
Wywołanie bloków z parametrami bloku typu STRUKTUR (struktura)
Przykład: Parametry wejściowe zostały zdefiniowane jako struktury o nazwie "motor"
PRGA_T6D
tak nie podawane
Data:
01/09/98
Plik Nr: Pro2_1d.21
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Przekazywanie tablic
Wywołanie bloków ze złożonymi parametrami bloku typu FIELD (tablica)
Przykład: Parametry wejściowe zostały zdefiniowane jako tablice o nazwie "Material"
Symboliczne nazewnictwo parametrów
Bez nazw symbolicznych
PRGA_T6D
tak nie podawane
Data:
01/09/98
Plik Nr: Pro2_1d.22
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
DATE_AND_TIME
Typ DATE_AND_TIME Długość : 8 bajtów Format: DT#rok-miesiąc-dzień-h:min:s.ms
lub
DT
Przykład:
DT#96-06-04-11:30:01.923
Dane typu DT zapisywane są w formacie BCD:
Bajt
Zawartość
Zakres
0
Dziesięciolecie + rok
1990...2089
Bez podawania stulecia
1
Miesiąc
01...12
2
Dzień
1...31
3
Godzina
0...23
4
Minuta
0...59
5
Sekunda
0...59
6
MSD milisekund
00....99
MSD = Bardziej znacząca część
7(Bit4..7)
LSD milisekund
0...9
LSD = Mniej znacząca część
7(Bit0..3)
Dzień tygodnia
1...7 (1=niedziela)
Reprezentacja bajtów 6 i 7
Bajt 6
Bajt 7
MSD
MSD
LSD
dzień tygodnia
milisekundy
PRGA_T6D
Data:
01/09/98
Plik Nr: Pro2_1d.23
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
STRING[n]
Typ STRING [n]
maks. długość ciągu znaków wynosi n znaków (typu CHAR)
Typ STRING
maks. długość ciągu znaków wynosi 254 znaki (typu CHAR)
Typ String wykorzystywany jest do definicji ciągów znaków elementarnego typu CHAR.
Definicja:
Nazwa_zmiennej:STRING[n] := 'Ciag znakow';
Przykład:
Opis:STRING[20] := 'Pozycja napełniania'
Bajt 0
Bajt 1
Bajt 2
Bajt 3
Bajt 4
....
Bajt n+2
Maksymalna
długość - licz.
całkowita (20)
Bieżąca
długość - licz.
całkowita (19)
Wartość
ASCII P
Wartość
ASCII o
Wartość
ASCII z
--
1.Znak 2.Znak 3.Znak ......
Data:
01/09/98
Plik Nr: Pro2_1d.24
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
POINTER i ANY
Parametry te wykorzystywane są przez bloki systemowe.
PRGA_T6D
(bezwzględnie)
(symbolicznie)
Data:
01/09/98
Plik Nr: Pro2_1d.25
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Proszę wykonać ćwiczenie 1.7
Ćwiczenia: Wykorzystanie złożonych
parametrów bloków
Data:
01/09/98
Plik Nr: Pro2_1d.26
SIMATIC S7
Siemens AG 1997. All rights reserved.
Wiedza o procesie automatyzacji
Dane dla ośrodków
informacyjnych i szkoleniowych
Załącznik: Typ danych ANY
Bajt 0 16#10 w S7
Typ danej
(zob. tabela)
Bajt 1
Bajt 2 Współczynnik powtórzenia typu
Bajt 3
Bajt 4 Numer DB lub 0
Bajt 5
Bajt 6 Pamięć Pointer
(zakres)
0 0 0 0 _ 0 b b b
Adres pointer
Bajt 7
Bajt 8
b b b b _ b b b b _ b b b b _ b x x x
Kontynuacja adresu pointer
Bajt 9
Tabela typów danych ( format B#16# ) :
01 = BOOL, 02 = BYTE, 03 = CHAR, 04 = WORD, 05 = INT, 06 = DWORD, 07 = DINT,
08 = REAL, 09 = DATE, 0A = TOD, 0B = TIME, 0C = S5TIME, 0E = DT,
13 = STRING, 17 = BLOCK_FB, 18 = BLOCK_FC, 19 = BLOCK_DB,
1A = BLOCK_SDB, 1C = COUNTER, 1D = TIMER