7
| FUN 22 P BREAK | PĘTLA BREAK FROM FOR iNEXT(BREAK) | FUN22 P BREAK |
|
● Jeżeli „EN”=1 lub zmieni się z 0→1(instrukcja P), nastąpi zakończenie pętli programu FOR iNEXT ● Program w pętli FOR-NEXT jest wykonywany N-krotnie (wartość N określana jest argumentem instrukcji FOR). W razie potrzeby zakończenia pętli w cyklu wcześniejszym niż N-ty, należy zastosować instrukcję BREAK ● Instrukcja BREAK musi znajdować się wewnątrz pętli FOR-NEXT
Opis: Operacja zliczania pętli wykorzystywana do realizowania pętli programu FOR-NEXT wyznaczana jest przez rejestr D10. Program w pętli FOR-NEXT, przeznaczony jest do wyszukiwania identycznych danych zapisanych w D100, jak dane w tabeli rejestrów rozpoczynającej się od R0. W przypadku znalezienia takich danych, pętla wyszukiwania zostanie zakończona, a wykonywanie programu będzie kontynuowane za instrukcją NEXT. Jeżeli dane nie zostaną znalezione, pętla zostanie zrealizowana N-krotnie (wartość N zapisana jest w D10) i dopiero wówczas, wykonywanie programu będzie kontynuowane za instrukcją |
||
| FUN 23 P DIV48 | DZIELENIE 48-BITOWE | FUN 23 P DIV48 |
|
Opis l Jeżeli “EN”=1 lub zmieni się z 0→1 (instrukcja P), to nastąpi 48-bitowa operacja dzielenia. Dzielna i dzielnik tworzone są przez trzy kolejne rejestry, poczynając odpowiednio od Sa i Sb. Jeżeli wynikiem będzie zero, to wyjście 'D=0' zostanie ustawione na 1. Jeżeli dzielnik będzie zerem, to 'ERR' zostanie ustawiony na 1, a wynikowy rejestr pozostanie niezmieniony. l Wszystkie argumenty związane z tą funkcją są 48-bitowe, dlatego też Sa, Sb i D składają się z 3 kolejnych rejestrów. Przykład: dzielenie 48-bitowe
W przykładzie tym, dzielna tworzona przez rejestry R2, R1, R0 zostanie podzielona przez dzielnik tworzony przez rejestry R5, R4, R3. Iloraz zostanie zapisany w rejestrze R8, R7 i R6
|
||
| FUN 24 DP SUM |
SUM (Sumowanie danych ) |
FUN 24 DP SUM |
|
Opis
l Jeżeli “EN”=1 lub zmieni się z 0→1 (instrukcja P), to nastąpi dodanie kolejnych N jednostek rejestrów 16-bitowych lub 32-bitowych (instrukcja P) i zapisanie wyników w rejestrze opisanym literą D. l Jeżeli wartość N jest równa 0 lub jest większa od 511, to operacja nie zostanie przeprowadzona. l Port komunikacyjny 1~4 może być wykorzystywany jako interfejs komunikacyjny ASCII ogólnego zastosowania. Jeżeli metodą wykrywania błędów danych jest suma kontrolna, to instrukcja ta może być wykorzystana do wygenerowania sumy dla wysyłanych danych lub do sprawdzenia, czy otrzymane dane są błędne.
Przykład 1 Kiedy M1 zmieni stan zWYŁ→WŁ, instrukcja wykona obliczenie sumydanych 16-bitowych
Przykład 2 Kiedy M1 jest w stanieWŁ, następuje sumowanie danych 32-bitowych.
|
||
| FUN 25 DP MEAN |
ŚREDNIA (Obliczenie średniej) |
FUN 25 DP MEAN |
|
Opis
l Jeżeli “EN”=1 lub zmieni się z 0→1 (instrukcja P), to nastąpi dodanie kolejnych N wartości numerycznych 16-bitowych lub 32-bitowych (instrukcja P) rozpoczynających się od S i podzielenie ich przez wartość N. Następnie, wartość średnia (zaokrąglona) zostanie zapisana w rejestrze opisanym literą D. l Jeżeli wartosć N nie mieści się w zakresie od 2 do 256, stan błędu zakresu N "ERR" zostanie ustawiony na 1. W takim przypadku funkcja nie zostanie zrealizowana.
|
||
| FUN 26 DP SQRT | Pierwiastek kwadratowy | FUN 26 DP SQRT |
|
l Jeżeli “EN”=1 lub zmieni się z 0→1 (instrukcja P), to nastąpi obliczenie pierwiastka kwadratowego(z zaokrągleniem) z danych wymienionych w polu oznaczonym S i zapisanie wyniku w rejestrze D. l Ponieważ wartość S pochodzi z zawartości rejestru, to jeżeli będzie ona ujemna, stan błędu zakresu S "ERR" zostanie ustawiony na 1. W takim przypadku operacja nie zostanie zrealizowana.
|
||
| FUN 27 DP NEG |
NEGACJA (obliczenie wartości ujemnej) |
FUN 27 DP NEG |
|
Opis l Jeżeli “EN”=1 lub zmieni się z 0→1 (instrukcja P), to nastąpi zanegowanie (tzn. zostanie obliczona negacja z uzupełnieniem do dwóch) wartości w rejestrze oznaczonym literą D i ponowne zapisanie wyniku w tym rejestrze. l Jeżeli wartość rejestru D będzie ujemna, to operacja negacji sprawi, że wartość ta stanie się dodatnia.
|
||
| FUN 28 DP ABS |
WARTOŚĆ BEZWZGLĘDNA (obliczenie wartości bezwzględnej) |
FUN 28 DP ABS |
|
Opis l Jeżeli “EN”=1 lub zmieni się z 0→1 (instrukcja P), to nastąpi obliczenie wartości bezwzględnej zwartości rejestru oznaczonego literą D i ponowne zapisanie wyniku w tym rejestrze. |
||
| FUN 29 DP EXT | ROZSZERZENIE ZNAKOWE | FUN 29 DP EXT |
|
Opis l Jeżeli “EN”=1 lub zmieni się z 0→1 (instrukcja P), to instrukcja ta zrealizuje rozszerzenie znakowe wartości 16-bitowej oznaczonej literą D do wartości 32-bitowej i zapisze nową wartość w rejestrze 32-bitowym składającym się z dwóch kolejnych słów, D + 1 i D. l Instrukcja ta rozszerza wartość numeryczną rejestru 16-bitowego do odpowiedniej wartości numerycznej rejestru 32-bitowego (na przykład przekształca 33FFH na 000033FFH). Instrukcja wykorzystywana jest głównie w operacjach numerycznych (+,-,*,/,CMP......), w których można przyjąć 16 i 32-bitowe wartości numeryczne jako argumenty. Przed rozpoczęciem operacji, wszystkie argumenty powinny zostać ustawione na taką samą długość.
|
||
| FUN 30 PID |
OPERACJA PID OGÓLNEGO ZASTOSOWANIA (Krótki opis) |
FUN 30 PID |
|
Opis
l Funkcja PID (FUN 30) przeprowadza obliczenia oparte na wzorze PID na podstawie aktualnej wartości zmiennej procesowej (PV) wyznaczonej z zewnętrznego sygnału analogowego oraz nastaw (SP) procesu. Wynikiem obliczeń jest wyjściowy sygnał sterujący dla sterowanego procesu, który może zostać podany bezpośrednio do modułu analogowego lub innego interfejsu wyjściowego lub też pozostawiony do realizacji kolejnego procesu. Prawidłowe wykorzystanie sterowania PID w procesie umożliwia otrzymanie szybkiego i dokładnego wyniku PV podążającego za zmianą SP oraz uodparnia proces na zakłócenia. l Wzór PID w formie cyfrowej: Mn = [(D4005/Pb) x En] + + Bias Mn : Wyjście sterujące w czasie ”n” D4005 : Stała wzmocnienia; wartością domyślną jest 1000. Można ją ustawić w zakresie 1~5000. Pb : Pasmo proporcjonalne ( zakres : 2~5000, jednostka 0.1%. Kc (wzmocnienie) =1000/ Pb ) Ti : Całkująca stała czasowa ( zakres : 0~9999 odpowiada 0.00~99.99 powtórzeniom/minutę ) Td : Różniczkująca stała czasowa ( zakres : 0~9999 odpowiada 0.00~99.99 minutom ) PVn : Wartość procesowa w czasie ”n” PVn-1 : Wartość procesowa w czasie ”n-1” En :Błąd w czasie ”n” =nastawa ( SP) -wartość procesowa w czasie ”n” (PVn) Ts : Przedział czasowy obliczeń PID ( zakres: 1~3000, jednostka : 0.01 s ) Bias : Offset wyjścia sterującego ( zakres: 0~16380 ) |
||
| FUN 31 P CRC16 |
OBLICZANIE CRC16(CRC16) |
FUN 31 P CRC16 |
|
Opis
● Jeżeli “EN”=1 lub zmieni się z 0→1 (instrukcja P), to instrukcja rozpocznie obliczanie CRC16 od młodszego bajtuS przez długość N. Wynik obliczeń zostanie zapisany w rejestrze D i D+1. ● Wskaźnik wyjściowy "D=0" będzie włączony jeżeli wynik obliczeń będzie równy 0. ● W przypadku nieprawidłowej długości, instrukcja nie przeprowadzi obliczeń i włączy się błąd na wyjściu "ERR". ● Przy komunikacji z inteligentnym urządzeniem peryferyjnym w binarnym formacie danych, bardzo często wykorzystywana jest funkcja CRC16. Metoda ta wykorzystywana jest przez dobrze znany protokół komunikacyjny Modbus RTU. ● CRC16 jest wartością kontrolną przesyłanej ramki danych. ● Po przeprowadzeniu obliczeń CRC16 na podstawie danych otrzymanych w komunikacie oraz wartości kontrolnej, wynik musi wynosić 0. Oznacza to brak błędu w tej ramce wiadomości.
|
||
| FUN 32 ADCNV |
KONWERSJA WARTOŚCI WEJŚCIA ANALOGOWEGO 4~20MA(ADCNV) |
FUN 32 ADCNV |
|
Opis
● Jeżeli jednym z wejść analogowych jest 2~10mA/ 4~20mA/1~5V/2~10V, to sposobem do uzyskania odpowiedniej wartości dla tego sygnału jest analogowy moduł wejściowy. Zakres wejściowy modułu wynosi0~10mA/0~5V (Ustawienie przy 5V, polaryzacja unipolarna) lub 0~20mA/0~10V(Ustawienie przy 10V, polaryzacja unipolarna). W takim przypadku wystąpi przesunięcie wartości odczytu. Instrukcja ta stosowana jest w celu eliminacji przesunięcia i konwersji wartości odczytu na wartość w zakresie 0~4095(12-bitów) lub 0~16383(14-bitów). ● Jeżeli "EN"=1, nastąpi konwersja rozpoczynająca się od S, na długości N. Wynik zostanie zapisany w rejestrze D. ● Jeżeli "F/T"=0, wybrana zostanie 12-bitowa rozdzielczość analogowego modułuwejściowego. Jeżeli "F/T"=1, nastąpi przypisanie 14-bitowej rozdzielczości. ● Instrukcja ta nie będzie działać w przypadku nieprawidłowej wartości N. ● Wartość odczytu na wejściu analogowym musi być w formacie -2048~2047 lub -8192~8191, aby konwersja była zgodna. W innym wypadku, jeżeli wartość odczytu będzie w formacie 0~4095 lub 0~16383, konwersja będzie niezgodna.
Przykład Opis: Przy włączonym M0 i wyłączonym M1, przeprowadzona zostanie 6-punktowa konwersja rozpoczynająca się od R3840, podczas której wyeliminowane zostanie przesunięcie wartości odczytu 4~20mA, a odpowiednia wartość 0~4095 zostanie zapisana w R500~R505.
Przy włączonych M0 i M1, przeprowadzona zostanie 6-punktowa konwersja rozpoczynająca się od R3840, podczas której wyeliminowane zostanie przesunięcie wartości odczytu 4~20mA, a odpowiednia wartość 0~16383 zostanie zapisana w R500~R505.
|
||
| FUN 33 P LCNV |
Konwersja liniowa(LCNV) |
FUN 33 P LCNV |
|
● W przypadku, gdy do pomiaru analogowego wykorzystywany jest analogowy moduł wejściowy, wartość odczytana na wejściu analogowym może być przy użyciu tej instrukcji przekonwertowana na zakres jednostek inżynierskich, w celu ich wyświetlenia lub przeprowadzenia operacji sterowania. ● W przypadku kalibracji pomiarowej można zastosować konwersję liniową zmiennej, dzięki czemu zmierzona wartość z PLC może być skorygowana wartością z urządzenia pomiarowego. ● Jeżeli „EN"=1 lub zmieni się z 0→1( instrukcja P), instrukcja przeprowadzi operację konwersji liniowej zgodną z wybranym trybem, gdzie S jest początkowym adresem danych źródłowych, Ts jest początkowym adresem tabeli parametrów konwersji, D jest początkowym adresem do zapisywania przekonwertowanych wyników, a L jest liczbą kolejno konwertowanych adresów źródłowych. ● Istnieją dwa sposoby określania konwersji liniowej:
Sposób 1: Metoda kalibracji dwupunktowej
Wypełnij tabelę parametrów do konwersji wpisując dolną wartość pomiarową (VML), górną wartość pomiarową (VMH) oraz odpowiadające im wartości standardowe – dolną (VSL) i górną (VSH). Wynik po konwersji (Dn) wygenerowany zostanie z danych źródłowych (Sn) za pomocą poniższego równania:
Sposób 2: Mnożnik + metoda przesunięcia Wypełnij tabelę parametrów do konwersji wpisując wartości mnożnika(A), dzielnika(B) i przesunięcia(C). Wynik po konwersji (Dn) wygenerowany zostanie z danych źródłowych (Sn) za pomocą poniższego równania:
Opis trybu roboczego:
1. Kiedy Md = 0, konwersja liniowa przeprowadzana jest sposobem 1 określania konwersji, a wszystkie dane źródłowe charakteryzują się tymi samymi parametrami do konwersji VML, VMH, VSL i VSH. 2. Kiedy Md = 1, konwersja liniowa przeprowadzana jest sposobem 1 określania konwersji, a dane źródłowe charakteryzują się niezależnymi parametrami do konwersji VML, VMH, VSL, VSH. W przypadku N danych źródłowych, tabela parametrów konwersji powinna zawierać N grup parametrów VML, VMH, VSL, VSH ,tj. N×4 rejestrów. 3. Kiedy Md = 2, konwersja liniowa przeprowadzana jest sposobem 2 określania konwersji, a wszystkie dane źródłowe charakteryzują się tymi samymi parametrami do konwersji A, B i C. 4. Kiedy Md = 3, konwersja liniowa przeprowadzana jest sposobem 2 określania konwersji, a dane źródłowe charakteryzują się niezależnymi parametrami do konwersji A, B, C. W przypadku N danych źródłowych, tabela parametrów do konwersji powinna zawierać N grup parametrów A, B, C, tj. N×3 rejestrów.
Przykład programu 1 : Konwersja liniowa w trybie 0
Opis: Kiedy M0=1, konwersja liniowa zostanie zrealizowana w trybie 0, gdzie R100 jest początkowym adresem danych źródłowych, R1000 jest początkowym adresem tabeli parametrów konwersji VML, VMH, VSL, VSH, liczba kolejno konwertowanych wartości wynosi 6, a przekonwertowane wyniki zapisywane będą w R2000~R2005
Przykład programu 2 : Konwersja liniowa w trybie 1
Opis: Kiedy M0=1, konwersja liniowa zostanie zrealizowana w trybie 1, gdzie R100 jest początkowym adresem danych źródłowych, R1000 jest początkowym adresem tabeli parametrów konwersji VML, VMH, VSL, VSH, liczba kolejno konwertowanych wartości wynosi 3, a przekonwertowane wyniki zapisywane będą w R2000~R2002.
Przykład programu 3 : Konwersja liniowa w trybie 2
Opis: Kiedy M0=1, konwersja liniowa zostanie zrealizowana w trybie 2, gdzie R100 jest początkowym adresem danych źródłowych, R1000 jest początkowym adresem tabeli parametrów konwersji A, B, C, liczba kolejno konwertowanych wartości wynosi 6, a przekonwertowane wyniki zapisywane będą w R2000~R2005.
Przykład programu 4: Konwersja liniowa w trybie 3 Opis: Kiedy M0=1, konwersja liniowa zostanie zrealizowana w trybie 3, gdzie R100 jest początkowym adresem danych źródłowych, R1000 jest początkowym adresem tabeli parametrów konwersji A, B, C, liczba kolejno konwertowanych wartości wynosi 4, a przekonwertowane wyniki zapisywane będą w R2000~R2003
|
||
| FUN 34 P MLC |
Multi-liniowa konwersja(MLC) |
FUN 34 P MLC |
|
● W przypadku, gdy do pomiaru analogowego wykorzystywany jest analogowy moduł wejściowy, wartość odczytana na wejściu analogowym może być przy użyciu tej instrukcji przekonwertowana na zakres jednostek inżynierskich, w celu ich wyświetlenia lub przeprowadzenia operacji sterowania. ● W przypadku kalibracji pomiarowej można zastosować multi-liniową konwersję zmiennej, dzięki czemu zmierzona wartość z PLC może być skorygowana wartością z urządzenia pomiarowego. ● Jeżeli „EN"=1 lub zmieni się z 0→1 (instrukcja P), instrukcja przeprowadzi operację multi-liniowej konwersji, w sposób zależny od stanu wejścia X / Y, gdzie Rs jest początkowym adresem danych źródłowych, SI jest liczbą kolejno konwertowanych adresów źródłowych, Tx jest początkowym adresem tabeli wartości na osi rzędnych X, Ty jest początkowym adresem tabeli wartości na osi odciętych Y, TI określa rozmiar tabela X / Y, a D jest początkowym adresem do zapisywania wyników konwersji. ● Jeżeli podczas wykonywania instrukcji stan wejścia X / Y = 0, nastąpi porównanie danych źródłowych z wpisami w tabeli Tx w celu odnalezienia odpowiedniej lokalizacji w tej tabeli (wpisy w tabeli Tx muszą być uszeregowane od najmniejszej do największej), a następnie zostanie przeprowadzona konwersja liniowa zgodna ze zlokalizowaną częścią tabel Tx i Ty. ● W przypadku, gdy wartości danych źródłowych nie zawierają się w zakresie wartości wpisów w tabeli Tx (gdy X / Y = 0) lub Ty (gdy X / Y = 1), wyjście OVR=1. ● W przypadku nieprawidłowej wartości SI lub TI, instrukcja nie zostanie zrealizowana. Wyrażenie: Aby konwersja liniowa przebiegła prawidłowo, wpisy w tabeli wartości X (Tx) muszą być uporządkowane w kolejności od najmniejszej do największej (gdy X / Y = 0); wpisy w tabeli konwertowanych wartości Y (Ty) mogą być natomiast uporządkowane w kolejności od najmniejszej do największej lub odwrotnie (gdy X / Y = 1). Przy wykonaniu tej instrukcji, nastąpi wyszukanie odpowiedniego fragmentu, poprzez porównanie wpisów tabeli z danymi źródłowymi, a następnie przeprowadzona zostanie konwersja liniowa według następującego równania:
Vy = (Vx-Tx_n) × (Ty_n+1-Ty_n/Tx_n+1-Tx_n) + Ty_n jeżeli X/Y=0 Vx = (Vy-Ty_n) × (Tx_n+1-Tx_n/Ty_n+1-Ty_n) + Tx_n jeżeli X/Y=1
Schemat multi-liniowy konwersji:
Przykład 1:
opis: Kiedy M10=1 i M11=0, a R0 jest początkowym adresem danych do przekonwertowania, R99 jest liczbą kolejnych danych źródłowych do przekonwertowania, R1000 jest początkowym adresem tabeli wartości X (Tx), R2000 jest początkowym adresem tabeli wartości Y (Ty), R199 jest rozmiarem tabel Tx/Ty, dane źródłowe R0~R5 będą poddane konwersji liniowej według tabel Tx i Ty, a wyniki zostaną zapisane w D0~D5.
Przykład 2
opis:
Kiedy M10=1 i M11=0, a R0 jest początkowym adresem danych do przekonwertowania, R99 jest liczbą kolejnych danych źródłowych do przekonwertowania, R1000 jest początkowym adresem tabeli wartości X (Tx), R2000 jest początkowym adresem tabeli wartości Y (Ty), R199 jest rozmiarem tabel Tx/Ty, dane źródłowe R0~R5 będą poddane konwersji liniowej według tabeli Tx i Ty, a wyniki zostaną zapisane w D0~D5. Jeżeli dane źródłowe ≦ 2000, wartość wynikowa wynosi 280; jeżeli dane źródłowe ≧ 8000, wartość wynikowa wynosi 970
Przykład 3
Opis: Kiedy M10=1 i M11=0, a R0 jest początkowym adresem danych do przekonwertowania, R99 jest liczbą kolejnych danych źródłowych do przekonwertowania, R1000 jest początkowym adresem tabeli wartości X (Tx), R2000 jest początkowym adresem tabeli wartości Y (Ty), R199 jest rozmiarem tabel Tx/Ty, dane źródłowe R0~R5 będą poddane konwersji liniowej według tabeli Tx i Ty, a wyniki zostaną zapisane w D0~D5. Jeżeli dane źródłowe ≦ -8000, wartość wynikowa wynosi -100; jeżeli dane źródłowe ≧ 8000, wartość wynikowa wynosi 2000
opis: Kiedy M10=1 i M11=0, a R0 jest początkowym adresem danych do przekonwertowania, R99 jest liczbą kolejnych danych źródłowych do przekonwertowania, R1000 jest początkowym adresem tabeli wartości X (Tx), R2000 jest początkowym adresem tabeli wartości Y (Ty), R199 jest rozmiarem tabel Tx/Ty, dane źródłowe R0~R5 będą poddane konwersji liniowej według tabeli Tx i Ty, a wyniki zostaną zapisane w D0~D5. Jeżeli dane źródłowe ≦ 3276, wartość wynikowa wynosi 0; jeżeli dane źródłowe ≧ 16000, wartość wynikowa wynosi 5000
|
||
| FUN 35 D P XOR | XOR | FUN 35 D P XOR |
|
l Jeżeli „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi realizacja operacji logicznej XOR na danych Sa i Sb. Zadaniem tej operacji jest porównanie odpowiednich bitów Sa i Sb (B0~B15 lub B0~B31) i jeżeli bity na tych samych pozycjach mają różne stany, wtedy bit na tej pozycji w rejestrze wyniku D ustawiany jest w stan 1, w przeciwnym wypadku w stan 0. l Po zakończeniu operacji, jeżeli wszystkie bity w rejestrze D będą miały stan 0, znacznik „D = 0” zostanie ustawiony w stan 1.
|
||
| FUN 36 XNR | XNOR | FUN 36 XNR |
|
l Jeżeli „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi realizacja operacji logicznej XNR na danych Sa i Sb. Zadaniem tej operacji jest porównanie odpowiednich bitów Sa i Sb (B0~B15 lub B0~B31) i jeżeli bity na tych samych pozycjach mają te same stany, wtedy bit na tej pozycji w rejestrze wyniku D ustawiany jest w stan 1, w przeciwnym wypadku w stan 0. ● Po zakończeniu operacji, jeżeli wszystkie bity w rejestrze D będą miały stan 0, znacznik „D = 0” zostanie ustawiony w stan 1.
|
||
| FUN 37 D P ZNCMP |
Komparator strefy (ZONE COMPARE) |
FUN 37 D P ZNCMP |
|
l Jeżeli „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi porównanie wartości S z górną wartością graniczną SU i dolną wartością graniczną SL. W przypadku, gdy wartość S będzie mieścić się pomiędzy górną i dolną wartością graniczną(SL ≦ S ≦ SU), wówczas znacznik „wewnątrz strefy” „INZ” zostanie ustawiony na 1. Jeżeli wartość S będzie wyższa niż górna wartość graniczna SU, znacznik przekroczenia górnej wartości granicznej „S > U” zostanie ustawiony na 1. Jeżeli wartość S będzie niższa niż dolna wartość graniczna SL, znacznik przekroczenia dolnej wartości granicznej „S < L” zostanie ustawiony na 1 l Górna wartość graniczna SU powinna być większa niż dolna wartość graniczna SL. Jeżeli SU < SL, znacznik błędu wartości granicznej „ERR” zostanie ustawiony na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 40 D P BITRD |
ODCZYTAJ BIT (BIT READ) |
FUN 40 D P BITRD |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi odczytanie stanu N-tego bitu z rejestru danych S i przypisanie go stanowi wyjścia OTB. l Jeżeli wejście sterujące „EN" = 0, stan wyjścia OTB może: zachowywać stan poprzedniego wywołania ( jeżeli M1919=0 ) lub być ustawiane w stan niski ( jeżeli M1919=1 ). l Jeżeli argument jest 16-bitowy, prawidłowym zakresem dla N jest 0~15. Dla argumentu 32-bitowego (instrukcja D), prawidłowym zakresem dla N jest 0~31. Jeżeli N znajdzie się poza zakresem, to znacznik błędu wartości N („ERR”) zostanie ustawiony na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 41 D P BITWR |
ZAPISZ BIT (BIT WRITE) |
FUN 41 D P BITWR |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi ustawienie N-tego bitu w rejestrze D na stan bitu wejściowego (INB). l Jeżeli argument jest 16-bitowy, prawidłowym zakresem dla N jest 0~15. Dla argumentu 32-bitowego (instrukcja D), prawidłowym zakresem dla N jest 0~31. Jeżeli N znajdzie się poza zakresem, to znacznik błędu wartości N („ERR”) zostanie ustawiony na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 42 D P BITMV |
PRZENIEŚ BIT (BIT MOVE) |
FUN 42 D P BITMV |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi przeniesienie stanu Ns-tego bitu z rejestru S na stan Nd-tego bitu w rejestrze D. l Jeżeli argument jest 16-bitowy, prawidłowym zakresem dla N jest 0~15. Dla argumentu 32-bitowego (instrukcja D ), prawidłowym zakresem dla N jest 0~31. Jeżeli N znajdzie się poza zakresem, to znacznik błędu wartości N ( „ERR”) zostanie ustawiony na 1, a instrukcja nie zostanie wykonana. |
||
| FUN 43 D P NBMV |
PRZENIEŚ PÓŁBAJT (NIBBLE MOVE) |
FUN 43 D P NBMV |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi przeniesienie Ns-tego półbajtu z rejestru S na Nd-ty półbajt w rejestrze D. (Półbajt skalda się z 4 bitów. Rozpoczynając od najniższego bitu w rejestrze B0, każde kolejne 4 bity tworzą półbajt, czyli B0~B3 tworzą półbajt 0, B4~B7 tworzą półbajt 1, itd.) l Jeżeli argument jest 16-bitowy, prawidłowym zakresem dla Ns i Nd jest 0~3. Dla argumentu 32-bitowego (instrukcja D), prawidłowym zakresem dla Ns i Nd jest 0~7. Jeżeli N znajdzie się poza zakresem, to znacznik błędu wartości N („ERR”) zostanie ustawiony na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 44 D P BYMV |
PRZENIEŚ BAJT (BYTE MOVE) |
FUN 44 D P BYMV |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi przeniesienie Ns-tego bajtu z rejestru S na Nd-ty bajt w rejestrze D. (Bajt skalda się z 8 bitów. Rozpoczynając od najniższego bitu w rejestrze B0, każde kolejne 8 bitów tworzy bajt, czyli bity B0~B7 tworzą bajt 0, B8~B15 tworzą bajt 1, itd.) l Jeżeli argument jest 16-bitowy, prawidłowym zakresem dla Ns i Nd jest 0~1. Dla argumentu 32-bitowego (instrukcja D), prawidłowym zakresem dla Ns i Nd jest 0~3. Jeżeli N znajdzie się poza zakresem, to znacznik błędu wartości N („ERR”) zostanie ustawiony na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 45 D P XCHG |
ZAMIEŃ (EXCHANGE) |
FUN 45 D P XCHG |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi zamiana wartości rejestru Da z wartością rejestru Db w formacie 16 lub 32-bitowym (instrukcja D). |
||
| FUN 46 P SWAP |
ZAMIEŃ BAJTY (BYTE SWAP) |
FUN 46 P SWAP |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi zamiana danych młodszego bajtu 0 (B0~B7) ze starszym bajtem 1 (B8~B15) w 16-bitowym rejestrze D.
|
||
| FUN 47 P UNIT |
POŁĄCZ PÓŁBAJTY (NIBBLE UNITE) |
FUN 47 P UNIT |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), najmłodsze półbajty (NB0) z N kolejnych adresów rejestrów rozpoczynając od S, zostaną przeniesione do NB0, NB1, .....NBn-1 w rejestrze D, w kolejności od najmłodszego do najstarszego. Półbajty nieprzenoszone do rejestru D (w przypadku N<4), uzupełniane są stanami 0. (Półbajt skalda się z 4 bitów. Rozpoczynając od najniższego bitu w rejestrze B0, każde kolejne 4 bity tworzą półbajt, czyli B0~B3 tworzą półbajt 0, B4~B7 tworzą półbajt 1, itd.) l Instrukcja ta obsługuje tylko argumenty typu WORD (16-bitowe). Dlatego też, w operacji uczestniczą maksymalnie 4 półbajty, a co za tym idzie, prawidłowym zakresem dla N jest 1~4. Liczba N wychodząca poza ten zakres spowoduje ustawienie znacznika błędu wartości N („ERR”) na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 48 P DIST |
ROZPORWADŹ PÓŁBAJTY (NIBBLE DISTRIBUTE) |
FUN 48 P DIST |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), N kolejnych półbajtów rozpoczynając od najmłodszego półbajtu NB0 w rejestrze S, zostanie rozprowadzone, w kolejności od najmłodszego do najstarszego, na 0-owe półbajty (NB0) w N kolejnych rejestrach rozpoczynając od D. Pozostałe pólbajty (inne niż NB0), w każdym z rejestrów D, ustawiane są na zera. (Półbajt skalda się z 4 bitów. Rozpoczynając od najniższego bitu w rejestrze B0, każde kolejne 4 bity tworzą półbajt, czyli B0~B3 tworzą półbajt 0, B4~B7 tworzą półbajt 1, itd.). l Instrukcja ta obsługuje tylko argumenty typu WORD (16-bitowe). Dlatego też, w operacji uczestniczą maksymalnie 4 półbajty, a co za tym idzie, prawidłowym zakresem dla N jest 1~4. Liczba N wychodząca poza ten zakres spowoduje ustawienie znacznika błędu wartości N („ERR”) na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 49 BUNIT |
POŁĄCZ BAJTY (BYTE UNITE) |
FUN 49 BUNIT |
|
● Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi połączenie młodszych bajtów, pochodzących z N kolejnych rejestrów rozpoczynających się od S. Wyniki połączenia zostaną zapisane w rejestrach D. ● Jeżeli liczba łączonych bajtów będzie nieprawidłowa, instrukcja nie zostanie wykonana. ● Przy komunikacji z inteligentnymi urządzeniami peryferyjnymi, z użyciem binarnego formatu danych, instrukcja ta może być wykorzystana do połączenia bajtów pochodzących z kolejnych przesłanych słów.
Przykład :
Opis: Gdy status M2 zmienia się z 0→1, nastąpi połączenie młodszych bajtów rejestrów rozpoczynających się od R1500; liczba łączonych bajtów określona jest przez R999. Wyniki zapisane zostaną w rejestrach rozpoczynających się od R2500. |
||
| FUN 50 BDIST |
ROZPROWADŹ BAJTY (BYTE DISTRIBUTE) |
FUN 50 BDIST |
|
● Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi rozprowadzenie N bajtów , pochodzących z kolejnych rejestrów rozpoczynających się od S. Wyniki zostaną zapisane na młodszych bajtach rejestrów D (starsze bajty zostaną uzupełnione zerami). ● Jeżeli liczba rozprowadzanych bajtów będzie nieprawidłowa, instrukcja nie zostanie wykonana. ● Przy komunikacji z inteligentnymi urządzeniami peryferyjnymi, z użyciem binarnego formatu danych, instrukcja ta może być zastosowana do rozdziału słów na bajty przed transmisją danych. Przykład:
Opis: Gdy status M2 zmienia się z 0→1, nastąpi rozdział bajtów rozpoczynając od R1000; liczba bajtów określona jest przez R999. Wyniki zapisane zostaną w rejestrach rozpoczynając od R1500.
|
||
| FUN 51 D P SHFL |
PRZESUŃ BITY W LEWO (SHIFT LEFT) |
FUN 51 D P SHFL |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi przesunięcie bitów w rejestrze D w lewo o N kolejnych pozycji (w kolejności od najmłodszego do najstarszego). Po przesunięciu w lewo najmłodszych bitów, na ich pozycje zostaną wsunięte stany wejścia INB, a stan wysuniętego najstarszego bitu 15tego lub 31ego (instrukcja D), pojawi się na wyjściu OTB. l Jeżeli argument jest 16-bitowy, prawidłowym zakresem dla N jest 1~16. Dla argumentu 32-bitowego (instrukcja D), poprawnym zakresem dla N jest 1~32. Jeżeli N znajdzie się poza zakresem, to znacznik błędu wartości N („ERR”) zostanie ustawiony na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 52 D P SHFR |
PRZESUŃ BITY W PRAWO (SHIFT RIGHT) |
FUN 52 D P SHFR |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi przesunięcie bitów w rejestrze D w prawo o N kolejnych pozycji (w kolejności od najstarszego do najmłodszego). Po przesunięciu w prawo najstarszych bitów, na ich pozycje zostaną wsunięte stany wejścia INB, a stan wysuniętego najmłodszego bitu pojawi się na wyjściu OTB. l Jeżeli argument jest 16-bitowy, prawidłowym zakresem dla N jest 1~16. Dla argumentu 32-bitowego (instrukcja D), poprawnym zakresem dla N jest 1~32. Jeżeli N znajdzie się poza zakresem, to znacznik błędu wartości N („ERR”) zostanie ustawiony na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 53 D P ROTL |
OBRÓĆ BITY W LEWO (ROTATE LEFT) |
FUN 53 D P ROTL |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi obrót bitów w rejestrze D w lewo o N kolejnych pozycji (w kolejności od najmłodszego do najstarszego, tj. w przypadku 16-bitowej instrukcji, B0→B1, B1→B2, .... , B14→B15, B15→B0. W przypadku 32-bitowej instrukcji, B0→B1, B1→B2, .... , B30→B31, B31→B0). Stan, jako ostatni wsuniętego bitu na B0, pojawia się wyjściu OTB. l Jeżeli argument jest 16-bitowy, prawidłowym zakresem dla N jest 1~16. Dla argumentu 32-bitowego (instrukcja D), poprawnym zakresem dla N jest 1~32. Jeżeli N znajdzie się poza zakresem, to znacznik błędu wartości N („ERR”) zostanie ustawiony na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 54 D P ROTR |
OBRÓĆ BITY W PRAWO (ROTATE RIGHT) |
FUN 54 D P ROTR |
|
l Jeżeli „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi obrót bitów w rejestrze D w prawo o N kolejnych pozycji (w kolejności od najstarszego do najmłodszego, tj. w przypadku 16-bitowej instrukcji, B15→B14, B14→B13, .... , B1→B0, B0→B15. W przypadku 32-bitowej instrukcji, B31→B30, B30→B29, .... , B1→B0, B0→B31). Stan, jako ostatni wsuniętego na najstarszą pozycję bitu, pojawia się wyjściu OTB. l Jeżeli argument jest 16-bitowy, prawidłowym zakresem dla N jest 1~16. Dla argumentu 32-bitowego (instrukcja D), poprawnym zakresem dla N jest 1~32. Jeżeli N znajdzie się poza zakresem, to znacznik błędu wartości N („ERR”) zostanie ustawiony na 1, a instrukcja nie zostanie wykonana.
|
||
| FUN 55 D P B → G |
KONWERSJA KODU BINARNEGO NA KOD GRAYA (BINARY-CODE TO GRAY-CODE CONVERSION) |
FUN 55 D P B → G |
|
● Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi konwersja kodu binarnego na kod Gray’a; gdzie S jest rejestrem źródłowym (kod binarny), a D jest rejestrem docelowym (kod Graya) do zapisu wyniku konwersji. ● Metoda konwersji przedstawiona została poniżej
Przykład 1 : Jeżeli status M0 zmieni się z 0→1, przeprowadzona zostanie 16-bitowa konwersja kodu
Przykład 2 Jeżeli M0 =1, przeprowadzona zostanie 32-bitowa konwersja kodu
|
||
| FUN 56 D P G→B |
KONWERSJA KODU GRAYA NA KOD BINARNY (GRAY-CODE TO BINARY-CODE CONVERSION) |
FUN 56 D P G→B |
|
● Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi konwersja kodu Gray’a na kod binarny; gdzie S jest rejestrem źródłowym (kod Graya), a D jest rejestrem docelowym (Kod binarny) do zapisu wyniku konwersji. ● Metoda konwersji przedstawiona została poniżej:
Przykład 1 Jeżeli status M0 zmieni się z 0→1, przeprowadzona zostanie 16-bitowa konwersja kodu
Przykład 2 Jeżeli M0 =1, przeprowadzona zostanie 32-bitowa konwersja kodu
|
||
| FUN 57 P DECOD |
DEKODER KODU 1 z N (DECODE) |
FUN 57 P DECOD |
|
● Instrukcja ustawi status pojedynczego bitu spośród 2NL bitów w rejestrach D na 1, a pozostałe bity ustawi na 0. Numer bitu, który zostanie ustawiony na 1, określany jest przez wartość wynikającą ze stanów bitów BNS~BNS+NL-1 w S(wartość ta jest wartością dekodowaną, BNS jest początkowym bitem wartości dekodowanej a BNS+NL-1 jest bitem ostatnim). ● Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi odczytanie wartości wynikającej ze stanów bitów BNS~BNS+NL-1 w S. Wartość ta określa pozycję bitu w rejestrach D, którego status ustawiony zostanie na 1. Reszta bitów w rejestrach D ustawiona zostanie na 0. ● Instrukcja obsługuje tylko argumenty 16-bitowe, czyli zakres bitów dla S jest B0~B15. W związku z tym, poprawnym zakresem Ns jest 0~15, a długość dekodowanej wartości NL ograniczona jest do 1~8 bitów. Dlatego ilość bitów dekodowanego wyniku D jest z zakresu 21~8 pozycji = 2~256 pozycji = 1~16 słów (nawet jeżeli wszystkie pozycje słowa nie są wykorzystane (NL =1;2 lub 3), wszystkie 16cie bitów D jest kontrolowane przez tą instrukcję).Jeżeli wartość NS lub NL będzie poza powyższym zakresem, znacznik błędu zakresu „ERR” zostanie ustawiony na 1, a instrukcja nie zostanie wykonana. ● Jeżeli wartość końcowego bitu przekroczy B15 w S, nastąpi rozszerzenie zakresu w kierunku B0 w S + 1. Jednakże w takim wypadku, S + 1 nie może być rozszerzony na pewne typu argumentów (np. jeżeli S byłoby rejestrem typu D, to S + 1 nie może być rejestrem D3072). W takiej sytuacji, instrukcja zamieni liczbę bitów początkowy na najwyższa graniczną wartość.
Ponieważ NL=5, szerokość D wynosi 25= 32 punkty = 2 słowa, czyli D składa się z R3 i R2, a dekodowana wartość wynosi 01001=9. W związku z tym, bit B9 (10-ta pozycja) w rejestrze D ustawiany jest na 1, a pozostałe bity na 0. |
||
|
FUN 58 P ENCOD |
KODER KODU 1 z N (ENCODE) |
FUN 58 P ENCOD |
|
● Jeżeli wejście strujace „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), to wybranych zostanie NL kolejnych bitów z zakresu BNS~BNS+NL-1 (BNS jest pozycją początkową kodowania, której względnym numerem bitu jest b0 w S; BNS+NL-1 jest bitem końcowym kodowania). Kodowanie realizowane jest od lewej do prawej z priorytetem wyszukania wyższego bitu (gdy H/L=1) lub od prawej do lewej z priorytetem wyszukania niższego bitu (gdy H/L=0). (np. wyszukiwany jest pierwszy bit o stanie 1, a wartość wynikająca z pozycji tego bitu jest zapisywana na młodszym bajcie (B0~B7) rejestru D, natomiast starszy bajt rejestru D ustawiany jest na 0.
● Jak pokazano na powyższym schemacie, dla kodowania o priorytecie wyszukiwania wyższych bitów, pierwszym wyszukanym bitem o stanie wysokim jest bH (o względnej pozycji b12), natomiast dla priorytetu wyszukiwania niższych bitów, jest to bit bL (o względnej pozycji b4). Wśród pozycji NL musi znaleźć się co najmniej jeden bit o stanie 1. Jeżeli wszystkie bity będą miały stan 0, instrukcja nie zostanie wykonana, a znacznik „D=0” zostanie ustawiony na 1. ● Ponieważ S jest 16-bitowym rejestrem, wartość Ns może mieścić się w zakresie 0~15. Wartość ta określa początkowy bit kodowania (b0) w zakresie B0~B15 w rejestrze S. Wartość NL zawiera się w zakresie 2~256 i wykorzystywana jest do identyfikacji bitu końcowego kodowania, tj. wartość ta wyznacza strefę kodowania wybierając NL kolejnych bitów począwszy od bitu początkowego (b0) w lewo (tj. b0~bNL-1). Jeżeli wartość NS lub NL będzie poza powyższym zakresem, znacznik błędu zakresu „ERR” zostanie ustawiony na 1, a instrukcja nie będzie wykonana. ● Jeżeli punkt końcowy kodowania (bNL-1) będzie większy niż B15 w S, nastąpi kontynuacja rozszerzenia zakresu w kierunku S+1, S+2. Jednakże S + 1 nie może być rozszerzony na pewne typu argumentów – w takim wypadku, instrukcja będzie mogła kodować jedynie punkty pomiędzy b0 a największym punktem granicznym.
|
||
| FUN 59 P → 7SG |
KONWERSJA NA KOD 7-SEGMENTOWY (7-SEGMENT CONVERSION) |
FUN 59 P → 7SG |
|
● Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi konwersja N+1 półbajtów (półbajt składa się z 4 kolejnych bitów, czyli bity B0~B3 w S tworzą półbajt 0, a bity B4~B7 tworzą półbajt 1, itp.) w rejestrze S na kod 7-segmentowy. Wyniki zostaną zapisany na młodszych bajach rejestrów D (najstarszy bajt nie ulega zmianie). Segmenty w rejestrze D ustawiane są kolejno, gdzie segment „a” ustawiany jest na B6, segment „b” ustawiany jest na B5, …, segment „g” ustawiany jest na B0. B7 nie jest wykorzystywany i ustawiany jest na 0. Więcej szczegółów znajduje się w tabeli „Znaki kodu 7-segmentowego”. ● Ponieważ instrukcja ograniczona jest do 16 bitów, a rejestr S zawiera tylko 4 półbajty (NB0~NB3), to poprawnym zakres N jest 0~3. Jeżeli wartość N przekroczy ten zakres, znacznik błędu wartości N („ERR”) zostanie ustawiony na 1. ● Należy zwrócić uwagę na to, że liczba konwertowanych półbajtów ma wartość N+1. N=0 oznacza jedną cyfrę do konwersji, N=1 oznacza dwie cyfry do konwersji, itd… ● Przy zastosowaniu modułów rozszerzeń FATEK’a, przeznaczonych do obsługi wyświetlaczy 7-segmentowych (FBs-7SGxx) oraz funkcji FUN84 (7SEG), do zastosowań z kodowaniem i bez kodowania, istnieje możliwość łączenia funkcji FUN59 i FUN84 w celu uproszczenia implementacji programu.
Przykład 1 Konwersja kodu szesnastkowego na 7-segmentowy, przy zmianie stanu M1 z 0→1
Przykład 2 Konwersja kodu szesnastkowego na 7-segmentowy przy M1 w stanie 1
Przykład 3 Konwersja kodu szesnastkowego na 7-segmentowy przy M1 w stanie 1 Przykład 4 Konwersja kodu szesnastkowego na 7-segmentowy przy M1 w stanie 1
|
||
| FUN 61 P → SEC |
KONWERSJA GODZIN:MINUT:SEKUND NA SEKUNDY (HOUR:MINUTE:SECOND TO SECONDS CONVERSION) |
FUN 61 P → SEC |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi konwersja danych w formacie godzina: minuta: sekunda zawartych w S~S+2, na równoważną im wartość w sekundach. Wartość ta zostanie zapisana w 32-bitowym rejestrze będącym połączeniem D i D+1. Jeżeli wynik = 0, znacznik „D = 0” zostanie ustawiony na 1. l Spośród wszystkich instrukcji FBs-PLC, instrukcjami związanymi z danymi w formacie godzina: minuta: sekunda są FUN61 i 62. Wykorzystują one 3 słowa (rejestry) do zapisywania danych o czasie (patrz schemat poniżej). Pierwsze słowo stanowi rejestr sekund, drugie minut, a trzecie godzin. Spośród 16 bitów w każdym rejestrze, tylko bity B14~B0 wykorzystywane są do wyrażenia wartości czasowej. Bit B15 wykorzystywany jest do określenia tego, czy wartość jest ujemna czy dodatnia. Jeżeli stan B15 jest 0, to wartość jest dodatnia, natomiast jeżeli stan B15 jest 1, wartość jest ujemna. Wartość czasowa B14~B0 wyrażana jest w kodzie binarnym, natomiast jeżeli wartość ta jest ujemna, B14~B0 wyrażana jest przy użyciu uzupełnienia dwójkowego. Liczba sekund, otrzymana po konwersji tą funkcją, jest wynikiem sumy sekund z trzech rejestrów wyrażających godziny: minuty: sekundy.
Bity B15 w rejestrach określają znak wartości czasowej (+/-) l Poza instrukcjami FUN61 i 62, które traktują rejestry danych w formacie godzina: minuta: sekunda jako zintegrowane dane, pozostałe instrukcje traktują je jako odseparowane wartości rejestrów. l Przykładowy program, przedstawiony poniżej, konwertuje dane w formacie godzina: minuta: sekunda tworzone przez R20~R22, na odpowiadającą im wartość w sekundach i zapisuje wynik w 32-bitowym rejestrze tworzonym przez R50~R51. Wyniki przedstawione są poniżej.
|
||
| FUN 62 P → HMS |
KONWERSJA SEKUND→GODZINY:MINUTY:SEKUNDY (SECOND→HOUR:MINUTE:SECOND) |
FUN 62 P → HMS |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi konwersja wartości sekund z 32-bitowego rejestru S~S+1, na równoważną wartość w formacie godzina: minuta: sekunda. Wynik zostanie zapisany w trzech kolejnych rejestrach D~D+2. Wszystkie dane w tej instrukcji wyrażane są w kodzie binarnym (w przypadku wartości ujemnych, dane wyrażane są za pomocą uzupełnienia dwójkowego).
l Jak pokazano na powyższym schemacie, po konwersji na godziny: minuty: sekundy, wartość minut i sekund może być tylko w zakresie od -59 do 59, natomiast wartość godzin, w zakresie -32768 do 32767. Z uwagi na to, minimalnymi i maksymalnymi wartościami graniczną w rejestrze D jest: -32768 dla godzin, -59 dla minut, -59 dla sekund oraz 32767 dla godzin, 59 dla minut i 59 dla sekund. Odpowiadające tym wartością granicznym wartości sekund to odpowiednio -117968399 i 117968399. Jeżeli wartość S przekroczy ten zakres, instrukcja nie zostanie wykonana, a znacznik przekroczenia zakresu „OVR” zostanie ustawiony na 1. Jeżeli S = 0, wynik równy będzie 0, a znacznik D = 0” zostanie ustawiony na 1. l Przykładem działania opisywanej instrukcji jest program przedstawiony na poniższym schemacie. Zauważ, że zawartość rejestrów przedstawiona jest w systemie heksadecymalnym, natomiast po prawej, odpowiadające im wartość zapisane zostały w systemie dziesiętnym.
|
||
| FUN 63 P → HEX |
KONWERSJA KODU ASCII NA WARTOŚCI HEKSADECYMALNE (CONVERSION OF ASCII CODE TO HEXADECIMAL VALUE) |
FUN 63 P → HEX |
|
l Jeżeli wejście serujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi konwersja N kolejnych heksadecymalnych znaków zapisanych w kodzie ASCII (‘0’~’9’,’A’~’F’), pochodzących z N kolejnych 16-bitowych rejestrów S (młodszy bajt jest wiążący) na wartości szesnastkowe i zapisanie wyników konwersji w rejestrach rozpoczynając od D. Każde 4 kody ASCII zapisywane są w jednym rejestrze. Półbajty w rejestrze, który nie brał udziału w konwersji kodu ASCII, pozostaną niezmienione. l Jeżeli wartość N będzie równa 0 lub większa niż 511, konwersja nie zostanie wykonana. l W przypadku wystąpienia błędu kodu ASCII (wartość w rejestrach S spoza zbioru 30H~39H lub 41H~46H), uaktywni się wyjście „ERR”. l Najczęstszym wykorzystaniem tej instrukcji jest konwersja ciągów znaków zapisanych w szesnastkowym kodzie ASCII (‘0’~’9’,’A’~’F’), odbieranych przez porty komunikacyjne (port1 ~ port4) z urządzeń peryferyjnych, na wartości szesnastkowe, które mogą być przetwarzane przez CPU bezpośrednio. Przykład 1: Konwersja kodu ASCII na wartość szesnastkową przy zmianie statusu M1 z 0 na 1.
Przykład 2: Konwersja kodu ASCII na wartość szesnastkową przy M1 w stanie 1Konwersja kodu ASCII na wartość szesnastkową przy M1 w stanie 1
Przykład 3: Konwersja kodu ASCII na wartość szesnastkową przy M1 w stanie 1
Przykład 4 Konwersja kodu ASCII na wartość szesnastkową przy M1 w stanie 1
|
||
| FUN 64 P → ASCII |
KONWERSJA WARTOŚCI HEKSADECYMALNYCH NA KOD ASCII (CONVERSION OF HEXADECIMAL VALUE TO ASCII CODE) |
FUN 64 P → ASCII |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi konwersja N kolejnych półbajtów heksadecymalnych wartości zawartych w rejestrach S, na odpowiadające im kody ASCII, a wyniki konwersji zostaną zapisane na młodszych bajtach (starszy bajt pozostanie niezmieniony) rejestrów rozpoczynających się od D. l Jeżeli wartość N będzie równa 0 lub większa niż 511, konwersja nie zostanie wykonana. l Najczęstszym wykorzystaniem tej instrukcji jest konwersja danych numerycznych, wypracowanych przez PLC, na ciąg kodów ASCII i przesłanie ich do urządzeń peryferyjnych, obsługujących kod ASCII, przez porty komunikacyjne (port1 ~ port4)
Przykład 1 Konwersja wartości szesnastkowej na kody ASCII przy zmianie statusu M1 z 0 na 1
Przykład 2 Konwersja wartości szesnastkowej na kod ASCII przy M1 w stanie 1.
Przykład 3 Konwersja wartości szesnastkowej na kod ASCII przy M1 w stanie 1
Przykład 4 Konwersja wartości szesnastkowej na kod ASCII przy M1 w stanie 1.
|
||
| END |
KONIEC SKANU (PROGRAM END) |
END |
|
l Jeżeli wejście sterujące „EN” = 1, instrukcja zostanie wywołana. Po wywołaniu instrukcji END, kiedy „EN” = 1, przebieg programu natychmiast powróci do punktu początkowego programu (pierwszej linii programu głównego – 0000M) w celu rozpoczęcia kolejnego skanu programu – oznacza to, że żadne instrukcje programu, znajdujące się poniżej wywołania funkcji END, nie zostaną wykonane. Jeżeli EN = „0”, funkcja zostanie zignorowana, a linie programu znajdujące się poniżej END, będą dalej wykonywane. l Funkcja ta może być umieszczona w kilku miejscach programu. Wtedy sygnały „EN” na ich wejściach, sterują punktami końcowymi realizacji programu. Jest to szczególnie przydatne przy debugowaniu (usuwaniu błędów) i testowaniu programu. l Użycie funkcji END w programie głównym nie jest konieczne. CPU automatycznie powróci do punktu początkowego, po osiągnięciu ostatniej linii programu głównego.
|
||
| FUN 65 LBL |
ETYKIETA (LABEL) |
FUN 65 LBL | ||||||||||||
|
l Instrukcja ta służy do wskazywania miejsc w programie, stanowiących punkt docelowy wykonania funkcji JUMP i CALL, oraz do wskazywania procedur obsługi przerwań sprzętowych. Może być ona także wykorzystana do zwiększenia czytelności i łatwości interpretacji programu. l Instrukcja ta służy jedynie do oznaczania miejsc w programie w celu sterowania przebiegiem jego wykonania lub zamieszczania adnotacji. Sama instrukcja nie wykonuje żadnych akcji. Obojętnie, czy program będzie zawierać tą funkcję, czy nie - nie wpłynie to na realizację programu. l Etykieta może zawierać 1~6 znaków alfanumerycznych i nie może być zdublowana w programie. Następujące etykiety, identyfikujące procedury przerwań sprzętowych, są zarezerwowane. Te „zarezerwowane słowa” nie mogą być zastosowane do normalnych etykiet programu.
Tylko procedury obsługi przerwań sprzętowych, mogą wykorzystywać etykiety wymienione powyżej. W przypadku pomyłki użycia zarezerwowanej etykiety dla normalnej podprocedury, może to spowodować niepowodzenie działania CPU lub nieoczekiwaną operację.
Etykiety na poniższych schemacie służą jedyne jako przykład (nie są zaimplementowane jako punkty odwołań funkcji CALL ani JUMP). Informacje dotyczące użycia etykiet z instrukcją JUMP, znajdują się w opisie działania instrukcji JMP. Informacje dotyczące użycia etykiet w celu identyfikowania podprocedur, znajdują się w opisie działania instrukcji CALL
|
||||||||||||||
| FUN 66 P JMP |
SKOK (JUMP) |
FUN 66 P JMP |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), PLC przeskoczy do kolejnej linii, znajdującej się za wskazaną etykietą LBL, po czym będzie kontynuować wykonywanie programu. l Instrukcja ta jest szczególnie przydatna do zastosowań, w których pewne części programu są wykonywane jedynie przy spełnieniu odpowiednich warunków. Może to skrócić czas skanu, poprzez niewykonywanie całego programu. l Instrukcja ta umożliwia przeskok w tył (np. kiedy etykieta LBL znajduje się przed wystąpieniem instrukcji JMP). Jednak w takim przypadku, należy zachować ostrożność, ponieważ takie operacje przeskoku mogą spowodować przekroczenia granicznego czasu skanu ustalonego przez zegar „watchdog”(WDT). Wystąpi wtedy błąd timera WDT i zakończenie wykonywania programu. l Instrukcja JUMP umożliwia jedynie skoki w obszarze programu głównegolub w obszarze podprocedur. Nie ma możliwości realizacji skoków pomiędzy tymi obszarami. |
||
| FUN 67 P CALL |
WYWOŁAJ (CALL) |
FUN 67 P CALL |
|
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), PLC wywoła (wykona) podprocedurę o etykiecie wskazanej w polu LBL. Po wywołaniu podprocedury, program będzie wykonywany standardowo (linia po linii), jednakże w przypadku napotkania instrukcji RTS, przebieg podporcedury niezwłocznie zostanie przerwany i wykonywanie programu powróci do linii znajdującej się poniżej wywołania podprocedury (instrukcji CALL).
l Wszystkie podporcedury muszą kończyć się instrukcją „powrót z podproceduty – RTS”. W przeciwnym wypadku, może to skutkować błędem wykonania programu lub nastąpi zatrzymanie CPU. Niemniej jednak, jedna instrukcja RTS może być wykorzystywana przez kilka podporcedur (nazywanych wielokrotnie wprowadzanymi podprocedurami: pomimo, że punkty wprowadzania są różne, ścieżka powrotu jest taka sama), tak jak przedstawiono na schemacie podprocedur SUB1~3 po prawej. l Jeżeli program główny wywoła podprocedurę, to podporcedura ta, również może wywołać inne podprocedury (tak zwane zagnieżdżone podprocedury) aż do 5 poziomów (łącznie z procedurą obsługi przerwania).
l Procedury obsługi przerwań sprzętowych(HSC0I~HSC7I、PSO0I~PSO3I、X0+I~X15+I/INT0~INT15、X0-I~X15-I/INT0-~INT15-、HSTAI/ATMRI、1MSI/1MS、2MSI/2MS、3MSI/3MS、4MSI/4MS、5MSI/5MS、10MSI/10MS、50MSI/50MS、100MSI/100MS)są także rodzajem podprocedur. Znajdują się one także w obszarze podprocedur. Jednakże, wywołanie procedury obsługi przerwania sprzętowego, następuje poprzez sygnał wysłany ze sprzętu do CPU (nazywanym zgłoszeniem przerwania sprzętowego). Procedura obsługi przerwania, może także wywołać podprocedurę albo być przerwaną przez inne przerwanie o wyższym priorytecie. Ponieważ jest to także podprocedura (stanowiąca jeden poziom), może ona wywołać lub być przerwana przez 4 poziomy podprocedur/procedur obsługi przerwań. Więcej informacji w opisie instrukcji RTI. |
||
| FUN 68 RTS |
POWRÓT Z PODPROCEDURY (RETURN FROM SUBROUTINE) |
FUN 68 RTS |
|
l Instrukcja ta jest wykorzystywana do wskazywania zakończenia podprocedury. Dlatego może ona występować jedynie w obszarze podprocedur. Instrukcja ta nie ma wejścia sterującego, a więc nie ma możliwości podłączenia do niej żadnych styczników szeregowo - jest podłączona bezpośrednio do linii zasilającej. l Jeżeli instrukcja ta zostanie napotkana przez PLC, oznacza to, że realizacja podprocedury została zakończona. Dlatego nastąpi niezwłoczny powrót, do następnej linii, występującej po ostatnim wywołaniu tej podporcedury instrukcją CALL. l W przypadku, gdy instrukcja ta napotka na którąkolwiek z trzech instrukcji kontroli przepływu MC, SKP lub JMP, to nie zostanie ona zrealizowana (będzie traktowana jako nieistniejąca). Jeżeli powyższe instrukcje zostaną wykorzystane w podprocedurze i będą skutkować brakiem realizacji instrukcji RTS, to PLC zatrzyma wykonywanie programu i ustawi M1933 (znacznik błędu przepływu) na 1. W zawiązku z tym, niezależnie od przepływu programu, musi on zapewnić możliwość wykonanie odpowiedniej instrukcji RTS przez podprocedurę. l Informacje dotyczące wykorzystania instrukcji RTS znajdują się w opisie instrukcji CALL.
|
||
| FUN 69 RTI |
POWRÓT Z PRZERWANIA (RETURN FROM INTERRUPT) |
FUN 69 RTI |
|
l Działanie instrukcji jest zbliżone do działania instrukcji RTS. Niemniej jednak, instrukcja RTS wykorzystywana jest do zakończania wykonywania podporcedur, natomiast RTI do zakończania wykonywania procedur obsługi przerwań sprzętowych. Więcej informacji w opisie instrukcji RTS. l Instrukcja RTI może być wykorzystywana jednocześnie przez kilka procedur obsługi przerwań sprzętowych. Zasada jest taka sama jak w przypadku wykorzystywania instrukcji RTS przez kilka podporcedur. Więcej informacji w opisie instrukcji CALL. l Różnica pomiędzy zgłoszeniem przerwania sprzętowego a wykonaniem instrukcji CALL jest taka, że nazwa podprocedury (LBL) i etykieta dla instrukcji CALL określana jest przez użytkownika, a instrukcja ta aktywowana jest w głównym programie lub którymś z podprogramów. W związku z tym, jeżeli PLC napotka instrukcję CALL, a „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), to PLC wywoła (wykona) tą podprocedurę. Do wywołania procedury obsługi przerwania, wykorzystywane są sygnały sprzętowe, w celu zgłoszenia przerwania CPU, zatrzymania innych, mniej ważnych zadań, a następnie do wykonania procedury obsługi przerwania odpowiedniej wysłanemu sygnałowi sprzętowemu (określane jest to jako zgłoszenie przerwania). W przeciwieństwie do instrukcji CALL, która wymaga skanowania przed wykonaniem, funkcja przerwania sprzętowego realizowana jest w czasie rzeczywistym, w odpowiedzi do zdarzenia z zewnątrz. Ponadto, procedura obsługi przerwania sprzętowego, nie może być wywołana przez nazwę etykiety. Dlatego też istnieją „zarezerwowane słowa” wykorzystywane w nazwach etykiet odnoszące się do różnych funkcji przerwań oferowanych przez PLC (szczegóły w opisie FUN65). Na przykład, zarezerwowane słowo X0+I przypisane jest do przerwania na wejściu X0. Jeżeli program będzie zawierać etykietę X0+I, a na wejściu X0 pojaw się stan narastający (X0: ), PLC zatrzyma realizację programu o niższym priorytecie i przeskoczy do etykiety podporocedury oznaczonej jako X0+I, w celu natychmiastowej realizacji programu. l Jeżeli zgłoszenie przerwania sprzętowego nastąpi w trakcie realizacji przez CPU procedury obsługi przerwania o wyższym priorytecie (np.: przerwania od szybkiego zegara sprzętowego) lub procedury obsługi przerwania o tym samym priorytecie (więcej informacji o poziomach priorytetów znajduje się w Rozdziale 10), to PLC nie wykona procedury obsługi przerwania do momentu, aż zostaną zakończone wszystkie procedury o wyższym priorytecie. l Jeżeli instrukcja RTI nie może być wykonana w obrębie procedury obsługi przerwania, może to spowodować zatrzymanie CPU. W związku z tym, niezależnie od przebiegu wykonywania procedury obsługi przerwania, należy zapewnić wykonanie w niej instrukcji RTI. l Szczegółowy opis i przykłady wykorzystania funkcji przerwań znajdują się w Rozdziale 9. |
||
| FUN 70 FOR | FOR | FUN 70 FOR |
|
l Instrukcja nie ma wejścia sterującego, a więc nie ma możliwości podłączenia żadnych styków szeregowo i jest podłączona bezpośrednio do linii zasilającej. l Programy z instrukcjami FOR i NEXT tworzą pętlę programową (początkiem pętli jest pierwsza instrukcja po instrukcji FOR, a końcem jest instrukcja przed NEXT). Kiedy PLC realizuje instrukcję FOR, najpierw zapisuje wartość N występującą przed pierwszym wykonaniem pętli (liczbę wykonań pętli), a następnie realizuje programy zapisany pomiędzy znacznikami FOR-NEXT,w pętli, N razy. Następnie PLC „wyskakuje” z pętli i kontynuuje wykonywanie instrukcji znajdującej się bezpośrednio po instrukcji NEXT. l Pętle mogą mieć strukturę zagnieżdżoną, tj. jedna pętla może zawierać inne tworząc w ten sposób układ warstwowy. 1 pętla określana jest jako poziom, a maksymalna liczba poziomów zagnieżdżeń wynosi 5. Instrukcje FOR i NEXT muszą być stosowane parami. Pierwsza instrukcja FOR i ostatnia instrukcja NEXT stanowią najbardziej zewnętrzny (pierwszy) poziom pętli o strukturze zagnieżdżonej. Druga instrukcja FOR oraz przedostatnia instrukcja NEXT stanowią drugi poziom, natomiast ostatnia instrukcja FOR i pierwsza instrukcja NEXT tworzą najbardziej wewnętrzny poziom.
|
||
| FUN 71 NEXT | KONIEC PĘTLI | FUN 71 NEXT |
|
l Instrukcja ta łącznie z instrukcją FOR tworzą pętlę programową. Sama instrukcja nie ma wejścia sterującego, a więc nie ma możliwości podłączenia żadnych styków szeregowo i jest podłączona bezpośrednio do linii zasilającej l Jeżeli PLC nie wszedł jeszcze w pętlę (nie została zrealizowana instrukcja FOR lub jej realizacja została przerwana), a osiągnięta została instrukcja NEXT, to PLC nie wykona żadnej akcji traktując instrukcję jako nieistniejąca. l Dodatkowe informacje dotyczące tej instrukcji znajdują się w opisie instrukcji FOR na poprzedniej stronie. |
||
| FUN 74 P IMDIO |
NATYCHMIASTOWE ODŚWIEŻENIE WE/WY (IMMEDIATE I/O REFRESH) |
FUN 74 P IMDIO |
|
● Przy normalnym cyklu skanu PLC, CPU pobiera stany wszystkich sygnałów wejściowych przed rozpoczęciem wykonywania programu, a następnie na ich podstawie realizuje program. Po zakończeniu wykonywania programu, CPU aktualizuje sygnały wyjściowe bazując na otrzymanych wynikach algorytmu. Dopiero po całkowitym zakończeniu skanu, wszystkie wyniki są jednocześnie przesyłane na wyjście. Dlatego też, pomiędzy pojawieniem się sygnału na wejściu a odpowiedzią na wyjściu, zawsze będzie występowało opóźnienie przynajmniej jednego skanu sterownika (maks. 2 skany). Korzystając z tej instrukcji, możliwe jest natychmiastowe odświeżenie wskazanych wejść lub wyjść, w celu uzyskania szybszej reakcji, bez ograniczenia wynikającego ze sposobu wykonywania skanu przez sterownik. ● Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 1 na 0 (instrukcja P), to status N kolejnych punktów wejściowych lub wyjściowych (D~D+N-1) zostanie odświeżony. ● Dla sterowników serii FBs, liczba punktów We / Wy, jaka może być natychmiastowo odświeżona, ograniczona jest do liczby punktów We / Wy istniejących na jednostce głównej. W poniższej tabeli przedstawione są dopuszczalne liczby We / Wy dla jednostek głównych o rozmiarach 10,14, 20,24, 32, 40 i 60 punktów:
● W przypadku, gdy zakładane sygnały odświeżania We / Wy będą poza zakresem określonym w powyższej tabeli, PLC nie wykona operacji odświeżenia, a znacznik błędu M1931 zostanie ustawiony na 1. Na przykład, jeżeli D=X11, N=10, to wejścia X11 do X20 miałyby być natychmiastowo odświeżone. Zakładając, że jednostką główną jest FBs-32MA, to jej największym punktem wejściowym jest X19, a punkty od X20 wykraczają poza zakres. Przy takim założeniu, przekroczony zostanie zakres i znacznik błędu M1931 zostanie ustawiony na 1. ● Instrukcja ta umożliwia szybkie odświeżenie sygnałów wejściowych / wyjściowych przez PLC. Jednakże opóźnienie filtrów softwarowych i hardwarowych nadal istnieje. Należy zwrócić na to uwagę. |
||
| FUN 76 D TKEY |
WPROWADZANIE WARTOŚCI DZIESIĘTNYCH Z KLAWISZY (DECIMAL- KEY INPUT) |
FUN 76 D TKEY |
|
l Funkcja ta wykorzystuje 10 punktów wejściowych IN~IN+9 (IN0~IN9), gdzie każde przeznaczone jest do wpisywania jednej cyfry (IN->0, IN+1->1…). W zależności od sekwencji wprowadzania tych punktów wejściowych, istnieje możliwość wpisania 4 lub 8 liczb dziesiętnych do rejestrów wskazanych w polu D. l Jeżeli „EN” = 1, funkcja będzie monitorować 10 punktów wejściowych rozpoczynając on IN i zapisze odpowiednią liczbę w rejestrze D w momencie, gdy któryś z przycisków zostanie wciśnięty. Po zwolnieniu przycisku instrukcja zacznie oczekiwać na następny punkt wejściowy w stanie „ON” i przemieści kolejną liczbę do rejestru D (wcześniej wprowadzona cyfra jest starsza od wprowadzonej później). W przypadku argumentu 16-bitowego, w rejestrze może być zapisane do 4 cyfr ,a 8 cyfr dla argumentu 32-bitowego. Po zapełnieniu rejestru, nowo wprowadzona cyfra wyprze najstarszą cyfrę z rejestru D. Stan 10 punktów wejściowych rozpoczynając od IN zapisywany będzie w 10 odpowiadających im cewkach rozpoczynając od KL. Cewki te będą ustawiane na 1 w czasie gdy odpowiadające im przyciski będą naciśnięte. Przy zwolnionych przyciskach, ich statusy pozostaną niezmienione. Ich status zostanie odświeżony w momencie naciśnięcia kolejnego przycisku. Przez cały czas, gdy którykolwiek przycisk będzie wciśnięty (ON), znacznik wpisywania KPR będzie ustawiony na 1. W jednym momencie może być wciśnięty tylko jeden przycisk spośród IN0~IN9. W przypadku, gdy zostanie wciśniętych kilka przycisków, wprowadzona będzie tylko wartość pierwszego z nich. Poniżej przedstawiony został schemat poglądowy funkcji z argumentem 16-bitowym.
l Jeżeli „EN” = 0, instrukcja ta nie zostanie wykonana. Status wyjścia KPR i cewek KL będzie ustawiony na 0. Jednakże wartości numeryczne w rejestrze D pozostaną niezmienione.
Poniżej rysunek jest schematem podłączenia wejść dla przykładu:
l Jeżeli w poniższym schemacie, klawisze X0~X3 są naciskane w sekwencji , a przy kroku i X20 będzie w stanie 0, to efektywne będą tylko kroki . Ponieważ w rejestrze mogą być zapisane tylko 4 cyfry, jeden krok spośród pięciu zostanie wyparty. Ostatecznie wartości klawiszy 3302 z kroków zapisywane są w rejestrze R0.
|
||
| FUN 77 D HKEY |
WEJSCIE Z KLAWIATURY 16TO ZNAKOWEJ (HEX-KEY INPUT) |
FUN 77 D HKEY |
|
l Funkcja przycisków numerycznych (0~9) w tej instrukcji jest zbliżona do instrukcji TKEY. Instrukcje TKEY i HKEY różnią się połączeniem sprzętowym. W przypadku instrukcji TKEY, każdy przycisk charakteryzuje się jednym punktem wejściowym do połączenia, podczas gdy HKEY wykorzystuje 4 punkty wejściowe i 4 punkty wyjściowe tworząc wejście multipleksowe 4x4 z 16 przyciskami. 4x4 oznacza, że możliwość wykorzystania 16 przycisków, a co za tym idzie, oprócz 10 przycisków numerycznych można wykorzystać dodatkowe 6 przycisków funkcyjnych (tak jak w przypadku standardowego wejścia dyskretnego). Czynności przycisków numerycznych i funkcyjnych są niezależne i nie wpływają na siebie wzajemnie. l Jeżeli „EN” = 1, instrukcja przeskanuje przyciski numeryczne i funkcyjne w macierzy utworzonej przez 4 punkty wejściowe rozpoczynając od IN oraz 4 punkty wyjściowe rozpoczynając od OT. Funkcje przycisków numerycznych i wyjścia „NKP” znajdują się w opisie instrukcji TKEY. Przyciski funkcyjne utrzymają status przycisków A~F w ostatnich 6 przekaźnikach określonych przez KL (w pierwszych 10 zapisywany jest status przycisków numerycznych). Jeżeli którykolwiek z przycisków A~F będzie naciśnięty, status wyjścia FKP (FO1) zostanie ustawiony na 1. Punkty wyjściowe OT dla tej instrukcji muszą być wyjściami tranzystorowymi. l Największa liczba dla argumentu 16-bitowego składa się z 4 cyfr (9999), natomiast dla argumentu 32-bitowego – z 8 cyfr (99999999). Jednakże niezależnie od tego, czy argument jest 16- czy 32-bitowy, istnieje jedynie 6 przycisków funkcyjnych (A~F).
|
||
| FUN 78 D DSW |
WEJSCIE Z ZADAJNIKA TARCZOWEGO (DIGITAL SWITCH INPUT) |
FUN 78 D DSW |
|
l Jeżeli „EN” = 1, instrukcja odczyta dane z 4 punktów wejściowych rozpoczynając od IN (IN0~IN3). Do odczytania grupy 4-cufrowych wartości BCD (0000~9999) i zapisania ich w rejestrze D potrzebne są 4 operacje skanowania. W przypadku argumentu 32-bitowego, przy każdym skanowaniu odczytywane są 2 cyfry danych poprzez odczyt dodatkowej danej z IN4-IN7 i zapisanie jej w rejestrze D+1. Każdy bit OT0~OT3 będzie ustawiany sekwencyjnie na 1 i dane zapisywane będą odpowiednio do 100(jednostek), 101(dziesiątek), 102(setek) i 103(tysięcy). Dopóki EN = 1, PLC będzie skanować i odczytywać w sposób ciągły i cykliczny. Po zakończeniu każdego pełnego cyklu (np.: po odczytaniu 4 cyfr 100~103 ), znacznik zakończonego odczytu „DN” zostanie ustawiony na 1. Stan ten będzie jednak utrzymywany tylko na czas jednego skanowania. W przypadku, gdy którakolwiek odczytana wartość będzie poza zakresem 0~9 (BCD), znacznik błędu odczytu „ERR” zostanie ustawiony na 1, a wartość danej grupy cyfr zostanie ustawiona na 0000. l Punkty wyjściowe muszą być wyjściami tranzystorowymi. |
||
| FUN 79 D 7SGDL |
WYJŚCIE 7-SEGMENTOWE Z ZATRZASKIEM (7-SEGMENT OUTPUT WITH LATCH) |
FUN 79 D 7SGDL |
|
l Jeżeli wejście sterujące „EN” = 1, 4 półbajty rejestru S, od cyfry 0 do cyfry 3, są cyklicznie wysyłane do 4 punktów wyjściowych OT0~OT3. Podczas wystawiania danych na wyjścia dla danej cyfry, wysyłany jest także jej sygnał zatrzaskujący (OT4 odpowiada cyfrze 0, OT5 cyfrze 1, itd.). W ten sposób, wartość cyfrowa zostanie załadowana i przesłana do 7-segmentowego wyświetlacza. l W przypadku zastosowania instrukcji D (32-bitowej), półbajty 0~3 z rejestru S i półbajty 0~3 z rejestru S+1 wysyłane są oddzielnie do OT0~OT3 i OT8~OT11. Ponieważ przekazywane są one w tym samym czasie, mogą wykorzystywać ten sam sygnał zatrzaskujący. 16-bitowe instrukcje nie wykorzystują OT8~OT11. l Do momentu, aż status „EN” ustawiony będzie na 1, PLC będzie przekazywał półbajty cyklicznie. Po każdym transferze pełnej grupy wartości numerycznych (półbajtów 0~3 lub 0~7), znacznik zakończenia transferu „DN” zostanie ustawiony na 1. Jednakże stan ten zostanie utrzymany tylko na czas jednego skanowania.
l Wyjście tranzystorowe sterowników PLC FATEK są dwojakiego rodzaju: z negatywną logiką wyjścia tranzystorowego (tranzystor NPN – przy stanie ON, na wyjściu tranzystora pojawia się potencjał masy) i dodatnią logiką wyjścia tranzystorowego (PNP – przy stanie ON, na wyjściu tranzystora pojawia się potencjał dodatni). Budowa wyjść przedstawiona została poniżej:
l W 7-segmentowych wyświetlaczach z zatrzaskiem, wejścia danych (8, 4, 2, 1) oraz sygnał zatrzaskujący, mogą występować jako przystosowane do współpracy z jednym lub drugim typem polaryzacji. Na przykład, dla wartości numerycznej „8”, i logice dodatniej sterownia, wejścia logiczne powinny mieć stany 1000, natomiast dla logiki negatywnej 0111. Podobnie, jeżeli status sygnału zatrzaskującego jest 0, to dodatni logiczny sygnał zatrzaskujący umożliwi wyświetlenie wartości numerycznych do wprowadzenia przez zatrzask (tj. załadowania). Jeżeli status sygnału zatrzaskującego jest 1, wartości numeryczne są zatrzaskiwane (zachowywane). Odwrotnie jest w przypadku ujemnego sygnału logicznego. Poniższy schemat 7-segmentowego wyświetlacza CD-4511 przedstawia przykład wejścia wartości numerycznych z zatrzaskiem, wykorzystującego logikę dodatnią.
l Z uwagi na to, że polaryzacja wyjścia PLC i wejścia 7-segmentowego wyświetlacza może być dodatnia lub ujemna, to polaryzacje pomiędzy wyjściem a wejściem muszą być koordynowane w celu uzyskania prawidłowego wyniku. Instrukcja ta wykorzystuje N do określenia relacji polaryzacji pomiędzy wyjściem tranzystorowym PLC a wejściem 7-segmentowego wyświetlacza. Poniższa tabela przedstawia wszystkie możliwości takich relacji.
l W powyższym schemacie CD4511 użyto jako przykład. W przypadku wykorzystania wyjścia NPN, polaryzacja wejścia danych jest inna niż PLC, a polaryzacja wejścia zatrzaskującego jest taka sama jak PLC. Wartość N wynosi zatem 2. |
||
| FUN 80 MUXI |
WEJŚCIE MULTIPLEKSOWE (MULTIPLEX INPUT) |
FUN 80 MUXI |
|
l Instrukcja ta wykorzystuje metodę multipleksową do odczytywania N linii stanów z 8 kolejnych wejść (IN0~IN7) rozpoczynając od wejścia oznaczonego jako IN. Dzięki tej metodzie można odczytać stany z 8xN wejść przy wykorzystaniu jedynie 8 wejść i N wyjść. l Metoda skanowania multipleksowego polega na skanowaniu kolejno N wyjść, rozpoczynając od wyjścia OT. Podczas każdego skanowania, jedno z wyjść N ustawione jest na 1 – w ten sposób wybierana jest odpowiednia linia. OT+0 odpowiada pierwszej linii, OT+1 drugiej, itd. Po odczytaniu stanów z wszystkich N linii, stany 8xN wejść, zapisywane są w rejestrze D, a znacznik wykonania funkcji „DN” ustawiany jest na 1 (na czas jednego skanu programu). l W każdym skanie programu, funkcja odczytuje stany z jednej linii spośród N, zatem dla wykonania funkcji potrzebnych jest N skanów programu.
|
||
| FUN81 D PLSO | WYJŚCIE IMPULSOWE | FUN81 D PLSO |
|
l Jeżeli MD=0, instrukcja ta zrealizuje sterowanie wyjściem impulsowym w następujący sposób: l Jeżeli „EN” zmieni się z 0→1, nastąpi reset, polegający na ustawieniu znaczników „OUT” i „DN” w stan niski oraz rejestru liczby wysłanych impulsów HO na wartość 0. Funkcja pobierze częstotliwość impulsów i ilość impulsów do wysłania, oraz odczyta stan wejścia określającego kierunek wysyłania umpulsów „U/D” w celu ustalenia kierunku wysyłania: w dół lub w górę. Po zakończeniu resetu instrukcja sprawdzi stan wejścia wstrzymującego wysyłanie impulsów „PAU”. W przypadku, gdy stan wejścia wstrzymującego jest równy 1 (wstrzymaj wysyłanie impulsów), nie zostanie wykonana żadna akcja. Jeżeli PAU = 0, zostaną wysłane impuls WŁ/WYŁ z wypełnieniem 50% i częstotliwością Fr na wyjście UY(U/D=1) lub DY(U/D=0). Wartość w rejestrze HO zostanie powiększona po każdym wysłaniu impulsu. Wysyłanie impulsów zostanie przerwane w momencie, gdy ilość wysłanych impulsów HO będzie równa lub większa od zadanej liczby impulsów do wysłania PC, a znacznik zakończonego wysyłania „DN” zostanie ustawiony na 1. Podczas wysyłania impulsów, znacznik wysyłania „OUT” zostanie ustawiony na 1. W przeciwnym wypadku będzie miał stan 0. l Po rozpoczęciu wysyłania impulsu, stan na wejściu sterującym „EN” powinien być podtrzymywany w stanie 1. Jeżeli zmieni się na stan 0, wysyłanie impulsu zostanie zatrzymane (wyjście wysyłające impulsy zostanie ustawione w stan 0), a znacznik „OUT” zmieni się ponownie na stan 0. Pozostałe stany i dane pozostaną niezmienione. Jednakże, jeżeli „EN” ponownie zmieni się z 0 na 1, nastąpi reset i cała procedura rozpocznie się od początku. l W przypadku konieczności wstrzymania wysyłania impulsów, bez jednoczesnego resetowania procedury, należy użyć wejścia wstrzymującego „PAU”. Jeżeli „PAU”=1, instrukcja zatrzyma wysyłanie impulsów (wyjście wysyłające impulsy zostanie ustawione w stan 0, znacznik „OUT” zmieni się na 0, a pozostałe stany i dane nie ulegną zmianie). Po ponownej zmianie wejścia „PAU” z 1 na 0, instrukcja ta powróci do stanu sprzed wstrzymania i będzie kontynuować wysyłanie impulsów. l Podczas wysyłanie impulsów, instrukcja ta monitoruje wartość zadanej częstotliwości impulsów Fr oraz ilość impulsów do wysłania PC. Dlatego też, dopóki wysyłanie impulsów nie zostanie zakończone, częstotliwość i ilość impulsów do wysłania, mogą być zmieniane. Jednakże, stan wejścia określającego kierunek wysyłania impulsów „U/D”, może być odczytany tylko po resecie (gdy „EN” zmieni się z 0→1). Stan ten będzie utrzymany do momentu zakończenia wysyłania impulsów lub kolejnego resetu. Poza samym momentem resetu, zmiana stanu na wejściu „U/D”, nie wpływa na działanie tej instrukcji. l Głównym zastosowaniem tej funkcji jest sterowanie silnikiem krokowym za pomocą impulsów UY (w górę) i DY (w dół), w celu kontroli jego obrotu w przód lub wstecz. Niemniej jednak, jeżeli wymagana jest kontrola obrotu tylko w jedną stronę, można wypełnić tylko pole UY lub DY, a drugie pozostawić puste. W takim wypadku instrukcja zignoruje stan wejścia góra/dół „U/D” i wyśle impuls na wyjście wskazane. l Jeżeli MD = 1, tryb wysyłania impulsów przez funkcję zmieni się na „krok-kierunek”, gdzie wyjście DR określa kierunek impulsów ( DIR = 1 – w górę; DIR = 0 = w dół), a wyjście CK jest wyjściem impulsującym. l Instrukcja ta może być użyta w programie tylko raz, a UY (CK) i DY (DR) muszą być adresami tranzystorowych wyjść jednostki głównej sterownika PLC. l Poprawnym zakresem ilości impulsów do wysłania PC, dla argumentu 16-bitowego, jest 0~32767. Dla argumentu 32-bitowego (instrukcja D), zakres ten wynosi 0~2147483647. Jeżeli PC = 0, zadana ilość impulsów do wysłania, traktowana jest jako nieskończona. W takim wypadku funkcja będzie wysyłać impulsy nieskończenie, ich liczba zapisywana będzie w HO a znacznik „DN” ustawiony zostanie na 0. Poprawnym zakresem częstotliwości wysyłanych impulsów (Fr) jest 8~2000. Jeżeli wartość PC lub Fr przekroczy zakres, instrukcja nie zostanie wykonana, a znacznik błędu „ERR” zostanie ustawiony na 1.
| ||
MODULACJA SZEROKOŚCI IMPULSU
(PULSE WIDTH MODULATION)
FUN 82 PWMl Jeżeli wejście sterujące „EN” = 1, funkcja wysyła impulsy na wyjście impulsujące OT, o stanie „ON” trwający To ms i okresie Tp. OT musi być adresem wyjścia tranzystorowego jednostki głównej. Jeżeli „EN” = 0, wyjście impulsujące będzie w stanie 0.
l Jednostkami Tp i To są ms, z dokładnością 1 ms. Minimalną wartością To jest 0 (w takim wypadku wyjście OT będzie zawsze nieaktywne), a maksymalną jest wartość Tp (w takim wypadku wyjście OT będzie zawsze aktywne). Jeżeli To > Tp, funkcja nie zostanie wykonana, a znacznik błędu „ERR” zostanie ustawiony na 1.
l Instrukcja ta może być użyta w programie tylko raz.
l Instrukcja ta wykorzystuje funkcję przerwań sprzętowych 8 szybkich wejść (X0~X7) w jednostce głównej PLC, w celu pomiaru częstotliwości sygnału wejściowego. W określonym czasie próbkowania (TI), instrukcja zlicza ilość impulsów na wejściu S i pośrednio wyznaczy prędkość obrotu elementu (np.: silnika).
l Przy wykorzystaniu tej instrukcji do detekcji prędkości urządzeń, aplikacja powinna mieć możliwość wygenerowania dużej ilości impulsów na obrót w celu osiągnięcia większej rozdzielczości wyniku pomiaru. Jednakże suma częstotliwości wejściowych wszystkich mierzonych sygnałów, powinna być mniejsza niż 5 kHz. W innym wypadku może wystąpić błąd WDT.
l Rejestry D przechowujące wynik pomiaru częstotliwości, wykorzystują trzy kolejne 16-bitowe rejestry (D0~D2). Poza D0, który wynik pomiaru, rejestry D1 i D2 wykorzystywane są do przechowywania liczby aktualnie zliczonych impulsów i czasu pomiaru.
l Jeżeli „EN” = 1, instrukcja rozpocznie zliczanie impulsów na wejściu S, zapisując liczbę zliczonych impulsów w rejestrze D1. W tym samym czasie aktywowany jest timer próbkowania (D2), który zwiększa swoją wartość do momentu, aż wartość D2 osiągnie wartość czasu próbkowania (TI). Ostateczna zliczona ilość impulsów, jaka pojawiła się na wejściu S w czasie Ti, zapisywana jest w rejestrze D0 i rozpoczyna się nowy cykl. Zliczanie będzie powtarzane cyklicznie do momentu aż EN” = 0.
l Ponieważ D0 jest rejestrem 16to bitowym, maksymalna ilość impulsów zliczonych w czasie TI wynosi 32767. Jeżeli czas próbkowania TI jest zbyt długi lub częstotliwość na wejściu S jest za duża, zliczona wartość może przekroczyć 32767. W takim wypadku znacznik przekroczenia zakresu OVF zostanie ustawiony na 1, a zliczanie zostanie zatrzymane.
l Ponieważ czas próbkowania TI jest znany, a każdy obrót urządzenia generuje „n” impulsów, to prędkość obrotową urządzenia można obliczyć za pomocą następującego wzoru: 
KONWERSJA UKŁADU PÓL DLA WYŚWIETLACZA 16/7-SEGMENTOWEGO
(PATTERN CONVERSION FOR 16/7-SEGMENT DISPLAY)
FUN 84 TDSP
● Instrukcja ta wykorzystywana jest w aplikacjach stosujących moduły FBs-7SG1/FBs-7SG2. Konwertuje ona źródłowe ciągi znaków alfanumerycznych, na odpowiadające im układy pól świetlnych, wyświetlanych przez wyświetlacze 16-segmentowe lub do generacji układów pól, odpowiadających wartością interpretowanym w kodzie BCD (z wiodącymi zerami) dla wyświetlaczy 7-segmentowych (gdy tryb wyświetlania ustawiony jest na bez dekodowania).
● Jeżeli „EN” = 1, „OFF” = 0, „ON” = 0 oraz Md = 0, instrukcja zrealizuje konwersję na układ pól, gdzie S jest początkowym adresem konwertowanego ciągu znaków, Ns jest wskaźnikiem na pierwszy znak w S, NI jest liczbą kolejnych konwertowanych znaków, a D jest początkowym adresem zapisu wyników konwersji.
Bajt 0 adresu S jest 1-wszym konwertowanym znakiem, bajt 1 adresu S jest 2-gim konwertowanym znakiem, itd.
Ns jest wskaźnikiem określającym, gdzie znajduje się pierwszy konwertowany znak.
Po wykonaniu funkcji, każdy 8-bitowy znak źródłowy, zostanie przekonwertowany na odpowiadający mu układ pól wyświetlacza 16-segmentowego.
● Jeżeli „OFF” = 1 i Md = 0, wszystkie pola wyświetlanego układu będą wyłączone. Jeżeli Md = 1, wszystkie kody BCD zostaną zastąpione pustym znakiem (0F).
● Jeżeli „ON” = 1 i Md = 0, wszystkie pola wyświetlanego układu będą włączone. Jeżeli Md = 1, wszystkie kody BCD zostaną zastąpione znakiem „8” (włączone wszystkie pola świetlne).
● Więcej szczegółów w Rozdziale 16 „Moduł wyświetlacza FBs-7SG”.
Opis funkcji i powiadomienia
l Przy zastosowaniu modułów temperaturowych i edycji tabel, uzyskujemy odczytaną wartość bieżącej temperatury, który nazwiemy zmienną procesową (PV). Po obliczeniu software’owego algorytmu regulatora PID, odpowie on na błąd regulacji, wartością wynikającą z ustawionej wartości zadanej, całki błędu i tempa zmiany zmiennej procesowej. Dzięki zastosowaniu regulacji w zamkniętej pętli, spodziewamy się stabilności procesu.
l Wyniki obliczeń regulatora PID można przekonwertować na proporcjonalną wartość wypełnienia sygnału PWM i sterować procesem grzania lub chłodzenia za pomocą wyjścia tranzystorowego, sterującego przekaźnikiem SSR. Jest to bardzo wydajne i ekonomiczne rozwiązanie.
l Wykorzystując wyjście analogowe sterownika (D/A), wynik obliczeń PID, może w sposób ciągły sterować położeniem zaworu proporcjonalnego lub SCR, w celu uzyskania dokładniejszego sterowania temperaturą.
l Cyfrowy algorytm PID jest następujący:
Mn = [Kc×En]+ Σ0n[Kc×Ti×Ts×En]−[Kc×Td×(PVn−PVn-1)/Ts]
gdzie,
Mn: Sygnał wyjściowy w chiwili „n”.
Kc: Wzmocnienie (Zakres: 1〜9999;Pb=100(%) / Kc)
Ti: Stała całkowania (Zakres:0〜9999, odpowiadający 0.00〜99.99 powtórzeń/minutę)
Td: Stała różniczkowania (Zakres:0〜9999, odpowiadający 0.00〜99.99 minut)
PVn : Wartość zmiennej procesowej w chwili „n” (bieżąca wartość)
PVn_1: Wartość zmiennej procesowej w chwili „n-1” (poprzednia wartość)
En: Uchyb w chwili „n” ; E= SP – PVn
Ts: Okres obliczania algorytmu regulatora PID (Dopuszczalne wartości: 10, 20, 40, 80,160, 320; jednostka 0.1sek.)
Instrukcja dopasowywania parametrów regulatora PID
l Im większe współczynnika proporcjonalnego (Kc) tym większy wpływ członu proporcjonalnego na odpowiedź regulatora. Odpowiedź regulatora może być łagodna lub szybka. Jednakże, jeżeli wzmocnienie jest zbyt duże, może to spowodować wystąpienie oscylacji regulowanej temperatury. Należy zatem ustawić możliwe duże „Kc” (ale nie w stopniu powodującym oscylacje), które będzie mogło wzmocnić reakcję regulatora i zmniejszyć uchyb ustalony.
l Człon całkujący może być wykorzystany do wyeliminowania uchybu ustalonego. Im wyższa wartość stałej całkowania Ti, tym większy wpływ członu całkującego na odpowiedź regulatora. W przypadku pojawienia się uchybu ustalonego, należy zwiększyć „Ti”, w celu jego zmniejszenia.
Jeżeli „Ti” = 0, człon całkujący nie ma wpływu na odpowiedź regulatora.
Na przykład, jeżeli czas całkowania wynosi 6 minut, Ti=100/6=17; jeżeli czas całkowania wynosi 5 minut, Ti=100/5=20.
l Człon różniczkujący może być wykorzystany aby uczynić proces płynnym i bez przesterowań. Im wyższa wartość stałej różniczkowania Td, tym większy wpływ członu różniczkującego na odpowiedź regulatora. W przypadku zbyt dużego przesterowania, należy zwiększyć „Td”, w celu jego zmniejszenia.
Jeżeli „Td” = 0, człon różniczkujący nie ma wpływu na odpowiedź regulatora.
Na przykład, jeżeli czas różniczkowania wynosi 1 minutę, Td = 100; jeżeli czas różniczkowania wynosi 2 minuty, Td = 200.
l Prawidłowe dopasowanie parametrów regulatora PID, umożliwia uzyskanie doskonałych wyników sterowania temperaturą.
l Domyślny okres obliczania algorytmu regulatora PID wynosi 4 sekundy (Ts=40)
l Domyślna wartość współczynnika proporcjonalnego (Kc) wynosi 110, gdzie Pb=1000/110×0.1%≒0.91%; pełny zakres systemu wynosi 1638°, co oznacza1638×0.91≒14.8° dla wprowadzenie proporcjonalnej kontroli zakresu.
l Domyślna stała całkowania wynosi 17, co oznacza, że czas zdwojenia wynosi 6 minut (Ti=100/6=17).
l Domyślna stała różniczkowania wynosi 50, co oznacza, że czas wyprzedzenia wynosi 0.5 minuty(Td=50).
l Po zmianie okresu obliczania algorytmu regulatora PID, koniecznym może się okazać ponowne dopasowanie parametrów Kc, Ti, Td.
Opis funkcji
l FUN86 włączy się po odczytaniu wszystkich kanałów temperaturowych.
l Jeżeli „EN” = 1, w zależności od stanu wejścia H/C, funkcja będzie wykonywała regulację temperatury metodą PID, w trybie grzania (H/C=1) lub chłodzeniem (H/C=0). Aktualne wartości temperatur mierzone są modułami temperaturowymi. Wartości zadane temperatur w rejestrach rozpoczynających się od adresu Sv. Po obliczeniu software’owego algorytmu regulatora PID, odpowie on na błąd regulacji, wartością wynikającą z ustawionej wartości zadanej, całki błędu i tempa zmiany zmiennej procesowej. Odpowiedź ta jest konwertowana na proporcjonalną wartość wypełnienia sygnału PWM, którym odbywa się sterowanie procesem grzania lub chłodzenia za pomocą wyjścia tranzystorowego, sterującego przekaźnikiem SSR. Jest to bardzo wydajne i ekonomiczne rozwiązanie. Równocześnie odpowiedź regulatora zapisywana jest w rejestrach OR, po wcześniejszym przekonwertowaniu na zakres wyjścia analogowego (0~16383). W ten sposób, wykorzystując wyjście analogowe sterownika (D/A), wynik obliczeń PID, może w sposób ciągły sterować położeniem zaworu proporcjonalnego lub SCR, w celu uzyskania dokładniejszego sterowania temperaturą.
l Jeżeli ustawienia Sn i Zn (gdzie: 0 £ Sn £ 31 , 1 £ Zn £ 32 oraz 1 £ Sn + Zn £ 32) będą nieprawidłowe, instrukcja ta nie zostanie wykonana a wyjście „ERR” będzie w stanie wysokim.
Instrukcja ta porównuje aktualną wartość temperatury z jej wartością zadaną celu sprawdzenia, czy aktualna temperatura znajduje się w strefie regulacji (dopuszczalnym zakresie odchylenia, określanym przez wartość w rejestrze oznaczonym jako Os - offset). Jeżeli wartość bieżąca temperatury dla danego punktu jej pomiaru będzie w strefie, to status bitu „wewnątrz strefy” dla tego punktu zostanie ustawiony na 1; w przypadku jej wyjścia poza strefę, status bitu zostanie ustawiony na 0 a wyjście „ALM” będzie w stanie wysokim.
l W międzyczasie, funkcja sprawdza także, czy nie wystawić ostrzeżenia o wysokiej temperaturze (rejestrem do zapisu nastawy poziomu ostrzeżenia o wysokiej temperaturze jest R4008). Jeżeli w kolejnych dziesięciu odczytach aktualnej wartości, zmierzona temperatury będzie równa lub większa od nastawy ostrzeżenia o wysokiej temperaturze, bit ostrzeżenia i znacznik „ALM” zostaną ustawione na 1. Można dzięki temu uniknąć problemu wynikającego z utracenia kontroli nad temperaturą, w przypadku zwarcia SSR lub obwodzie grzewczym.
l Instrukcja ta może także wykryć problem z grzaniem wynikający z rozwarcia SSR, obwodu grzewczego lub ze zużytej elementu grzewczego. Kiedy wyjście kontrolujące temperaturę przełączy się na dużą moc (której poziom ustawiany jest w rejestrze R4006) permanentnie w danym okresie czasu (ustawianym w rejestrze R4007), a aktualna temperatura będzie wykraczać poza wymagany zakres, to bit ostrzeżenia i znacznik „ALM” zostaną ustawione na 1.
l WR: Początkowy rejestr roboczy dla tej instrukcji. Zawiera 9 kolejnych rejestrów i nie mogą one być ponownie użyte w programie.
Zawartość dwóch pierwszych rejestrów WR+0 i WR+1 wskazuje na to, czy aktualna temperatura znajduje się wewnątrz czy poza strefą odchylenia (określaną przez wartość w rejestrach Os). Jeżeli wartość będzie w strefie, stan bitu dla danego punktu pomiaru temperatury zostanie ustawiony na 1; w przypadku wyjścia poza strefę, status bitu zostanie ustawiony na 0 i aktywowany zostanie znacznik „ALM”.
Funkcje bitów w WR+0 są następujące:
Bit0=1 wskazuje na to, że temperatura w punkcie Sn+0 jest w strefie.
Bit15=1 wskazuje na to, że temperatura w punkcie Sn+15 jest w strefie.
Funkcje bitów w WR+1 są następujące:
Bit0=1 wskazuje na to, że temperatura w punkcie Sn+16 jest w strefie
Bit15=1 wskazuje na to, że temperatura w punkcie Sn+31 jest w strefie.
Rejestry WR*+2 i WR+3 są rejestrami zawierającymi bity ostrzeżeń, a ich zawartość wskazuje na ewentualne ostrzeżenie o wysokiej temperaturze lub rozwarcie obwodu grzewczego.
Funkcje bitów w WR+2 są następujące:
Bit0=1 wskazuje na obecność ostrzeżenia o wysokiej temperaturze lub rozwarcia obwodu grzewczego w punkcie Sn+0
Bit15=1 wskazuje na obecność ostrzeżenia o wysokiej temperaturze lub rozwarcia obwodu grzewczego w punkcie Sn+15.
Funkcje bitów w WR+3 są następujące:
Bit0=1 wskazuje na obecność ostrzeżenia o wysokiej temperaturze lub rozwarcia obwodu grzewczego w punkcie Sn+16
Bit15=1 wskazuje na obecność ostrzeżenia o wysokiej temperaturze lub rozwarcia obwodu grzewczego w punkcie Sn+31
Instrukcja ta wykorzystuje również rejestry WR+4 ~ WR+8.
l Pojedyncza funkcja może realizować sterowanie temperaturą w trybie grzania lub chłodzenia. Sterowanie chłodzeniem i grzaniem, wymaga zastosowania oddzielnych instrukcji.
Specjalne rejestry związane z FUN 86
l R4005 : Młodszy bajt określa okres obliczania algorytmu regulatora PID
=0, obliczanie PID co 1 sekundę.
=1, obliczanie PID co każde 2 sekundy.
=2, obliczanie PID co każde 4 sekundy. (wartość domyślna)
=3, obliczanie PID co każde 8 sekund.
=4, obliczanie PID co każde 16 sekund.
³5, obliczanie PID co każde 32 sekundy.
: Starszy bajt określa okres sygnału PWM
=0,okres sygnału PWM wynosi 1 sekundę.
=1,okres sygnału PWM wynosi 2 sekundy. (wartość domyślna)
=2,okres sygnału PWM wynosi 4 sekundy.
=3,okres sygnału PWM wynosi 8 sekund.
=4,okres sygnału PWM wynosi 16 sekund.
³5,okres sygnału PWM wynosi 32 sekundy.
Uwaga 1: Przy zmianie wartości R4005, stan na wejściu sterującym „EN” FUN86 musi być ustawiony na 0. Dopiero po ponownym załączeniu „EN” = 1, funkcja, przy realizacji obliczeń PID, będzie bazować na nowych ustawieniach.
Uwaga 2: Im krótszy czas cyklu tym bardziej równomierne ogrzewanie. Jednakże, uchyb wywołany czasem skanu PLC będzie również większy. W celu osiągnięcia najlepszego sterowania, można bazować na czasie skanu, w celu określenia przedziału pomiędzy rozwiązaniami algorytmu regulatora PID oraz okresu sygnału PWM.
l R4006: Nastawa detekcji dużej mocy na wyjściu przy rozwarciu SSR, obwodu grzewczego lub zużycia elementu grzewczego. Jednostką jest %, a zakres wynosi 80~100(%); wartość domyślna to 90(%).
l R4007: Czas detekcji występowania dużej mocy na wyjściu przy rozwarciu SSR, obwodu grzewczego lub zużycia elementu grzewczego. Jednostką jest sekunda, a zakres wynosi 60~65535 (sekund); wartość domyślna to 600 (sekund).
l R4008: Nastawa ostrzeżenia o wysokiej temperaturze przy wystąpieniu zwarcia w SSR lub obwodzie grzewczym. Jednostką jest 0.1 stopnia a zakres wynosi 100~65535; wartość domyślna to 3500 ( jednostka w 0.1°).
l R4012: Stany bitów R4012 informują o potrzebie sterowania temperatury.
Bit0=1 oznacza, że pierwszy punkt wymaga sterowania temperatury
Bit1=1 oznacza, że drugi punkt wymaga sterowania temperatury.
‧
‧
Bit15=1 oznacza, że szesnasty punkt wymaga sterowania temperatury.
(Domyślną wartością dla R4012 jest FFFFH – kontrola wszystkich punktów temperatury jest załączona)
l R4013: Stany bitów R4013 informują o potrzebie sterowania temperatury.
Bit0=1 oznacza, że siedemnasty punkt wymaga sterowania temperatury.
Bit1=1 oznacza, że osiemnasty punkt wymaga sterowania temperatury.
‧
‧
Bit15=1 oznacza, że trzydziesty drugi punkt wymaga sterowania temperatury.
(Domyślną wartością dla R4013 jest FFFFH – kontrola wszystkich punktów temperatury jest załączona)
l Jeżeli „EN” = 1, a bit określający załączenie sterowania dla tego punktu ustawiony jest na 1 (odpowiedni bit w R4012 lub R4013 będzie ustawiony na 1), funkcja FUN86 przeprowadzi sterowanie regulatorem PID i wyśle sygnał wyjściowy jako wynik obliczeń.
l Jeżeli „EN” = 1, a bit określający załączenie sterowania dla tego punktu ustawiony jest na 0 (odpowiedni bit w R4012 lub R4013 będzie ustawiony na 0), funkcja FUN86 nie przeprowadzi sterowania regulatorem PID i nie wyśle żadnego sygnału wyjściowego.
l Program drabinkowy może kontrolować stan odpowiednich bitów w R4012 lub 4013 w celu przekazania funkcji FUN86 informacji, czy dany punkt pomiaru temperatury ma być kontrolowany czy nie, zatem możliwe jest zastosowanie w programie tylko jednej funkcji FUN86.
FUN 87 T.01S
FUN 88 T.1S
FUN 89 T1S
TIMER KUMULUJĄCY
(ACCUMULATIVE TIMER)
FUN 87 T.01S
FUN 88 T.1S
FUN 89 T1S
l Działanie tej funkcji, jest takie samo jak normalnych timerów (T0~T255), z tą różnicą, że normalne timery, posiadają jedynie wejście załączenia zliczania czasu EN – kiedy na wejściu jest 1, timer rozpoczyna odliczanie czasu; kiedy na wejściu jest 0, timer jest zerowany. Przy każdej zmianie stanu na wejściu, rozpoczyna się ponowne odliczanie czasu, co uniemożliwia kumulowanie sumarycznego czasu załączenia wejścia zliczania. Zliczanie czasu w normalnych timerach, możliwe jest tylko wtedy, gdy wejście sterujące EN=1. W przypadku tej funkcji, zliczanie również jest wykonywane, gdy „EN” = 1. Gdy na wejściu TIM jest stan 1, funkcja działa identycznie jak normalne timery, tj wartość odmierzonego czasu zeruje się po podaniu stanu niskiego na wejście EN. Natomiast kiedy na wejściu TIM znajduje się stan niski (TIM=0), w chwili pojawienia się na wejściu EN stanu niskiego, wartość bieżąca odmierzonego czasu nie zeruje się, a po ponownym podaniu stanu wysokiego, zliczanie jest kontynuowane od poprzedniej wartości. Dodatkowo, funkcja ta posiada dwa wyjścia: TUP (po doliczeniu do wartości zadanej ma stan 1, w przeciwnym przypadku 0) oraz NUP (po doliczeniu do wartości zadanej ma stan 0, w przeciwnym przypadku 1). Użytkownik może wykorzystać różne kombinacje tych we / wy w celu zbudowania timerów o rożnych funkcjach. Na przykład:
USTAW CZAS WATCHDOG TIMERA
(WATCHDOG TIMER CONTROL)
FUN 90 P WDT
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), czas watchdog ustawiony zostanie na Nx10ms. Jeżeli czas skanu przekroczy ustawioną wartość, PLC wyłączy się, a wykonywanie programu zostanie zatrzymane.
l Głównym przeznaczeniem funkcjonalności WDT jest zapewnienie bezpieczeństwa systemu ze strony aplikacji. Na przykład, jeżeli CPU sterownika PLC zostanie nagle uszkodzone i nie będzie możliwości realizacji programu ani odświeżenia We / Wy, to po upływie czasu WDT, WDT automatycznie wyłączy wszystkie We / Wy w celu zapewnienia bezpieczeństwa. W niektórych aplikacjach, jeżeli czas skanu jest zbyt długi, może to spowodować problemy natury bezpieczeństwa lub problemy związane z niespełnianiem wymagań kontroli. Funkcja ta jest wykorzystywana do ustalenia granicznej wartości czasu skanu.
l Po ustawieniu wartości czasu WDT, czas ten jest podtrzymywany i nie ma potrzeby ustawiania go ponownie w każdym skanie programu. Dlatego też, w praktyce, instrukcja ta powinna wykorzystywać instrukcję P (być wywoływana stanem narastającym na wejściu EN).
l Domyślną wartością czasu WDT jest 0.25 sek.
l Zasada działania WDT, szerzej przedstawiona jest w opisie działania funkcji RSWDT(FUN 91).
RESET TIMERA WATCHDOG
(RESET WATCHDOG TIMER)
FUN 91 P RSWDT
l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi reset timera WDT (WDT rozpocznie zliczanie czasu od 0).
l Przeznaczenie timera watchdog (WDT), zostało wcześniej opisane, w rozdziale opisującym działanie funkcji WDT (FUN90).
Zasada działania timera watchdog jest następująca:
Timer watchdog jest zazwyczaj implementowany jako timer sprzętowy z szybkim zerowaniem (nie może być to timer software’owy ponieważ w przypadku usterki CPU, taki timer stałby się bezużyteczny). Timer z „szybkim zerowaniem” oznacza, że po pojedynczym wzbudzeniu timera, zliczona wartość czasu zostanie wyzerowana i rozpocznie się zliczanie czasu od nowa. Jeżeli licznik WDT rozpoczął zliczanie i nigdy potem nie byłby zerowany, wartość odmierzonego czasu w WDT będzie narastać, do momentu osiągnięcia ustawionego maksymalnego czasu skanu (N). W tej chwili, błąd timer WDT zostanie wywołany, a PLC wyłączy się. Natomiast, jeżeli timer WDT będzie zerowany przed upływem ustawionego maksymalnego czasu skanu, błąd timera WTD, nigdy nie zostanie wywołany. Takie działanie timera watchdog, jest wykorzystywane przez PLC, w celu zapewnienia bezpieczeństwa systemu. Po zakończeniu każdego skanu programu i odświeżeniu stanów We / Wy, timer WDT jest zerowany. Zatem, jeżeli system będzie pracował normalnie, a czas skanu nie przekroczy wartości N, błąd timera WDT nigdy nie zostanie wywołany. Jednakże, w przypadku uszkodzenia CPU, co uniemożliwia wyzerowanie czasu timera WDT, lub w przypadku, kiedy czas skanu programu jest zbyt długi, przez co timer WDT nie zostanie wyzerowany przed upływem maksymalnego czasu skanu (N), błąd timera WDT zostanie wywołany, a PLC wyłączy się.
l W pewnych aplikacjach, po ustawienia maksymalnego czasu skanu (FUN90), zdarza się, że czas skanu programu, chwilowo przekracza wartość maksymalną (np. gdy w danym skanie wywołano podprocedurę o długim czasie wykonania). W takich sytuacjach, świadomie wydłużamy czas skanu, nie chcemy przy tym, aby błąd timera WTD był wywoływany. Możemy wtedy użyć tej funkcji w celu wyzerowania timera WDT i uniknięcia wywołania tego błędu. Takie jest główne zastosowanie tej funkcji.
ODCZYT AKTUALNEJ WARTOŚCI SZYBKIEGO LICZNIKA SPRZĘTOWEGO
(HARDWARE HIGH SPEED COUNTER CURRENT VALUE (CV) ACCESS)
FUN 92 D P HSCTR









































































































































































