Программирование на языке Structured Control Language

Использование индексной адресации. Определение глобальных символических имен. Функциональные блоки и функции. Компиляция, а также просмотр результата в симуляторе. Пользовательские типы и блоки данных. Различные способы доступа к полям блока данных.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 23.03.2015
Размер файла 756,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Разработка программ на языке SCL

Язык SCL (Strucured Control Language -структурированный язык управления) является языком высокого уровня, который предназначен для программирования контроллеров. По синтаксису этот язык похож на язык Паскаль. Этот язык удобно использовать тогда, когда в программе имеются различные вычисления и сравнения значений чисел.

Адресация к памяти CPU.

Прежде чем изучать синтаксис языка SCL рассмотрим адресацию памяти CPU. Каждый CPU имеет следующие области памяти, с диапазонами адресов, зависящими от типа CPU:

* Дискретные входы и выходы (например, I0.5, Q1.0)

* Аналоговые входы и выходы (например, PI0.5, PQ1.0)

* Меркеры (например, M1.0)

* Таймеры, счетчики (например, Т1, C1)

Префикс размера

Префикс размера определяет длину области памяти. Можно, например, прочитать байт или слово. Использование префикса размера не обязательно в случае, если Вы хотите определить один бит.

Вы можете определять следующих префиксов:

Х - бит;

В - байт;

W - слово;

D - двойное слово.

Примеры:

STATUS_3 := I1.1; // Обращение к биту

STATUSBYTE :=IB10; // Обращение к байту

MEASVAL := IW20; // Обращение к слову

Индексная адресация к областям памяти CPU

К областям памяти CPU можно обращаться как к элементам массива.

Например: компиляция индексный блок симулятор

Word_Val := IW[5]; //Обращение слову начиная с 5-го байта

Bit_Val := I[ByteNo, BitNo]; //Обращение биту

Использование индексной адресации позволяет организовать циклов For, While и т.д. При этом должны выполняться следующие правила:

* При доступе к данным типа BYTE, WORD или DWORD можно использовать только один индекс. Индекс интерпретируется как адрес байта.

* При доступе к данным типа BOOL используются два индекса. Первый индекс определяет адрес байта, а второй положение бита в байте.

Определение символических имен

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

Для этого в окне SIMATIC Manager откройте выделите узел Simbols и выполните на нем двойной щелчок. При этом открывается окно редактора символов. Пока в этом окне определите два символических имен: FC_Add и ORG_Block.

2. Функциональные блоки (FB) и функции (FC)

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

Таблица.

Тип переменной

Объяснение

Статические переменные

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

Временные переменные

Временные переменные сохраняется только во время выполнения функции или блока.

Ниже приведем синтаксис объявлений этих типов данных.

Временные переменные:

VAR_TEMP

список объявлений:

END_VAR

Статические переменные:

VAR

список объявлений:

END_VAR

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

Таблица.

Параметр блока

Объяснение

Входные параметры

Входные параметры при вызове функционального блока или функции принимают текущие величины входов. Они доступны только для чтения.

Выходные параметры

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

Вход/выходные параметры

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

Ниже приведем синтаксис объявления этих параметров на языке SCL.

Параметры входа:

VAR_INPUT

список объявлений:

END_VAR

Параметры выхода:

VAR_OUTPUT

список объявлений:

END_VAR

Параметры входа/выхода:

VAR_IN_OUT

список объявлений:

END_VAR

Пример. Функции для сложения трех чисел

Все файлы с исходным кодом на языке SCL находятся в узле Sources приложения Simatic Manager. Для создания нового SCL-файла из контекстного меню узла Sources выполните команду Insert New Object/ SCL Source.

При этом в правой части окна Simatic Manager появляется новый файл. Переименуйте этот файл, например, на Integer_Math (предполагается, что в этом файле размещаются функции для целочисленных вычислений). Также создайте файл ORG_Block (для размещения различных функциональных блоков).

Теперь, если выполнить двойной щелчок на этом файле, то открывается Редактор SCL. Этот редактор позволяет набрать код, компилировать и выполнить отладочную информацию. В этом редакторе наберите следующий код для функции FC_Add:

В этом примере переменная Memory является временной переменной, а переменные Num1, Num2 и Num3 являются входными параметрами функции FC_Add. Значения входных параметров задаются при вызове этой функции. Например, эта функция будет вызвана следующим образом:

Result := FC_Add (Num1 := 3, Num2 := 3, Num3 := 3);

3. Организационные блоки (OB)

Организационный блок (OB), подобен FB или FC, это часть пользовательской программы, которая вызывается операционной системой циклически или как реакция на определенные события.

Каждый OB при выполнении требует 20 байт локальных данных для взаимодействия с операционной системой. Для этого Вы должны объявить соответствующий массив.

Аналогично, в редакторе SCL откройте модуль Org_Block и наберите следующий код для организационного блока OB1.

4. Компиляция и просмотр результата в симуляторе

Прежде чем компилировать, следует настроить среду разработки. Для этого выполните команду Options/Customize. При этом появляется окно настройки редактора SCL:

Для добавления отладочной информации при компиляции установите флажок Create debug info и нажмите на кнопку ОК. Теперь, для компиляции кода, в окне редактора SCL выполните команду File/ Compile. Эти действия выполните для обоих модулей.

В результате, если не имеется синтаксических ошибок, то в узле Blocks окна SIMATIC Manager появляются блоки FC1 и ОВ1, который содержит компилированный код, готовый для загрузки в контроллер.

Для просмотра работы этой программы запускайте симулятор и загружайте проект в симулятор. Запускайте симулятор на выполнение. Как видно, в нашем случае результат сложения трех чисел меньше чем 10, и следовательно, устанавливается Q0.1.

Для просмотра результата сложения чисел откройте код организационного блока ОВ1 и переходите в режим мониторинга (команда Debug/ Monitor). В результате окно кода разделяется на две части и в правой части окно кода отображается значения переменных ОВ1.

5. Пользовательские типы данных (UDT) и блоки данных (DB)

Пользовательские типы данных UDT (User Defined Type) аналогичны к структурным типам данных на языках программирования Паскаль или Си. Например, ниже показан пользовательский тип Analog_Type для описания характеристик аналогового сигнала.

Пример:

TYPE "ANALOG_TYPE"

STRUCT

Val : REAL ; //Текущее значение

bAlarmMin : BOOL ; //Авария уровень ниже

bAlarmMax : BOOL ; //Авария уровень выше

rAlarmMin : REAL ; //Минимальное значение

rAlarmMax : REAL ; //Максимальное значение

END_STRUCT

END_TYPE

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

Блоки данных предназначены для хранения, изменения данных проекта. Ниже приведен пример создания блока DB_Analog, как массива для хранения информации об аналоговых сигналах.

Пример:

DATA_BLOCK "DB_Analog"

STRUCT

An:ARRAY[1..3] OF "ANALOG_TYPE"

END_STRUCT

BEGIN

Температура

An[1].rAlarmMin:=30.0

An[1].rAlarmMax:=100.0

Давление

An[2].rAlarmMin:=1.0

An[2].rAlarmMax:=5.0

Уровень

An[3].rAlarmMin:=40.0

An[3].rAlarmMax:=80.0

END_DATA_BLOCK

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

Обычно пользовательские типы данных и блоки данных размещают в отдельном модуле. Исходя из этих соображений, в окне SIMATIC Manager в узле Sources определите новый модуль Data.

Теперь, двойном щелчком на узле Data откройте редактор SCL, и введите вышеприведенный код для пользовательского типа и блока данных. Как видно в этом коде используется два символических имен: ANALOG_TYPE и DB_Analog. Откройте редактор символических имен и введите эти имена.

Теперь все готово для компилирования кода. Переходите в окно редактора SCL и выполните команду File/Compile. В результате будут созданы блоки UDT1 и DB1, которые содержат компилированный код.

Если выполнить двойной щелчок на этих блоках, то открывается редактор языка LAD/STL/FBD, где отображается структура пользовательского типа и данных в виде таблицы:

Заметим, что с помощью этого редактора, создание пользовательских типов и блоков данных гораздо проще.

6. Доступ к полям блока данных

Имеется различные способа доступа к полям блока данных. Ниже рассмотрим этих способов.

а) Абсолютный доступ к блокам данных

В этом случае доступ похож к случаю обращения памяти CPU. Сначала задается идентификатор DB, сопровождаемый ключевым словом "D", потом префикс размера (например, X - для бита) и, наконец, адрес относительно начала DB

