dopisz swój adres do listy:
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:

codesys.pl