Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ по лабораторным работам.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.7 Mб
Скачать

1.4. Переменные в системе Concept

Для каждой переменной может быть определено:

    1. Имя переменной (до 32 символов, требования как к имени проекта)

    2. Тип переменной (раздел 0.5)

    3. Связь переменной с входами выходами контроллера

    1. Связанные (локализованные)

Связаны с входами/выходами контроллера. Имеют номер регистра из пространства номеров, определенного картой ввода-вывода контроллера.

    1. Несвязанные (нелокализованные)

Располагаются в свободной памяти контроллера на усмотрение операционной системы.

    1. Начальное значение при включении/перезапуске контроллера (для внутренних несвязанных переменных).

    2. Количество использований в программе (рассчитывается автоматически по исходному коду программы системой Concept). Используемые переменные удалить из списка нельзя.

    3. Комментарий.

Особый вид переменных - константы (constants)

► позволяют использовать значения по их имени, что улучшает понимаемость программы или позволяет централизованно заменять значение константы, используемой в коде программы множество раз. Пример, pi = 3.14159265359.

► константы на этапе компиляции программы заменяются своими значениями и не занимают оперативную память контроллера в процессе работы.

Кроме этого в программе можно использовать прямые адреса (direct address), т.е. номер регистра

► 0x area = bit outputs (discrete), e.g. 000001 is discrete output 1

► 1x area = bit inputs (discrete), e.g. 100001 is discrete input 1

► 3x area = register inputs, e.g. 300001 is register input 1

► 4x area = register outputs , e.g. 400001 is register output 1

1.5. Типы данных

Тип данных переменной определяет род информации, диапа­зон представления и множество допустимых операций. Языки МЭК используют идеологию строгой проверки типов данных. Это означает, что любую переменную можно использовать только по­сле ее объявления. Присваивать значение одной переменной дру­гой можно, только если они обе одного типа. Допускается также присваивание значения переменной совместимого типа, имеющей более широкое множество допустимых значений. В этом случае происходит неявное преобразование типа без потерь. Неявные преобразования типов данных с потерями запрещены. Так, на­пример, логическую переменную, способную принимать только два значения (логические 0 и 1), можно присвоить переменной типа SINT (-128...+127), но не наоборот.

При трансляции программы все подобные попытки отслежива­ются и считаются грубыми ошибками. Если же это действительно необходимо, то выполнить присваивание с потерями возможно, но только при помощи специальных операторов. Операторы пре­образования в МЭК выполняют также и более сложные операции, например преобразование числа или календарной даты в тексто­вую строку, и наоборот.

Типы данных объединяются в следующую иерархию (рисунок) и описаны ниже.

Тип ANY_BIT включает следующие типы даны: BOOL, BYTE и WORD.

Тип BOOL представляет собой булев тип данных. Данные этого типа занимают в памяти 1 бит . Допустимые значения переменных этого типа TRUE (истина) и FALSE (ложь). В системе Concept допускается замена этих значений на 1 (TRUE) и 0 (FALSE).

Тип BYTE является типом данных «битовая строка из 8 бит». В памяти контроллера данные этого типа занимают 1 байт. Переменные этого типа не могут обрабатываться как числовое значение и применяются для оптимизации вычислений над групой булевых значений.

Тип WORD является типом данных «битовая строка из 16 бит». В памяти занимает 2 байта. Как и переменные типа BYTE применяется для оптимизации вычислений над группой булевых значений.

Переменные типа ANY_INT являются числовыми значениями.

Типы ANY_INT являются целочисленными включает следующие типы данных: INT, UINT, DINT, UDINT.

Тип INT является типом данных «целое число». В памяти занимает 2 байта независимо от разрядности центрального процессора контроллера. Диапазон значений для переменных этого типа -32768..32767.

Тип UINT является типом данных «целое число без знака». Длина элемента данных 2 байта. Диапазон значений для переменных этого типа 0..65535.

Тип DINT является типом данных «целое число двойной точности». В памяти контроллера занимает 4 байта. Диапазон значений для переменных этого типа данных -231 .. 231-1.

Тип UDINT является типом данных «целое число двойной точности без знака». Длина элемента данных 4 байта. Диапазон значений для переменных данных этого типа 0..232-1.

Тип REAL представляет собой тип данных «вещественное число с плавающей точкой». Занимает в памяти 4 байта. Диапазон значений для переменных этого типа данных от 8,43∙10-37 до 3,36∙1038.

Тип TIME представляет собой тип данных «время». Минимальная единица для задания переменных этого типа – 1 мс.

Тип IEC extension – системные типы данных, расширяющие систему типов IEC (специфичны для системы программирования Concept). Используется в основном для обработки информации с помощью библиотеки ANA_I/O. Включают типы: ANL_IN и ANL_OUT.

Тип ANL_IN представляет тип данных «аналоговый вход». Он используется для обработки аналогового значения. Тип данных автоматически назначается 3х-ссылкам, указанным в карте ввода/вывода (I/O Map) конфигурированного модуля аналогового ввода.

Тип ANL_OUT представляет тип данных «аналоговый выход». Он используется для обработки аналогового значения. Тип данных автоматически назначается 4х-ссылкам, указанным в карте ввода/вывода (I/O Map) конфигурированного модуля аналогового ввода.

Составные типы – тип данных пользователя, получаемый из исходных или элементарных типов данных и/или других составных типов. Включает в себя типы, основанные на ARRAY и STRUCT.

Типы ARRAY – массив однотипных значений. Доступ к каждому элементу данных для переменных этого типа осуществляется по индексу.

Типы STRUCT – список разнотипных значений. Доступ к каждому элементу данных для переменных этого типа осуществляется по имени.

Для непосредственного задания значений переменных и констант рассмотренных типов применяются следующие литералы (literal): двоичные, восмеричные, шестнадцатиричные, десятичные, вещественные, временные отрезки (duration).

Двоичные литералы – используются для записи битовых строк и целочисленных значений в двоичной форме. Такая форма записи идентифицируется префиксом 2#. Значения не могут иметь знак «+» или «–». Для разделения формата двоичного числа на группы двоичных цифр, например на тетрады – группы по четыре двоичных цифры, может использоваться одиночный символ подчеркивания «_», который никакой функции, кроме разделительной, не имеет.

Пример:

2#1111_1111 или 2#11111111 (десятичное число – 255);

2#1110_0000 или 2#11100000 (десятичное число – 224).

Восьмеричные литералы используются для записи битовых строк и целочисленных значений в восьмеричной форме. Такая форма записи идентифицируется префиксом 8#. Значения не могут иметь знак «+» или «–». Допустимые символы 0..7. Для разделения формата восьмеричного числа на какие-либо группы восьмеричных цифр может использоваться одиночный символ подчеркивания «_», который никакой функции, кроме разделительной, не имеет.

Пример:

8#3_77 или 8#377 (десятичное число – 255);

8#34_0 или 8#340 (десятичное число – 224).

Шестнадцатеричные литералы используются для записи битовых строк и целочисленных значений в шестнадцатеричной форме. Такая форма записи идентифицируется префиксом 16#. Допустимые символы 0..9, A, B, C, D, E, F. Значения не могут иметь знак «+» или «–». Для разделения формата шестнадцатеричного числа на какие-либо группы шестнадцатеричных цифр может использоваться одиночный символ подчеркивания «_», который никакой функции, кроме разделительной, не имеет.

Пример:

16#F_F или 16#FF (десятичное число – 255);

16#E_0 или 16#E0 (десятичное число – 224).

Десятичные литералы используются для записи битовых строк, целочисленных и вещественных значений в десятичной форме. Такая форма записи не содержит никаких специальных префиксов. Значения в этом случае могут иметь знак «+» или «–». Для разделения формата десятичного числа на какие-либо группы десятичных цифр может использоваться одиночный символ подчеркивания «_», который никакой функции, кроме разделительной, не имеет.

Пример:

-12; 0; 123_456; +986.

Для представления или обозначения временных данных TIME используются следующие идентификаторы: дни (d), часы (h), минуты (m), секунды (s) и миллисекунды (ms) или их комбинации. Временные данные идентифицируются префиксами t#, T#, time# или TIME#. Разрешается «переполнение» старшей единицы: например, ввод T#25H15M (по «переполнением» подразумевается, что 25 часов – это больше, чем сутки).

Пример:

t#14MS; T#14.7S; time#18M; TIME#19.9H; t#20.4D; T#25H15M; time#5D14H12M18S3.5MS.

Вещественные литералы используются для записи вещественных значений с плавающей точкой в десятичной системе счисления. Запись вещественных данных идентифицируется десятичной точкой. Значения могут иметь предшествующий знак «+» или «–». Для разделения формата вещественных данных на какие-либо группы десятичных цифр может использоваться одиночный символ подчеркивания «_», который никакой функции, кроме разделительной, не имеет.

Привер:

-12.0; 0.0; +0.456; 3.141_592_6.