Файл: Национальный исследовательский томский политехнический университет а. А. Мезенцев, В. М. Павлов.pdf

ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 24.10.2023

Просмотров: 207

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

36 из 137
3.
ПРОГРАММИРОВАНИЕ
АЛГОРИТМОВ
ОБРАБОТКИ
ДАННЫХ В TRACE MODE 6
Программирование – это процесс взаимодействия человека с ЭВМ.
Компьютерная программа позволяет программисту заставить техниче- ское средство выполнять заложенные в него функции по необходимому алгоритму. Наличие в техническом устройстве с электронным вычисли- тельным модулем средств исполнения элементарных функций позволя- ет оператору их группировать в последовательности, тем самым состав- лять более сложные функции или подпрограммы.
Во многих языках программирования одного класса, группы эле- ментарных функций похожи и являются универсальными, однако суще- ствуют языки программирования адаптированные для некоторой обла- сти применения. Например, такие как языки программирования стан- дарта IEC(МЭК) 61131-3. К ним относятся: SFC, FBD, LD, ST и IL. Эти языки программирования включают в свой состав значительное количе- ство готовых математических функций обработки данных, широко ис- пользуемых в АСУТП. К ним, также, относятся законы регулирования
ПИД, ПД, ПИ или П.
Рассмотрим более детально принципы программирования функций обработки данных в САПР TRACE MODE 6.06.2.
3.1.
Редактор программ
Одним из редакторов компонентов Проекта в ТМ является «Редак- тор программ» (рисунок 3.1).

37 из 137
Рисунок 3.1. Вид окна программы «Редактор программ»
Редактор программ представлен навигатором компонента «Про- грамма», рабочим полем текста программы (рисунок 3.1, в центре) и библиотекой функциональных блоков (в случае использования в каче- стве языка программирования FBD или LD).
Навигатор компонента «Про- грамма» позволяет разработчику взаимодействовать со всеми эле- ментами компонента. Выбор языка программирования выполняется при нажатии левой кнопки мыши
(далее по тексту ЛК) на имени компонента «Программа» в вер- шине иерархии его структуры (ри- сунок 3.2).
Рассмотрим элементы струк- туры компонента Программа на примере рисунка 3.2.

Аргументы компонента «Программа», как и других компонентов
Проекта, используются для ввода\вывода данных из\в смежные компоненты. Аргументы могут, также, использоваться для опера- ций обмена данными внутри компонента «Программа» и между ними. Следует отметить, что только аргументы могут служить
Рисунок 3.2. Вид окна Навигатора компонента «Программа»

38 из 137 входами\выходами пользовательских функциональных блоков при создании таковых внутри компонента «Программа» на языках программирования FBD или LD.

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

Глобальные переменные используются в рамках компонента
«
Программа» и сохраняют свое значение между его вызовами. В частности, глобальными являются переменные FBD и LD-блоков.

Функции (функции-блоки, подпрограммы) используются для со- здания собственных блоков-функций, например, FBD-блоков.
Программирование данных блоков может осуществляться на лю- бом другом языке программирования, например LD, IL или ST.

Структуры используются в языке ST для отображения элементов программы.

Внешние библиотеки позволяют использовать функции библио- тек «*.dll» в составе программ Проекта, при этом внешняя биб- лиотека функций должна находиться в выбранной директории.
Для смены языка про- граммирования (рисунок 3.3) в действующей программе необходимо использовать пиктограмму «Очистить тело функции» в окне навигатора компонента «Программа». От- крыть или закрыть окно биб- лиотеки функциональных бло- ков можно при помощи пикто- грамм в окне Редактора про- граммы, а также в меню
«Вид».
Выделим несколько наиболее значимых языков программирования для изучения (FBD, IL, ST), остальные языки программирования, при- сутствующие в списке на рисунке 3.3 рекомендованы к самостоятель- ному изучению.
3.2.
Язык программирования «Техно FBD»
FBD (Functional block diagram
) или язык программирования с ис- пользованием функциональных блоков. Он представляет собой высо-
Рисунок 3.3. Вид диалогового окна про- граммы выбора языка программирования


39 из 137 коуровневый объектно-ориентированный язык программирования, ши- роко применяемый в АСУТП для создания алгоритмов управления дан- ными. FBD-программа представляет собой диаграмму последовательно выполняемых функциональных блоков. Функциональные блоки пред- ставлены прямоугольными элементами на рабочем поле программы
(рисунок 3.4). Каждый блок содержит название, обозначенные входы и выходы, а также уникальный номер. Блок может содержать в себе как одну математическую функцию, так и их набор. Таким образом, подавая определённые значения на входы функционального блока, можно полу- чить на его выходах результат выполнения математической зависимо- сти запрограммированной в нём.
Рисунок 3.4. Вид функционального блока из стандартной библиотеки языка программирования FBD
На рисунке 3.5 показана FBD-программа, в которой запрограмми- рована зависимость «Y = (3 + X)
2
», где X – входное значение, Y – вы- ходное значение.
Рисунок 3.5. Вид диаграммы FBD-программы
Точка входа в программу при программировании на FBD, SFC и
LD задаётся автоматически.
Процесс программирования, в данном случае, заключается в пози- ционировании функциональных блоков в рабочей области программы и соединении их входов и выходов. Входы и выходы должны быть под- ключены к аргументам, в противном случае они не будут доступны для привязки вне программы. Позиционирование функциональных блоков в рабочей области выполняется методом «Drag and Drop».
В библиотеке компонентов представлены блоки, сгруппированные по функциональному признаку. В состав группы входят: логические,

40 из 137 побитовые, арифметические, тригонометрические, алгебраические, бло- ки сравнения, блоки выборки значений, триггеры и счётчики, генерато- ры, блоки управления, блоки пересылки значений, блоки регулирования и пользовательские блоки.
Проверка работоспособности программы выполняется после ком- пиляции её кода с использованием кнопки обозначенной пиктограммой в окне программы ИС или с использованием функциональной клавиши
«F7».
Запуск скомпилированной программы выполняется также с ис- пользованием специальной кнопки или с использованием функциональ- ной клавиши «F5». При проверке работоспособности созданной диа- граммы FBD-программы, действующие значения отображаются над вы- водами функциональных блоков (рисунок 3.6). Редактировать значения привязанных к входам блоков аргументов можно при помощи вкладки
«Переменные», которая может быть вызвана из меню программы
«Вид».
Рисунок 3.6. Вид FBD-программы в режиме проверки работоспособности
В том случае, когда в библиотеке отсутствует необходимой блок, существует возможность программирования собственных функцио- нальных блоков, которые затем помещаются в библиотеку в группу пользовательских блоков. О методах создания пользовательских блоков будет написано далее.
Дополнительная информация содержится в разделе руководства пользователя по адресу: «TRACE MODE 6.06.2 : Программирование ал- горитмов : Редактирование FBD-программ».
3.3.
Язык программирования «Техно IL»
Язык программирования с использованием инструкций IL (Instruc- tion list) является низкоуровневым ассемблероподобным. Компьютер- ные программы, написанные на IL, могут выполнять команды в одноад- ресном и двухадресном режиме и, в большинстве случаев, используют- ся профессионалами для получения специфических уникальных резуль- татов от работы программы. Также данный язык программирования может быть использован для написания пользовательских функцио- нальных блоков.


41 из 137
Синтаксис IL во многом напоминает команды ассемблера. Пример выполнения команд в одноадресном и двухадресном режиме представ- лен в таблице 3.1.
Таблица 3.1
Текст компьютерной программы, написанный на языке программирования IL (2
режима записи команд)
Функция
Текст программы в одноад- ресном режиме записи
Текст программы в двух- адресном режиме записи
а = а + b
LD a // result = a
ADD b // result = result + b
ST a // a = result
ADD a b
При написании новой программы на IL необходимо учитывать, что точка входа в программу задаётся автоматически и определяется следу- ющей конструкцией:
program
{определение аргументов}
{список команд}
end_program
Поэтому, необходимо при помощи редактора аргументов изначально обозначить переменные и аргументы, которые будут использоваться в программе (переменные могут быть добавлены позже). После того как они будут заданы, в программе автоматически инициализируется каж- дая из них. Пример программы с инициализированными переменными представлен ниже:
PROGRAM
VAR_INPUT input : REAL; END_VAR
VAR_OUTPUT output : REAL; END_VAR
VAR local_var : REAL; END_VAR
VAR const : REAL := 3; END_VAR
{список команд}
END_PROGRAM
В качестве примера рассмотрим текст программы, в которой запро- граммирована функция, показанная на рисунке 3.5. Текст программы представлен ниже:

42 из 137
PROGRAM
VAR_INPUT input : REAL := 0; END_VAR
VAR_OUTPUT output : REAL := 0; END_VAR
VAR local_var : INT := 0; END_VAR
VAR const : INT := 3; END_VAR
VAR m : INT; END_VAR
LD input
// запись значения пер. input в аккумулятор
ST local_var
// запись значения аккумулятора в пер. local_var
ADD local_var const
// сложение знач. local_var и const, результат в local_var
LD local_var
// запись значения local_var в аккумулятор
ST m
// запись значения аккумулятора в пер. m
MUL local_var m
// умножение значения local_var на знач. m, результат в local_var
LD local_var
ST output
END_PROGRAM
Переменные, необходимые для программирования, создаются в навигаторе компонента «Программа». В этом примере были использо- ваны два аргумента (Input и Output) для ввода исходных данных в про- грамму и вывода результата, а также три локальных переменных, необ- ходимых для внутреннего обмена данными. Одна из переменных ис- пользуется в качестве константы.
Операторы LD и ST используются для записи и чтения результата вычисления в\из аккумулятора. Оператор ADD и MUL – для сложения и умножения операндов. В тексте программы также могут быть использо- ваны операторы сравнения и переходов. Некоторые операторы могут быть использованы с модификаторами «С» и «Х». Так, например, ин- струкции JMP, CAL и RET – выполняются безусловно, а инструкции
JMPC, CALC и RETC устанавливаются непосредственно после операто- ров сравнения и выполняются только при истинном результате их вы- полнения, в противном случае они игнорируются. Значение модифика- тора Х уточнить в руководстве пользователя к программе ИС самостоя- тельно.
Для проверки кода программы скомпилируйте и запустите её на выполнение.


43 из 137
Дополнительная информация содержится в разделе руководства пользователя по адресу: «TRACE MODE 6.06.2 : Программирование ал- горитмов : Описание языка Техно IL».
3.4.
Язык программирования «Техно ST»
Язык программирования ST (Structured text) является высокоуров- невым текстовым языком. Он используется как для написания самосто- ятельных программ, так и для программирования FBD-блоков. В соста- ве текста ST-программы могут содержаться обыкновенные функции и функции-блоки.
В составе языка программирования ST могут быть использованы некоторые функции языка программирования Си, такие как: «cos»,
«sin», «log» или «exp», а так же специальные функции чтения и записи данных в порт. В ST допускается использовать функции, которые со- держатся во внешних DLL-библиотеках. При программировании также можно использовать массивы, как одномерные, так и многомерные.
Важным элементов ST-программы является структурная перемен- ная, которая в отличие от массива является совокупностью объектов имеющих различный тип. Переменные-структуры создаются в редакто- ре структуры компонента «Программа» в слое «Структуры».
Как и в случае использования языка программирования Техно-IL в
ST все аргументы и переменные необходимо инициализировать в соот- ветствующем редакторе. После инициализации, они автоматически бу- дут вписаны в текст программы. В Техно-ST поддерживаются следую- щие типы переменных:
• BOOL (bool) – булево значение размерностью 1 байт (true (1) или false (0));
• SINT (__int8) – целое со знаком размерностью 1 байт (-128 ... 127);
• USINT (unsigned __int8) – целое без знака размерностью 1 байт (0
... 255);
• INT (short) – целое со знаком размерностью 2 байта (-32768 ...
32767);
• UINT (unsigned short) – целое без знака размерностью 2 байта (0 ...
65535);
• DINT (long) – целое со знаком (4 байта) (-2147483648 ...
2147483647);
• UDINT (unsigned long) – целое без знака (4 байта) (0 ...
4294967295);

44 из 137
• TIME, DATE, TIME_OF_DAY, DATE_AND_TIME – соответству- ют DINT;
• REAL (float) – вещественное число (4 байта) (максимальное значе- ние 3.402823466e+38);
• LREAL (double) – вещественное число (8 байт) (максимальное зна- чение 1.7976931348623158e+308);
• STRING (char []) –
256 символов в кодировке UTF-8 (512 байт);
Текст программы строится на основе последовательно- расположенных операторов. В конце оператора с аргументами обяза- тельно ставится символ «;».
Операторы языка программирования Техно-ST могут быть сим- вольными (« == », « < », « > », « =< » и т.д.) и строковые. Поддержива- ются все виды операторов-условий, -циклов. Пример:
Оператор IF
1   2   3   4   5   6   7   8   9

IF VAR_002 < 2 THEN
VAR_000 = 200;
ELSIF VAR_002 < 1 THEN
VAR_000 = 500;
ELSE
VAR_000 = 300;
END_IF;
Оператор CASE
CASE VAR_000 + 4 OF
0 .. 2 : VAR_001 = 200;
3, 4, 5 : VAR_001 = 500;
END_CASE;
Оператор WHILE
WHILE VAR_000 > 2 DO
VAR_000 = VAR_000 - 1;
VAR_001 = VAR_001 + 2;
END_WHILE;
Оператор FOR
FOR VAR_000 = 10 TO 20 DO
VAR_001 = VAR_001 + 2;
END_FOR;

45 из 137
В качестве локальной переменной может использоваться массив, одномерный или многомерный. Для инициализации одномерного мас- сива, необходимо в редакторе локальных переменных в поле «[ ]» по- ставить цифру, соответствующую количеству элементов массива. Для инициализации многомерного массива, количество элементов (размер- ность) указывается цифрами через запятую. Пример:
Использование одномерного массива
FOR a = 0 TO 3 DO // Цикл
FOR i = 0 TO 3 DO // Цикл
IF Xi[i] > Xi[i+1] THEN // Условие var1 = Xi[i];
Xi[i] = Xi[i+1];
Xi[i+1] = var1;
END_IF;
END_FOR;
END_FOR;
Дополнительная информация содержится в руководстве пользова- теля ИС по адресу: «TRACE MODE 6.06.2 : Программирование алго- ритмов : Описание языка Техно ST».
3.5.
Язык программирования «Техно LD»
Язык программирования LD (Ladder diagram) – язык построе- ния лестничных диаграмм. Он исторически образовался при необ- ходимости программирования работы релейной автоматики. LD- программа состоит из последовательно выполняемых функцио- нальных блоков. Изначально библиотеки LD-блоков формирова- лись контактами (разомкнутый, замкнутый и т.д.). Модифициро- ванный язык программирования «Техно LD» содержит в собствен- ной библиотеке также функциональные LD-блоки.
Размещение LD-блоков выполняется в рабочей области, каж- дый из них подключается выводами к шине. В составе LD- программ используются две основные шины и вспомогательные.
На основные шины замыкаются все блоки LD-программы, на вспо- могательные шины могут замыкаться выводы блоков расположен- ные один над другим. Размещение блоков в рабочей области вы- полняется указанным ранее методом «Drag and Drop» из библиоте- ки блоков.
Отладка и запуск на выполнение LD-программ выполняется аналогичным другим программам образом.

46 из 137
Дополнительная информация содержится в руководстве поль- зователя ИС по адресу: «TRACE MODE 6.06.2 : Программирование алгоритмов : Редактирование LD-программ».
3.6.
Создание пользовательских функциональных блоков
При отсутствии необходимого функционального блока требуется создать новую функцию. Эта процедура выполняется в навигаторе ком- понента «Программа». Функции будет присвоено название
«FUNCTION» с текущим порядковым номером. Её можно переимено- вать, выполнив двойное нажатие ЛК мыши на названии. Название функции будет в дальнейшем присвоено функциональному блоку в пользовательской библиотеке.
Для того чтобы новый функциональный блок имел входы и выхо- ды, необходимо задать аргументы функции. Аргументы типа Input определяют входы блока, а аргументы типа Output – его выходы. Коли- чество аргументов типа Input и Output определяет количество входов и выходов функционального блока.
Тело функции может быть запрограммировано на любом из пред- лагаемых языков программирования (рисунок 3.3). Вызов диалогового окна для выбора языка программирования выполняется нажатие ЛК мыши на названии новой функции. Сменить язык программирования можно посредством команды «Очистить тело функции», как это было описано ранее.
Пусть в качестве нового функционального блока будет выполнена программа, описанная в предыдущем параграфе, которая несёт в себе функцию «Y = (X + 3)
2
».
Описанный пример должен выглядеть в ИС следующим образом (рисунок 3.7). В структуре компонента «Програм- ма» представлена функция, аргументы и переменные данной функции.
Названия аргументов и функции отображаются на FBD-блоке. Блок также представлен в библиотеке FBD-блоков в группе «Пользователь- ские». Позиционирование нового блока выполняется указанным ранее методом «Drag and Drop». Стоит отметить, что созданные таким обра- зом функциональные блоки могут быть также использованы в LD- программах.