W tym rozdziale opiszemy typy i zakresy danych występujących w programach . Z rozdziałem tym warto dokładnie się zapoznać , gdyż informacje tu zawarte są niezbędne przy pisaniu programów na sterowniki PLC na każdym etapie zaawansowania.
Typy danych
W naszym przypadku danymi są wszystkie informacje przychodzące do sterownika „I” ( wejścia cyfrowe, analogowe itd. ), wychodzące ze sterownika „Q” (wyjścia cyfrowe .... itd. ) oraz wewnętrzne sterownika „M” ( zmienne czyli markery ) .
Podstawową jednostką „miary” jest bit może on przyjmować tylko dwie wartości – 0 lub 1 kolejne jednostki składają się z odpowiedniej ilości bitów. jak w tabeli poniżej
|
oznaczenie |
typ danej |
ilość bitów |
zakres wartości |
opis |
|
BOOL |
Boolean |
1 |
0-1 |
Zmienne tego typu mogą przyjmować tylko dwie wartości czyli "0" lub "1" . |
|
BYTE |
ciąg 8 bitów |
8 |
nie posiada wartości numerycznej |
|
|
WORD |
ciąg 16 bitów |
16 |
nie posiada wartości numerycznej |
|
|
DWORD |
ciąg 32 bitów |
32 |
nie posiada wartości numerycznej |
|
|
LWORD |
ciąg 64 bitów |
64 |
nie posiada wartości numerycznej |
|
|
Typy zmiennych o wartości wyrażonej w systemie dziesiętnym , są to liczby całkowite ( integer ), których wartość wyliczana jest ze stanu odpowiednich bitów (konwersja z zapisu dwójkowego na zapis dziesiętny) |
||||
|
SINT |
short integer |
8 |
-128 : 127 |
"Krótka" liczba całkowita . |
|
INT |
integer |
16 |
-32 768 : 32 767 |
Liczba całkowita . |
|
DINT |
double integer |
32 |
-231 : (231-1) |
"Podwójna" liczba całkowita . |
|
LINT |
long integer |
64 |
-263 : (263-1) |
"Długa" liczba całkowita . |
|
USINT |
unsigned Short integer |
8 |
0 : 255 |
"Krótka" liczba całkowita nieznakowana ( przyjmuje tylko wartości dodatnie). |
|
UINT |
unsigned integer |
16 |
0 : 65535 |
Liczba całkowita nieznakowana ( przyjmuje tylko wartości dodatnie). |
|
UDINT |
unsigned double integer |
32 |
0 : (232-1) |
" Podwójna "liczba całkowita nieznakowana ( przyjmuje tylko wartości dodatnie). |
|
ULINT |
unsigned long integer |
64 |
0 : (264-1) |
" długa "liczba całkowita nieznakowana ( przyjmuje tylko wartości dodatnie). |
|
|
||||
|
STRING |
|
- |
- |
Dowolne znaki czyli litery i cyfry , jednak cyfry będą traktowane jako znak a nie określona wartość . |
|
TIME |
czas |
- |
|
typ danej występujący w timerach format zapisu T#XdXhXmXsXms gdzie X to określona wartość i kolejno d- dni, h-godziny,m-minuty, s-sekundy, ms- milisekundy |
Pamięć sterownika
Pamięć w sterowniku PLC podzielona jest na dwa główne obszary :
– Obszar pamięci programu , tutaj przechowywany jest kod wprowadzonego programu
– Obszar pamięci danych w której , przechowywane są wszystkie dane wykorzystywane przez sterownik , a dokładniej przez wprowadzony program
Sposób oznaczania i adresowania komórek pamięci przedstawia diagram poniżej :

Poniżej tabela przedstawiająca strukturę pamięci w której przechowywane są dane.
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
M0.0 |
M0.1 |
M0.2 |
M0.3 |
M0.4 |
M0.5 |
M0.6 |
M0.7 |
M1.0 |
M1.1 |
M1.2 |
M1.3 |
M1.4 |
M1.5 |
M1.6 |
M1.7 |
|
MB 0 |
MB 1 |
||||||||||||||
|
MW0 |
|||||||||||||||
|
M4.0 |
M4.1 |
M4.2 |
M4.3 |
M4.4 |
M4.5 |
M4.6 |
M4.7 |
M5.0 |
M5.1 |
M5.2 |
M5.3 |
M5.4 |
M5.5 |
M5.6 |
M5.7 |
|
MB 4 |
MB 5 |
||||||||||||||
|
MW4 |
|||||||||||||||
Jak widać w tabeli powyżej, i należy o tym zawsze pamiętać, marker nr 0 typu WORD ( MW0 ) składa się z bajtów 0 i 1 (MB0 i MB1) te z kolei z bitów 0.0 do 0.7 i 1.0 do 1.7 . , analogicznie następne MW2 , MW4 itd.
Adresując komórkę typu WORD jako adres podajemy numer „młodszego” bajta .
Wpisanie konkretnej wartości liczbowej w kodzie dziesiętnym np. 50 :

powoduje odpowiednie ustawienie bitów w bajcie MB0.0 w tym przypadku jest to:
|
wartość danej = 50 |
|||||||
|
MB 0.0 = 50 ( usint ) |
|||||||
|
M0.0 |
M0.1 |
M0.2 |
M0.3 |
M0.4 |
M0.5 |
M0.6 |
M0.7 |
|
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
wynikające z konwersji wartości dziesiętnej na dwójkową .
Warto zwrócić uwagę na sposób numeracji bitów , ale także zmiennych typu BYTE , WORD , która rozpoczyna się od 0. Czyli bit pierwszy w kolejności (najmłodszy) będzie miał oznaczenie np M0.0 a nie jak wydawałoby się w sposób naturalny M 0.1.Dotyczy to również pozostałych typów zmiennych.
Często popełnianym przez początkujących programistów błędem jest wpisanie wartości w bajta np. jak wyżej a potem wykorzystanie w programie bitu wchodzącego w skład tego samego bajta co powoduje zmianę jego wartości i to w sposób znaczący.
Na przykład ustawienie „1” w markerze M0.0 spowoduje zmianę wartości MB0 z 50 na 51 jednak już zmiana na „1” w markerze M0.7 zmieni wartość w MB0 na 178. Sterownik wszystkie dane zachowuje w kodzie dwójkowym i tylko w zależności od zadeklarowanego typu markera odpowiednio je przedstawia. Szerzej zajmiemy się tym zagadnieniem w rozdziale o operacjach na bitach.
Kolejną rzeczą na którą należy zwracać szczególną uwagę jest zakres wartości jakie mogą przyjmować zmienne . Jako , że każda zmienna ma określoną wartość maksymalną zdarzyć się może "przekręcenie " wartości . Na przykład dodanie 1 do zmiennej typu USINT ( 0 : 255) kiedy posiada już wartość równą 255 spowoduje ustawienie w tej zmiennej wartości 0 a nie 256
| « poprzednia | następna » |
|---|













