Е0011 синтаксическая ошибка trace mode

Лабораторная
работа №3

Тема:
Программирование
на языках
Texno ST и Texno FBD.

Цель
работы: познакомиться с языками
Texno ST и Texno FBD среды Trace Mode, реализовать
систему АСУ ТП с использованием
программной обработки.

Задание:

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

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

3. Добавить FBD
диаграмму, генерирующую уровень
продукта в емкости. Если период
генерации меньше 10, то программа
должна установить период равный 10.
Программа должна возвращать
отмасштабированный сигнал, то есть
значения должны изменяться в заданном
диапазоне.

4. Добавить программу
ST, которая проверяет значение стоимости
и расхода и производит расчеты. Если
значение стоимости или расхода меньше
1, то устанавливает соответствующий
параметр равным 1. Производит расчет
суммарного расхода продукта и суммарной
стоимости израсходованного продукта.

Примечания:

1. У всех каналов
и у программ должен быть установлен при
редактировании одинаковый период 1— 3
секунды.

2.
Вычислять суммарный расход следует по
формуле:

Суммарный_расход
= Предыдущий_расход+Расход*Период_Обработки,
где

Суммарный_расход
— аргумент программы возвращающий
значение суммарного расхода входному
значению канала, который передает
значение суммарного расхода;

Предыдущий_расход
— глобальная переменная, содержащая
значение суммарного расхода, вычисленное
при предыдущем вызове программы;

Период_Обработки
— аргумент привязанный к аргументу
период пересчета канала, который передает
значение расхода.

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

Теория

Язык Texno ST

В алфавит
языка входят:

1. прописные и
строчные буквы латинского алфавита;

2. цифры;

3.
специальные знаки: + — * / < = > ! : & | ^

% ( ) [ ] , ; #.

Идентификаторы
могут состоять из прописных и строчных
букв латинского алфавита, знака
подчеркивания «_», цифр. Идентификаторы
не
чувствительны
к
регистру.

Для
данного
языка
характерны
ключевые
слова:
and, array, bool, break, by, byte, case, constant, continue, date,
date_and_time, dint, do, dt, dword, else, elsif, end_case, end_for,
end_function, end_function_block, end_if, end_program, end_repeat,
end_struct, end_type, end_var, end_while, exit, false, for, function,
function_block, goto, handle, if, int, lreal, mod, not, of, or,
program, real, repeat, return, rol, ror, shl, shr, sint, string,
struct, time, time_of_day, to, tod, true, type, udint, uint, until,
usint, var, var_arg, var_global, var_inout, var_input, var_output,
while, word, xor.

В качестве
разделителей используются лексемы: +
— * ** / < <= <> << > >= >> !
!= = == : := & | ^ ∼
% ( ) [ ] . .. , ;.

Строчный комментарий
начинается с «//» и продолжается до конца
строки. Блочный комментарий начинается
с «/*» и продолжается до «*/».

В данном языке
вводятся понятие выражения и предложения.

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

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

В конце предложения
обязательно должен стоять символ «;».
Исключением является определение
переменной.

Программа на языке
Texno ST можно представить в виде структуры:

PROGRAM

{описание
аргументов}

{список предложений}

END_PROGRAM

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

Язык Texno ST позволяет
создавать константы. Рассмотрим их
представление. Можно создать числовые
и строковые константы.

Целочисленная
десятичная константа начинается с
цифры, отличной от нуля, после которой
располагаются любые цифры. Можно привести
следующие примеры целочисленных
десятичных констант: 123, 350, 498.

Двоичная целочисленная
константа начинается с префикса «2#»,
после которого приводится двоичное
представление целого числа. Примеры:
2#1011, 2#0111, 2#1001.

Восьмеричные
целочисленные константы начинаются с
префикса «8#», после которого записывается
восьмеричное представление числа.
Примеры: 8#145, 8#0277, 8#756.

Шестнадцатеричные
целочисленные константы начинаются с
префикса «16#», после которого приводятся
шестнадцатеричные представления чисел.

При записи
шестнадцатеричного представления числа
можно использовать как строчные символы
a…f, так и прописные A… F. Примеры: 16#149,
16#A145E, 16#a145e.

Вещественная
константа состоит из целой и дробной
части. Допустимо наличие только
целочисленной или дробной части. Примеры:
.123, 0.456, 489. . Возможно представление в
формате с плавающей точкой (используется
префикс е или E с указанием порядка).
Примеры: 1.23E-6, 6.7504E4, 6.798e-5.

Частным случаем
числовой константы является временной
интервал, дата, время дня. Временной
интервал записывается в виде:
t#<дни>d<часы>h<минуты>m<секунды>s<миллисекунды>ms

Возможна также
запись в виде:

time#<дни>d<часы>h<минуты>m<секунды>s<миллисекунды>ms

Любая составляющая
в приведенных представлениях временного
интервала может быть опущена. Временной
интервал равной 2 часам, 31 минута, 25
секундам и 10 миллисекунд может быть
записан как

t#2h31m25s10ms
или
в
виде
time#2h31m25s10ms.

Дата записывается
в виде d#<год>-<месяц>-<день>,
возможна также запись в виде
date#<год>-<месяц>-<день>. 25 сентября
2001 года может быть записано в виде
d#2001-9-2001 или date#2001-9-2001.

Время дня можно
записать в формате tod#<час>:<минута>:<секунда>
или time_of_day#<час>:<минута>:<секунда>.
Время 19 часов 15 минут 42 секунды может
быть записано как tod#19:15:42, так и
time_of_day#19:15:42.

Константа «дата
и время» может быть записана как
dt#<год>-<месяц>-<день>-<час>:<минута>:<секунда>,
так и
date_and_time#<год>-<месяц>-<день>-<час>:<минута>:<секунда>.
К примеру, 12 февраля 1995 года 13 часов 47
минут и 13 секунд можно записать в виде
dt#1995-2-12-13:47:13 или date_and_time#1995-2-12-13:47:13.

Помимо числовых
констант часто используются строковые
константы, которые представляют собой
набор символов заключенных в одинарные
или двойные кавычки. Пример: “Первая
строка символов”, `Вторая строка
символов`. В строках не могут присутствовать
управляющие символы, кавычки и символ
$. Для размещения в строке произвольного
символа, включая управляющие, используется
механизм эскейп-последовательностей.

Данный механизм
позволяет разместить в строке следующие
последовательности:

$r— возврат каретки;

$n— перевод строки;

$t— табуляция;

$uХХХХ— UNICODE символ,
где ХХХХ— шестнадцатеричный символ;

$х— символ х («х»—
любой символ).

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

1. имена констант;

2. имена переменных;

3. имена массивов
с указанием индекса отдельного элемента;

4. вызов
пользовательских функций;

5. вызов библиотечных
функций;

6. выражения,
заключенные в скобки;

7. имена элементов
структур.

Арифметические
операторы приведены в таблице 2.6,
побитовые— в таблице 2.7, операторы
сравнения— в таблице 2.8, логические—
в таблице 2.9.

Ход работы

1.
Создание проекта. Сохраните проект,
созданный при выполнении работы 2 под
новым именем. Удалите генератор,
привязанный к каналу Уровень. Выделите
объект экран и вызовите контекстное
меню. Выберите редактировать. В открывшемся
окне редактирования канала выберите
период равным 1, единицу измерения—
сек. Аналогично измените период пересчета
канала, который хранит уровень продукта
в емкости.

2.
Создание необходимых каналов. Добавьте
каналы хранящие значение стоимости
продукта, расхода продукта, периода
генерации. Для лучшего восприятия
назовем канал, хранящий стоимость
продукта как стоимость, хранящий расход
продукта— расход, период генерации—
период генерации. Установите тип каждого
канала— Input (см. работу 1). Добавьте
каналы, хранящие результаты вычислений:
суммарный расход продукта, суммарная
стоимость продукта. Для удобства
восприятия назовем канал, хранящий
суммарную стоимость продукта, как
суммарная стоимость, а суммарный расход
продукта— суммарный расход. Установите
тип указанных каналов— Intput. Для всех
каналов установим одинаковый период
пересчета значения. Для этого вызовите
окно редактирования для каждого канала.
В поле период установите необходимый
период пересчета 1 и единицу измерения—
секунду (сек).

