KOMENDY S7 (według IEC)
Oznaczenie |
RLO |
Opis |
A |
|
Iloczyn logiczny |
AN |
|
Negacja iloczynu logicznego |
O |
|
Suma logiczna |
ON |
|
Negacja sumy logicznej |
R |
0 |
Kasowanie |
S |
1 |
Ustawianie |
= |
RLO |
Przepisanie RLO do argumentu |
CU |
|
Inkrementacja licznika |
CD |
|
Dekrementacja licznika |
FN |
|
Detekcja opadającego zbocza dla RLO |
FP |
|
Detekcja narastającego zbocza dla RLO |
SP |
S_PULSE |
Układ czasowy realizujący funkcję impulsu |
SE |
S_PEXT |
Układ czasowy realizujący funkcję impulsu z pamięcią |
SD |
S_ODT |
Układ czasowy realizujący funkcję opóźnione załączenie |
SS |
S_ODTS |
Układ czasowy realizujący funkcję opóźnione załączenie z pamięcią |
SF |
S_OFFDT |
Układ czasowy realizujący funkcję opóźnione wyłączenie |
X |
|
Suma logiczna z wyłączeniem (czy są różne bity) |
XN |
|
Negacja sumy logicznej z wyłączeniem (czy są równe bity) |
FR |
|
Zezwolenie dla licznika lub czasówki |
NOP 0 |
|
Nie wykonuje żadnej operacji |
NOP 1 |
|
Nie wykonuje żadnej operacji |
NOT |
|
Negacja RLO |
CLR |
0 |
Zerowanie RLO |
SAVE |
|
Zapamiętywanie zawartości RLO w BR |
SET |
1 |
Ustawianie RLO |
PROGRAMOWE
Oznaczenie |
RLO |
Opis |
LOOP |
|
Pętla programowa |
BEC |
|
Warunkowe zakończenie bloku programowego |
BEU |
|
Bezwarunkowe zakończenie bloku programowego (dalej mogą być komendy) |
BE |
|
Zakończenie bloku programowego (ostatnia komenda w bloku) |
|
|
|
CALL |
|
Bezwarunkowe wywołanie bloku programowego |
CC |
|
Warunkowe wywołanie bloku programowego |
UC |
|
Bezwarunkowe wywołanie bloku programowego |
OPN |
|
Otwarcie bloku danych |
|
|
|
JU |
|
Skok bezwarunkowy |
JC |
|
Skok warunkowy dla RLO=1 |
JCB |
|
Skok warunkowy dla RLO=1 z zachowaniem RLO w BR |
JCN |
|
Skok warunkowy dla RLO=0 |
JNB |
|
Skok warunkowy dla RLO=0 z zachowaniem RLO w BR |
JL |
|
Skok do etykiety (omijanie części bloku np. M001) |
JBI |
|
Skok warunkowy dla BR=1 |
JNBI |
|
Skok warunkowy dla BR=0 |
JO |
|
Skok warunkowy dla OV=1 |
JOS |
|
Skok warunkowy dla OS=1 |
|
|
|
JM |
|
Skok, jeżeli wynik jest mniejszy od zera |
JMZ |
|
Skok, jeżeli wynik jest mniejszy lub równy zero |
JN |
|
Skok, jeżeli wynik jest różny od zera |
JUO |
|
Skok, jeżeli wynik jest błędny (np. wartości w ACCU nie są liczbami REAL) |
JZ |
|
Skok, jeżeli wynik jest równy zero |
JP |
|
Skok, jeżeli wynik jest większy od zera |
JPZ |
|
Skok, jeżeli wynik jest większy lub równy od zero |
NA SŁOWACH
Oznaczenie |
Argument ? |
Opis |
L |
|
Ładowanie danej do ACCU1 |
T |
|
Transfer danej do argumentu z ACCU1 |
LC |
|
Ładowanie wartości licznika lub czasu do ACCU1 w kodzie BCD |
AW |
|
Iloczyn logiczny liczb 16-bitowych |
AD |
|
Iloczyn logiczny liczb 32-bitowych |
OW |
|
Suma logiczna liczb 16-bitowych |
OD |
|
Suma logiczna liczb 32-bitowych |
XOW |
|
Suma logiczna z wyłączeniem liczb 16-bitowych (czy są różne) |
XOD |
|
Suma logiczna z wyłączeniem liczb 32-bitowych (czy są różne) |
|
|
|
= =? |
I,D,R |
Porównanie liczb ( = =, >, <, >=, <=, <>) wyjście bit |
+? |
I,D,R |
Suma zawartości ACCU2 i ACCU1 |
-? |
I,D,R |
Odjęcie zawartości ACCU2 od ACCU1 |
*? |
I,D,R |
Iloczyn zawartości ACCU2 i ACCU1 |
/? |
I,D,R |
Podzielenie zawartości ACCU2 przez ACCU1 |
MOD |
|
Dzielenie z resztą jako wynikiem |
|
|
|
TAK |
|
Zamiana zawartości ACCU1 z zawartością ACCU2 |
POP |
|
Kopiowanie zawartości ACCU2 do ACCU1 |
PUSH |
|
Kopiowanie zawartości ACCU1 do ACCU2 |
CAD |
|
Zmiana kolejności bajtów w ACCU1 |
CAW |
|
Zmiana kolejności bajtów w młodszej części ACCU1 |
DEC |
|
Dekrementacja młodszego bajtu młodszego słowa ACCU1 |
INC |
|
Inkrementacja młodszego bajtu młodszego słowa ACCU1 |
|
|
|
SRW |
|
Przesunięcie w prawo zawartości ACCU1 dla zmiennych 16-bitowych |
SRD |
|
Przesunięcie w prawo zawartości ACCU1 dla zmiennych 32-bitowych |
SLW |
|
Przesunięcie w lewo zawartości ACCU1 dla zmiennych 16-bitowych |
SLD |
|
Przesunięcie w lewo zawartości ACCU1 dla zmiennych 32-bitowych |
SSI |
|
Przesunięcie w prawo liczby formatu Intiger z zachowaniem znaku |
SSD |
|
Przesunięcie w prawo liczby formatu Duble Intiger z zachowaniem znaku |
RLD |
|
Rotacja w lewo zawartości ACCU1 dla zmiennych 32-bitowych |
RLDA |
|
Rotacja w lewo zawartości ACCU1 z wykorzystaniem CC1 |
RRD |
|
Rotacja w prawo zawartości ACCU1 dla zmiennych 32-bitowych |
RRDA |
|
Rotacja w prawo zawartości ACCU1 z wykorzystaniem CC1 |
|
|
|
BTI |
|
Konwersja kodu BCD na format Intiger |
BTD |
|
Konwersja kodu BCD na format -Duble Intiger |
ITB |
|
Konwersja formatu Intiger na kod BCD |
DTB |
|
Konwersja formatu Duble Intiger na kod BCD |
ITD |
|
Konwersja formatu Intiger na formatu Duble Intiger |
DTR |
|
Konwersja formatu Duble Intiger na formatu Real |
RND |
|
Zaokrąglenie (zmiana z formatu zmiennoprzecinkowego na całkowity) |
RND+ |
|
Zaokrąglenie do najbliższej większej liczby całkowitej formatu Duble Intiger |
RND- |
|
Zaokrąglenie do najbliższej mniejszej liczby całkowitej formatu Duble Intiger |
TRUNC |
|
Odcięcie części ułamkowej (zmiana formatu zmiennoprzecinkowego na całkowity) |
|
|
|
INVI |
|
Uzupełnienie jedynkowe (negacja) liczby typu Intiger |
INVD |
|
Uzupełnienie jedynkowe (negacja) liczby typu Duble Intiger |
NEGR |
|
Tworzenie negacji liczby rzeczywistej |
NEGI |
|
Tworzenie uzupełnienia dwójkowego dla liczby Intiger |
NEGD |
|
Tworzenie uzupełnienia dwójkowego dla liczby Duble Intiger |
|
|
|
|
|
|
|
|
|
+AR1 |
|
Dodawanie ACCU1 do zawartości rejestru adresowego AR1 |
+AR2 |
|
Dodawanie ACCU1 do zawartości rejestru adresowego AR2 |
LAR1 |
|
Ładowanie do rejestru adresowego AR1 zawartości ACCU1 |
LAR2 |
|
Ładowanie do rejestru adresowego AR2 zawartości ACCU1 |
TR1 |
|
Transfer zawartości rejestru adresowego AR1 do ACCU1 |
TR2 |
|
Transfer zawartości rejestru adresowego AR2 do ACCU1 |
CAR |
|
Zmiana zawartości rejestrów adresowych AR1 i AR2 |
|
|
|
COS |
|
Cosinus liczby rzeczywistej |
SIN |
|
Sinus liczby rzeczywistej |
TAN |
|
Tangens liczby rzeczywistej |
ACOS |
|
Arcuscosinus liczby rzeczywistej |
ASIN |
|
Arcussinus liczby rzeczywistej |
ATAN |
|
Arcustangens liczby rzeczywistej |
LN |
|
Logarytm naturalny liczby rzeczywistej |
SQR |
|
Obliczanie drugiej potęgi liczby rzeczywistej |
SQRT |
|
Obliczanie pierwiastka liczby rzeczywistej |
EXP |
|
Obliczanie exponenty dla liczby rzeczywistej w ACCU1 |
ABS |
|
Wartość bezwzględna liczby rzeczywistej |
|
|
|
CDB |
|
Zmiana zawartości rejestrów DB (rejestru DB i DI) |
|
|
|
MCR( |
|
Zachowanie RLO na stosie MCR, początek MCR |
MCR) |
|
Odczyt RLO ze stosu MCR, koniec MCR |
MCRA |
|
Aktywacja obszaru MCR |
MCRD |
|
Dezaktywacja obszaru MCR |
|
|
|
FORMATY LICZBOWE
Nazwa |
Przykład |
Opis zakres liczb |
Bity |
||
BOOL |
|
Pojedynczy bit |
1 |
||
BYTE |
B#16#AF |
Bajt 00 ÷ FF, czyli 0 ÷ 256 |
8 |
||
WORD |
W#16#00AF |
Słowo 0000 ÷ FFFF, czyli 0 ÷ 65535 lub jak INT |
16 |
||
DWORD |
DW#16#0000 00AF |
Podwójne słowo 0000 0000 ÷ FFFF FFFF, czyli 0 ÷ 4 294 967 296 lub jak DINT |
32 |
||
INT |
175 |
Liczba -32 768 ÷ 32 767 |
16 |
||
DINT |
D#175 |
Liczba -2 147 483 648 ÷ 2 147 483 647 |
32 |
||
REAL |
1.750000e+002 |
Liczba zmiennoprzecinkowa (mantysa, cecha) Ⴑ3.402823*1038, Ⴑ1.17595*10-38 |
32 |
||
S5TIME |
S5T#2m55s |
Czasówka 10msႸ2h 46m 30s |
16 |
||
TIME |
T#24d20h31m23s647ms |
Czas 0 Ⴘ 24dni 20godz 31min 23s 647ms=2 147 483 647ms |
32 |
||
DATE |
D#01-2-25 |
Data 25 luty 2001 |
16 |
||
TIME_OF_DAY |
TOD#16:39:47.147 |
Czas dnia godzina czasu systemowego |
32 |
||
DATE_AND_TIME |
DT#01-2-25-16:39:47.147 |
Data i czas np. czasu systemowego (odczyt poprzez SFC1) |
64 |
||
Format |
Zapis |
Opis |
Bity |
||
Szesnastkowy |
B#16#AF |
Można przedstawić każdą liczbę czas wartość licznika lub dowolny zestaw bitów z różnych miejsc programu |
8 |
||
|
W#16#00AF |
|
16 |
||
|
DW#16#0000 00AF |
|
32 |
||
Dwójkowy |
2#1010 1111 |
Dowolny zestaw bitów słowo lub liczba (8,16,32bity) |
|
||
Dziesiętny |
175 |
Liczba -32 768 Ⴘ 32 767 |
16 |
||
|
L#175 |
Liczba -2 147 483 648 ÷ 2 147 483 647 |
32 |
||
Zmiennoprzecinkowy |
1.750000e+002 |
Format liczby REAL |
32 |
||
BCD na 3 cyfrach |
W#16#0175 |
Zakres cyfr 0 Ⴘ9 najstarszy bajt 0-liczba dodatnia F- liczba ujemna np. W#16#F175 to -175 |
16 |
||
BCD na 7 cyfrach |
DW#16#000 0175 |
Zakres cyfr 0 Ⴘ9 najstarszy bajt 0-liczba dodatnia F- liczba ujemna np. W#16#F000 0175 to -175 |
32 |
||
Licznik |
C#175 |
Wartość licznika BCD C#175=W#16#0175=175 |
16 |
||
Czas czasówki |
S5T#2m55s |
Wartość czasu BCD najstarszy bajt 1=10ms 2=0,1s 3=1s 4=10s np. 5T#2m55s=175s=1s*175=W#16#3175 S5T#29m10s=1750s=10s*175=W#16#4175 |
16 |
Format |
Przykład |
Opis |
Bity |
Czas |
T#24D20H31M23S647MS T#-24D20H31M23S648MS |
TIME - maksymalna i minimalna wartość w przykładzie (D- dni, H- godziny, M- minuty, S-sekundy, MS- milisekundy) |
32 |
Data |
D#2002-12-31 |
DATE - określa datę |
16 |
Data i czas |
DT#99-12-31-23:59:59.999 |
DATE_AND_TIME - data i godzina |
64 |
Czas dnia |
TOD#23:59:59.999 |
TIME_OF_DAY - czas dnia do 24 godzin |
32 |
Wskaźnik prosty |
P#20.6 |
Wskaźnik na bajt 20 bit 6 |
16 |
Wskaźnik pełny |
P#I 0.0 WORD 2 P#DB2.DBX 10.0 BYTE 6 |
Na pierwsze dwa słowa począwszy od I 0.0 Na 6 bajtów Bloku DB2 począwszy od DBX10.0 /Diagnostyka IV-16 |
32 |
Litera |
'a' |
Znaki alfanumeryczne |
8 |
Tekst (grupa danych) |
'Max 254 znaki' '%@&*^!?/\+:;",.<>|_)(`~' |
STRING[254] Cyfra w nawiasie określa ilość bajtów(liter) w zmiennej |
8 do 2032 |
Struktura |
STRUC |
Zestaw zmiennych różnego typu Zdefiniowany zestaw zmiennych przez użytkownika |
|
Tablica zmiennych |
UDT12 |
UDT - tablica zmiennych zawartych w UDT12 a w UDT12 definiujemy zmienne |
|
Funkcja ARRAY |
ARRAY[11..120] |
Tworzy zmienne z numerami w nawiasach kwadratowych (tu 110 elementów o numerach od 11 do 120) |
|
Bloki w S 7
Bloki OB
OB 1- główny blok programowy, priorytet 1
OB 10 Ⴘ17- przerwania czasowe, priorytet 2 np. do archiwizacji danych / II-14
Wykonywane od zadanego terminu cyklicznie co określony czas /Diagnostyka XII-4
OB 20Ⴘ23- przerwania czasowe, priorytet 3Ⴘ6 / II-13
Wykonywane po upływie określonego czasu /Diagnostyka XII-14
OB 30Ⴘ38- przerwania cykliczne, priorytet 7Ⴘ15, czas 1Ⴘ65000ms / II-13, X-5
Wykonywane ciągle co określony czas /Diagnostyka XII-19
OB 40Ⴘ47- przerwania sprzętowe, priorytet 16Ⴘ23 / II-13
Wykonywane po wystąpieniu określonego zdarzenia w module CP lub FM /Diagnostyka XII-22
OB 50,51- przerwania komunikacyjne, priorytet 24 / II-13
OB 80Ⴘ87- przerwania przy błędzie asynchronicznym, priorytet 26 / II-13
OB 80 - Błąd czasu pętli OB1, pominięcie czasu przerwania, powtórne wywołanie bloku OB kiedy nie została zakończona obsługa tego przerwania /Diagnostyka XIV-5
OB 81 - Błąd zasilania 24V lub baterii podtrzymującej pamięć /Diagnostyka XIV-6
OB 82 - Obsługa przerwania diagnostycznego /Diagnostyka XIV-8
/Komunikacja VI-99
OB. 83 - Wyjęcie lub wstawienie modułu z raka /Diagnostyka XIV-9
OB 84 - Błąd CPU /Diagnostyka XIV-10
OB 85 - Błąd sekwencji programu (np. powstaje wywołanie OB. którego nie ma w sterowniku, błąd bloku DB skojarzonego z SFB, błąd podczas odświeżania obszaru odwzorowania we/wy) /Diagnostyka XIV-11
/Komunikacja VI-97
OB 86 - Błąd w komunikacji z modułami IM lub sieci Profibas DP /Diagnostyka XIV-12
/Komunikacja VI-94
OB. 87 - Błąd komunikacyjny w trakcie przekazu danych z wykorzystaniem funkcji komunikacyjnych, blok danych do którego przekazujemy dane nie istnieje lub jest zbyt mały /Diagnostyka XIV-13
OB 100- wykonywane przy pełnym restarcie (przełączenie STOP do RUN) /Diagnostyka XIII-4
OB 101- wykonywane po zaniku zasilania (obsługiwane przez S 7 serii 400) /Diagnostyka XIII-4
OB 102 - wykonywany (obsługiwane przez S 7 serii 400) /Diagnostyka XIII-4
OB. 121 - Błąd programowania np. brak DB, przekroczono zakres M, T, C itp. /Diagnostyka XIV-14
OB 122 - Błąd dostępu do obszaru we/wy (brak odpowiednich peryferii PIW PQW) /Diagnostyka XIV-15
/Komunikacja VI-96
Bloki SFC, FC, FB (z biblioteki)
Zestaw IEC Converting Blocks
FC 3 „D_TOD_DT” - Konwersja data czas dnia na format data i czas /Diagnostyka XII-8
FC 34 „SB_DT_DT”- Siemensa do odejmowania dwu dat i czasu systemowego i podania różnicy w formacie TIME
Zestaw PID Controls Bloks
FB 41 „CONT_C” - Regulator PID /Diagnostyka XVII-16
FB 42 „CONT_S” - Regulator PI /Diagnostyka XVII-14
FB 43 „PULSEGEN” - Generator szerokości impólsów /Diagnostyka XVII-21
Zestaw Communications Blocks
FC 1 „DP_RECV” - Odbiór danych z DP Slav przez moduł komunikacyjny CP /Komunikacja VII-7
FC 2 „DP_SEND” - Wysyłanie danych do DP Slav przez moduł komunikacyjny CP /Komunikacja VII-9
FC 3 „DP_DIAG” - Diagnostyka sieci przez moduł komunikacyjny CP /Komunikacja VII-21
FC 4 „DP_CTRL - Sterowanie pracą modułu komunikacyjnego CP /Komunikacja VII-22
FC „AG_SEND” - Wysyłanie danych łączem Profibas FLD /Komunikacja VII-27
FC „AG_RECV” - Odbiór danych łączem Profibas FLD /Komunikacja VII-28
Bloki SFC
SFC 1 „READ_CLK” - do odczytu daty i czasu systemowego
SFC 11 „DPSYC_FR” - Synchronizacja grupy urządzeń w sieci DP Slav /Komunikacja VI-81
SFC 13 „DPNRM_DG” - Odczyt informacji diagnostycznych z DP Slav /Komunikacja VI-115
SFC 14 „DPRD_DAT” - Odczyt spójnego rekordu danych z DP Slav /Komunikacja VI-137
SFC 15 „DPWR_DAT” - Zapis spójnego rekordu danych do DP Slav /Komunikacja VI-138
SFC 21 „FILL” - Inicjalizacja obszaru pamięci (przepisanie zawartości jednej zmiennej do wielu innych zmiennych np. zerowanie bloku DB) /Diagnostyka IV-27
SFC 22 „CREAT_DB” - Tworzy blok DB /Diagnostyka IV-26
SFC 28 „SET_TINT” - Parametryzacja OB10-17 /Diagnostyka XII-8
SFC 29 „CAN_TINT” - Dezaktywacja przerwania OB10-17 /Diagnostyka XII-10
SFC 30 „ACT_TINT” - Aktywacja przerwania OB10-17 /Diagnostyka XII-9
SFC 31 „QRY_TINT” - Sprawdzanie statusu przerwań OB10-17 /Diagnostyka XII-11
SFC 32 „SRT_DINT” - Parametryzacja i aktywacja przerwania OB20-13 /Diagnostyka XII-15
SFC 33 „CAN_DINT” - Dezaktywacja przerwania OB20-23 /Diagnostyka XII-16
SFC 33 „QRY_DINT” - Sprawdzanie statusu przerwań OB20-23 /Diagnostyka XII-17
SFC 36 „MSK_FLT” - Maskowanie błędów synchronicznych /Diagnostyka XIV-17
SFC 37 „DMSK_FLT” - Odblokowanie maskowania błędów synchronicznych /Diagnostyka XIV-20
SFC 38 „READ_ERR” - Odczyt rejestru błędów synchronicznych /Diagnostyka XIV-21
SFC 39 „DIS_IRT” - Dezaktywacja przerwań błędów asynchronicznych /Diagnostyka XIV-22
SFC 40 „EN_IRT” - Odblokowanie przerwań błędów asynchronicznych /Diagnostyka XIV-23
SFC 41 „DIS_AIRT” - Opóźnienie przerwań o wyższym priorytecie /Diagnostyka XIV-24
SFC 42 „EN_AIRT” - Zezwolenie dla przerwań o wyższym priorytecie /Diagnostyka XIV-24
SFC 44 „REPL_VAL” - Do zapisania w akumulatorze ACCU1 wartości zastępczej (np. po wywołaniu OB122 w celu ustalenia wartości po wystąpieniu błędu dostępu do peryferii) /Komunikacja IV-96
SFC 54 „RD_DPARM” - Odczyt zdefiniowanych parametrów dla modółów SM /Diagnostyka XV-3
SFC 55 „WR_PARM” - Zapis rekordu danych do modułu /Diagnostyka XV-9
SFC 55-58 - Parametryzacja włożonego modułu do raka /Diagnostyka XV-4
SFC 59 „RD_REC” - Odczyt rekordu danych z modułu /Diagnostyka XV-12
SFC 65 „X_SEND” - Wysyłanie informacji do stacji w sieci MPI /Komunikacja IV-16
SFC 66 „X_RCV” - Odbieranie informacji do stacji w sieci MPI /Komunikacja IV-17
SFC 67 „X_GET” - Pobieranie danych z dowolnej stacji dołączonej do sieci MPI /Komunikacja IV-13
SFC 68 „X_PUT” - Zapisywanie danych do dowolnej stacji dołączonej do sieci MPI /Komunikacja IV-14