Skip to main content

7

FUN 22 P BREAK PĘTLA BREAK FROM FOR iNEXT(BREAK) FUN22 P BREAK

image.png

 

●         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

 

image.png

 

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ą NEXTE

FUN 23 P DIV48 DZIELENIE 48-BITOWE FUN 23 P DIV48

image.png

 

 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

 

image.png

 

 

 

image.png


FUN 24 DP SUM

SUM  (Sumowanie danych )

FUN 24 DP SUM

image.png

 

 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

 

image.png

 

 Przykład 2 Kiedy M1 jest w stanieWŁ, następuje sumowanie danych 32-bitowych.

 

 

image.png


FUN 25 DP MEAN

ŚREDNIA (Obliczenie średniej)

FUN 25 DP MEAN

image.png

 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.

 

image.png


FUN 26 DP SQRT Pierwiastek kwadratowy FUN 26 DP SQRT

image.png

 

 

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.

 

image.png


FUN 27 DP NEG

NEGACJA (obliczenie wartości ujemnej)

FUN 27 DP NEG

image.png

 

 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.

 

 

image.png


FUN 28 DP ABS

WARTOŚĆ BEZWZGLĘDNA

(obliczenie wartości bezwzględnej)

FUN 28 DP ABS

image.png

 

 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.

image.png


FUN 29 DP EXT ROZSZERZENIE ZNAKOWE FUN 29 DP EXT

image.png

 

 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ść.

 

image.png


FUN 30 PID

OPERACJA PID OGÓLNEGO ZASTOSOWANIA

(Krótki opis)

FUN 30 PID

image.png

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

image.png

 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.

 

 

image.png


FUN 32 ADCNV

KONWERSJA WARTOŚCI WEJŚCIA ANALOGOWEGO 4~20MA(ADCNV)

FUN 32 ADCNV

image.png

 

 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 

image.png

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.

image.png

 

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. 

image.png

 

FUN 33 P LCNV

Konwersja liniowa(LCNV)

FUN 33 P LCNV

image.png

 

 

●          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:

 

image.png


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:

 

                                                   image.png image.png

 

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

 

image.png

 

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

 

 

image.png

Przykład programu 2 : Konwersja liniowa w trybie 1

image.png

 

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.

 

image.png

 

Przykład programu 3 : Konwersja liniowa w trybie 2

image.png

 

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.

 

image.png

 

Przykład programu 4: Konwersja liniowa w trybie 3

image.png

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

image.png

 

FUN 34 P MLC

Multi-liniowa konwersja(MLC)

FUN 34 P MLC


image.png

 

 

●          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.
Jeżeli podczas wykonywania instrukcji stan wejścia X / Y = 1, nastąpi porównanie danych źródłowych z wpisami w tabeli Ty w celu odnalezienia odpowiedniej lokalizacji w tej tabeli (wpisy w tabeli Ty muszą być uszeregowane od najmniejszej do największej, lub odwrotnie), a następnie zostanie przeprowadzona konwersja liniowa zgodna ze zlokalizowaną części tabel Ty i Tx.    

●          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:

 

image.png

 

Przykład 1:

image.png

 

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.

 

 

image.png

 

 

image.png

 

 Przykład 2

 

image.png

 

 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

 

 

image.png

 

 

image.png

 

Przykład 3 

image.png

 

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

 

image.png

 

 

 

image.png

 

 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

 

 

image.png

FUN 35 D P XOR XOR FUN 35 D P XOR

image.png

 

 

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.

 

image.png


FUN 36 XNR XNOR FUN 36 XNR

image.png

 

 

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.

 

image.png

 

FUN 37 D P ZNCMP

Komparator strefy (ZONE COMPARE)

FUN 37 D P ZNCMP

image.png

 

 

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.

image.png

 

FUN 40 D P BITRD

ODCZYTAJ BIT (BIT READ)

FUN 40 D P BITRD

image.png

 

 

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.

 

image.png

 

FUN 41 D P BITWR

ZAPISZ BIT (BIT WRITE)

FUN 41 D P BITWR

image.png

 

 

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.

 

image.png


FUN 42 D P BITMV

PRZENIEŚ BIT (BIT MOVE)

FUN 42 D P BITMV


image.png


 

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

image.png

), 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

image.png

 

 

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.

 

 

 

image.png


FUN 44 D P BYMV

PRZENIEŚ BAJT (BYTE MOVE)

FUN 44 D P BYMV

image.png

 

 

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.

 

 

image.png


FUN 45 D P XCHG

ZAMIEŃ (EXCHANGE)

FUN 45 D P XCHG

image.png


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).

image.png


FUN 46 P SWAP

ZAMIEŃ BAJTY (BYTE SWAP)

FUN 46 P SWAP

image.png

 

 

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.

 

image.png


FUN 47 P UNIT

POŁĄCZ PÓŁBAJTY (NIBBLE UNITE)

FUN 47 P UNIT

image.png

 

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.

 

image.png


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.

 

image.png


FUN 49 BUNIT

POŁĄCZ BAJTY (BYTE UNITE)

FUN 49 BUNIT

image.png

 

 

●         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 :

 

image.png

 

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.
Jeżeli R999=10, wyniki zostaną zapisane w rejestrach R2500
~R2504.

image.png

FUN 50 BDIST

ROZPROWADŹ BAJTY (BYTE DISTRIBUTE)

FUN 50 BDIST

image.png

 

 

●         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:

image.png

 

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.
Jeżeli R999=9, wyniki zostaną zapisane w rejestrach R1500
~R1508

 

 

image.png

FUN 51 D P SHFL

PRZESUŃ BITY W LEWO (SHIFT LEFT)

FUN 51 D P SHFL

image.png

 

 

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.

 

image.png