3.
Создание кнопок для задания необходимых
параметров. Щелкните левой кнопкой мыши
по иконке
.
Если данной иконки нет панели инструментов,
то щелкните правой клавишей мыши по
одной из иконок:

или
.
Разместите кнопки на экране. Для этого
задайте противоположные углы кнопок
щелчком левой кнопки мыши (рис. 1). Для
каждой кнопки откройте окно свойств. В
поле текст введите назначение кнопки.
Так, для кнопки, которая устанавливает
период генерации можно ввести «Установить
период», устанавливает расход продукта—
«установить расход», устанавливает
стоимость продукта— «Установить
стоимость», к примеру. Перейдите на
закладку действия
.
Выделите строку mousePressed и вызовите
контекстное меню (рис. 2). Выберите в
появившемся контекстном меню строку
передать значение. В появившемся поле
тип передачи установите ввести и
передать. В поле результат произведите
привязку к входному значению канала,
которому будет передаваться вводимое
значение (пример настройки кнопки—
рис. 3). В результате привязки будут
созданы четыре аргумента в таблице окна
свойств привязки (рис. 4).

Рис. 1
Размещение кнопок

Рис. 2 Создание
события

Рис. 3 Настройка
события

Рис. 4 Атрибуты для
ввода данных

4.
Создание объектов текст. Для вывода
значений, хранимых в ряде каналов,
создайте объекты текст. Пример создания
объектов текст изображен на рис. 5.
Объекты текст, расположенные слева,
выводят подсказку (где какой параметр
выведен), а справа — значения, хранимые
каналами. Привязку объектов текст,
расположенных в правом столбце,
производите к реальным значениям
соответствующих каналов. Для привязки,
при необходимости, создайте дополнительные
аргументы, как показано на рис. 6.

Рис. 5
Создание объектов текст

Рис. 6
Атрибуты экрана

5. Произведите
расчет множителя K и смещения С.

Масштабирование
сигнала в FBD программе будет производиться
по формуле:

Y = K·X + C, где

Y— результат
преобразования;

Х— входное значение
канала;

К— множитель;

C— смещение.

FBD блоки,
производящие генерацию сигнала возвращают
сигнал, изменяющийся в диапазоне [-1;
+1]. Найдите значение множителя K и смещения
Z, которые позволят получить требуемый
диапазон изменения результата
преобразования (диапазон сигнала).

Пример: необходимо
обеспечить диапазон сигнала [0; 1].
Множитель К составит 0,5, смещение Z—
0,5.

6.
Создание FBD диаграммы. Выделите группу
каналы RTM узла и вызовите контекстное
меню. В появившемся меню выберите создать
компонент. Среди предложенных вариантов
выберите программа (рис. 7). Выделив
созданную программу и, щелкнув левой
клавишей мыши, можете изменить имя
программы, например, на «синусоида».

Выделите
созданный объект-программу и вызовите
контекстное меню. В появившемся меню
выберите редактировать. Откроется окно,
аналогичное редактированию канала
float. В поле период выберите 1, выберите
единицу измерения— секунду (сек). После
настройки периода пересчета окно
редактирования канала можно закрыть.
Двойным щелчком левой клавиши мыши по
созданной программе или вызвав контекстное
меню и выбрав строчку редактировать
шаблон, вызовите окно для создания (или
редактирования) программы. Откроется
окно, представленное на рис. 8.

Рис. 7
Создание объекта программа

В
структуре программы выделите строчку
аргументы. Заполните появившуюся
таблицу. Каждая строка— аргумент
программы. Установите тип In для аргументов,
которые будут передавать данные в
программу, Out — которые будут передавать
данные из программы, In/Out — которые будут
передавать в программу и из нее. Пример
создания аргументов программы для
генерирования синусоидального сигнала
приведен на рис. 9.

Рис. 8
Окно редактирования шаблона программы

Рис. 9
Атрибуты программы на языке Texno FBD

Выделите
строку программа# в структуре программы.
Среди предложенных языков программирования
выберите FBD диаграмму (рис. 10).

Рис. 10
Выбор языка

Щелкните
левой клавишей мыши по иконке или
выберите строку палитра FBD блоков в меню
вид, если палитра FBD блоков (рис. 11) не
открыта.

Рис. 11
Окно выбора FBD блоков

Перейдите
на закладку сравнение. Нажмите левую
клавишу мыши на блоке больше или равно.
Переместите его на рабочее поле и
отпустите клавишу мыши. Аналогично
разместите на рабочем поле FBD блоки
(рис. 12): выбор из двух (закладка выбор),
синусоидальный сигнал (закладка),
масштабирование (закладка арифметические).

Произведите
привязку блоков между собой. Для привязки
выхода одного блока к входу другого
наведите курсор мыши на соответствующий
выход (вход) и нажмите левую клавишу
мыши. Не отпуская левой клавиши мыши,
наведите курсор на необходимый вход
(выход) и отпустите левую клавишу мыши.
Для привязки аргумента программы к
соответствующему входу(выходу) выделите
соответствующий вход (выход) и вызовите
контекстное меню. В появившемся меню
выберите привязать. Среди предлагаемых
аргументов выберите необходимый (рис.
12). Для создания константы выберите
вход, вызовите контекстное меню и
выберите привязать. В появившемся поле
вместо выбора аргумента программы
введите константу. На вход IN2 блока
больше или равно и IN0 блока выбора из
двух следует подавать константу 10,
согласно заданию. Вход IN2 блока больше
или равно и IN0 блока выбора из двух
следует привязать к аргументу, который
передает период генерации в программу.
Вычисленные ранее значения констант K
и С следует подать на соответствующие
входы блока масштабирование. Программа,
генерирующая сигнал, изменяющийся в
диапазоне от [0;1] примет вид, изображенный
на рис. 12. После создание программы
проверьте ее. Для этого щелкните левой
клавишей мыши по иконке «компиляция»
.
В окне «сообщения» будет выведен
результат компиляции. Если окно
«сообщения» закрыто, то следует щелкнуть
по иконке

или выбрать в меню «вид» окно сообщения.
При отсутствии ошибок будет написано:
«Программа#1.tms compiled successfully», к примеру.
При наличии ошибки будет написано:
«Е0011 Синтаксическая ошибка», к примеру.

Рис. 12
Программа на языке Texno FBD

7.
Создание ST программы. Создайте объект
программа в группе каналы RTM узла.
Название программы можно изменить на
«обработка», к примеру. Установите
период пересчета равным 1 секунде.
Откройте программу двойным щелчком
левой клавиши мыши по созданному объекту
программы. В структуре программы выберите
аргументы. Создайте аргументы, которые
будут передавать в программу расход
продукта, стоимость продукта, период
пересчета каналов, а также аргументы,
которые будут возвращать из программы
суммарный расход продукта и суммарную
стоимость всего израсходованного
продукта (рис. 13).

Рис. 13
Аргументы программы на языке Texno ST

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

Рис. 14
Глобальная переменная

Выделите
строку программа#. В открывшемся окне
наберите STпрограмму. При указанных выше
именах аргументов и глобальной переменной
текст программы примет вид, указанный
на рис. 15.

Рис. 15
Программа на языке Texno ST

Проверьте
программу, щелкнув левой клавишей мыши
по иконке
.
8. Запустите проект. Запустите проект,
аналогично предыдущим работам (см.
работу 1). Пример результата запуска
приведен на рис. 16

Рис. 16
Пример результата запуска проекта

Лабораторная
работа №3

Тема:
Программирование
на языках
Texno ST и Texno FBD.

Цель
работы: познакомиться с языками
Texno ST и Texno FBD среды Trace Mode, реализовать
систему АСУ ТП с использованием
программной обработки.

Задание:

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

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

3. Добавить FBD
диаграмму, генерирующую уровень
продукта в емкости. Если период
генерации меньше 10, то программа
должна установить период равный 10.
Программа должна возвращать
отмасштабированный сигнал, то есть
значения должны изменяться в заданном
диапазоне.