Пример:

Bit := DB2.DX13.1; //Обращение к биту

Byte := DB2.DB10; //Обращению к байту

Word := DB2.DW20; //Обращение к слову

DWord := DB2.D11; //Обращение к двойному слову

б) Индексированный доступ к блокам данных

Индексированный доступ состоит из идентификатора DB, идентификатора адреса (ключевое слово "D" и префикс размера) и индекса.

Пример

Bit := DB2.DX[Word_No, Bit_No]; //Обращение к биту

Word := DB2.DW[5]; //Обращение к слову

в) Структурированный доступ к блокам данных

В этом случае для обращения к полям блока данных используется составное имя, разделенное с помощью точки. Например, для обращения к полю Val аналогового сигнала An[2] в блоке данных DB_Analog может использоваться следующее составное имя:

Val := DB_Analog.An[2].Val;

Пример. Обработка:

FOR i:=1 TO 6 BY 1 DO

Берем ссылку на текущий An из массива DB_Analog:

An := DB_Analog.An[i];

Формирование значения аналогового сигнала:

IF I0.0 = 0 THEN An.Val := 0.0; END_IF;

IF I0.0 = 1 THEN An.Val := 200.0; END_IF;

Проверка на аварийный уровень:

IF An.Val < An.rAlarmMin THEN An.bAlarmMin := 1; END_IF;

IF An.Val > An.rAlarmMax THEN An.bAlarmMax := 1; END_IF;

Если входим на диапазон, то аварийный сигнал снимаем:

IF An.Val > (An.rAlarmMin*1.05) THEN An.bAlarmMin := 0; END_IF;

IF An.Val < (An.rAlarmMax*0.95) THEN An.bAlarmMax := 0; END_IF;

Сохраняем обратно в блоке данных:

DB_Analog.An[i]:=An;

END_FOR;

Пример:

FUNCTION_BLOCK FB3

VAR

AUXVAR : REAL ;

MEASVAL : STRUCT //Структура для записи данных

VOLTAGE:REAL ;

RESISTANCE:REAL ;

SIMPLEARR : ARRAY [1..2, 1..2] OF INT ;

END_STRUCT ;

PROCVAL : STRUCT //Структура для исходных данных

VOLTAGE : REAL ;

RESISTANCE : REAL ;

SIMPLEARR : ARRAY [1..2, 1..2] OF INT ;

END_STRUCT ;

END_VAR

BEGIN

Присвоение структуры в целом:

MEASVAL := PROCVAL ;

Присвоение компонента структуры компоненту структуры:

MEASVAL.VOLTAGE := PROCVAL.VOLTAGE ;

Присвоение компонента структуры переменной того же типа:

AUXVAR := PROCVAL.RESISTANCE ;

Присвоение константы компоненту структуры:

MEASVAL.RESISTANCE := 4.5;

Присвоение константы элементу массива в структуре:

MEASVAL.SIMPLEARR[1,2] := 4;

END_FUNCTION_BLOCK

Вызов функциональных блоков.

Когда Вы вызываете функциональный блок, Вы можете использовать как глобальные блоки данных, так и локальные блоки данных.

Вызов глобальным блоком данных

В команде вызова определяются:

* Имя функционального блока,

* Блок данных,

* Параметры функционального блока.

Вызов функции с глобальным блоком данных может быть абсолютным или символическим.

Пример. Абсолютный вызов функции:

FB10.DB20 (X1:=5,X2:=78,......);

Пример. Символический вызов функции:

DRIVE.ON (X1:=5,X2:=78,......);

Вызов как локального экземпляра FB

В команде вызова определяются:

* Имя локального экземпляра

* Параметры FB

Вызов локального экземпляра всегда символический. Вы должны объявить символическое имя в разделе объявления вызывающего блока.

MOTOR (X1:=5,X2:=78,......);

Задание параметров функционального блока

При вызове функционального блока Вы можете задать следующие параметры:

* Входные параметры

* Вход/выходные параметры

При вызове FB выходные параметры определять не нужно.

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

* Присвоения могут идти в любом порядке.

* Типы формальных и фактических параметров должны совпадать.

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

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

Пример:

FUNCTION_BLOCK TEST // Функц. блок TEST = FB17

VAR_INPUT

FINALVAL: INT; //Входной параметр

END_VAR

VAR_IN_OUT

IQ1 : REAL; // Вход/выходной параметр

END_VAR

VAR_OUTPUT

CONTROL: BOOL; // Выходной параметр

END_VAR

VAR

INDEX: INT;

END_VAR

BEGIN

CONTROL :=FALSE;

FOR INDEX := 1 TO FINALVAL DO

IQ1 :=IQ1*2;

IF IQ1 > 10000 THEN

CONTROL := TRUE;

END_IF;

END_FOR;

END_FUNCTION_BLOCK

Вызов.

Для вызова FB, Вы можете выбрать один из следующих вариантов. Предполагается, что переменная VARIABLE1 была объявлена в вызывающем блоке как REAL.

Абсолютный вызов, глобальный экземпляр:

FB17.DB10 (FINALVAL:=10, IQ1:=VARIABLE1);

Символический вызов, глобальный экземпляр:

TEST.TEST_1 (FINALVAL:=10, IQ1:= VARIABLE1);

После исполнения блока величина, вычисленная для входного/выходного параметра IQ1, доступна через переменную VARIABLE1.

Использование выходного параметра для чтения результата

Два следующих примера показывают два возможных способа чтения выходного параметра CONTROL.

Выходной параметр доступен через:

RESULT:= DB10.CONTROL;

Использование выходного параметра:

FB17.DB12 (INP_1:=DB10.CONTROL);

Пример.

FOR i:=1 TO 6 BY 1 DO

Берем ссылку на текущий An из массива DB_Analog

An := DB_Analog.An[i];

Формирование значения аналогового сигнала:

IF I0.0 = 0 THEN An.Val := 0.0; END_IF;

IF I0.0 = 1 THEN An.Val := 200.0; END_IF;

Проверка на аварийный уровень:

IF An.Val < An.rAlarmMin THEN An.bAlarmMin := 1; END_IF;

IF An.Val > An.rAlarmMax THEN An.bAlarmMax := 1; END_IF;

Если входим на диапазон, то аварийный сигнал снимаем:

IF An.Val > (An.rAlarmMin*1.05) THEN An.bAlarmMin := 0; END_IF;

IF An.Val < (An.rAlarmMax*0.95) THEN An.bAlarmMax := 0; END_IF;

Сохраняем обратно в блоке данных:

DB_Analog.An[i]:=An;

END_FOR;

Размещено на Allbest.ru

...

