Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы к экзамену по АСУП / АСУП. Конспект лекций.doc
Скачиваний:
75
Добавлен:
02.03.2016
Размер:
3.45 Mб
Скачать

Модификаторы Техно il

Модификаторы Техно IL – это литеры N, C и X, которые могут быть приписаны справа к имени ряда операторов. Модификатор N обозначает логическое отрицание операнда.  Например, инструкция AND a интерпретируется как result = result AND a, а инструкция ANDN a интерпретируется как result = result AND NOT a. Для операторов JMP, CAL и RET: модификатор C обозначает, что инструкция выполняется в том случае, если результат предыдущей операции сравнения истинен; модификатор X обозначает, что инструкция выполняется в том случае, если result = TRUE.

Примеры IL-инструкций

ADD VAR_000 2.6 

LT VAR_000 VAR_001

JMPC label1     

GT VAR_001 20

JMPC label2     

LD 278         

label1: CAL FUNCTION_000(VAR_000, VAR_001)

label2: ST VAR_001

Лекция 14

Техно SFC

Язык Техно SFC – это графический язык. Он позволяет создавать программы в виде алгоритма, состоящего из SFC-шагов и SFC-переходов. Для SFC-шагов задаются выполняемые действия, для SFC-переходов – условия переходов между шагами, поэтому SFC-переходы также называется SFC-условиями. Для перехода от одного шага к другому SFC-условие, действующее на этом переходе, должно быть истинным (т.е. возвращать TRUE или 1). Вид программы в SFC-редакторе показан на рисунке.

Техно LD

Техно LD – язык контактно-релейных схем или язык лестничных диаграмм. Последнее название происходит из-за сходства графического представления программы с садовой лестницей. LD-программа представляет собой диаграмму последовательно выполняемых функциональных блоков.

Функциональный блок – это графическое изображение вызова встроенной функции Техно LD (LD-блока), функции (функции-блока), определенной пользователем, или FBD-блока. Над блоком выводится имя связанной переменной (например, my_var). Связанной переменной называется переменная, от значения которой зависит выполняемое блоком действие или значение которой устанавливается в процессе выполняемого блоком действия. Связанная переменная задается пользователем.  Если связанная переменная не задана, над блоком отображаются три звездочки. В качестве изображения блока используется обозначение выполняемой этим блоком функции (например, |/| и | |). Отрезок слева обозначает вход блока, отрезок справа – выход. Все LD-блоки имеют один вход и один выход. Под блоком выводится его номер и, после двоеточия, номер следующего выполняемого блока. Номера блоков задаются последовательно при их размещении в рабочем поле редактора; номера следующих выполняемых блоков определяются автоматически при размещении других блоков и соединении входов и выходов блоков (образовании диаграммы). На блоке, который выполняется первым в программе, после его номера отображается символ В; на блоке, который выполняется последним, – символ Е.

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

Шины изображаются на диаграмме в виде вертикальных линий. В Техно LD используются две основные шины (левая и правая) и вспомогательные шины. Между основными шинами размещаются все функциональные блоки LD-программы; на вспомогательные шины могут замыкаться выходы блоков, расположенных один над другим. 

Шины имеют следующее назначение: значение левой основной шины всегда равно 1 (аналог положительной шины питания); значение правой основной шины и вспомогательной шины формируется как логическая сумма (OR) значений выходов блоков, связанных с этой шиной.

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

Для создания LD-программы и подключения ее к проекту нужно выполнить следующие операции:

  • разместить необходимые функциональные блоки в рабочем поле LD-редактора;

  • задать необходимые связи (образовать LD-диаграмму);

  • задать аргументы, переменные и константы программы;

  • привязать входы/выходы LD-диаграммы к аргументам, переменным и константам программы и задать связанные переменные;

  • скомпилировать программу.

Функциональные блоки Техно-LD

Контакты

Разомкнутый  контакт | |

Если var <> 0 и in <> 0, то out = 1.

Если var <> 0, а in = 0, то out = 0.

Если var = 0, то out = 0. 

Замкнутый  контакт |/|

Если var = 0, а in <> 0, то out = 1.

Если var = 0 и in = 0, то out = 0.

Если var <> 0, то out = 0. 

Контакт  по положительному переходу |P|

Если in<>0, а var меняет свое значение с 0 на любое ненулевое, то на один (следующий) такт пересчета out=1. Во всех остальных случаях out=0.

Контакт  по отрицательному переходу |N|

Если in<>0, а var меняет свое значение с любого ненулевого на 0, то на один (следующий) такт пересчета out=1. Во всех остальных случаях out=0.

Катушки

Катушка  ( )

Если in<>0, var=out=1; если in=0, var=out=0. 

Инверсная  катушка (/)

Если in<>0, var=out=0; если in=0, var=out=1.

Катушка  установки (S)

Связанная переменная var принимает значение 1 при подаче на вход любого ненулевого значения. В дальнейшем var не зависит от значения входа. При этом во всех случаях out = 1.