4. Добавить программу
ST, которая проверяет значение стоимости
и расхода и производит расчеты. Если
значение стоимости или расхода меньше
1, то устанавливает соответствующий
параметр равным 1. Производит расчет
суммарного расхода продукта и суммарной
стоимости израсходованного продукта.

Примечания:

1. У всех каналов
и у программ должен быть установлен при
редактировании одинаковый период 1— 3
секунды.

2.
Вычислять суммарный расход следует по
формуле:

Суммарный_расход
= Предыдущий_расход+Расход*Период_Обработки,
где

Суммарный_расход
— аргумент программы возвращающий
значение суммарного расхода входному
значению канала, который передает
значение суммарного расхода;

Предыдущий_расход
— глобальная переменная, содержащая
значение суммарного расхода, вычисленное
при предыдущем вызове программы;

Период_Обработки
— аргумент привязанный к аргументу
период пересчета канала, который передает
значение расхода.

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

Теория

Язык Texno ST

В алфавит
языка входят:

1. прописные и
строчные буквы латинского алфавита;

2. цифры;

3.
специальные знаки: + — * / < = > ! : & | ^

% ( ) [ ] , ; #.

Идентификаторы
могут состоять из прописных и строчных
букв латинского алфавита, знака
подчеркивания «_», цифр. Идентификаторы
не
чувствительны
к
регистру.

Для
данного
языка
характерны
ключевые
слова:
and, array, bool, break, by, byte, case, constant, continue, date,
date_and_time, dint, do, dt, dword, else, elsif, end_case, end_for,
end_function, end_function_block, end_if, end_program, end_repeat,
end_struct, end_type, end_var, end_while, exit, false, for, function,
function_block, goto, handle, if, int, lreal, mod, not, of, or,
program, real, repeat, return, rol, ror, shl, shr, sint, string,
struct, time, time_of_day, to, tod, true, type, udint, uint, until,
usint, var, var_arg, var_global, var_inout, var_input, var_output,
while, word, xor.

В качестве
разделителей используются лексемы: +
— * ** / < <= <> << > >= >> !
!= = == : := & | ^ ∼
% ( ) [ ] . .. , ;.

Строчный комментарий
начинается с «//» и продолжается до конца
строки. Блочный комментарий начинается
с «/*» и продолжается до «*/».

В данном языке
вводятся понятие выражения и предложения.

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

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

В конце предложения
обязательно должен стоять символ «;».
Исключением является определение
переменной.

Программа на языке
Texno ST можно представить в виде структуры:

PROGRAM

{описание
аргументов}

{список предложений}

END_PROGRAM

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

Язык Texno ST позволяет
создавать константы. Рассмотрим их
представление. Можно создать числовые
и строковые константы.

Целочисленная
десятичная константа начинается с
цифры, отличной от нуля, после которой
располагаются любые цифры. Можно привести
следующие примеры целочисленных
десятичных констант: 123, 350, 498.

Двоичная целочисленная
константа начинается с префикса «2#»,
после которого приводится двоичное
представление целого числа. Примеры:
2#1011, 2#0111, 2#1001.

Восьмеричные
целочисленные константы начинаются с
префикса «8#», после которого записывается
восьмеричное представление числа.
Примеры: 8#145, 8#0277, 8#756.

Шестнадцатеричные
целочисленные константы начинаются с
префикса «16#», после которого приводятся
шестнадцатеричные представления чисел.

При записи
шестнадцатеричного представления числа
можно использовать как строчные символы
a…f, так и прописные A… F. Примеры: 16#149,
16#A145E, 16#a145e.

Вещественная
константа состоит из целой и дробной
части. Допустимо наличие только
целочисленной или дробной части. Примеры:
.123, 0.456, 489. . Возможно представление в
формате с плавающей точкой (используется
префикс е или E с указанием порядка).
Примеры: 1.23E-6, 6.7504E4, 6.798e-5.

Частным случаем
числовой константы является временной
интервал, дата, время дня. Временной
интервал записывается в виде:
t#<дни>d<часы>h<минуты>m<секунды>s<миллисекунды>ms

Возможна также
запись в виде:

time#<дни>d<часы>h<минуты>m<секунды>s<миллисекунды>ms

Любая составляющая
в приведенных представлениях временного
интервала может быть опущена. Временной
интервал равной 2 часам, 31 минута, 25
секундам и 10 миллисекунд может быть
записан как

t#2h31m25s10ms
или
в
виде
time#2h31m25s10ms.

Дата записывается
в виде d#<год>-<месяц>-<день>,
возможна также запись в виде
date#<год>-<месяц>-<день>. 25 сентября
2001 года может быть записано в виде
d#2001-9-2001 или date#2001-9-2001.

Время дня можно
записать в формате tod#<час>:<минута>:<секунда>
или time_of_day#<час>:<минута>:<секунда>.
Время 19 часов 15 минут 42 секунды может
быть записано как tod#19:15:42, так и
time_of_day#19:15:42.

Константа «дата
и время» может быть записана как
dt#<год>-<месяц>-<день>-<час>:<минута>:<секунда>,
так и
date_and_time#<год>-<месяц>-<день>-<час>:<минута>:<секунда>.
К примеру, 12 февраля 1995 года 13 часов 47
минут и 13 секунд можно записать в виде
dt#1995-2-12-13:47:13 или date_and_time#1995-2-12-13:47:13.

Помимо числовых
констант часто используются строковые
константы, которые представляют собой
набор символов заключенных в одинарные
или двойные кавычки. Пример: “Первая
строка символов”, `Вторая строка
символов`. В строках не могут присутствовать
управляющие символы, кавычки и символ
$. Для размещения в строке произвольного
символа, включая управляющие, используется
механизм эскейп-последовательностей.

Данный механизм
позволяет разместить в строке следующие
последовательности:

$r— возврат каретки;

$n— перевод строки;

$t— табуляция;

$uХХХХ— UNICODE символ,
где ХХХХ— шестнадцатеричный символ;

$х— символ х («х»—
любой символ).

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

1. имена констант;

2. имена переменных;

3. имена массивов
с указанием индекса отдельного элемента;

4. вызов
пользовательских функций;

5. вызов библиотечных
функций;

6. выражения,
заключенные в скобки;

7. имена элементов
структур.

Арифметические
операторы приведены в таблице 2.6,
побитовые— в таблице 2.7, операторы
сравнения— в таблице 2.8, логические—
в таблице 2.9.

Ход работы

1.
Создание проекта. Сохраните проект,
созданный при выполнении работы 2 под
новым именем. Удалите генератор,
привязанный к каналу Уровень. Выделите
объект экран и вызовите контекстное
меню. Выберите редактировать. В открывшемся
окне редактирования канала выберите
период равным 1, единицу измерения—
сек. Аналогично измените период пересчета
канала, который хранит уровень продукта
в емкости.

2.
Создание необходимых каналов. Добавьте
каналы хранящие значение стоимости
продукта, расхода продукта, периода
генерации. Для лучшего восприятия
назовем канал, хранящий стоимость
продукта как стоимость, хранящий расход
продукта— расход, период генерации—
период генерации. Установите тип каждого
канала— Input (см. работу 1). Добавьте
каналы, хранящие результаты вычислений:
суммарный расход продукта, суммарная
стоимость продукта. Для удобства
восприятия назовем канал, хранящий
суммарную стоимость продукта, как
суммарная стоимость, а суммарный расход
продукта— суммарный расход. Установите
тип указанных каналов— Intput. Для всех
каналов установим одинаковый период
пересчета значения. Для этого вызовите
окно редактирования для каждого канала.
В поле период установите необходимый
период пересчета 1 и единицу измерения—
секунду (сек).

3.
Создание кнопок для задания необходимых
параметров. Щелкните левой кнопкой мыши
по иконке
.
Если данной иконки нет панели инструментов,
то щелкните правой клавишей мыши по
одной из иконок:

