вторник, 7 июня 2011 г.

Непосредственная адресация массивов в Unity

Довольно часто, при переходе со старой среды программирования PL7 на новую Unity Pro, пользователи начинают сталкиватся с тем что их старые приемы работы с массивами не работают. Как правило генерируется ошибка E1200 usage of directly represented array variables is disabled.

Причем в PL7 такие приемы как прямое индексирование
%MW1[3]:=5;
или прямое использование массива элементов
%MW0:16:=%MW100:16;
работает на ура.
Так в чем же дело? Проблема состоит в том, что использование таких конструкций в Unity требуется явное объявление массивов как переменных производных типов (derived data types) и уже последующее использование имен этих переменных в конструкциях индексирования или операций с массивами. Такие требования устанавливает МЭК 1131, описывающий языки программирования, использующиеся в ПЛК. Хотя такие требования очень благотворно влияют на структурируемость и читаемость программы, иногда удобно использовать именно прямое объявление массивов.
К счастью это легко сделать установив одну галочку. Итак, идем в Tools\Project settings... Далее в дереве настроек проекта выбираем General\Variables и в появившемся окне ставим галочку напротив Directly represented array variables.

Ну вот собственно и все! Пользуйтесь!

Комментариев нет:

Отправить комментарий