menu
dopisz swój adres do listy:
kontakt CoDeSys.pl:
e-mail: news@codesys.pl
Telefon: 048 331 20 57
Fax: 048 331 25 36

www.codesys.pl
wyszukaj w codesys.pl
elementy programu - argumenty - zmienne


Adresowanie bitów w zmiennych

W zmiennych całkowitych można wywołać pojedyncze bity. W tym celu do zmiennej jest dołączany oddzielony za pomocą kropki indeks bitu do zaadresowania. Indeks bitu można podać za pomocą dowolnej stałej. Indeksowanie opiera się na 0. 
Należy pamiętać: Nie jest dozwolony dostęp do bitu w zmiennych bezpośrednich.

Przykład:

a : INT;
b : BOOL;
...
a.2 := b;


Trzeci bit zmiennej a jest ustawiany na wartość zmiennej b. 
Jeśli indeks jest większy niż szerokość bitu, podawany jest następujący błąd: Indeks "<n>? poza poprawnym zakresem zmiennej "<var>?! 
Adresowanie bitów jest możliwe w przypadku następujących typów zmiennych: SINT, INT, DINT, USINT, UINT, UDINT, BYTE, WORD, DWORD. 
Jeśli typ zmiennej nie jest dopuszczalny, podawany jest następujący komunikat błędu: Niedopuszczalny typ danych "<Typ>? do bezpośredniego indeksowania.
Dostępu do bitu nie można przydzielić zmiennej VAR_IN_OUT!

Dostęp do bitu za pomocą stałej globalnej:

W przypadku zadeklarowania stałej globalnej definiującej numer bitu można zastosować tę stałą do dostępu do bitu. 
Należy pamiętać: Należy włączyć opcję projektu "Zastępuj stałe? (kategoria opcje konwersji)!
W poniższym przykładzie takiego dostępu do bitu należy zwrócić uwagę na normalną zmienną lub zmienną strukturalną:
Deklaracja dla obu przykładów w liście zmiennych globalnych: 
Zmienna enable podaje, do którego z kolei bitu należy się odwołać:

VAR_GLOBAL CONSTANT 
enable:int:=2;
END_VAR


Przykład 1, dostęp do bitu w zmiennej całkowitej: 

Deklaracja w module:
VAR
xxx:int;
END_VAR


Dostęp do bitu:
xxx.enable:=true; -> 3. bit w zmiennej xxx zostaje ustawiony na TRUE

Przykład 2, dostęp do bitu w całkowitym składniku struktury:

Deklaracja struktury stru1:

TYPE stru1 :
STRUCT
bvar:BOOL;
rvar:REAL;
wvar:WORD;     {bitaccess enable 42 'Antrieb freigeben'} (udostępnij napęd)
END_STRUCT
END_TYPE


Deklaracja w module:

VAR
x:stru1;
END_VAR

Dostęp do bitu:

x.enable:=true; 

Wskutek tego 42. bit w zmiennej x zostaje ustawiony na TRUE. Ponieważ bvar zawiera 8 bitów, zaś rvar 32 bity, dostęp ten następuje do 2. bitu w zmiennej wvar, który przez to uzyskuje wartość 4. 

Uwaga: By w monitoringu, pomocy przy wpisywaniu oraz w funkcji "Intellisense" prawidłowo przedstawić zmienną przeprowadzającą dostęp do bitu w zmiennej strukturalnej, za pomocą stałej globalnej należy zastosować ukazaną w przykładzie Pragma {bitaccess}. Następnie oprócz monitoringu w oknie deklaracji jest wyświetlana poniżej zmiennej strukturalnej stała globalna:



Adresowanie bitów w zmiennych


codesys.pl