или
.
Разместите кнопки на экране. Для этого
задайте противоположные углы кнопок
щелчком левой кнопки мыши (рис. 1). Для
каждой кнопки откройте окно свойств. В
поле текст введите назначение кнопки.
Так, для кнопки, которая устанавливает
период генерации можно ввести «Установить
период», устанавливает расход продукта—
«установить расход», устанавливает
стоимость продукта— «Установить
стоимость», к примеру. Перейдите на
закладку действия
.
Выделите строку mousePressed и вызовите
контекстное меню (рис. 2). Выберите в
появившемся контекстном меню строку
передать значение. В появившемся поле
тип передачи установите ввести и
передать. В поле результат произведите
привязку к входному значению канала,
которому будет передаваться вводимое
значение (пример настройки кнопки—
рис. 3). В результате привязки будут
созданы четыре аргумента в таблице окна
свойств привязки (рис. 4).

Рис. 1
Размещение кнопок

Рис. 2 Создание
события

Рис. 3 Настройка
события

Рис. 4 Атрибуты для
ввода данных

4.
Создание объектов текст. Для вывода
значений, хранимых в ряде каналов,
создайте объекты текст. Пример создания
объектов текст изображен на рис. 5.
Объекты текст, расположенные слева,
выводят подсказку (где какой параметр
выведен), а справа — значения, хранимые
каналами. Привязку объектов текст,
расположенных в правом столбце,
производите к реальным значениям
соответствующих каналов. Для привязки,
при необходимости, создайте дополнительные
аргументы, как показано на рис. 6.

Рис. 5
Создание объектов текст

Рис. 6
Атрибуты экрана

5. Произведите
расчет множителя K и смещения С.

Масштабирование
сигнала в FBD программе будет производиться
по формуле:

Y = K·X + C, где

Y— результат
преобразования;

Х— входное значение
канала;

К— множитель;

C— смещение.

FBD блоки,
производящие генерацию сигнала возвращают
сигнал, изменяющийся в диапазоне [-1;
+1]. Найдите значение множителя K и смещения
Z, которые позволят получить требуемый
диапазон изменения результата
преобразования (диапазон сигнала).

Пример: необходимо
обеспечить диапазон сигнала [0; 1].
Множитель К составит 0,5, смещение Z—
0,5.

6.
Создание FBD диаграммы. Выделите группу
каналы RTM узла и вызовите контекстное
меню. В появившемся меню выберите создать
компонент. Среди предложенных вариантов
выберите программа (рис. 7). Выделив
созданную программу и, щелкнув левой
клавишей мыши, можете изменить имя
программы, например, на «синусоида».

Выделите
созданный объект-программу и вызовите
контекстное меню. В появившемся меню
выберите редактировать. Откроется окно,
аналогичное редактированию канала
float. В поле период выберите 1, выберите
единицу измерения— секунду (сек). После
настройки периода пересчета окно
редактирования канала можно закрыть.
Двойным щелчком левой клавиши мыши по
созданной программе или вызвав контекстное
меню и выбрав строчку редактировать
шаблон, вызовите окно для создания (или
редактирования) программы. Откроется
окно, представленное на рис. 8.

Рис. 7
Создание объекта программа

В
структуре программы выделите строчку
аргументы. Заполните появившуюся
таблицу. Каждая строка— аргумент
программы. Установите тип In для аргументов,
которые будут передавать данные в
программу, Out — которые будут передавать
данные из программы, In/Out — которые будут
передавать в программу и из нее. Пример
создания аргументов программы для
генерирования синусоидального сигнала
приведен на рис. 9.

Рис. 8
Окно редактирования шаблона программы

Рис. 9
Атрибуты программы на языке Texno FBD

Выделите
строку программа# в структуре программы.
Среди предложенных языков программирования
выберите FBD диаграмму (рис. 10).

Рис. 10
Выбор языка

Щелкните
левой клавишей мыши по иконке или
выберите строку палитра FBD блоков в меню
вид, если палитра FBD блоков (рис. 11) не
открыта.

Рис. 11
Окно выбора FBD блоков

Перейдите
на закладку сравнение. Нажмите левую
клавишу мыши на блоке больше или равно.
Переместите его на рабочее поле и
отпустите клавишу мыши. Аналогично
разместите на рабочем поле FBD блоки
(рис. 12): выбор из двух (закладка выбор),
синусоидальный сигнал (закладка),
масштабирование (закладка арифметические).

Произведите
привязку блоков между собой. Для привязки
выхода одного блока к входу другого
наведите курсор мыши на соответствующий
выход (вход) и нажмите левую клавишу
мыши. Не отпуская левой клавиши мыши,
наведите курсор на необходимый вход
(выход) и отпустите левую клавишу мыши.
Для привязки аргумента программы к
соответствующему входу(выходу) выделите
соответствующий вход (выход) и вызовите
контекстное меню. В появившемся меню
выберите привязать. Среди предлагаемых
аргументов выберите необходимый (рис.
12). Для создания константы выберите
вход, вызовите контекстное меню и
выберите привязать. В появившемся поле
вместо выбора аргумента программы
введите константу. На вход IN2 блока
больше или равно и IN0 блока выбора из
двух следует подавать константу 10,
согласно заданию. Вход IN2 блока больше
или равно и IN0 блока выбора из двух
следует привязать к аргументу, который
передает период генерации в программу.
Вычисленные ранее значения констант K
и С следует подать на соответствующие
входы блока масштабирование. Программа,
генерирующая сигнал, изменяющийся в
диапазоне от [0;1] примет вид, изображенный
на рис. 12. После создание программы
проверьте ее. Для этого щелкните левой
клавишей мыши по иконке «компиляция»
.
В окне «сообщения» будет выведен
результат компиляции. Если окно
«сообщения» закрыто, то следует щелкнуть
по иконке

или выбрать в меню «вид» окно сообщения.
При отсутствии ошибок будет написано:
«Программа#1.tms compiled successfully», к примеру.
При наличии ошибки будет написано:
«Е0011 Синтаксическая ошибка», к примеру.

Рис. 12
Программа на языке Texno FBD

7.
Создание ST программы. Создайте объект
программа в группе каналы RTM узла.
Название программы можно изменить на
«обработка», к примеру. Установите
период пересчета равным 1 секунде.
Откройте программу двойным щелчком
левой клавиши мыши по созданному объекту
программы. В структуре программы выберите
аргументы. Создайте аргументы, которые
будут передавать в программу расход
продукта, стоимость продукта, период
пересчета каналов, а также аргументы,
которые будут возвращать из программы
суммарный расход продукта и суммарную
стоимость всего израсходованного
продукта (рис. 13).

Рис. 13
Аргументы программы на языке Texno ST

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

Рис. 14
Глобальная переменная

Выделите
строку программа#. В открывшемся окне
наберите STпрограмму. При указанных выше
именах аргументов и глобальной переменной
текст программы примет вид, указанный
на рис. 15.

Рис. 15
Программа на языке Texno ST

Проверьте
программу, щелкнув левой клавишей мыши
по иконке
.
8. Запустите проект. Запустите проект,
аналогично предыдущим работам (см.
работу 1). Пример результата запуска
приведен на рис. 16

Рис. 16
Пример результата запуска проекта

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Лабораторная
работа №3

Тема:
Программирование
на языках
Texno ST и Texno FBD.

Цель
работы: познакомиться с языками
Texno ST и Texno FBD среды Trace Mode, реализовать
систему АСУ ТП с использованием
программной обработки.

Задание:

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

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

3. Добавить FBD
диаграмму, генерирующую уровень
продукта в емкости. Если период
генерации меньше 10, то программа
должна установить период равный 10.
Программа должна возвращать
отмасштабированный сигнал, то есть
значения должны изменяться в заданном
диапазоне.

4. Добавить программу
ST, которая проверяет значение стоимости
и расхода и производит расчеты. Если
значение стоимости или расхода меньше
1, то устанавливает соответствующий
параметр равным 1. Производит расчет
суммарного расхода продукта и суммарной
стоимости израсходованного продукта.

Примечания:

1. У всех каналов
и у программ должен быть установлен при
редактировании одинаковый период 1— 3
секунды.