FUN 52 D P SHFR

PRZESUŃ BITY W PRAWO (SHIFT RIGHT)

FUN 52 D P SHFR


image.png

 

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.

 

 

image.png


FUN 53 D P ROTL

OBRÓĆ BITY W LEWO

(ROTATE LEFT)

FUN 53 D P ROTL

image.png


 

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.

 

image.png


FUN 54 D P ROTR

OBRÓĆ BITY W PRAWO (ROTATE RIGHT)

FUN 54 D P ROTR

image.png

 

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.

 

image.png


FUN 55 D P B → G

KONWERSJA KODU BINARNEGO NA KOD GRAYA

(BINARY-CODE TO GRAY-CODE CONVERSION)

FUN 55 D P B → G

image.png

 

 

●            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

 

 

image.png

 

 Przykład 1 : Jeżeli status M0 zmieni się z 0→1, przeprowadzona zostanie 16-bitowa konwersja kodu

 

image.png

 

 Przykład 2 Jeżeli M0 =1, przeprowadzona zostanie 32-bitowa konwersja kodu

 

 

image.png


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:

 

 

image.png

 

 Przykład 1 Jeżeli status M0 zmieni się z 0→1, przeprowadzona zostanie 16-bitowa konwersja kodu

 

image.png

 

 

Przykład 2 Jeżeli M0 =1, przeprowadzona zostanie 32-bitowa konwersja kodu

image.png

 

FUN 57 P DECOD

DEKODER KODU 1 z N (DECODE)

FUN 57 P DECOD

image.png

 

 

●       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ść.

 

image.png

 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

image.png

 

 

●       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.

 

image.png

 

●      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.

 

 

image.png

FUN 59 P → 7SG

KONWERSJA NA KOD 7-SEGMENTOWY

(7-SEGMENT CONVERSION)

FUN 59 P → 7SG

image.png

 

●            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

image.png

 

Przykład  2 Konwersja kodu szesnastkowego na 7-segmentowy przy M1 w stanie 1

 

image.png

Przykład 3 Konwersja kodu szesnastkowego na 7-segmentowy przy M1 w stanie 1

image.png

Przykład 4 Konwersja kodu szesnastkowego na 7-segmentowy przy M1 w stanie 1

 

 

image.png

 

image.png

 

FUN 60 P → ASC

KONWERSJA ASCII (ASCII CONVERSION)

FUN 60 P → ASC

image.png

 

●            Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), nastąpi konwersja liter i cyfr zapisanych w polu S (pole S może zawierać do 12 znaków alfanumerycznych) na kod ASCII i zapisanie wyników w rejestrach rozpoczynając od D. Każde 2 znaki alfanumeryczne zajmują jeden 16-bitowy rejestr.

●            W większości przypadków, instrukcja ta przechowuje alfanumeryczne informacje w programie, odczekuje na pojawienie się określonych okoliczności, konwertuje te informacje na kod ASCII i przenosi je na zewnętrzne urządzenia wyświetlające, które obsługują kodowanie ASCII.image.png


 

FUN 61 P → SEC

KONWERSJA GODZIN:MINUT:SEKUND NA SEKUNDY

(HOUR:MINUTE:SECOND TO SECONDS CONVERSION)

FUN 61 P → SEC

image.png

 

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.

 

 

image.png

 

 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.

 

image.png


FUN 62 P → HMS

KONWERSJA SEKUND→GODZINY:MINUTY:SEKUNDY

(SECOND→HOUR:MINUTE:SECOND)

FUN 62 P → HMS

image.png

 

 

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).

 

image.png

 

 

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.

 

image.png


FUN 63 P → HEX

KONWERSJA KODU ASCII NA WARTOŚCI HEKSADECYMALNE

(CONVERSION OF ASCII CODE TO HEXADECIMAL VALUE)

FUN 63 P → HEX

image.png

 

 

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.

image.png

 

Przykład 2: Konwersja kodu ASCII na wartość szesnastkową przy M1 w stanie 1Konwersja kodu ASCII na wartość szesnastkową przy M1 w stanie 1

 

image.png

 

Przykład 3: Konwersja kodu ASCII na wartość szesnastkową przy M1 w stanie 1

image.png

 

Przykład 4 Konwersja kodu ASCII na wartość szesnastkową przy M1 w stanie 1

 

image.png


FUN 64 P → ASCII

KONWERSJA WARTOŚCI HEKSADECYMALNYCH NA KOD ASCII

(CONVERSION OF HEXADECIMAL VALUE TO ASCII CODE)

FUN 64 P → ASCII

image.png

 

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

image.png

 

Przykład 2 Konwersja wartości szesnastkowej na kod ASCII przy M1 w stanie 1.

image.png

 

 

Przykład 3 Konwersja wartości szesnastkowej na kod ASCII przy M1 w stanie 1

image.png

 

 

Przykład 4 Konwersja wartości szesnastkowej na kod ASCII przy M1 w stanie 1.

 

image.png

END

KONIEC SKANU (PROGRAM END)

END

image.png

 

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.

 

 

image.png


FUN 65 LBL

ETYKIETA (LABEL)

FUN 65 LBL

image.png

 

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.

 

Zarezerwowane słowa (etykiety) Opis

X0+I~X15+I(INT0~INT15)

X0-I~X15-I(INT0-~INT15-)

Etykiety procedur obsługi przerwań sprzętowych pochodzących od wejść (X0~X15)
HSC0I~HSC7I Etykiety procedur obsługi przerwań sprzętowych pochodzących od szybkich liczników HSC0~HSC7

1MSI(1MS)、2MSI(2MS),3MSI(3MS),

4MSI(4MS),5MSI(5MS),10MSI(10MS),

50MSI(50MS),100MSI(100MS)

Etykiety dla 8miu typów okresowych przerwań sprzętowych, pochodzących od zegara wewnętrznego

 HSTAI(ATMRI),HST0I~HST3I

Etykiety procedur obsługi przerwań sprzętowych pochodzących od stałego szybkiego zegara
PSO0I~PSO3I Etykiety procedur obsługi przerwań sprzętowych, wywoływanych po zakończeniu wysyłania impulsów, przy pozycjonowaniu NC

 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

image.png

 

FUN 66 P JMP

SKOK (JUMP)

FUN 66 P JMP

image.png

 

 

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.

image.png

FUN 67 P CALL

WYWOŁAJ (CALL)

FUN 67 P CALL

image.png

 

 

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).

 

image.png

 

 

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).

image.png

 

 

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

image.png


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

image.png

 

 

 

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

image.png

 

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.

 

 

image.png


FUN 71 NEXT KONIEC PĘTLI FUN 71 NEXT

image.png


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

image.png

 

 

●            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:

 

image.png

 

●            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

image.png

 

 

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.


image.png

 

 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.

 

image.png

 Poniżej rysunek jest schematem podłączenia wejść dla przykładu:

image.png

 

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.

image.png

 

FUN 77 D HKEY

WEJSCIE Z KLAWIATURY 16TO ZNAKOWEJ

(HEX-KEY INPUT)

FUN 77 D HKEY

image.png

 

 

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).

 

image.png


FUN 78 D DSW

WEJSCIE Z ZADAJNIKA TARCZOWEGO

(DIGITAL SWITCH INPUT)

FUN 78 D DSW

image.png

 

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.

image.png


FUN 79 D 7SGDL

WYJŚCIE 7-SEGMENTOWE Z ZATRZASKIEM

(7-SEGMENT OUTPUT WITH LATCH)

FUN 79 D 7SGDL

image.png

 

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.

 

 

image.png

 

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:

 

image.png

 

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ą.

image.png

 

 

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.

 

image.png

 

 

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

image.png

 

 

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.

 

image.png


FUN81 D PLSO WYJŚCIE IMPULSOWE FUN81 D PLSO

image.png

 

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.

image.png

 

FUN 82 PWM

MODULACJA SZEROKOŚCI IMPULSU

(PULSE WIDTH MODULATION)

FUN 82 PWM

image.png


l  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.

 

image.png

 

 

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.

 

FUN 83 SPD CZĘSTOTLIWOŚĆ NA WEJŚCIU (APEED DETECTION) FUN 83 SPD

image.png

 

 

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: image.png

 

image.png


FUN 84 TDSP

KONWERSJA UKŁADU PÓL DLA WYŚWIETLACZA 16/7-SEGMENTOWEGO

(PATTERN CONVERSION FOR 16/7-SEGMENT DISPLAY)

FUN 84 TDSP

image.png

 

 

●       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”. 

FUN 86 TPCTL INSTRUKCJA STEROWANIA TEMPERATURĄ PID FUN 86 TPCTL

image.png

 

 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

image.png

 

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:

 

image.png

image.png

 

image.png

 

 

image.png

 

 

image.png


FUN 90 P WDT

USTAW CZAS WATCHDOG TIMERA

(WATCHDOG TIMER CONTROL)

FUN 90 P WDT

image.png

 

 

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).

FUN 91 P RSWDT

RESET TIMERA WATCHDOG

(RESET WATCHDOG TIMER)

FUN 91 P RSWDT

image.png

 

 

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. 

FUN 92 D P HSCTR

ODCZYT AKTUALNEJ WARTOŚCI SZYBKIEGO LICZNIKA SPRZĘTOWEGO

(HARDWARE HIGH SPEED COUNTER CURRENT VALUE (CV) ACCESS)

FUN 92 D P HSCTR

image.png

 

 

l  Liczniki HSC0~HSC3 sterowników PLC serii FBs, stanowią 4 zestawy 32-bitowych szybkich liczników, o różnych trybach zliczania, takich jak impulsy góra/dół, puls-kierunek, zliczanie AB-fazowe. Wszystkie 4 szybkie liczniki wbudowane są w sprzęt ASIC i mogą realizować: zliczanie, porównywanie oraz wywoływanie przerwań sprzętowych, niezależnie i bez udziału CPU. W przeciwieństwie do szybkich liczników software’owych HSC4~HSC7, które wykorzystują metodę przerwań sprzętowych, do wywoływania zliczania przez CPU,  co skutkuje tym, że w przypadku zbyt wielu sygnałów zliczania lub ich zbyt dużej częstotliwości, czas skanu sterownika dramatycznie wzrasta. Ponieważ aktualne wartości (CV) liczników HSC0~HSC3 są wbudowane w wewnętrzne obwody ASIC, program sterujący użytkownika (program drabinkowy) nie może pozyskiwać ich bezpośrednio z ASIC. Dlatego też, program musi zastosować tą funkcję, w celu odczytania wartości bieżącej (CV) ze sprzętowego HSC i zapisania jej w rejestrze, do którego dostęp możliwy będzie z poziomu programu. Poniżej przedstawiony jest schemat wartości CV i PV w ASIC wraz z odpowiadającymi im rejestrami PLC, dla HSC0~HSC3.

 

image.png

 

 

l  Jeżeli wejście sterujące „EN” = 1 lub zmieni się z 0→1 ( instrukcja P ), funkcja odczyta z ASIC wartość bieżącą (CV) z HSC o numerze określonym przez CN i zapisze ją w odpowiadającym temu HSC rejestrze CV (np. wartość bieżąca (CV) w HSC0 zostanie odczytana i zapisana w DR4096, a wartość bieżąca (CV) w HSC1 zostanie odczytana i zapisana w DR4100).

l  Pomimo, że wartość zadana (PV) w ASIC, posiada odpowiadający jej rejestr PV w CPU, nie jest konieczne jej odczytywanie tą funkcją, ponieważ wartość PV w ASIC pochodzi z rejestru PV w CPU.

l  HSTA jest timerem o podstawie czasu 0.1ms. Zawartość CV tego timera odzwierciedla odliczony czas w jednostkach 0.1ms.

l  Szczegóły dotyczące zastosowań funkcji, zostały opisane w rozdziale 10 „Szybkie liczniki i szybkie timery sterowników serii FBs.

FUN 93 D P HSCTW ZAPIS WATOŚCI BIEŻĄCEJ I ZADANEJ SZYBKIEGO LICZNIKA SPRZĘTOWEGO FUN 93 D P HSCTW

image.png

 

 

l  Relacje pomiędzy wartościami bieżącymi (CV) i zadanymi (PV) liczników HSC0~HSC3 i HSTA w ASIC, oraz odpowiadającymi im adresami rejestrów CV i PV w CPU, zostały opisane w rozdziale omawiającym FUN92.

l  Jeżeli wejście serujące „EN”=1 lub zmieni się z 0→1 ( instrukcja P), wartość S zostanie zapisana w odpowiednim rejestrze CV lub PV (w zależności od ustawienia w D) HSC w ASIC.

l  W przypadku większości aplikacji, konieczne jest ustawianie wartość zadanej (PV) szybkiego licznika sprzętowego. Kiedy zliczona przez licznik sprzętowy wartość bieżąca (CV) zrówna się z jego wartością zadaną (PV), licznik ten natychmiastowo zgłosi przerwanie sprzętowe. Dzięki zastosowaniu procedury obsługi tego przerwania sprzętowego, możliwa jest implementacja różnego rodzaju aplikacji precyzyjnego zliczania lub pozycjonowania.

l  Po zaniku zasilania PLC, wartości bieżące (CV) liczników HSC0~HSC3 w ASIC, zostają automatycznie odczytane i zapisane w rejestrach CV HSC0~HSC3 (rejestry te są podtrzymywane) w CPU. Przy ponownym podaniu zasilania, zapisane w chwili zaniku zasilania wartości CV, zostaną przywrócone do ASIC. Natomiast, jeżeli Twoja aplikacja wymaga, aby po uruchomieniu sterownika, wartość bieżąca była zerowana lub zliczanie rozpoczynało się od konkretnej wartości – musisz użyć tej funkcji w celu ustawienia wartości bieżącej (CV) w ASIC.

l  Ustawienie niezerowej wartości w rejestrze PV szybkiego timera HSTA, powoduje cykliczne zgłaszanie przerwania sprzętowego HSTAI, co każde PVx0.1ms.

l  Szczegóły dotyczące zastosowań funkcji, zostały opisane w rozdziale 10 „Szybkie liczniki i szybkie timery sterowników serii FBs.

 

image.png


FUN 94 P ASCWR

WYJŚCIE ASCII (ASCII WRITE)

FUN 94 P ASCWR


image.png

 

 

l  Jeżeli MD=0, a wejście sterujące „EN” zmieni się z 0→1, nastąpi transmisja danych ASCII na port1 rozpoczynając od rejestru S, a kończąc w chwili napotkania znaku końca pliku.

l Dane w rejestrze S mogą być edytowane za pomocą oprogramowania PROLADDER lub WinProladder (szczegóły w rozdziale 14 „Zastosowanie funkcji ASCII”.). W razie potrzeby użytkownik może też bezpośrednio edytować plik ASCII poprzez zmianę wartości w rejestrach danych. Jednakże, format edytowanych danych musi być zgodny z formatem pliku ASCII (szczegóły w rozdziale 14). W innym przypadku instrukcja zatrzyma transmisję i ustawi wyjście błędu „ERR” na 1. Po prawidłowej i udanej transmisji pliku, stan na wyjściu „DN” zostanie ustawiony na 1.

l Wejście sterujące tej funkcji wzbudzane jest narastającym zboczem. Jeżeli „EN” zmieni się z 0→1, rozpocznie się wykonywanie funkcji, do momentu zakończenia transmisji całego pliku. Podczas transmisji znacznik „ACT” ustawiony będzie na 1. Znacznik ten zmieni się na 0 jedynie w przypadku podania stanu wysokiego na wejście wstrzymania „PAU”, błędu lub anulowania operacji wejściem „ABT”.

l Funkcja ta może występować w programie wielokrotnie, ale w danej chwili czasu, transmisja danych może być wykonywana tylko przez jedną z nich. Rolą programisty jest zapewnienie poprawnej sekwencji wykonywania funkcji.

l Jeżeli podczas wykonywania funkcji, wejście „PAU” = 1, nastąpi wstrzymanie transmisji danych. Transmisja będzie kontynuowana po zmianie stanu wejścia „PAU” na 0.

l Jeżeli podczas wykonywania funkcji, wejście „ABT” = 1, nastąpi anulowanie transmisji pliku. Możliwe jest wówczas wykonywania innych, występujących w programie, funkcji ASCWR.

l Więcej szczegółów w rozdziale 14 „Zastosowanie funkcji wyjściowej ASCII”.

l Sygnały interfejsu:

M1927: Znacznik ten, kontrolowany jest przez CPU i stosowany w ASCWR dla MD:0
: WŁ, oznacza, że stan sygnału  RTS (podłączonego do CTS w PLC) drukarki jest niski -   
  tzn. drukarka nie jest gotowa lub działa nieprawidłowo.
: WYŁ, oznacza, że stan sygnału RTS jest wysoki - drukarka jest gotowa.

Uwaga: Przy zastosowaniu znacznika M1927, we współpracy z timerem, można sprawdzić, czy drukarka działa prawidłowo.

FUN 95 P RAMP

NARASTANIE WARTOŚCI NA WYJŚCIU ANALOGOWYM

(RAMP FUNCTION FOR D/A OUTPUT)

FUN 95 P RAMP

image.png

 

 Opis

 

 

l  Tn musi być adresem timera o podstawie 0.01s, nie używanym w innej części programu.

l  PV jest wartością zadaną timera funkcji. Jednostką jest 10 ms (0.01 sekundy).

l  Jeżeli wejście „ENU” zmieni się z 0→1, na początku timer Tn zostanie wyzerowany. Następnie:
- jeżeli wejście „U/D” = 1, wartość SL zostanie zapisana w rejestrze D. Jeżeli M1974 = 0, wartość D będzie zwiększana o SU
-SL / PV co każde 0.01 sek., a jeżeli M1974 = 1, wartość D będzie zwiększana o PV co każde 0.01 sek. Jeżeli wartość D osiągnie wartość SU, wyjście „ASU” = 1.
Jeżeli „U/D” = 0 wartość SU zostanie zapisana w rejestrze D. Jeżeli M1974 = 0, wartość D będzie zmniejszana o SU
-SL / PV co każde 0.01 sek., a jeżeli M1974 = 1, wartość D będzie zmniejszana o PV co każde 0.01 sek. Jeżeli wartość D osiągnie wartość SL, wyjście „ASL” = 1.

l  Kierunek narastania (U/D) wyznaczany jest w momencie, gdy wejście „ENU” zmienia się z 0→1. Po rozpoczęciu narastania wartości w rejestrze D, zmiany na wejściu U/D będą ignorowane.

l  W przypadku potrzeby wstrzymania narastania wartości, należy ustawić wejście „PAU” = 1. Jeżeli „PAU” = 0, a funkcja narastająca nie została zakończona, to wykonywanie funkcji będzie kontynuowane.

l  Wartość SU musi być większa niż SL. W przeciwnym wypadku, funkcja  nie zostanie wykonana, a znacznik błędu „ERR” zostanie ustawiony na 1.

l  Instrukcja ta wykorzystuje rejestr D do zapisywania wyjściowej, narastającej wartości. W przypadku, gdy aplikacja wykorzystuje wyjście analogowe do wysyłania komendy prędkości, komendy te mogą być generowaną funkcją RAMP, w celu uzyskania płynniejszego ruchu.

l  Oprócz wykorzystania rejestru D do zapisu narastającej wartości funkcji, funkcja ta wykorzystuje również rejestr D+1 jako rejestr roboczy. W związku z tym, rejestr ten nie może być wykorzystywany w innej części programu.

 

 Przykładowy program

 

image.png

 

 

T20:  Timer odmierzający takty narastania (timer z podstawą czasową 0.01 sekundy)

R100: wartość zadana timera (jednostką jest 0.01 sekundy).

R101: Dolna wartość graniczna.

R102: Górna wartość graniczna.

R103: Rejestr przechowujący aktualną, narastającą wartość.

R104: Rejestr roboczy

l  Jeżeli M19740 i M0 zmieni się z 0→1, nastąpi wyzerowanie timera T20. Jeżeli M2 = 1, dolna wartość graniczna R101 zostanie zapisana w R103, a wartość wyjściowa będzie wzrastać o stałą wartość (R102-R101 / R100) co każde 0.01 sekundy i będzie zapisywana w rejestrze R103. Kiedy wartość w timerze osiągnie wartość w R100, to na wyjściu pojawi się wartość równa R102, a wyjście M102 zostanie ustawione na 1. Jeżeli M2 = 0, górna wartość graniczna zostanie zapisana w R103, a wartość wyjściowa będzie maleć o stałą wartość (R102-R101 / R100) co każde 0.01 sekundy i będzie zapisywana w rejestrze R103. Kiedy wartość w timerze osiągnie wartość w R100, to na wyjściu pojawi się wartość równa R102, a wyjście M101 zostanie ustawione na 1.

l  Jeżeli M1 = 1, narastanie wartości przez funkcje zostanie wstrzymane.

l  Wartość w rejestrze R102 musi być wyższa niż R101. W przeciwnym wypadku funkcja nie zostanie wykonana, a wyjście M100 zostanie ustawione na 1.

 

image.png

 

FUN 98 RAMP2

NADĄŻAJĄCE NARASTANIE NA WYJŚCIU ANALOGOWYM

(TRACKING TYPE RAMP FUNCTION FOR D/A OUTPUT)

FUN 98 RAMP2

image.png

 

 

image.png

 

●        Jeżeli „EN” = 0, to aktualna wartość na wyjściu (Rc) zostanie bezzwłocznie ustawiona na 0; stan wyjść ACC=0 i DEC=0.

●        Jeżeli „EN” = 1, instrukcja ta zostanie wykonana. Na wyjściu pojawi się wartość (Rc) i zostanie ona porównana z wartością zadaną (Rt). W przypadku, gdy wartość zadana będzie większa niż aktualna wartość na wyjściu, aktualna wartość będzie zwiększana zgodnie ze współczynnikiem określanym przez czas przyspieszenia (Ta) i maksymalną wartość wyjściową (Om), do momentu, zrównania się z wartością zadaną (w tym czasie ACC = 1). W przypadku, gdy wartość zadana będzie mniejsza niż aktualna wartość na wyjściu, aktualna wartość będzie zmniejszana zgodnie ze współczynnikiem określanym przez czas zwolnienia (Td) i maksymalną wartość wyjściową (Om) do momentu, zrównania się z wartością zadaną (w tym czasie DEC = 1).

●        Jeżeli wyjściowa wartość zadana (Rt) będzie większa niż maksymalna wartość wyjściowa (Om), wartość wyjściowa zostanie zablokowana przez maksymalną wartość.

●        Instrukcja ta umożliwia płynne przyspieszanie i zwalnianie poprzez kontrolę aktualnej wartości (Rc) na wyjściu analogowym (R39044~R3967).

●        Dla prawidłowego wykonania, zadana wartość wyjściowa (Rt) powinna pozostać niezmieniona przez co najmniej dwa kolejne skany sterownika.

●        Instrukcja wymaga 4 rejestrów roboczych, które nie mogą być ponownie użyte w programie

●        Instrukcja ta przeznaczona jest do operacji na wartościach dodatnich. Można jednak, przy pomocy prostego i krótkiego programu, zastosować ją do operacji na wartościach ujemnych. Patrz przykład 2.

 

 Przykład 1: Kontrola przyspieszenia/opóźnienia

 

 

image.png

 

 

D10 : Maksymalna wartość wyjściowa równa 16383

D0  : Czas narastania wartości na wyjściu od 0 do maksimum równy 30000 ms

D1  : Czas opadania wartości na wyjściu od maksimum do 0 równy 20000 ms

D100: Wyjściowa wartość zadana równa 8192

R3904: Rejestr aktualnej wartości na wyjściu analogowym

D1000~D1003:         Rejestry robocze

Opis: Jeżeli M0 = 0,  aktualna wartość wyjściowa zostanie natychmiast wyzerowana (bez „rampy”).

Jeżeli M0 = 1, na wyjściu pojawi się wartość R3904 i zostanie ona porównana z wartością zadaną (D100). Jeżeli D100>R3904, to aktualna wartość wyjściowa R3904 będzie zwiększana zgodnie ze współczynnikiem 16383 / 30000 (Om = 16383, Ta = 30000), do momentu, aż R3904 = D100 (w tym czasie ACC = 1). Jeżeli D100<R3904, to aktualna wartość wyjściowa R3904 będzie zmniejszana zgodnie ze współczynnikiem 16383 / 20000 (Om = 16383, Td = 20000), do momentu, aż R3904 = D100 (w tym czasie DEC= 1).

 

 

image.png

 

Przykład 2: Dodatnie i ujemne wyjście sterujące ACC/DEC

 

image.png

 

D10 : Maksymalna wartość wyjściowa równa 8191

D0  : Czas narastania wartości na wyjściu od 0 do maksimum równy 20000 ms

D1  : Czas opadania wartości na wyjściu od maksimum do 0 równy 10000 ms

D100:   Wyjściowa wartość zadana równa 0

D200:   Rejestr aktualnej wartości na wyjściu analogowym

D1000~D1003:         Rejestry robocze

Jeżeli M0 = 0, to aktualna wartość wyjściowa zostanie natychmiast wyzerowana (bez „rampy”).

Jeżeli M0 = 1, na wyjściu pojawi się wartość D200 i zostanie ona porównana z wartością zadaną (D100). Jeżeli D100>D200, to aktualna wartość wyjściowa D200 będzie zwiększana zgodnie ze współczynnikiem 8191/20000 (Om=8191, Ta=20000), do momentu, aż D200=D100 (w tym czasie ACC = 1). Jeżeli D100<D200, to aktualna wartość wyjściowa D200 będzie zmniejszana zgodnie ze współczynnikiem 16383 8191/10000 (Om=8191, Td=10000), do momentu, aż D200=D100 (w tym czasie DEC= 1).

  M100 = 1, dodatnie wyjście sterujące; M101 = 1, ujemne wyjście sterujące. Zadana                 wartość wyjściowa (D100) jest zawsze wartością dodatnią w zakresie 0~65535.

 

 

 

image.png

 

Funkcje operacji na tabelach

Nr fun Mnemonik Funkcjonalność Nr fun Mnemonik Funkcjonalność
100 R→T Wpisz rejestr do tabeli 107 T_FIL Wypełnij tabelę
101 T→R Wpisz wartość z tabeli do rejestru 108 T_SHF Przesuń tabelę
102 T→T Wpisz wartość z tabeli do tabeli 109 T_ROT Obróć tabelę
103 BT_M Tabela do tabeli 110 QUEUE Kolejka
104 T_SWP Zamień tabele 111 STACK Stos
105 R-T_S Wyszukaj wartość w tabeli 112 BKCMP Porównanie blokowe
106 T-T_C Porównaj wartości w tabelach 113 SORT Sortowanie wartości

●         Tabelę stanowi 2 lub więcej kolejnych rejestrów (16- lub 32-bitowych). Liczba rejestrów w tabeli nazywa się długością tabeli (L). Obiektem operacyjnym funkcji operujących na tabelach, zawsze jest pojedynczy rejestr (tj. dane 16-to  lub 32-bitowe).

●         Funkcje operacji na tabelach wykorzystywane są głównie do przetwarzania danych, tj. przesuwania, kopiowania, porównywania, wyszukiwania itp. pomiędzy tabelami i rejestrami lub pomiędzy tabelami. Funkcje te są wygodne w zastosowaniu.

●         Większość funkcji operujących na tabelach, wykorzystuje wskaźnik, dla wskazania rejestru docelowego w tabeli, na którym ma odbyć się operacja. Wskaźnikami dla instrukcji tabel 16-to i 32-bitowych będą zawsze rejestry 16-bitowe. Poprawny zakres wskaźnika to 0 do L-1. Zakres ten odnosi się do rejestrów T0 do TL-1 (suma rejestrów L). Poniżej przedstawiony został schemat dla tabel 16- i 32-bitowych.

●         W operacjach przesuwania w lewo/prawo oraz obrotu w lewo/prawo, wskazywany jest kierunek operacji. Patrząc w kierunku rosnącym: najstarszy adres w tabeli nazywany jest lewym, najmłodszy nazywany jest prawym (patrz schemat poniżej).

image.png

FUN 100 D P R→T

WPISZ REJESTR DO TABELI

(REGISTER TO TABLE MOVE)

FUN 100 D P R→T

image.png

 

 

●         Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), to zawartość rejestru źródłowego Rs zostanie zapisana w rejestrze Tdpr (określonym przez wartość wskaźnika Pr) w tabeli docelowej Td (o długości L). Przed realizacją tej funkcji, nastąpi sprawdzenie stanu wejścia zerowania wskaźnika „CLR”. Jeżeli „CLR” = 1, to najpierw wskaźnik Pr zostanie wyzerowany i nastąpi kontynuacja operacji wpisania wartości Rs do tabeli. Po zakończeniu operacji zostanie sprawdzona wartość Pr. W przypadku, gdy wartość Pr osiągnie L-1 (wskazanie ostatniego rejestru w tabeli), to znacznik „END” zostanie ustawiony na 1 i nastąpi zakończenie wykonywania funkcji. W przypadku, gdy wartość Pr będzie mniejsza niż L-1, to sprawdzany jest stan sygnału na wejściu sterującym „INC”. Jeżeli „INC” = 1, to wartość wskaźnika Pr zostaje zwiększona. Wejście sterujące „CLR” może pracować niezależnie, bez wpływu pozostałych wejść.

●         Prawidłowym zakresem wskaźnika Pr jest 0 do L-1. W przypadku wykroczenia poza ten zakres, wyjście błędu „ERR” zostanie ustawiony na 1, a funkcja nie zostanie wykonana.

 

 

image.png


FUN 101 D P T → P

WPISZ WARTOŚĆ Z TABELI DO REJESTRU

(TABLE TO REGISTER MOVE)

FUN 101 D P T → P

image.png

 

 

l  Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), to wartość z rejestru Tspr (określonego przez wartość wskaźnika Pr) w tabeli źródłowej Ts (o długości L), zostanie zapisana w rejestrze docelowym Rd. Przed wykonaniem tej funkcji następuje sprawdzenie stanu wejścia zerowania wskaźnika „CLR”. Jeżeli „CLR” = 1, najpierw wartość wskaźnika Pr zostanie wyzerowana i nastąpi kontynuacja operacji pobierania wartości z tabeli. W przypadku, gdy wartość wskaźnika Pr osiągnie L-1 (wskazanie ostatniego rejestru w tabeli), to znacznik „END” zostanie ustawiony na 1 i nastąpi zakończenie wykonywania funkcji. W przypadku, gdy wartość Pr będzie mniejsza niż L-1, to sprawdzany jest stan sygnału na wejściu sterującym „INC”. Jeżeli „INC” = 1, to wartość Pr zostanie zwiększona. Wejście sterujące „CLR” może pracować niezależnie, bez wpływu pozostałych wejść.

l  Prawidłowym zakresem wskaźnika Pr jest 0 do L-1. W przypadku wykroczenia poza ten zakres, wyjście błędu „ERR” zostanie ustawiony na 1, a funkcja nie zostanie wykonana.

 

 

image.png

FUN 102 D P T→T

WPISZ WARTOŚĆ Z TABELI DO TABELI

(TABLE TO TABLE MOVE)

FUN 102 D P T→T

image.png

 

 

l  Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), to wartość z rejestru Tspr (określonego przez wartość wskaźnika Pr) w tabeli źródłowej, zostanie wpisana do rejestry Tdpr (który także jest określany przez wartość wskaźnika Pr) w tabeli docelowej. Przed wykonaniem tej funkcji, następuje sprawdzenie stanu wejścia zerowania wskaźnika „CLR”. Jeżeli „CLR” = 1, wskaźnik Pr zostaje wyzerowany i następuje wykonanie operacji przesunięcia (w takim przypadku Ts0→Td0). Po wykonaniu przesunięcia, następuje sprawdzenie wartości wskaźnika Pr. W przypadku, gdy wartość Pr osiągnie L-1 (wskazanie ostatniego rejestru w tabeli), to znacznik „END” zostaje ustawiony na 1 i następuje zakończenie wykonania funkcji. W przypadku, gdy wartość Pr będzie mniejsza niż L-1, to sprawdzany jest stan sygnału na wejściu sterującym „INC”. Jeżeli „INC” = 1, to wartość wskaźnika Pr zostaje zwiększona o 1. Wejście sterujące „CLR” może pracować niezależnie, bez wpływu pozostałych wejść.

l  Zakres efektywny wskaźnika wynosi od 0 do L-1. W przypadku wykroczenia poza zakres, wskaźnik błędu „ERR” zostanie ustawiony na 1, a instrukcja nie będzie zrealizowana

 

 

image.png


FUN 103 D P BT_M

TABELA DO TABELI (BLOCK TABLE MOVE)

FUN 103 D P BT_M

image.png

 

 

l  W funkcji tej, tabele źródłowa i docelowa są jednakowej długości. Przy wykonywaniu tej funkcji, wszystkie dane z tabeli źródłowej Ts, są w całości kopiowane do tabeli docelowej Td. Funkcja nie wykorzystuje wskaźnika.

l  Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), to wszystkie dane z tabeli źródłowej Ts (o długości L) zostaną skopiowane do tabeli docelowej Td, o tej samej długości.

l  Za każdym razem, kiedy funkcja ta jest wykonywana, następuje kopiowanie całej tabeli. W przypadku dużej długości tabel, wykonanie tej operacji jest czasochłonne W praktyce, należy wykorzystać opcję wykonania P (wykonywanie przy stanie narastającym na wejściu EN), w celu zapobiegnięcia stracie, czasu spowodowanej powtarzaniem tego samego przesunięcia, w każdym skanie programu.

 

 

 

image.png

 

 

FUN 104 D P T_SWP

ZAMIEŃ TABELE (BLOCK TABLE SWAP)

FUN 104 D P T_SWP

image.png

 

 

l  Funkcja zamienia zawartość tabel a i b. Dlatego też tabele te muszą być tej samej długości, a rejestry w tabeli muszą mieć możliwość zapisu. Ponieważ podczas wykonywania funkcji, zamieniane są zawartości całych tabel, nie ma potrzeby stosowania wskaźnika.

l  Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), to zawartości tabel a i b zostaną zamienione.

l  Funkcja zamienia zawartości całych tabel, przy każdym jej wywołaniu. W przypadku dużej długości tabel, wykonanie tej operacji jest czasochłonne. Aby temu zapobiec, należy stosować opcję wykonania P (wykonywanie przy stanie narastającym na wejściu EN).

 

image.png


FUN 105 D P R-T_S

WYSZUKAJ WARTOŚĆ W TABELI

(REGISTER TO TABLE SEARCH)

FUN 105 D P R-T_S

image.png

 

 

l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), funkcja rozpocznie wyszukiwanie od pierwszego rejestru w tabeli Ts (kiedy „FHD” = 1 lub gdy wartość wskaźnika Pr osiągnie wartość L-1), lub od kolejnego rejestru (Tspr + 1) określonego przez wartość wskaźnika (kiedy „FHD” = 0 i Pr < L-1), w celu odszukania pierwszej danej różnej niż Rs (kiedy D/S = 1) lub równej Rs (kiedy D/S = 0). Po odnalezieniu rejestru spełniającego określone warunki, nastąpi automatyczne zatrzymanie wyszukiwania, a wskaźnik Pr wskaże odnaleziony rejestr, jednocześnie wyjście odnaleziono „FND” ustawione zostanie na 1. Po przeszukaniu ostatniego rejestru tabeli, wykonanie funkcji zostanie zatrzymane niezależnie od tego czy rejestr został odnaleziony. W takim wypadku, znacznik „END” zostanie ustawiony na 1, a wartość Pr zatrzyma się na L-1. Przy kolejnej realizacji instrukcji, wartość Pr automatycznie powróci na górną pozycję w tabeli (Pr = 0) w celu ponownego rozpoczęcia wyszukiwania od początku tabeli.

l Prawidłowym zakresem wskaźnika Pr jest 0 do L-1. W przypadku wykroczenia poza ten zakres, wyjście błędu „ERR” zostanie ustawiony na 1, a funkcja nie zostanie wykonana.

 

image.png


FUN 106 D P T-T_C

PORÓWNAJ WARTOŚCI W TABELACH

(TABLE TO TABLE COMPARE)

FUN 106 D P T-T_C


image.png

 

 

l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), funkcja rozpocznie wyszukiwanie od pierwszej pary rejestrów w tabelach Ta i Tb (kiedy „FHD” = 1 lub gdy Pr osiągnie wartość L-1) lub od kolejnej pary rejestrów (Tapr+1 i Tbpr+1) określonej przez wartość wskaźnika Pr (kiedy „FHD” = 0 i Pr < L-1), w celu odszukania par rejestrów o różnych wartościach (kiedy „D/S" = 1) lub o identycznych wartościach (kiedy „D/S" = 0). Po odnalezieniu pary rejestrów (o tej samej lub innej wartości), nastąpi automatyczne zatrzymanie wyszukiwania, a wskaźnik Pr wskaże odnalezioną parę rejestrów, jednocześnie wyjście odnaleziono „FND” ustawione zostanie na 1. Po przeszukaniu ostatniego rejestru tabeli, wykonanie funkcji zostanie zatrzymane niezależnie od tego czy para rejestrów został odnaleziona czy nie. W takim wypadku, znacznik „END” zostanie ustawiony na 1, a wartość Pr zatrzyma się na L-1. Przy kolejnej realizacji instrukcji, wartość Pr automatycznie powróci na górną pozycję w tabeli (Pr = 0) w celu ponownego rozpoczęcia wyszukiwania od początku tabel.

l Prawidłowym zakresem wskaźnika Pr jest 0 do L-1. Wartość wskaźnika, podczas wykonywania wyszukiwania,  nie powinna być zmieniana w innych częściach programu, gdyż może to wpływać na wyniki wyszukiwania. W przypadku wykroczenia wartości wskaźnika poza zakres, wyjście błędu „ERR” zostanie ustawiony na 1, a funkcja nie zostanie wykonana.

 

image.png


FUN 107 D P T_FIL

WYPEŁNIJ TABELĘ (TABLE FILL)

FUN 107 D P T_FIL


image.png

 

 

l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), wartość znajdująca się w Rs, zostanie zapisana we wszystkich rejestrach tabeli Td.

l Funkcja ta wykorzystywana jest głównie do zerowania wartości w tabeli lub wpisywania identycznych wartości do całej tabeli. Funkcję tą należy wywoływać stanem narastającym na wejściu sterującym (z opcją P).

 

image.png


FUN 108 D P T_SHF

PRZESUŃ ATBELĘ (TABLE SHIFT)

FUN 108 D P T_SHF

image.png

 

 

l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), wszystkie dane z tabeli Ts zostaną przesunięte o jedną pozycję w lewo (kiedy „L/R” = 1) lub w prawo (kiedy „L/R” = 0). Puste miejsce po operacji przesunięcia zostanie wypełnione wartością IW. Wynik przesunięcia zapisany zostanie w tabeli Td. Wartość wysunięta z tabeli, zostanie zapisane w OW.