Назначение адресов и типов данных в языке SCL


 

Структурированный язык программирования SCL (Structured Control Language) является языком высокого уровня для SIMATIC S7. Язык базируется на стандарте 61131-3 и содержит в себе элементы языка Паскаль вместе с типичными для PLC элементами, такими, как "вход" и "выход".

SCL целесообразно применять для программирования сложных алгоритмов или для задач, которые относятся к области управления данными.

Создание программы осуществляется в редакторе SCL. Исходная программа компилируется с помощью Scl-компилятора в программу пользователя.

Несмотря на то, что элементы языки SCL (операторы, выражения, присвоения значений) отличаются в синтаксисе от инструкций STL, в SCL используются те же типы данных, адресные области, символьные имена и блочная структура.

Для того чтобы создать программу на SCL, нужно сначала создать проект. Дальше в проекте назначить CPU, потому что создаваемая программа зависима от типа CPU. Только после этого создаются необходимые блоки программы.

Исходная Scl-программа может содержать, как минимум, один блок. Можно также создать несколько исходных Scl-программ, которые потом нужно скомпилировать в определенном порядке с использованием управляющего файла компилятора.

При программировании на языке SCL применяются следующие адреса и переменные:

• входы I и выходы Q;

• периферийные входы PI и периферийные выходы PQ;

• адреса глобальных данных D;

• меркеры M;

• временные и статические локальные дани с символьной адресацией;

• организационные блоки ОВ, функциональные блоки FB, функции FC, а также блоки данных DB.

Функции таймеров Т и функции счетчиков С обрабатываются в Scl-программах как стандартные функции.

При назначении типа данных определяются:

• характер и значения данных;

• разрешенные диапазоны, например, числовой диапазон или длина строки символов;

• разрешенные операции для обработки данных.

В SCL есть возможность группирования значений типов данных, которые представляют одинаковое обращение внутри одного класса. Группирование позволяет получить следующие классы:

• класс ANY_INT, который содержит в себе данные типы INT и DINT;

• класс ANY_NUM, который содержит в себе данные типы INT, DINT и REAL;

• класс ANY_BIT, который содержит в себе данные типы BOOL, BYTE, WORD и DWORD.

Указанные классы типов данных позволяют яснее описать операторы. Однако для описания переменных при их объявлении применять указанные классы нельзя.

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

В языке SCL константа не определяет "свой" тип данных, пока она не будет обработана в арифметической операции. Например, константа 1234 может относиться к типу данных INT или к типу данных REAL, в зависимости от применения:

int1:= int2 + 1234; //константа INT

real1:= real2 + 1234; //константа REAL

В языке SCL можно назначать тип данных для константы со спецификацией "type-defined", используя соответствующий префикс. Можно, например, определить переменную WORD в разделе объявлений с помощью десятичного, шестнадцатилетнего, восьмеричного или двоичного числа.

Примеры:

W1: WORD :=W#1234; //десятичное

W2: WORD :=W#16#04D2; // шестнадцатилетнее

W3: WORD :=W#8#2322; //восьмеричное

W4: WORD :=W#2#0000_0100_1101_0010; //двоичное

Абсолютный адрес всегда принадлежит к классу типов данных ANY_BIT. Так, например, двойное слово меркеров MD10 имеет тип данных DWORD.

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

MW14 := SHL(IN := MW12, N := 2); //Операнд имеет

//символьное имя

real1 := real2 + DWORD_TO_REAL(MD10); //Тип данных операнда

//преобразован

Строка символов должна вводиться в одинарных кавычках. С данным типом могут также использоваться управляющие символы, которые не печатаются; они должны вводиться в формате $hh, где hh означает значение ASCII символа:

string1:= '$0A$0D'; // красная строка

При абсолютной адресации адреса назначаются согласно началу адресной области; например, I 0.0 (первый бит входного байта 0). Абсолютная адресация в SCL отвечает абсолютной адресации в стандартных языках программирования за исключением образа идентификации адресов глобальных данных (табл. 3.1).

 

Таблица 3.1 - Идентификация адресов при абсолютной адресации

Адресная область Бит Байт Слово Двойное слово
Входы Iy.x Iby Iwy Idy
Выходы Qy.x Qby Qwy Qdy
Периферийные входы   Piby Piwy Pidy
Периферийные выходы   Pqby Pqwy Pqdy
Меркеры My.x Mby Mwy Mdy
Адреса глобальных данных Dbz.Dxy.x Dbz.Dy.x Dbz.Dby Dbz.Dwy Dbz.Ddy

Примечание: x – адрес бита, y – адрес байта, z – номер блока данных.

 

В языке программирования SCL доступ к адресам глобальных данных возможен только путем полной адресации. Доступ к блоку данных осуществляется вызовом переменной типа BLOCK_DB.

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

Символьная адресация в SCL отвечает символьной адресации в стандартных языках программирования. Можно также использовать смешанные абсолютно-символьные идентификаторы, например:

DB10.Setpoint

“Motor1Data”.DW12

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

– две переменных INT, если данные представлены битом;

– одна переменная INT, если данные представлены байтом.

Например:

• I [byteindex.bitindex]; //Данные представлены битом

• MB [byteindex]; //Данные представлены байтом

Здесь byteindex и bitindex являются выражениями типа INT.

Таким образом можно адресовать следующие области:

• периферийные входы PI и периферийные выходы PQ (в обоих этих случаях адрес бита не указывается);

• входы I, выходы Q, меркеры M;

• адреса глобальных данных D (блок данных и адрес данных);

• временные и статические локальные данные (только символьная адресация);

• функции таймеров Т и счетчиков С (адрес бита не указывается).

Синтаксис адресации блока:

DB10.DX [byteindex.bitindex]; //Адрес блока и адрес данных

Motordata.DW [byteindex]; //Символьное имя блока, адрес данных

Здесь byteindex и bitindex являются выражениями типа INT.

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

WORD_TO_BLOCK_DB [dbindex].DW0.

Здесь dbindex – переменная или выражение с типом данных WORD.

Если блок данных адресован косвенным образом, то для доступа к адресу данных не может использоваться символьное имя. Так, например, входной параметр Data можно вызвать такими образами:

• Data.DW0;

• Data.DX2.0;

• Data.DW[byteindex];

• Data.DX[byteindex.bitindex];

Здесь byteindex и bitindex – константы, переменные или выражения типа INT. Индекс может быть изменен в процессе выполнения программы.

 



Дата добавления: 2016-12-09; просмотров: 3959;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.013 сек.