2.
Вычислять суммарный расход следует по
формуле:

Суммарный_расход
= Предыдущий_расход+Расход*Период_Обработки,
где

Суммарный_расход
— аргумент программы возвращающий
значение суммарного расхода входному
значению канала, который передает
значение суммарного расхода;

Предыдущий_расход
— глобальная переменная, содержащая
значение суммарного расхода, вычисленное
при предыдущем вызове программы;

Период_Обработки
— аргумент привязанный к аргументу
период пересчета канала, который передает
значение расхода.

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

Теория

Язык Texno ST

В алфавит
языка входят:

1. прописные и
строчные буквы латинского алфавита;

2. цифры;

3.
специальные знаки: + — * / < = > ! : & | ^

% ( ) [ ] , ; #.

Идентификаторы
могут состоять из прописных и строчных
букв латинского алфавита, знака
подчеркивания «_», цифр. Идентификаторы
не
чувствительны
к
регистру.

Для
данного
языка
характерны
ключевые
слова:
and, array, bool, break, by, byte, case, constant, continue, date,
date_and_time, dint, do, dt, dword, else, elsif, end_case, end_for,
end_function, end_function_block, end_if, end_program, end_repeat,
end_struct, end_type, end_var, end_while, exit, false, for, function,
function_block, goto, handle, if, int, lreal, mod, not, of, or,
program, real, repeat, return, rol, ror, shl, shr, sint, string,
struct, time, time_of_day, to, tod, true, type, udint, uint, until,
usint, var, var_arg, var_global, var_inout, var_input, var_output,
while, word, xor.

В качестве
разделителей используются лексемы: +
— * ** / < <= <> << > >= >> !
!= = == : := & | ^ ∼
% ( ) [ ] . .. , ;.

Строчный комментарий
начинается с «//» и продолжается до конца
строки. Блочный комментарий начинается
с «/*» и продолжается до «*/».

В данном языке
вводятся понятие выражения и предложения.

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

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

В конце предложения
обязательно должен стоять символ «;».
Исключением является определение
переменной.

Программа на языке
Texno ST можно представить в виде структуры:

PROGRAM

{описание
аргументов}

{список предложений}

END_PROGRAM

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

Язык Texno ST позволяет
создавать константы. Рассмотрим их
представление. Можно создать числовые
и строковые константы.

Целочисленная
десятичная константа начинается с
цифры, отличной от нуля, после которой
располагаются любые цифры. Можно привести
следующие примеры целочисленных
десятичных констант: 123, 350, 498.

Двоичная целочисленная
константа начинается с префикса «2#»,
после которого приводится двоичное
представление целого числа. Примеры:
2#1011, 2#0111, 2#1001.

Восьмеричные
целочисленные константы начинаются с
префикса «8#», после которого записывается
восьмеричное представление числа.
Примеры: 8#145, 8#0277, 8#756.

Шестнадцатеричные
целочисленные константы начинаются с
префикса «16#», после которого приводятся
шестнадцатеричные представления чисел.

При записи
шестнадцатеричного представления числа
можно использовать как строчные символы
a…f, так и прописные A… F. Примеры: 16#149,
16#A145E, 16#a145e.

Вещественная
константа состоит из целой и дробной
части. Допустимо наличие только
целочисленной или дробной части. Примеры:
.123, 0.456, 489. . Возможно представление в
формате с плавающей точкой (используется
префикс е или E с указанием порядка).
Примеры: 1.23E-6, 6.7504E4, 6.798e-5.

Частным случаем
числовой константы является временной
интервал, дата, время дня. Временной
интервал записывается в виде:
t#<дни>d<часы>h<минуты>m<секунды>s<миллисекунды>ms

Возможна также
запись в виде:

time#<дни>d<часы>h<минуты>m<секунды>s<миллисекунды>ms

Любая составляющая
в приведенных представлениях временного
интервала может быть опущена. Временной
интервал равной 2 часам, 31 минута, 25
секундам и 10 миллисекунд может быть
записан как

t#2h31m25s10ms
или
в
виде
time#2h31m25s10ms.

Дата записывается
в виде d#<год>-<месяц>-<день>,
возможна также запись в виде
date#<год>-<месяц>-<день>. 25 сентября
2001 года может быть записано в виде
d#2001-9-2001 или date#2001-9-2001.

Время дня можно
записать в формате tod#<час>:<минута>:<секунда>
или time_of_day#<час>:<минута>:<секунда>.
Время 19 часов 15 минут 42 секунды может
быть записано как tod#19:15:42, так и
time_of_day#19:15:42.

Константа «дата
и время» может быть записана как
dt#<год>-<месяц>-<день>-<час>:<минута>:<секунда>,
так и
date_and_time#<год>-<месяц>-<день>-<час>:<минута>:<секунда>.
К примеру, 12 февраля 1995 года 13 часов 47
минут и 13 секунд можно записать в виде
dt#1995-2-12-13:47:13 или date_and_time#1995-2-12-13:47:13.

Помимо числовых
констант часто используются строковые
константы, которые представляют собой
набор символов заключенных в одинарные
или двойные кавычки. Пример: “Первая
строка символов”, `Вторая строка
символов`. В строках не могут присутствовать
управляющие символы, кавычки и символ
$. Для размещения в строке произвольного
символа, включая управляющие, используется
механизм эскейп-последовательностей.

Данный механизм
позволяет разместить в строке следующие
последовательности:

$r— возврат каретки;

$n— перевод строки;

$t— табуляция;

$uХХХХ— UNICODE символ,
где ХХХХ— шестнадцатеричный символ;

$х— символ х («х»—
любой символ).

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

1. имена констант;

2. имена переменных;

3. имена массивов
с указанием индекса отдельного элемента;

4. вызов
пользовательских функций;

5. вызов библиотечных
функций;

6. выражения,
заключенные в скобки;

7. имена элементов
структур.

Арифметические
операторы приведены в таблице 2.6,
побитовые— в таблице 2.7, операторы
сравнения— в таблице 2.8, логические—
в таблице 2.9.

Ход работы

1.
Создание проекта. Сохраните проект,
созданный при выполнении работы 2 под
новым именем. Удалите генератор,
привязанный к каналу Уровень. Выделите
объект экран и вызовите контекстное
меню. Выберите редактировать. В открывшемся
окне редактирования канала выберите
период равным 1, единицу измерения—
сек. Аналогично измените период пересчета
канала, который хранит уровень продукта
в емкости.

2.
Создание необходимых каналов. Добавьте
каналы хранящие значение стоимости
продукта, расхода продукта, периода
генерации. Для лучшего восприятия
назовем канал, хранящий стоимость
продукта как стоимость, хранящий расход
продукта— расход, период генерации—
период генерации. Установите тип каждого
канала— Input (см. работу 1). Добавьте
каналы, хранящие результаты вычислений:
суммарный расход продукта, суммарная
стоимость продукта. Для удобства
восприятия назовем канал, хранящий
суммарную стоимость продукта, как
суммарная стоимость, а суммарный расход
продукта— суммарный расход. Установите
тип указанных каналов— Intput. Для всех
каналов установим одинаковый период
пересчета значения. Для этого вызовите
окно редактирования для каждого канала.
В поле период установите необходимый
период пересчета 1 и единицу измерения—
секунду (сек).

3.
Создание кнопок для задания необходимых
параметров. Щелкните левой кнопкой мыши
по иконке
.
Если данной иконки нет панели инструментов,
то щелкните правой клавишей мыши по
одной из иконок:

или
.
Разместите кнопки на экране. Для этого
задайте противоположные углы кнопок
щелчком левой кнопки мыши (рис. 1). Для
каждой кнопки откройте окно свойств. В
поле текст введите назначение кнопки.
Так, для кнопки, которая устанавливает
период генерации можно ввести «Установить
период», устанавливает расход продукта—
«установить расход», устанавливает
стоимость продукта— «Установить
стоимость», к примеру. Перейдите на
закладку действия
.
Выделите строку mousePressed и вызовите
контекстное меню (рис. 2). Выберите в
появившемся контекстном меню строку
передать значение. В появившемся поле
тип передачи установите ввести и
передать. В поле результат произведите
привязку к входному значению канала,
которому будет передаваться вводимое
значение (пример настройки кнопки—
рис. 3). В результате привязки будут
созданы четыре аргумента в таблице окна
свойств привязки (рис. 4).

