Вопрос по доступу к битам в WORD в SCL

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
Post Reply
a_gricaj
Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Вопрос по доступу к битам в WORD в SCL

Post by a_gricaj » Mon May 01, 2017 7:02 pm

Здравствуйте,
Изучаю ТИА Портал v13, и стал вопрос.
Например, в CodeSys доступ к биту переменной (тип WORD)такой

описание:

test:word;

в самом коде

test.0:=true; (нулевому биту переменной test присваиваем лог единицу)

Как такое провернуть в ТИА Портале?????

Полчитал доки можно вроде использовать UDT, но в скаду мне всеравно нужно пихать WORD......

Rex2701
Posts: 370
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Вопрос по доступу к битам в WORD в SCL

Post by Rex2701 » Mon May 01, 2017 9:13 pm


a_gricaj
Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Вопрос по доступу к битам в WORD в SCL

Post by a_gricaj » Tue May 02, 2017 5:38 am

СПС, видел этот документ, но насколько я понял так нельзя как я хочу, без использования DB????

Rex2701
Posts: 370
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Вопрос по доступу к битам в WORD в SCL

Post by Rex2701 » Tue May 02, 2017 7:49 am

Предлагают такой способ:

Code: Select all

VAR_TEMP
tiINT : INT; //Integer value
tINT AT tiINT : STRUCT //For individual bit access
b08: BOOL ;
b09 : BOOL ;
b10 : BOOL ;
b11 : BOOL ;
b12 : BOOL ;
b13 : BOOL ;
b14 : BOOL ;
b15 : BOOL ;
b00 : BOOL ;
b01 : BOOL ;
b02 : BOOL ;
b03 : BOOL ;
b04 : BOOL ;
b05 : BOOL ;
b06 : BOOL ;
b07 : BOOL ;
END_STRUCT;
END_VAR

BEGIN
tiINT := <whatever integer your are looking at>;
tbXX := tINT.b04; //Fetch bit 04 in the integer
...

Schtiel
Site Admin
Posts: 1121
Joined: Wed Sep 06, 2006 12:03 pm
Location: CIS

Post by Schtiel » Tue May 02, 2017 7:47 pm

Или маски + преобразования типов (на примере 13-го бита):

Code: Select all

VAR
Value:INT;
B13:BOOL;
END_VAR
BEGIN
IF B13=TRUE THEN
Value:= WORD_TO_INT(INT_TO_WORD(Value)OR W#2#0010_0000_0000_0000);
ELSE
Value:= WORD_TO_INT(INT_TO_WORD(Value)AND W#2#1101_1111_1111_1111);
END_IF;

sania
Site Admin
Posts: 1372
Joined: Sat Aug 13, 2005 6:15 am
Contact:

Re: Вопрос по доступу к битам в WORD в SCL

Post by sania » Wed May 03, 2017 8:49 am

всё проще:

Code: Select all

#int_out.%X0 := #bool_in;

a_gricaj
Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Вопрос по доступу к битам в WORD в SCL

Post by a_gricaj » Thu May 04, 2017 12:07 pm

Code: Select all

#test.%X0 := true;
так ошибка...3,Invalid access %X0 for #test.

sania
Site Admin
Posts: 1372
Joined: Sat Aug 13, 2005 6:15 am
Contact:

Re: Вопрос по доступу к битам в WORD в SCL

Post by sania » Thu May 04, 2017 12:36 pm

ну так надо говорить что проц 3хх,4хх.
тогда как в топиках выше или по абсолютному адресу.

a_gricaj
Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Вопрос по доступу к битам в WORD в SCL

Post by a_gricaj » Thu May 04, 2017 12:45 pm

СПС всем за ответы, буду пробовать UDT...

a_gricaj
Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Вопрос по доступу к битам в WORD в SCL

Post by a_gricaj » Sun May 28, 2017 7:57 pm

Дабы не плодить темы, подскажите пожалуйста почему при мониторинге FB на SCL у меня такая фигня:
Image
эта переменная является входом FB и инициализирована.
СПС

Post Reply