Катушка  сброса (R)

Связанная переменная var принимает значение 0 при подаче на вход любого ненулевого значения. В дальнейшем var не зависит от значения входа. При этом во всех случаях out = 1.

Катушка  положительного перехода (P)

Если значение входа изменяется с 0 на любое ненулевое, то на один (следующий) такт пересчета var=1. При этом если in<>0, out=1; если in=0, out=0.

Катушка  отрицательного перехода (N)

Если значение входа изменяется с любого ненулевого на 0, то на один (следующий) такт пересчета var=1. При этом если in<>0, out=1; если in=0, out=0.

Лекция 15

Техно FBD

Техно FDB – язык фукнциональных блоков. FBD-программа представляет собой цепочку (диаграмму) последовательно выполняемых функциональных блоков. Функциональный блок – это графическое изображение вызова встроенной функции Техно FBD (FBD-блока) или функции (функции-блока), определенной пользователем. Вид FBD-блока показан на следующем рисунке.

В верхней части блока выводится обозначение функции, выполняемой блоком (X && Y на рисунке). Именованные отрезки слева (X и Y), обозначают входы блока (аргументы, переменные или константы функции). Отрезок без имени слева обозначает вход, управляющий выполнением блока (в дальнейшем – вход RUN). Блок выполняется, если RUN=0 (значение по умолчанию).

Отрезки, примыкающие к блоку справа, обозначают выходы блока (возвращаемые функцией значения).

В нижней части блока выводится его номер и, после двоеточия, номер следующего выполняемого блока (2:1 на рисунке). Номера блоков задаются последовательно при их размещении в рабочем поле редактора; номера следующих выполняемых блоков определяются автоматически при соединении входов и выходов блоков (образовании диаграммы). На блоке, который выполняется первым в программе, после его номера отображается символ В; на блоке, который выполняется последним, – символ Е.

Для создания FBD-программы и подключения ее к проекту нужно выполнить следующие операции:

  • разместить необходимые функциональные блоки в рабочем поле FBD-редактора;

  • соединить нужные входы и выходы блоков, образовав единую диаграмму;

  • задать аргументы, переменные и константы программы;

  • привязать входы/выходы FBD-диаграммы к аргументам, переменным и константам программы;

  • скомпилировать программу.

Функциональные блоки Техно-FBD

Логические

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

НЕ (!X)

ИЛИ  (X || Y)

И  (X && Y)

Четыре НЕ (!)

Логическое  сложение четырех элементов (||)

Логическое  умножение четырех элементов (&&)

Побитовые

Побитовое  НЕ (~X)

Побитовое  ИЛИ (X  | Y)

Побитовое  И (X & Y)

Побитовое  исключающее ИЛИ (X ^ Y)

Сдвиг  влево (X << Y) Блок смещает значение входа X влево на число разрядов, заданное значением входа Y. Справа число дополняется нулевыми разрядами.

Сдвиг  вправо (X >> Y) Блок смещает значение входа X вправо на число разрядов, заданное значением входа Y. Слева число дополняется нулевыми разрядами.

Циклический  сдвиг влево (X ROL Y) Блок смещает значение входа X влево на число разрядов, заданное значением входа Y. Справа число дополняется разрядами, которые при сдвиге "выбывают" слева.

Циклический  сдвиг вправо (X ROR Y) Блок смещает значение входа X вправо на число разрядов, заданное значением входа Y. Слева число дополняется разрядами, которые при сдвиге "выбывают" справа.

Упаковка  битов (PB) Блок формирует значение битов выхода OB по значению соответствующих входов. При ненулевом значении входа соответствующий ему бит выхода равен 1, в противном случае – 0.

Распаковка  битов (UPB) Значения выходов этого блока равны значениям соответствующих битов младшего байта значения входа INB.

Упаковка  байтов (WHL) Младший байт выхода W этого блока равен значению младшего байта входа LB, старший байт выхода W равен значению младшего байта входа HB.

Распаковка  байтов (HLW) Значение выхода LB данного блока равно значению младшего байта входа INW, значение выхода HB – значению старшего байта входа INW.

Упаковка  слов (DHL) Младшее слово выхода D этого блока равно значению младшего слова входа LW, старшее слово выхода D равно значению младшего слова входа HW.

Распаковка  слов (HLD) Значение выхода LW этого блока равно значению младшего слова входа IND, значение выхода HW – значению старшего слова входа IND.

Чтение  бита (TEST) Этот блок передает на выход значение одного из битов значения входа IN. Номер передаваемого бита задает вход NB.

Установка  бита (SB) Данный блок модифицирует значение входа IN, устанавливая в 1 один из его битов, и передает модифицированное значение на выход O. Вход NB задает номер изменяемого бита.

Сброс  бита (RB) Данный блок модифицирует значение входа IN, устанавливая в 0 один из его битов, и передает модифицированное значение на выход O. Вход NB задает номер изменяемого бита.

Арифметические

Сложение  двух элементов (X+Y)

Сложение  четырех элементов (A+B+C+D)

Вычитание  (X-Y)

Умножение  (X*Y)

Деление  (X/Y)

Остаток  от деления (X%Y)

Возведение  в степень (X**Y)

Абсолютное  значение (ABS)

Инверсия  знака (-X)

Целая  часть (FLOOR)

Обратная  величина (1/X)

Квадратный  корень (SQRT)

Возведение  в квадрат (X**2)

Сумма  квадратов (HYPOT)

Масштабирование  (K*X+C)

Тригонометрические

Функции этой группы интерпретируют значение углового аргумента как угол в радианах.

Синус  (SIN)

Косинус  (COS)

Тангенс  (TAN)

Арксинус  (ASIN)

Арккосинус  (ACOS)

Арктангенс  (ATAN)

Арктангенс  отношения (_ATAN)

Преобразование  полярных координат в декартовы (PDT)

Алгебраические

Экспонента  (EXP)

Натуральный  логарифм (LN)

Десятичный  логарифм (LOG)

Квадратный  трехчлен (POL) Q = K2*INP2 + K1*INP + ADD

Статистика  (STAT) Этот блок определяет характеристики сигнала, поданного на вход INP. При CLR=0 на выходе MIN формируется минимальное значение анализируемого сигнала, на выходе MAX – максимальное, на выходе AVR – среднее. Значение выхода SUM увеличивается на величину входа INP на каждом такте пересчете блока. При подаче на вход CLR значения, отличного от 0, на всех выходах устанавливается значение, поданное на вход INP.

Перевод  в проценты (t%) Блок вычисляет отношение входной величины (INP) к заданному диапазону (в процентах).

Перевод  из процентов (f%) Блок вычисляет значение, заданное в процентах по отношению к установленному диапазону. Значение входа IN% задается в процентах.

Среднее  по трем точкам (AVR3) Q = (IN1 + IN2 + IN3)/3. Значение неопределенного входа принимается равным нулю.

Среднее  по восьми точкам (AVR8)

Скользящее  среднее (AVRT) Этот блок вычисляет среднее значение входа IN за четыре последних такта пересчета.

Определенный  интеграл (INTG) Если CLR=0, то считается интеграл. При подаче на вход CLR отличного от нуля значения процесс интегрирования прерывается.

Производная  по двум точкам (DIFF)

Производная  по трем точкам (DF3)

Вторая  производная (DDF)

Округление  (NDGT) На выходе Q формируется округленное значение входа INP. Значение входа NDG задает точность округления.

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

Функции сравнения

 Равенство  (==)

Неравенство  (<>)

Больше  (>)

Меньше  (<)

Больше  или равно (>=)

Меньше  или равно (<=)

Равенство  нулю (==0)

Неравенство  нулю (<>0)

Знаковая  функция (SIGN)

Управление  по астрономическому времени (ALARM) Данный блок формирует на выходе 1 при совпадении текущего астрономического времени с временем, заданным входами блока. Единица на выходе удерживается в течение одной секунды, затем выход обнуляется. Вход MON задает номер месяца, DAY – день месяца, DOF – день недели (1 - 7, первый день недели - воскресенье), H – часы, M – минуты и S – секунды. Если хотя бы один из этих параметров не соответствует текущему астрономическому времени,  Q0 = 0. При формировании выходного сигнала неопределенные входы, а также нулевые значения входов не учитываются.

 

Функции выбора

Выбор  из двух (SEL) SEL = INk , (k = 0,1), если IG = k.

Выбор  максимального (MAX)

Выбор  минимального (MIN)

Ограничение  (LIMIT) Этот блок клиппирует входной сигнал, если его значение выходит за границы заданного диапазона. 

Выбор  из трех (MUX) Q = INk , (k = 0,1,2), если NUM = k.

Выбор  из семи (MUX7) Q = INk , (k = 0,1…6), если NUM = k.

Интервал  (NLIM) NL = 1, если INP > MAX (на вход INP подается анализируемое значение); NL = 0, если MIN <= INP <= MAX; NL = 2, если INP < MIN.

Запаздывание  (LTN) Данный блок реализует звено чистого запаздывания: Q0i = INPi; Q1i = INPi-1; Q2i = INPi-2; Q3i = INPi-3.

Предсказание  (FRWD) Этот блок реализует функцию экстраполяции входного значения по первой и второй производным. Выходу Q присваивается предполагаемое значение входа INP на следующем такте пересчета.

Управление  по интервалу (<>F) Данный блок позволяет формировать произвольные значения в зависимости от интервала, в который попадает анализируемое значение, поданное на вход INP. Если INP < MIN, то Q = I<<. Если MIN <= INP <= MAX, то Q = <I< . Если INP > MAX, то Q = <<I.

Измерение  по трем точкам (VTR) Алгоритм расчёта данного блока позводляет формировать плавно без скачка среднее значение по трём входам.