Рис. 1
Размещение кнопок

Рис. 2 Создание
события

Рис. 3 Настройка
события

Рис. 4 Атрибуты для
ввода данных

4.
Создание объектов текст. Для вывода
значений, хранимых в ряде каналов,
создайте объекты текст. Пример создания
объектов текст изображен на рис. 5.
Объекты текст, расположенные слева,
выводят подсказку (где какой параметр
выведен), а справа — значения, хранимые
каналами. Привязку объектов текст,
расположенных в правом столбце,
производите к реальным значениям
соответствующих каналов. Для привязки,
при необходимости, создайте дополнительные
аргументы, как показано на рис. 6.

Рис. 5
Создание объектов текст

Рис. 6
Атрибуты экрана

5. Произведите
расчет множителя K и смещения С.

Масштабирование
сигнала в FBD программе будет производиться
по формуле:

Y = K·X + C, где

Y— результат
преобразования;

Х— входное значение
канала;

К— множитель;

C— смещение.

FBD блоки,
производящие генерацию сигнала возвращают
сигнал, изменяющийся в диапазоне [-1;
+1]. Найдите значение множителя K и смещения
Z, которые позволят получить требуемый
диапазон изменения результата
преобразования (диапазон сигнала).

Пример: необходимо
обеспечить диапазон сигнала [0; 1].
Множитель К составит 0,5, смещение Z—
0,5.

6.
Создание FBD диаграммы. Выделите группу
каналы RTM узла и вызовите контекстное
меню. В появившемся меню выберите создать
компонент. Среди предложенных вариантов
выберите программа (рис. 7). Выделив
созданную программу и, щелкнув левой
клавишей мыши, можете изменить имя
программы, например, на «синусоида».

Выделите
созданный объект-программу и вызовите
контекстное меню. В появившемся меню
выберите редактировать. Откроется окно,
аналогичное редактированию канала
float. В поле период выберите 1, выберите
единицу измерения— секунду (сек). После
настройки периода пересчета окно
редактирования канала можно закрыть.
Двойным щелчком левой клавиши мыши по
созданной программе или вызвав контекстное
меню и выбрав строчку редактировать
шаблон, вызовите окно для создания (или
редактирования) программы. Откроется
окно, представленное на рис. 8.

Рис. 7
Создание объекта программа

В
структуре программы выделите строчку
аргументы. Заполните появившуюся
таблицу. Каждая строка— аргумент
программы. Установите тип In для аргументов,
которые будут передавать данные в
программу, Out — которые будут передавать
данные из программы, In/Out — которые будут
передавать в программу и из нее. Пример
создания аргументов программы для
генерирования синусоидального сигнала
приведен на рис. 9.

Рис. 8
Окно редактирования шаблона программы

Рис. 9
Атрибуты программы на языке Texno FBD

Выделите
строку программа# в структуре программы.
Среди предложенных языков программирования
выберите FBD диаграмму (рис. 10).

Рис. 10
Выбор языка

Щелкните
левой клавишей мыши по иконке или
выберите строку палитра FBD блоков в меню
вид, если палитра FBD блоков (рис. 11) не
открыта.

Рис. 11
Окно выбора FBD блоков

Перейдите
на закладку сравнение. Нажмите левую
клавишу мыши на блоке больше или равно.
Переместите его на рабочее поле и
отпустите клавишу мыши. Аналогично
разместите на рабочем поле FBD блоки
(рис. 12): выбор из двух (закладка выбор),
синусоидальный сигнал (закладка),
масштабирование (закладка арифметические).

Произведите
привязку блоков между собой. Для привязки
выхода одного блока к входу другого
наведите курсор мыши на соответствующий
выход (вход) и нажмите левую клавишу
мыши. Не отпуская левой клавиши мыши,
наведите курсор на необходимый вход
(выход) и отпустите левую клавишу мыши.
Для привязки аргумента программы к
соответствующему входу(выходу) выделите
соответствующий вход (выход) и вызовите
контекстное меню. В появившемся меню
выберите привязать. Среди предлагаемых
аргументов выберите необходимый (рис.
12). Для создания константы выберите
вход, вызовите контекстное меню и
выберите привязать. В появившемся поле
вместо выбора аргумента программы
введите константу. На вход IN2 блока
больше или равно и IN0 блока выбора из
двух следует подавать константу 10,
согласно заданию. Вход IN2 блока больше
или равно и IN0 блока выбора из двух
следует привязать к аргументу, который
передает период генерации в программу.
Вычисленные ранее значения констант K
и С следует подать на соответствующие
входы блока масштабирование. Программа,
генерирующая сигнал, изменяющийся в
диапазоне от [0;1] примет вид, изображенный
на рис. 12. После создание программы
проверьте ее. Для этого щелкните левой
клавишей мыши по иконке «компиляция»
.
В окне «сообщения» будет выведен
результат компиляции. Если окно
«сообщения» закрыто, то следует щелкнуть
по иконке

или выбрать в меню «вид» окно сообщения.
При отсутствии ошибок будет написано:
«Программа#1.tms compiled successfully», к примеру.
При наличии ошибки будет написано:
«Е0011 Синтаксическая ошибка», к примеру.

Рис. 12
Программа на языке Texno FBD

7.
Создание ST программы. Создайте объект
программа в группе каналы RTM узла.
Название программы можно изменить на
«обработка», к примеру. Установите
период пересчета равным 1 секунде.
Откройте программу двойным щелчком
левой клавиши мыши по созданному объекту
программы. В структуре программы выберите
аргументы. Создайте аргументы, которые
будут передавать в программу расход
продукта, стоимость продукта, период
пересчета каналов, а также аргументы,
которые будут возвращать из программы
суммарный расход продукта и суммарную
стоимость всего израсходованного
продукта (рис. 13).

Рис. 13
Аргументы программы на языке Texno ST

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

Рис. 14
Глобальная переменная

Выделите
строку программа#. В открывшемся окне
наберите STпрограмму. При указанных выше
именах аргументов и глобальной переменной
текст программы примет вид, указанный
на рис. 15.

Рис. 15
Программа на языке Texno ST

Проверьте
программу, щелкнув левой клавишей мыши
по иконке
.
8. Запустите проект. Запустите проект,
аналогично предыдущим работам (см.
работу 1). Пример результата запуска
приведен на рис. 16

Рис. 16
Пример результата запуска проекта

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Trace mode не работает

This is topic Не запускается профайлер in forum Редактор проекта TRACE MODE 6 / at Форум TRACE MODE: техническая поддержка.

To visit this topic, use this URL:

Posted by Alexander Boyko (Участник № / Member № 4325) on :

Добрый день.
Неожиданно (не помню каких-либо серьезных изменений в системе) перестал запускаться профайлер.

Использую последний релиз TM IDE 6.07 на 127 каналов, с соответствующим ключом.

Сохраняю проект для МРВ кнопочкой на панели инструментов, потом нажимаю кнопочку Start Profiler.
При последнем действии ничего не происходит, курсор в часики даже не обращается.

Может где какие логи почитать?

Пробовал сделать переустановку TM в режиме — Repair — не помогло.

Спасибо. Жду Вашего ответа.
Posted by Alexander Boyko (Участник № / Member № 4325) on :

Да, пробовал запускать имеющиеся в релизе проекты-примеры. Результат тот же.
Posted by Alexander Boyko (Участник № / Member № 4325) on :

При попытке вручную запустить профайлер (не уверен, возможно ли это вообще), а именно файлы в папке ..Trace Mode IDE 6rtc.exe и rtmg32.exe получаю сообщение «Точка входа в процедуру ?query_gsm_modem_status@gsm@wdep@@YFHHAAUmodem_status@12@@Z не найдена в библиотеке DLL wdep.dll»
Posted by Alexander Boyko (Участник № / Member № 4325) on :