Подобные документы

  • Понятие и концепция базы данных и СУБД. Независимость приложений от организации данных во внешней памяти. Типы данных SQL, таблицы, структура языка и операторы. Преимущества модели реляционного подхода к организации баз данных и ее эффективность.

    курсовая работа [69,6 K], добавлен 30.11.2009

  • Изучение и анализ функциональных возможностей СУБД. Структура языка реляционных БД SQL (Structured Query Language). Типы данных SQL. Операторы DDL - операторы определения объектов базы данных. Примеры использования операторов манипулирования данными.

    курсовая работа [39,6 K], добавлен 21.07.2012

  • Язык структурированных запросов SQL (Structured Query Language) и его место в сфере доступа к информации в реляционных базах данных. Структура и основные типы данных языка. Синтаксис и семантика главных операторов SQL, последние стандарты языка.

    реферат [98,7 K], добавлен 29.03.2012

  • Информационные технологии и защиты данных. Методы защиты информации. Виды информационной безопасности и умышленные угрозы. Программирование на языке Turbo Pascal. Типы числовых данных. Функции ввода и вывода. Логические операторы, символьные переменные.

    курсовая работа [1,7 M], добавлен 16.05.2016

  • Понятие базы данных, её структура. Общие принципы хранения информации. Краткая характеристика особенностей иерархической, сетевой и реляционной модели организации данных. Structured Query Language: понятие, состав. Составление таблиц в Microsoft Access.

    лекция [202,8 K], добавлен 25.06.2013

  • Сущность понятия "тип данных". Объектно-ориентированный стиль программирования. Простые типы данных в языке Паскаль: порядковые, вещественные, дата-время. Булевский (логический) тип. Синтаксис определения ограниченного типа. Регулярные типы (массивы).

    реферат [24,1 K], добавлен 01.12.2009

  • Цель информационного программирования; алгоритмический язык как система обозначений и правил для единообразной и точной записи алгоритмов и их исполнения. Языки программирования низкого и высокого уровня; классификация и использование структуры данных.

    реферат [383,1 K], добавлен 07.01.2012

  • Разработка программы "Игроки КХЛ 2012-2013" на языке С++ с использованием классов списков структур для обработки данных. Описание глобальных переменных, разработанных функций. Главное меню программы. Чтение данных из файла, их просмотр и сохранение.

    курсовая работа [2,2 M], добавлен 17.03.2016

  • Программа в среде Genie. Сбор данных о технологическом процессе. Функциональные возможности и технические характеристики аппаратных средств. Экранные формы интерфейса оператора рабочей программы. Функциональные блоки стратегии, отображения и управления.

    курсовая работа [3,2 M], добавлен 13.03.2012

  • Сущность и основные свойства алгоритмов, принципы их составления. Скалярные типы данных в языке Pascal. Тождественность и совместимость типов данных. Понятие и основные этапы развития, а также движущие силы эволюции языков программирования, типы.

    презентация [85,8 K], добавлен 18.05.2014

  • Изучение базовых команд ПК на базе МП i286 и их форматов. Изучение прямых способов адресации данных. Наработка практических навыков работы с командами. Разработка регистровой модели выполнения операций передачи данных. Программа реализации команд.

    контрольная работа [42,2 K], добавлен 12.03.2011

  • Возникновение и функции интернета. Системы адресации и протоколы передачи данных. Структура иерархической базы данных. Формирование базы данных учета сотрудников организации, создание таблиц с тремя видами запросов на выборку, конструктор отчетов.

    контрольная работа [885,8 K], добавлен 10.11.2010

  • Понятие шаблона проектирования или паттерна в разработке программного обеспечения. Изменение поведения системы (базы данных) с помощью порождающего шаблона программирования - абстрактной фабрики. Программирование базы данных и управление ею на языке С+.

    курсовая работа [124,8 K], добавлен 30.04.2011

  • Системы управления базами данных. Состав СУБД. Языки программирования. Проектирование базы данных на СУБД MySQL. Работа с XAMPP Control Panel. База данных " Детский сад". Вывод данных из таблицы "Ребенок", "Группы", "Классы" и "Направление занятий".

    курсовая работа [1,9 M], добавлен 13.12.2016

  • Создание базы данных "Автовокзал" как части информационной системы. Требования к базе данных и этапы ее разработки. Анализ информационных потоков, выбор модели. Входные и выходные данные. Программирование базы данных на языке Borland Delphi 7.0.

    курсовая работа [105,8 K], добавлен 16.05.2011

  • Характеристика современных информационных систем. Структура Microsoft Access 97, его справочная система, типы данных, особенности использования, ввод, редактирование и просмотр данных. Создание новой базы данных с помощью Конструктора в MS Access 97.

    реферат [49,1 K], добавлен 23.10.2009

  • Сущность и функциональные особенности баз данных, их классификация и типы, внутренняя структура и элементы. Модели данных, хранящихся в базах: иерархическая, сетевая, реляционная, многомерная, объектно-ориентированная. Виды запросов и типы таблиц.

    дипломная работа [66,7 K], добавлен 06.01.2014

  • Структурная схема проектируемого контроллер и ее обоснование. Центральный процессорный модуль и блок памяти. Дешифраторы адреса ОЗУ/ПЗУ и внешних устройств. Блоки ввода аналоговых данных, отображения информации, вывода результата и интерфейсный.

    реферат [476,5 K], добавлен 22.09.2011

  • Особенности написания базы данных на языках программирования C++, применимой для расписания занятий в университете. Этапы работы: ввод новой записи, изменение, просмотр базы данных, поиск данных. Алгоритмы, используемые в процессе выполнения проекта.

    практическая работа [16,6 K], добавлен 12.06.2010

  • Определение базы данных и банков данных. Компоненты банка данных. Основные требования к технологии интегрированного хранения и обработки данных. Система управления и модели организации доступа к базам данных. Разработка приложений и администрирование.

    презентация [17,1 K], добавлен 19.08.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.