S7-1200_cz.9.pdf

(1148 KB) Pobierz
Elektronika Praktyczna
AUTOMATYKA I MECHATRONIKA
Instrukcje programowania
– instrukcje rozszerzone
oraz umożliwiające operacje
na łańcuchach
Dodatkowe materiały
na CD i FTP
Kontynuujemy rozpoczęty opis instrukcji
programowania obsługiwanych przez sterowniki
S7-1200. W  tym miesiącu skupiamy się na
prezentacji i  omówieniu instrukcji umożliwiających
wykonywanie operacji na znakach i  łańcuchach.
Jak się okazuje, ich możliwości coraz bardziej
zbliżają się do mechanizmów dostępnych do
niedawna wyłącznie dla programistów piszących
aplikacje w  języku C.
LEN Pobiera długość łańcucha
CONCAT Łączy dwa łańcuchy
Instrukcje operacji na łańcuchach
W celu tworzenia wiadomości wyświetlanych na panelach ope-
ratorskich lub zapisywanych w dzienniku zdarzeń (log), w programie
sterującym użytkownik może wykorzystywać następujące instrukcje
operujące na łańcuchach i znakach:
LEFT
Pobiera lewy podłańcuch z łań-
cucha
134
ELEKTRONIKA PRAKTYCZNA 9/2010
AUTOMATYKA I MECHATRONIKA
S7-1200
677320531.073.png 677320531.084.png 677320531.095.png 677320531.106.png 677320531.001.png 677320531.012.png 677320531.023.png 677320531.026.png 677320531.027.png 677320531.028.png 677320531.029.png 677320531.030.png 677320531.031.png 677320531.032.png 677320531.033.png
S7-1200
RIGHT
Pobiera prawy podłańcuch
z łańcucha
Po połączeniu, IN1 jest lewą częścią, a IN 2 prawą częścią łańcucha
połączonego. Jeżeli połączony łańcuch jest dłuższy od dopuszczalnej
długości maksymalnej, to wynikowy łańcuch jest ograniczany do dłu-
gości maksymalnej i ENO jest ustawiany na 0.
MID
Pobiera środkowy podłańcuch
z łańcucha
LEFT
Para-
metr
Typ pa-
rametru
Typ
danych
Opis
IN IN STRING
Łańcuch wejściowy
L IN INT
Długość podłańcucha, jaki ma być utwo-
rzony z wykorzystaniem L skrajnych lewych
znaków łańcucha IN
OUT OUT STRING
Łańcuch wyjściowy
DELETE Usuwa podłańcuch z łańcucha
LEFT ( Left substring ) zwraca podłańcuch utworzony z pierwszych
L znaków parametru IN typu STRING.
Jeżeli L jest większy od bieżącej długości łańcucha IN, to jako
OUT jest zwracany cały łańcuch IN.
Jeżeli wejściowy łańcuch jest pusty, to jako OUT jest zwracany
pusty łańcuch.
Jeżeli L jest ujemny lub zero, to zwracany jest pusty łańcuch
i ENO jest ustawiany na 0.
INSERT Wstawia podłańcuch do łańcucha
RIGHT
Para-
metr
Typ pa-
rametru
Typ
danych
Opis
REPLACE Zastępuje podłańcuch w łańcuchu
IN IN STRING
Łańcuch wejściowy
Długość podłańcucha,, jaki ma być utworzo-
ny z wykorzystaniem L skrajnych prawych
znaków łańcucha IN
L IN INT
OUT OUT STRING
Łańcuch wyjściowy
FIND
Znajduje podłańcuch lub znak
w łańcuchu
RIGHT ( Right substring ) zwraca L ostatnich znaków łańcucha wej-
ściowego.
Jeżeli L jest większy od bieżącej długości łańcucha IN, to jako
OUT jest zwracany cały łańcuch IN.
Jeżeli wejściowy łańcuch jest pusty, to jako OUT jest zwracany
pusty łańcuch.
Jeżeli L jest ujemny lub zero, to zwracany jest pusty łańcuch
i ENO jest ustawiany na 0.
Dana typu STRING
Dane typu STRING są przechowywane jako 2-bajtowy nagłówek,
po którym następuje do 254 bajtów znaków kodu ASCII. Pierwszy bajt
oznacza maksymalną długość łańcucha, która jest podawana w na-
wiasie kwadratowym podczas inicjalizacji łańcucha lub domyślnie
wynosi 254. Drugi bajt nagłówka jest to bieżąca długość, czyli liczba
prawidłowych znaków w łańcuchu. Bieżąca długość musi być mniej-
sza lub równa długości maksymalnej.
MID
Para-
metr
Typ pa-
rametru
Typ
danych
Opis
IN IN STRING
Łańcuch wejściowy
Długość podłańcucha, jaki ma być utworzo-
ny z wykorzystaniem L znaków łańcucha IN,
począwszy od znaku na pozycji P
Inicjalizacja danej typu STRING
Przed użyciem dowolnej instrukcji dotyczącej łańcuchów, wej-
ściowe i wyjściowe dane typu STRING muszą być zainicjalizowane
w pamięci jako prawidłowe łańcuchy.
L IN INT
Pozycja pierwszego znaku do skopiowania
do podłańcucha: P = 1 oznacza początko-
wą pozycję w łańcuchu IN
OUT OUT STRING Łańcuch wyjściowy
MID ( Middle substring ) zwraca środkową część łańcucha wejścio-
wego. Środkowy podłańcuch ma długość L znaków i rozpoczyna się
od znaku na pozycji P (włącznie).
Jeżeli suma L i P jest większa od bieżącej długości łańcucha IN, to
jako OUT jest zwracany podłańcuch, który zaczyna się od znaku na
pozycji P i kończy na ostatnim znaku łańcucha IN.
Jeżeli pozycja P wykracza poza bieżącą długość łańcucha IN, to jako
OUT jest zwracany pusty łańcuch i ENO jest ustawiany na 0.
Jeżeli L lub P jest ujemny lub zero, to jako OUT jest zwracany
pusty łańcuch i ENO jest ustawiany na 0.
LEN
Para-
metr
Typ pa-
rametru
Typ
danych
Opis
IN IN STRING Łańcuch wejściowy
OUT OUT UINT Liczba prawidłowych znaków łańcucha IN
LEN ( Length of string ) zwraca bieżącą długość łańcucha IN na wyj-
ściu OUT. Pusty łańcuch ma długość zerową.
CONCAT
Para-
metr
Typ pa-
rametru
Typ
danych
Opis
IN1 IN STRING Łańcuch wejściowy 1
IN2 IN STRING Łańcuch wejściowy 2
OUT OUT STRING Łańcuch połączony (łańcuch 1 + łańcuch 2)
CONCAT ( Concatenate strings ) łączy parametry IN 1 i IN 2 typu
STRING w celu uformowania jednego łańcucha wyjściowego OUT.
DELETE
Para-
metr
Typ pa-
rametru
Typ
danych
Opis
IN IN STRING
Łańcuch wejściowy
ELEKTRONIKA PRAKTYCZNA 9/2010
135
P IN INT
677320531.034.png 677320531.035.png 677320531.036.png 677320531.037.png 677320531.038.png 677320531.039.png 677320531.040.png 677320531.041.png 677320531.042.png 677320531.043.png 677320531.044.png 677320531.045.png 677320531.046.png 677320531.047.png 677320531.048.png 677320531.049.png 677320531.050.png 677320531.051.png 677320531.052.png 677320531.053.png 677320531.054.png 677320531.055.png 677320531.056.png 677320531.057.png 677320531.058.png 677320531.059.png 677320531.060.png 677320531.061.png 677320531.062.png 677320531.063.png 677320531.064.png 677320531.065.png 677320531.066.png 677320531.067.png 677320531.068.png 677320531.069.png 677320531.070.png 677320531.071.png 677320531.072.png 677320531.074.png
AUTOMATYKA I MECHATRONIKA
L IN INT
Liczba znaków do usunięcia
P IN INT
Pozycja pierwszego znaku do usunięcia:
pierwszy znak w łańcuchu IN znajduje się
na pozycji numer 1
OUT OUT STRING
Łańcuch wyjściowy
DELETE ( Delete substring ) usuwa L znaków z łańcucha IN. Usu-
wanie znaków zaczyna się od znaku na pozycji P (włącznie) i pozosta-
ły podłańcuch jest zwracany jako parametr OUT.
Jeżeli L jest równy zero, to jako OUT jest zwracany cały łańcuch
IN i ENO = TRUE.
Jeżeli P jest większy od bieżącej długości łańcucha IN, to jako
OUT jest zwracany cały łańcuch IN i ENO = FALSE.
Jeżeli suma L i P jest większa od długości łańcucha wejściowego,
to znaki są usuwane do końca łańcucha.
Jeżeli L jest ujemny, a P jest ujemny lub równy 0, to jako OUT jest
zwracany pusty łańcuch i ENO = FALSE.
Przed wykonaniem instrukcji DELETE dane muszą być zainicjali-
zowane w pamięci jako prawidłowe łańcuchy STRING.
FIND
Para-
metr
Typ pa-
rametru
Typ
danych
Opis
IN1 IN STRING Ten łańcuch jest przeszukiwany
IN2 IN STRING Ten łańcuch jest poszukiwany
OUT OUT INT
Pozycja znaku w łańcuchu IN1 odpowiadająca
pierwszej zgodności z poszukiwanym wzorem
INSERT
Para-
metr
Typ pa-
rametru
Typ
danych
Opis
FIND ( Find substring ) zwraca położenie w łańcuchu IN1 znaku
podciągu lub pojedynczego znaku wyspecyikowanego w IN2. Poszu-
kiwanie rozpoczyna się od lewej. W OUT jest zwracane położenie
znaku pierwszego wystąpienia łańcucha IN2. Jeżeli łańcuch IN2 nie
jest odnaleziony w IN1, to zwracane jest zero.
IN1 IN STRING
Łańcuch wejściowy 1
IN2 IN STRING
Łańcuch wejściowy 2
P IN INT
Pozycja ostatniego znaku w łańcuchu IN1,
przed miejscem wstawienia łańcucha IN2.
Pozycja pierwszego znaku w łańcuchu IN1 ma
numer 1
Kody warunkowe operacji na łańcuchach
sygnalizowane przez ENO
LEN
ENO Warunek
OUT OUT STRING
Łańcuch wyjściowy
OUT
INSERT ( Insert substring ) wstawia łańcuch IN2 do łańcucha IN1.
Miejsce wstawienia znajduje za pozycją znaku P.
Jeżeli P jest większy od bieżącej długości łańcucha IN1, to IN2 jest
dołączany do IN1 i ENO = FALSE.
Jeżeli P jest ujemny lub równy 0, to jako OUT jest zwracany pusty
łańcuch i ENO = FALSE.
Jeżeli długość nowego łańcucha po operacji INSERT jest dłuższa
od dozwolonej maksymalnej długości łańcucha OUT, to wynikowy
łańcuch jest ograniczany do długości maksymalnej parametru OUT
i ENO = FALSE.
1
Zawsze TRUE, brak możliwości
błędu
Prawidłowa długość łańcucha
CON CAT
ENO Warunek
OUT
1 Nie wykryto błędów
Prawidłowe znaki
Bieżąca długość IN1 przekracza
maksymalną długość IN1 lub
bieżąca długość IN2 przekracza
maksymalną długość IN2
(nieprawidłowy łańcuch)
Bieżąca długość jest ustawiana
na 0
Maksymalna długość IN1, IN2 lub
OUT nie pasuje do alokowanego
zakresu pamięci
Maksymalna długość IN1, IN2
lub OUT wynosi 0 albo 255
(niedozwolona długość)
REPLACE
Para-
metr
0
Typ pa-
rametru
Typ
danych
Opis
IN1 IN STRING Łańcuch wejściowy 1
IN2 IN STRING Łańcuch ze znakami zastępującymi
L IN INT Liczba znaków do zamiany
P IN INT Pozycja pierwszego znaku do zamiany
OUT OUT STRING
Łańcuch wynikowy po połączeniu
jest dłuższy niż maksymalna
długość łańcucha OUT
Znaki łańcucha wynikowego są
kopiowane aż do osiągnięcia
maksymalnej długości łańcucha
OUT
Łańcuch wyjściowy
LEFT
ENO Warunek
REPLACE ( Replace substring ) zamienia L znaków w łańcuchu
IN1. Zamiana rozpoczyna się od znaku na pozycji P (włącznie) w łań-
cuchu IN1, przy czym znaki zastępujące pochodzą z łańcucha IN2.
Jeżeli L jest równy zero, to łańcuch IN2 jest wstawiany na pozycję
P łańcucha IN1 bez usuwania jakiegokolwiek znaku z łańcucha IN1.
Jeżeli P jest równy jedności, to pierwszych L znaków łańcucha
IN1 jest zastąpionych znakami łańcucha IN2.
Jeżeli P jest większy od długości łańcucha IN1, to łańcuch IN2 jest
dołączany do łańcucha IN1 i ENO = FALSE.
Jeżeli L jest ujemny, a P jest ujemny lub równy zeru, to jako OUT
jest zwracany pusty łańcuch i ENO = FALSE.
Jeżeli długość nowego łańcucha po operacji REPLACE jest dłuższa od
dozwolonej maksymalnej długości łańcucha OUT, to wynikowy łańcuch
jest ograniczany do długości maksymalnej parametru OUT i ENO = FALSE.
OUT
1 Nie wykryto błędów
Prawidłowe znaki
Bieżąca długość IN przekracza
maksymalną długość IN
(nieprawidłowy łańcuch)
Maksymalna długość IN lub
OUT nie pasuje do alokowanego
zakresu pamięci
L jest mniejszy lub równy 0
Maksymalna długość IN lub OUT
wynosi 0 lub 255
(niedozwolona długość)
Długość podłańcucha (L) do sko-
piowania jest większa niż maksy-
malna długość łańcucha OUT
Bieżąca długość jest ustawiana
na 0
0
Znaki są kopiowane aż do
osiągnięcia maksymalnej długo-
ści łańcucha OUT
136
ELEKTRONIKA PRAKTYCZNA 9/2010
677320531.075.png 677320531.076.png 677320531.077.png 677320531.078.png 677320531.079.png 677320531.080.png 677320531.081.png 677320531.082.png 677320531.083.png 677320531.085.png 677320531.086.png 677320531.087.png 677320531.088.png 677320531.089.png 677320531.090.png 677320531.091.png 677320531.092.png 677320531.093.png 677320531.094.png 677320531.096.png 677320531.097.png 677320531.098.png 677320531.099.png 677320531.100.png 677320531.101.png 677320531.102.png 677320531.103.png
S7-1200
RIG HT
ENO Warunek
OUT
1 Nie wykryto błędów
Prawidłowe znaki
Bieżąca długość IN przekracza
maksymalną długość IN
(nieprawidłowy łańcuch)
Maksymalna długość IN lub
OUT nie pasuje do alokowanego
zakresu pamięci
L jest mniejszy lub równy 0
Maksymalna długość IN lub OUT
wynosi 0 lub 255
(niedozwolona długość)
Długość podłańcucha (L) do sko-
piowania jest większa niż maksy-
malna długość łańcucha OUT
Bieżąca długość jest ustawiana
na 0
INSE RT
ENO Warunek
OUT
0
1 Nie wykryto błędów
Prawidłowe znaki
P jest większy niż długość IN1
IN2 jest dołączany do IN1 zaraz
po ostatnim znaku IN1
Znaki są kopiowane aż do
osiągnięcia maksymalnej długo-
ści łańcucha OUT
P jest mniejszy lub równy 0
Bieżąca długość IN1 przekracza
maksymalną długość IN1 lub
bieżąca długość IN2 przekracza
maksymalną długość IN2
(nieprawidłowy łańcuch)
Maksymalna długość IN1, IN2
lub OUT nie pasuje do alokowa-
nego zakresu pamięci
Maksymalna długość IN1, IN2
lub OUT wynosi 0 albo 255
(niedozwolona długość)
Wynikowy łańcuch po wsta-
wieniu znaków jest dłuższy niż
maksymalna długość łańcucha
OUT
MID
ENO Warunek
OUT
0
Bieżąca długość jest ustawiana
na 0
1 Nie wykryto błędów
Prawidłowe znaki
Bieżąca długość IN przekracza
maksymalną długość IN
(nieprawidłowy łańcuch)
Maksymalna długość IN lub
OUT nie pasuje do alokowanego
zakresu pamięci
L lub P jest mniejszy lub równy
0
P jest większy niż maksymalna
długość IN
Maksymalna długość IN lub OUT
wynosi 0 lub 255
(niedozwolona długość)
Bieżąca długość jest ustawiana
na 0
Znaki wynikowego łańcucha są
kopiowane aż do osiągnięcia
maksymalnej długości łańcucha
OUT
0
REPL ACE
ENO Warunek
OUT
1 Nie wykryto błędów
Prawidłowe znaki
IN2 jest dołączany do IN1 zaraz
po ostatnim znaku IN1
Długość podłańcucha (L) do sko-
piowania jest większa niż maksy-
malna długość łańcucha OUT
Znaki są kopiowane, począwszy
od pozycji P aż do osiągnięcia
maksymalnej długości łańcucha
OUT
P jest większy niż długość IN1
P wskazuje pozycję w IN1, ale
w IN1 pozostaje mniej niż L
znaków
IN2 zastępuje końcowe znaki
IN1 począwszy od pozycji P
DEL ETE
ENO Warunek
L jest mniejszy od 0 lub P jest
mniejszy lub równy 0
OUT
Bieżąca długość IN1 przekracza
maksymalną długość IN1 lub
bieżąca długość IN2 przekracza
maksymalną długość IN2
(nieprawidłowy łańcuch)
Maksymalna długość IN1, IN2
lub OUT nie pasuje do alokowa-
nego zakresu pamięci
Maksymalna długość IN1, IN2
lub OUT wynosi 0 albo 255
(niedozwolona długość)
1 Nie wykryto błędów
Prawidłowe znaki
P jest większy niż bieżąca
długość IN
IN jest kopiowany do OUT bez
usuwania znaków
0
Bieżąca długość jest ustawiana
na 0
Bieżąca długość IN przekracza
maksymalną długość IN (niepra-
widłowy łańcuch)
0
Maksymalna długość IN lub
OUT nie pasuje do alokowanego
zakresu pamięci
L jest mniejszy od 0 lub P jest
mniejszy/równy 0
Maksymalna długość IN lub OUT
wynosi 0 albo 255
(niedozwolona długość)
Bieżąca długość jest ustawiana
na 0
Znaki wynikowego łańcucha są
kopiowane aż do osiągnięcia
maksymalnej długości łańcucha
OUT
Wynikowy łańcuch po zamianie
znaków jest dłuższy niż maksy-
malna długość łańcucha OUT
Wynikowy łańcuch po usunięciu
znaków jest dłuższy niż maksy-
malna długość łańcucha OUT
Znaki wynikowego łańcucha są
kopiowane aż do osiągnięcia
maksymalnej długości łańcucha
OUT
FIND
ENO Warunek OUT
1 Nie wykryto błędów Prawidłowa pozycja znaku
Bieżąca długość IN1 przekracza
maksymalną długość IN1 lub
bieżąca długość IN2 przekracza
maksymalną długość IN2
(nieprawidłowy łańcuch)
0
Maksymalna długość IN1, IN2
lub OUT nie pasuje do aloko-
wanego zakresu pamięci
IN2 jest większy niż IN1
Maksymalna długość IN1 lub
IN2 wynosi 0 albo 255
(niedozwolona długość)
Pozycja znaku jest ustawiana
na 0
Tomasz Starak
ELEKTRONIKA PRAKTYCZNA 9/2010
137
677320531.104.png 677320531.105.png 677320531.107.png 677320531.108.png 677320531.109.png 677320531.110.png 677320531.111.png 677320531.112.png 677320531.113.png 677320531.114.png 677320531.115.png 677320531.116.png 677320531.002.png 677320531.003.png 677320531.004.png 677320531.005.png 677320531.006.png 677320531.007.png 677320531.008.png 677320531.009.png 677320531.010.png 677320531.011.png 677320531.013.png 677320531.014.png 677320531.015.png 677320531.016.png 677320531.017.png 677320531.018.png 677320531.019.png 677320531.020.png 677320531.021.png 677320531.022.png 677320531.024.png 677320531.025.png
Zgłoś jeśli naruszono regulamin