Проблема решилась сама, когда полностью удалили и установил заново ТМ. Причина данной неприятности так и осталась неизвестной.
Posted by Nicolay B. (Участник № / Member № 4338) on :

Причина в том что нужен SP3 и NET.Framework 3.5.
После их установки запустился и проект в IDE и RTM.
Posted by Svasl (Участник № / Member № 4229) on :

К сожалению да, неуказание таких параметров в документации в разделе «Системные требования» большой минус разработчикам, а для нас потеря времени у заказчика.
Posted by Romсheg (Участник № / Member № 3792) on :

Интересно, это какие именно компоненты ТМ6 требуют .Net 3.5?
Posted by Svasl (Участник № / Member № 4229) on :

Версия 6.07 требует 3.5. Предыдущая версия этого не требовала, вчера наткнулись у заказчика, когда обновили TM.
Posted by stepan (Участник № / Member № 3589) on :

серьезно версия 6.07 требует SP3 в случае WinXP и DotNet Framework 3.5 . что скажет техническая поддержка?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :

Да, требует.
Posted by Abram Shnider (Участник № / Member № 4534) on :

Здравствуйте!
Возникла обозначенная в заголовке проблема.
Опять-таки при невыясненных обстоятельствах и полное удаление и установка не помогли(
Все требования к программному обеспечению соблюдаются (например SP3 и .Net 3.5).
Хотелось бы узнать локализована ли эта проблема и если да, то как с ней бороться?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :

Каким образом Вы запускаете узел под управлением профайлера?
Какие сообщения Вы получаете на экране, в протоколе профайлера и в файле tm6_log.txt?
Posted by Abram Shnider (Участник № / Member № 4534) on :

quote: Отправитель / Originally posted by AdAstra Technical Support:
Каким образом Вы запускаете узел под управлением профайлера?

Узел запускаем следующим образом: выделяем узел, сохраняем для МРВ, после завершения процесса сохранения нажимаем кнопку «Запустить профайлер». После этого видно, что профайлер запустился (мелькнул на панели задач) и сразу исчез.

По второму вопросу отпишусь через минут пять.
Posted by Abram Shnider (Участник № / Member № 4534) on :

quote: Отправитель / Originally posted by AdAstra Technical Support:
Какие сообщения Вы получаете на экране, в протоколе профайлера и в файле tm6_log.txt?

Интересная история. На экране ничего не наблюдается, при этом в файл tm6_log.txt не записывается вообще никаких сообщений
Posted by AdAstra Technical Support (Участник № / Member № 4) on :

Аналогичная проблема озвучена в форуме совсем недавно.
Нам удалось на привезенном из другого города ноутбуке воспроизвести ситуацию.
Конфликт с настройками ОС локализован.
В ближайшем релизе будет введена соответствующая адаптация.
Posted by Abram Shnider (Участник № / Member № 4534) on :

Про ближайший релиз лучше не надо) Этим у Вас занимается другой отдел и не хотелось бы еще и с ними выяснять все сначала.

Не могли бы Вы сформулировать, что требуется поправить в настройках ОС; или выпустить патчик, который данную проблему устранит.

Дело в том, что для работы требуется корректное функционирование профайлера, при этом как можно быстрее.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :

В настройках ОС — слишком глубоко и многосвязно.
Патч ориентирован на текущее состояние кода и потребует достаточно большого набора файлов, которые не имеют отношения к проблеме.
Корректное функционирование профайлера обеспечивается запуском его с командной строки (можно через ярлык) или ручным запуском с поиском фала узла.
Posted by Abram Shnider (Участник № / Member № 4534) on :

Если Вы имеете ввиду запуск через rtc.exe, то дело в том, что он не запускается (как выше и сказано).

Может быть Вы имеете ввиду с каким-нибудь ключем запускать?
Posted by Al1 (Участник № / Member № 2672) on :

Здравствуйте! Перестал запускаться профайлер из интегрированной среды после установки Касперского 2011, даже, если он выключен. Кнопка запуска активна, но реакции нет.
При запуске rtc.exe из каталога ошибка приложения 0xc0000142. Это наблюдалось на машинах и с Windows 7 и с Windows XP. При деинсталяции антивируса этой версии все приходит в норму. Хотелось бы установить причину конфликта.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :

Abram Shnider.
«Если Вы имеете ввиду запуск через rtc.exe, то дело в том, что он не запускается (как выше и сказано). «
Выше сказано:
«. сохраняем для МРВ, после завершения процесса сохранения нажимаем кнопку «Запустить профайлер». «
Мы же говорим о непосредственном запуске rtc.exe.
Он не запускается до вызова узла?

Al1.
0xC0000142
Этот код трактуется как «Ошибка инициализации приложения» по какой-то из следующих причин: «Сбой инициализации библиотеки», возможно также «Повреждение реестра» и «Нарушение прав пользователя».
Какие именно изменения и ограничения вводит в ОС «Касперский», мы сказать не можем — с ним не работаем.
Symantec никаких подобных ограничений не вызывает.
Posted by Abram Shnider (Участник № / Member № 4534) on :

quote: Отправитель / Originally posted by AdAstra Technical Support:
Abram Shnider.
«Если Вы имеете ввиду запуск через rtc.exe, то дело в том, что он не запускается (как выше и сказано). «
Выше сказано:
«. сохраняем для МРВ, после завершения процесса сохранения нажимаем кнопку «Запустить профайлер». «
Мы же говорим о непосредственном запуске rtc.exe.
Он не запускается до вызова узла?

Под выше сказанным я имел ввиду описание запуска профайлера: «После этого видно, что профайлер запустился (мелькнул на панели задач) и сразу исчез. «

Да. Непосредственный запуск ни к чему не приводит, т.е. узел я не имею даже возможности открыть. Профайлер вообще не запускается («видно, что профайлер запустился (мелькнул на панели задач) и сразу исчез. «).

[ 31.01.2011, 16:28: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
Posted by AdAstra Technical Support (Участник № / Member № 4) on :

Прошу прощения за банальность, но наиболее вероятная причина:
rtc.exe не находит или не может запустить какой-то необходимый программный модуль (dll)- модуль отсутствует, поврежден или не соответствует релизу.
Поэтому, видимо, придется повторить инсталляцию IDE (только с обязательным предварительным удалением — деинсталляцией с помощью ОС и удалением содержимого папки IDE, а, возможно, и удалением из реестра упоминаний об Adastra и Trace Mode 6).
Если Вы использовали дополнительные патчи, надо проследить синхронность их модулей.
Posted by Abram Shnider (Участник № / Member № 4534) on :

Дело в том, что полное удаление и переустановка (первое, что было испытано; да и здесь указывалось) ничего не дают. Видимо придется заново инсталлировать Windows XP (ибо похоже на конфликт с ОС).
Posted by Baikal_E (Участник № / Member № 4135) on :

Posted by Baikal_E (Участник № / Member № 4135) on :

Здравсвуйте. Скажите, пожалуйста, с какими антивирусами TM6 работает гарантировано нормально.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :

Мы работаем с Symantec.
Когда-то работали и с Касперским.
Дело, видимо, в настройках самой антивирусной программы.
Posted by Shiryaev (Участник № / Member № 4360) on :

У меня стоит NOD32, пока проблем вроде-бы с этим «чудом» не было, но. все еще впереди.
Posted by Shiryaev (Участник № / Member № 4360) on :

Извиняюсь, если меня кто не правильно понял под «чудом» я подразумевал не nod32!!
Posted by Shiryaev (Участник № / Member № 4360) on :


Posted by Abram Shnider (Участник № / Member № 4534) on :

quote: Отправитель / Originally posted by Shiryaev:
но. все еще впереди.

Аналогично, с NOD32 пока никаких ошибок не наблюдалось.
Posted by Romсheg (Участник № / Member № 3792) on :

У меня стоял Нод32, но меня задолбал его вражеский интерфейс, когда начинаешь сетевые проекты тестировать, убивалось куча времени на расстановку разрешений по узлам. Зачастую проще было выключить сам Но32. Да и тормозил работу общую ПК своей деятельностью. Сейчас перешел на Авиру — уже год как на ней сижу, лучше всех! До этого был опыт работы под Касперским, Симантек, Нод32, Авира. Скажу так: на Касперского и Нод32 — ни за какие деньги меня теперь не пересадишь. Из наилучших решений: Симантек и Авира! Первый — очень удобен для корпоративного использования, второй для индивидуального. Под всеми антивирусами все время работал под ТМ и 5-й и 6-й версии.
Posted by ilovefiniki (Участник № / Member № 4106) on :

Та же проблема. Версия 6.07. Запускаю проект — мелькает на пару секунд rtc в панели и всё, дальше никаких действий. Работать не возможно.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :

Если речь идет о конфликтах с антивирусом, то надо его соответственно настраивать.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :

C бесплатным антивирусом MS конфликтов не возникает.
В силу того, что топик фактически имеет размытую тематику, топик закрывается.


UBB.classic™ 6.7.2

Источник

Trace mode не работает

С RTM/NLL релиза 6.10.2 поставляется 2 патча. Один — для RTM, второй — для NLL. Называются они соответственно. Если установить в RTM патч от NLL произойдет данная ошибка. Необходимо штатно деинсталлировать RTM, инсталлировать заново и установить только патч для RTM.

Особенности коммуникаций узла CONSOLE

При загрузке узла возникает ошибка «-18»

Эта ошибка может означать:
1) не установлен ключ HASP.
2) ключ HASP установлен, но от другого продукта.
3) ключ HASP установлен, но не установлен драйвер ключа.
4) ПО запускается удаленно, например через RDP. Это нарушает лицензионное соглашение. Запустите ПО локально.

