Объявление и инициализация переменных — КиберПедия 

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Объявление и инициализация переменных

2020-04-01 563
Объявление и инициализация переменных 0.00 из 5.00 0 оценок
Заказать работу

 

6.5.1.1 Общие положения

Переменные предоставляют средства идентификации объектов данных, содержание которых может изменяться. Например, данные, связанные с входами, выходами или памятью программируемого контроллера.

В отличие от литералов, которые являются внешним представлением данных, переменные могут изменять свое значение с течением времени.

 

6.5.1.2 Объявление

Переменные объявляются внутри одной из секций переменных.

Переменные можно объявлять, используя:

- элементарный тип данных; или

- предварительно определенный пользователем тип; или

- тип указателя; или

- прямо определенный пользователем тип.

Возможны следующие виды переменной:

- одноэлементная переменная, то есть переменная, тип которой либо:

- элементарный тип данных; или

- определенное пользователем перечисление или тип-диапазон; или

- определенный пользователем тип, происхождение которого, определяемое рекурсивно, прослеживается до элементарного типа, типа перечисления или типа-диапазона;

- многоэлементная переменная, то есть переменная, которая представляет массив ARRAY или структуру STRUCT;

- указатель, то есть переменную, которая ссылается на другую переменную или экземпляр функционального блока.

Объявление переменной состоит из следующих элементов:

- списка имен объявляемых переменных;

- символа двоеточия;

- типа данных с необязательной инициализации, специфичной для различных видов переменных.

Пример -

TYPE

myType: ARRAY [1..9] OF INT; // предварительно определенный пользователем тип

END_TYPE

VAR

 

           
  myVar1, myVar1a: INT;

// две переменные, используя элементарный тип

   
  myVar2: myType;

// используя предварительно определенный пользователем тип

 

myVar3: ARRAY [1..8] OF REAL;

// используя прямо определенный пользователем тип


END_VAR

 

6.5.1.3 Инициализация переменных

Неявным начальным значением переменной (переменных) являются:

 

1 Неявное начальное значение (значения) лежащих в основе элементарных типов данных, как определено в таблице 10.

 

2 NULL, если переменная является указателем.

 

3 Определенное пользователем значение (значения) назначенного типа данных.

Это значение факультативно может быть определено использованием оператора присваивания в определении типа TYPE, как показано в таблице 11.

 

4 Пользователем значение (значения) переменной.

Это значение факультативно может быть определено использованием оператора присваивания в объявлении переменной VAR (см. таблицу 14).

Определенное пользователем значение может быть литералом (например, -123, 1.55, ) или константным выражением (например, 12*24).

Начальные значения не могут задаваться в объявлениях VAR_EXTERNAL.

Начальные значения могут также определяться с использованием определяемого экземпляром свойства инициализации, предоставляемого конструкцией VAR_CONFIG...END_VAR. Определяемые экземпляром начальные значения всегда замещают специфические для типа начальные значения.


Таблица 13 - Определение переменных

         
Номер Описание

Пример

Объяснение
1 Переменная элементарного типа данных

VAR

Распределяет бит памяти логической переменной MYBIT Распределяет память для хранения строки с максимальной длиной 10 символов
      MYBIT: BOOL; OKAY: STRING[10]; VALVE_POS AT %QW28: INT;  
   

END_VAR

 
2 Переменная с определенным пользователем типом данных

VAR

Описание переменных с пользовательским типом данных
      myVAR: myType; END_VAR  
3 Массив

VAR

 
      BITS: ARRAY[0..7] OF BOOL; TBT: ARRAY [1..2, 1..3] OF INT; OUTA AT %QW6: ARRAY[0..9] OF INT;  
   

END_VAR

 
4 Указатель

VAR

myRefInt: REF_TO INT; END_VAR

Определение переменной, являющейся указателем

 

Таблица 14 - Инициализация переменных

           
Номер Описание

Пример

Объяснение
1 Инициализация переменной с элементарным типом данных

VAR

Распределяет бит памяти логической переменной MYBIT с начальным значением от 1. Распределяет память для хранения строки с максимальной длиной десяти символов После инициализации строка имеет длину 2 и содержит двухбайтовую последовательность символов (десятичные 79 и 75, соответственно), в порядке, подходящем для печати символьной строки
     

MYBIT: BOOL:= 1;

OKAY: STRING[10]:=;

VALVE_POS AT %QW28: INT:= 100;

 
   

END_VAR

 
2 Инициализация переменной с определенным пользователем типом данных

TYPE

Объявление определенного пользователем типа с инициализацией и без инициализации Описание с предварительной инициализацией переменной с определенным пользователем типом данных
     

myType:...

 
   

END_TYPE

VAR

 
     

myVAR: myType:= …// инициализация

 
   

END_VAR

 
3 Массив

VAR

Распределяет 8 битов памяти для хранения начальных значений BITS[0]:= 1, BITS[1]:= 1,..., BITS[6]:= 0, BITS[7]:= 0. Распределяет целый массив TBT размером 2*3 с начальными значениями TBT[1,1]:= 9, TBT[1,2]:= 8, TBT[1,3]:= 10, TBT[2,1]:= 10, TBT[2,2]:= 10, TBT[2,3]:= 6.
     

BITS: ARRAY[0..7] OF BOOL

 
    :=[1,1,0,0,0,1,0,0];  
     

TBT: ARRAY [1..2, 1..3] OF INT

 
    := [9,8,3(10),6];  
     

OUTARY AT %QW6: ARRAY[0..9] OF

INT:= [10(1)];

 
   

END_VAR

 
4 Объявление и инициализация констант

VAR CONSTANT

Константа Символическая константа PI
     

PI: REAL:= 3.141592;

PI2: REAL:= 2.0*PI;

 
   

END_VAR

 
5 Инициализация с использованием константных выражений

VAR

Использует константное выражение
   

PIx2: REAL:= 2.0 * 3.1416;

 
   

END_VAR

 
6 Инициализация указателя

VAR

Инициализирует переменную-указатель myRefInt ссылкой на переменную myINT.
     

myRefInt: REF_TO INT

 
    := REF(myINT);  
   

END_VAR

 

Секции переменных

 

6.5.2.1 Общие положения

Каждая декларация программного компонента (POU), то есть функционального блока, функции или программы и, дополнительно, метода, начинается частями от нуля или более объявлений, которые определяют имена, типы (и, если необходимо, физическое или логическое расположение и инициализацию) переменных, используемых в организационной единице.

Часть деклараций программного компонента POU может содержать различные секции VAR, в зависимости от вида программного компонента POU.

Переменные могут объявляться в различных текстовых конструкциях VAR... END_VAR, включающих квалификаторы, такие как RETAIN или PUBLIC, при необходимости. Квалификаторы секций переменных кратко приведены на рисунке 7.


Рисунок 7 - Ключевые слова объявлений переменных (сводка)

   
Ключевое слово Использование переменной

Секции VAR: зависящие от типа программного компонента POU (функция, функциональный блок, программа) или метода

VAR Внутренние по отношению к объекту (функция, функциональный и т.д.).
VAR_INPUT Предоставленные извне, не модифицируются внутри объекта.
VAR_OUTPUT Предоставляемых объектом для внешних объектов.
VAR_IN_OUT Предоставляются внешними объектами, могут модифицироваться внутри объекта, предоставляться для внешнего объекта.
VAR_EXTERNAL Предоставляемые конфигурацией через VAR_GLOBAL.
VAR_GLOBAL Объявление глобальной переменной.
VAR_ACCESS Объявление пути доступа.
VAR_TEMP Временное хранилище для переменных в функциональных блоках, методах и программах.
VAR_CONFIG Специфическая для экземпляра инициализация и назначение расположения.
(END_VAR) Заканчивает описанные выше секции VAR.


Рисунок 7 - Ключевые слова объявлений переменных (сводка), лист 1

   

Квалификаторы: могут следовать за описанными выше ключевыми словами

RETAIN Сохраняемые переменные.
NON_RETAIN Несохраняемые переменные.
PROTECTED Доступ только изнутри собственного объекта и его производных объектов (неявно).
PUBLIC Разрешен доступ из всех объектов.
PRIVATE Доступ только из собственно объекта.
INTERNAL Доступ только внутри одного пространства имен.
CONSTANT Константа (неизменяемая переменная).


Примечание - Использование данных ключевых слов является свойством программного компонента и элемента конфигурации, в котором они используются.

Экземпляры функциональных блоков не объявляются в секциях переменных с квалификатором CONSTANT.

 

Рисунок 7, лист 2

- VAR

Переменные, объявленные в секции VAR... END_VAR сохраняются от одного вызова программы или экземпляра функционального блока до другого.

В пределах функций, переменные, объявленные в этой секции, не сохраняются между вызовами функций.

- VAR_TEMP

В пределах программных компонент, переменные могут объявляться только секции VAR_TEMP... END_VAR.

Для функций и методов ключевые слова VAR и VAR_TEMP эквивалентны.

Данные переменные распределяются и инициализируются специфическими для типа неявными значениями, и не сохраняются между вызовами.

- VAR_INPUT, VAR_OUTPUT и VAR_IN_OUT

Переменные, объявленные в данных секциях, являются формальными параметрами функций, типов функциональных блоков и методов.

- VAR_GLOBAL и VAR_EXTERNAL

Переменные, объявленные в секции VAR_GLOBAL, могут использоваться в других программных компонентах, если они повторно объявлены там в секции VAR_EXTERNAL.

На рисунке 8 показано использование ключевых слов VAR_GLOBAL, VAR_EXTERNAL и CONSTANT.


Рисунок 8 - Использование VAR_GLOBAL, VAR_EXTERNAL и CONSTANT (правила)

         
Объявление в элементе, содержащем переменную

Поделиться с друзьями:

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.032 с.