Unity Pro + Structure

Прочие PLC и HMI на русском
Post Reply
behemot
Posts: 115
Joined: Wed Jul 28, 2010 9:06 am

Unity Pro + Structure

Post by behemot » Thu Feb 14, 2013 8:42 am

Доброго времени суток.

Подскажите пожалуйста, есть огромное количество однотипного оборудования (по функционалу, автоматические выключатели) с одинаковым набором состояний (вкл, выкл, авария, дистанционное управление и т.д). Информация о состояниях "приходит" по интерфейсу. Для того чтобы не прописывать каждую переменную в таблице символов хочу создать структуру (DDT types). Создаю структуру (QF) из 8 битовых переменных (BOOL). Присваиваю в таблице символов переменной Yacheyka1 тип данных QF, в поле address записываю %m0. Компилирую - ошибка ({Derived Variables} : The topological type is incompatible. : Yacheyka1 ).

Пробовал изменять на EBOOL тоже самое. Изменял на %MW0 - все ок (но тратить 8 байт вместо 1 байта это расточительство).

Подскажите пож-та кто-нибудь сталкивался с такой проблемой?

Заранее благодарен.

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

Re: Unity Pro + Structure

Post by Schtiel » Thu Feb 14, 2013 8:29 pm

behemot wrote:Изменял на %MW0 - все ок (но тратить 8 байт вместо 1 байта это расточительство).
MW - это слово (16 бит, 2 байта), а не 8 байт. К любому биту слова можно обратиться прямой адресацией: %MW0.0, %MW0.1 и т.д.

behemot
Posts: 115
Joined: Wed Jul 28, 2010 9:06 am

Re: Unity Pro + Structure

Post by behemot » Thu Feb 14, 2013 9:16 pm

ДЕло в том, что в структуре на бит отводится 1 байт(((

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

Re: Unity Pro + Structure

Post by Schtiel » Thu Feb 14, 2013 10:55 pm

Дело не в структурах, а в особенностях хранения типа BOOL - он всегда занимает 1 байт:

Image

Но можно объявить одну переменную в MW и обращаться к ее битам напрямую.

behemot
Posts: 115
Joined: Wed Jul 28, 2010 9:06 am

Re: Unity Pro + Structure

Post by behemot » Fri Feb 15, 2013 7:25 am

Как я понимаю, что такое размещение только у Шнайдера. И то если это EBOOL.

pupena_san
Posts: 392
Joined: Fri Dec 18, 2009 3:02 pm
Location: Киев
Contact:

Re: Unity Pro + Structure

Post by pupena_san » Fri Feb 15, 2013 8:05 am

behemot wrote:Как я понимаю, что такое размещение только у Шнайдера. И то если это EBOOL.
В хелпе чётко написано, что BOOL и EBOOL занимают 1 байт.
Вы можете сэкономить память, задав в Вашей структуре слово, каждый бит которого будет что-то конкретное означать. Всё равно Вам привязываться к входным/ выходным адресам. Например

Code: Select all

Struct typeA
Inp:WORD
----------------
S1: typeA 

Code: Select all

S1.Inp.0:=%I0.0.0;
S1.Inp.1:=%I0.5.6;

Что-то типа такого

Post Reply