Установили HASP-ключ в компьютер, но светодиодный индикатор внутри ключа не горит

Отсутствует драйвер ключа. Скачайте и установите драйвер ключа. Если драйвер ранее устанавливался, штатно деинсталлируйте его и установите актуальный драйвер с нуля.

Где скачать драйвер HASP ключа?

На одном ПК одновременно не работают Инструментальная Среда (зеленый ключ) и Исполнительный Модуль (красный ключ).

Начиная с версии драйверов HASP 8.21 по умолчанию не включена возможность одновременной работы ключей разных цветов. Решения:
— Работать в режиме 1 ключ на 1 ПК
— Использовать драйвер версии 8.15:
http://cloud.adastra.ru/HASP/
— Использовать самый актуальный драйвер: Драйвер Sentinel HASP для Windows. Версия . (интерфейс: консоль):
https://thales-sentinel.ru/helpdesk/download-space/ и установить его, используя команду в командной строке: haspdinst.exe -i -ld

При запуске проекта ошибка «-11»

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

При запуске проект «падает», «зависает».

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

При запуске проекта ошибка «-4»

Выход за пределы лицензионных ограничений. Например в исполнительный модуль на 256 каналов был загружен узел проекта с 300 каналами.

Как узнать сколько в том или ином узле задействовано каналов?

В инструментальной панели ИС есть иконка «Информация о проекте».Если на нее нажать ЛК, появится окно, в котором можно увидеть общее количество «Источников/Приемников» и каналов в проекте, а также количество каналов в каждом узле проекта.Количество каналов в узле обозначено двумя числами, одно из которых в скобках. Первое число — количество каналов, в явном виде созданных проектировщиком. Число в скобках — количество каналов в при загрузке узла (к явным каналам добавляются виртуальные, реализующие связь «аргумент шаблона-удаленный канал*).Именно по этому числу (в скобках) определяется лицензия.

При запуске проекта ошибка «-16»

Проект не соответствует версии. Например проект создан в базовой версии, а запускается в профессиональной.

При запуске проекта ошибка «-8»

Не найдет файл проекта либо один из его компонентов. Убедитесь, что папка с проектом не защищена от записи. Запускайте исполнительный модуль от имени администратора.

Мы приобрели коммерческий продукт, но до сих пор нет прав на запись в другие разделы форума?

Расширение прав не происходит в автоматическом режиме. Для получения возможности писать в новые подразделы форума отредактируйте свой профиль на форуме: Мой профиль — Edit Profile. В строку «Рег. номер любого из продуктов ТМ» введите регистрационный номер зарегистрированного продукта. Лучше — инструментальной среды. После чего напишите письмо на hotline@adastra.ru с просьбой расширить права на форуме, укажите ФИО, название организации и логин на форуме.

Не работает связь между узлами

1) Убедитесь, что релизы обоих узлов синхронны. Все исполнительный модули одного проекта, а также скомпилированные узлы проекта должны быть одного релиза.
2) Всем узлам одного проекта задать один ненулевой Код проекта в свойствах узлов. Убедиться, что в этой локальной сети нет посторонних узлов с тем же Кодом проекта.
3) Существуют проблемы в локальной сети. Обратитесь к своему системному администратору.

Как вывести более 4 символов на экран (в документ и т.д.)?

Необходимо привязать аргумент к текстовому атрибуту канала (например, к Комментарию)

Не происходит вызов шаблона экрана (документа, программы)

Проверьте наличие аргументов у шаблона, см. диагностику argument disabled в файле *.cnv

Не происходит вывод кривой на архивный тренд

Аргумент экрана привязан не к реальному значению канала

Архивные данные не считываются (битый архив)

Наиболее частая причина такого сбоя — это одновременная работа двух мониторов с данным узлом проекта. Архив после этого не восстанавливается.
Такая ситуация может возникнуть, например, при ошибочном повторном запуске одного и того же ярлыка с командной строкой запуска.
Начиная с релиза 6.07.7, такая ситуация блокируется с выдачей соответствующего сообщения.

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

У канала Call вызова экрана поставить галочку отработать и значение по умолчанию 2.

Как в случае необходимости создать конфигурационный файл *.cnf ?

В приложении Блокнот (notepad.exe) создается обычный текстовый файл, ему меняется имя и расширение на TMcom_XX.cnf. Файл должен содержать минимум 3 строки латиницей заглавными буквами:

END_OF_CNF

Полученный файл переносится в скомпилированную папку узла проекта. Файл и используемые с ним ключи подробно описаны в справке:
Приложения -> Задание параметров работы мониторов -> Задание параметров работы мониторов -> Файл CNF

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

Для изменения порядка следования байт в MODBUS RTU используется конфигурационный *.cnf файл. Для примера для FLOAT используется ключ
MDB_FRMT_FLOAT=x,y
. x – номер COM-порта, начиная с 0, y – номер перестановки 0,1,2 или 3. Полное описание есть в справке:
Обмен с контроллерами и УСО -> Обмен по встроенным протоколам -> Обмен по MODBUS (RTU)

Для изменения порядка следования байт в MODBUS TCP в проекте для отдельного Источника/Приемника Modbus в строке IP-адрес через точку с запятой задается ключ
FRMT=SWAPy; y – номер перестановки 0,1,2 или 3. Полное описание есть в справке:
Обмен с контроллерами и УСО -> Обмен по встроенным протоколам -> Обмен по встроенным протоколам по сети (TCP)

Номера перестановки:
0 –> 3-2-1-0
1 –> 0-1-2-3
2 –> 1-0-3-2
3 –> 2-3-0-1 Сообщения / Posts 16212 | Из / From: Россия | IP / IP: IP адрес / IP address |

АдАстра. Техподдержка
Administrator
Участник № / Member № 4
отправлено / posted Обновлено Сообщения / Posts 16212 | Из / From: Россия | IP / IP: IP адрес / IP address |
АдАстра. Техподдержка
Administrator
Участник № / Member № 4
отправлено / posted Обновлено Сообщения / Posts 16212 | Из / From: Россия | IP / IP: IP адрес / IP address |
АдАстра. Техподдержка
Administrator
Участник № / Member № 4
отправлено / posted Обновлено Сообщения / Posts 16212 | Из / From: Россия | IP / IP: IP адрес / IP address |


UBB.classic™ 6.7.2

Источник

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Е0010 ошибка компрессор дэн
  • Е001 ошибка частотника
  • Е001 ошибка форд фокус
  • Е001 ошибка фифа 11

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии