Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Шапориной, СРВ, Лабы.doc
Скачиваний:
136
Добавлен:
10.02.2016
Размер:
1.11 Mб
Скачать

«Работа в режиме симуляции»

Цель работы: Научиться работать в режиме off-line (режим симуляции)

Задание на лабораторную работу: Повторить лабораторную работу №2 в режиме симуляции.

Ход работы

1. Создаём новый проект. Выбираем ILC 430 и выше.

2. В Bus Configuration выбираем вкладку Communication, а в ней Simulation.

3. Из Device catalog выбрать Phoenix Contact -> IL -> Bus Coupler - > IBS IL 24 BK T\U. Далее выбрать нужно количество входов и выходов из папок I\O analog, I\O digital, аналоговые и цифровые соответственно.

4. Создаем проект в IEC Programming.

5. Всем созданным переменным в программе присваивается тип переменных – VAR_GLOBAL_PG и сохраняются в папке default по умолчанию.

6. В окне Process data присваиваем переменным входы и выходы с правого окошка.

7. Загружаем проект и стартуем. Внизу, в панели задач, появится программа EasySim. Открыв её можно включать и выключать входы и выходы.

ЛАБОРАТОРНАЯ РАБОТА №4

«Создание функций»

Цель работы: Научиться создавать и использовать функции.

Задание на лабораторную работу: На основе минимизации булевых функций создать программу где, функции решаються в FU, а результат в главном окне main.

Ход работы:

1. Открываем новый проект. (online или offline режимы).

2. Так же как и функциональный блок, создаём функцию. Созданная функция должна вернуть значение в main.

Выбор варианта задания:

№ вар

Функция №1

Функция №2

1.

Y = “1” (1, 3, 7, 9, 11, 12, 15).

Y = “0” (0, 2, 8, 9, 10, 13, 15).

2.

Y = “0” (0, 1, 5, 6, 10, 13, 14).

Y = “1” (1, 2, 4, 6, 9, 13, 15).

3.

Y = “1” (0, 3, 5, 7, 11, 12, 14).

Y = “0” (1, 3, 4, 7, 11, 13, 15).

4.

Y = “0” (0, 1, 2, 4, 10, 13, 15).

Y = “1” (1, 2, 3, 9, 10, 11, 12).

5.

Y = “1” (1, 2, 7, 8, 10, 11, 15).

Y = “1” (1, 6, 7, 8, 10, 12, 13).

6.

Y = “1” (0, 2, 3, 4, 6, 14, 15 ).

Y = “0” (0, 3, 3, 5, 6, 13, 14 ).

7.

Y = “0” (2, 5, 6, 8, 9, 10, 13).

Y = “1” (2, 4, 7, 8, 9, 11, 14).

8.

Y = “0” (4, 6, 7, 9, 11, 13, 15).

Y = “0” (2, 3, 8, 10, 12, 13, 14).

9.

Y = “1” (2, 3, 5, 6, 11, 13, 14).

Y = “1” (0, 3, 4, 6, 9, 10, 15).

10.

Y = “0” (4, 7, 8, 10, 12, 13, 15).

Y = “0” (1, 2, 3, 6, 7, 9, 11).

ЛАБОРАТОРНАЯ РАБОТА №5

«ЗНАКОМСТВО С ЯЗЫКАМИ ПРОГРАММИРОВАНИЯ IEC 61131-3».

Цель работы: Научиться создавать и использовать функциональные блоки.

Краткие теоретические сведения:

В стандарт IEC 61131-3 входит 5 языков программирования: LD, FBD, IL, SFC, ST.

Рис. 1.1 IL - Список инструкций

Рис. 1.2 ST - Структурный текст

Рис. 1.3 FBD – Диаграммы функциональных блоков

Рис. 1.4 SFC - Язык последовательных функциональных схем

Рис. 1.5 LD – релейных диаграмм.

1.1 Язык программирования LD:

Базовые элементы языка LD: базовыми элементами являются катушки и контакты. Контакт передаёт состояние горизонтальной связи левой стороны горизонтальной связи правой стороны. Это состояние – результат булевой операции И. Контакты бывают нормально разомкнуты и нормально замкнутые.

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

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

Рис.1.1.1 Поле для редактирования элементов языка.

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

В инвертированных катушках состояние левой связи копируется к правой связи. Инвертированное состояние левой связи копируется к связанной булевой переменной. Если левая связь находится в состоянии OFF, правая связь будет также в состоянии OFF и связанная переменная будет в состоянии ON.

В установленных катушках состояние левой связи копируется к правой связи. Связанная булева переменная устанавливается в состоянии ON, если левая связь находится в состоянии ON, иначе она остаётся неизменной. Связанная булева переменная может быть сброшена с катушкой сброса.

В катушках сброса состояние левой связи копируется к правой связи. Связанная булева переменная устанавливается в состоянии OFF, если левая связь находится в состоянии ON, иначе она остаётся неизменной. Связанная булева переменная может быть установлена с катушкой установленной.

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

Рис. 1.1.2 Применение функций и функциональных блоков в LD

1.2 Язык программирования IL.

Проведём аналогию между языками IL и FBD. Пример логического сложения и умножения показаны ниже.

Ld I_xInput1

AndN I_xInput2

Or I_xInput3

St Q_xOutput1

Операторы языка IL

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

LD – загрузка данных в аккумулятор

ST – сохранение/ вывод результатов работы в переменную

Для любых числовых типов:

ADD – сложение

SUB - вычитание

MUL - умножение

DIV – деление

Для битовых типов данных – Логические операторы

AND – Логическое И

OR – Логическое ИЛИ

XOR – Исключающее ИЛИ

NOT – Инверсия

Для числовых и битовых типов данных:

GT – больше чем…

GE – больше либо равно

EQ - равенство

NE – не равно

LE – меньше либо равно

LT – меньше чем…

Для булевых типов данных:

S – установка значений

R – сброс значений

А также могут использоваться в программе:

JMP – прыжок

RET – возвращает значения

CAL – вызов функций и функциональных блоков

) – закрывает выражения

Примеры программирования на языке IL:

IL

FBD

E1 * E2 = (E1 + E2)

LdN I_xInput1

AndN I_xInput2

And( I_xInput3

Not

Or I_xInput4

)

St Q_xOutput1

Ld iMin

Limit iQuantity, iMax

St iCorrection

Ld wMin

Word_To_Int

Limit iQuantity, iMax

St iCorrection

Синтаксис вызова функциональных блоков

Ld I_xInput1

St TON_Signal.IN

Ld tDelay

St TON_Signal.PT

Cal TON_Signal

Ld TON_Signal.Q

St Q_xOutput1

Ld TON_Signal.ET

St tSequence

Синтаксис операторов JUMP и RETURN

Ld iRawsize

GT iMax

JmpC TooGreat

Ld iRawsize

LT iMin

JmpC TooSmall

Ret

Ld iMax

St iRawsize

Ret

Ld iMin

St iRawsize

1.3 Язык программирования ST.

Базовые структуры языка ST представлены в таблице 1.3.1

Таблица 1.3.1 Элементы языка ST.

Объявления, присвоения, операторы

Q_xAccess1 := False;

Q_xAccess2 := I_xInput2 & Not I_xInput4;

Условия

If I_xInput1 & I_xInput2 Then

Q_xAccess1 := True;

ElsIf I_xAccess2 & I_xAccess3 Then

Q_xAccess2 := True;

End_If;

Вызов функций и аргументы

iCorrected := Limit(iMin, iBasis, iMax);

Вызов функциональных блоков и аргументы

CTU_Access(CU := xPulse,

PV := iMaxvalue,

RESET := xStop);

iDisplay := CTU_Access.QV;

xFull := CTU_Access.Q;

Циклы

Repeat

iLoop := iLoop + 1;

Until iLoop = 100

End_Repeat;

Присвоение значений и операторы. Логическое выражение на языке ST и FBD

ST

FBD

Q_xOutput1 := I_xInput1 & Not I_xInput2

Or I_xInput3;

Вызов функций. Синтаксис: <Переменная> := <Имя функции (аргументы)>

Например: iCorrection := Limit(iMin,iMeasuredvalue,iMax);

Может использоваться функция как аргумент другой функции:

iCorrection := Limit(iMin,Word_To_Int(wRawsize),iMax);

Это выражение можно изобразить на языке FBD и выглядит оно следующим образом:

Рис. 1.3.1 Пример функции в функции

Вызов функционального блока. Приведём пример вызова функционального блока TON.

На языке ST можно вызвать двумя способами:

Первый способ:

TON_Signal(IN := I_xInput,

PT := tDelay);

Q_xOutput := TON_Signal.Q;

tSequence := TON_Signal.ET;

Второй способ:

TON_Signal.IN := I_xInput,;

TON_Signal.PT := tDelay;

TON_Signal();

Q_xOutput := TON_Signal.Q;

tSequence := TON_Signal.ET;

Язык ST имеет элементы высокоуровневого языка программирования:

  1. Условия – конструкция IF расширенная и упрощенная

If I_xSensor1 & Not I_xSensor2 Then

(* Instructions 1 *)

ElsIf I_xSensor2 & Not I_xSensor1 Then

(* Instructions 2 *)

Else

If iMeasuredvalue < 100 Then

(* Instructions 3 *)

ElsIf iMeasuredvalue > 100 Then

(* Instructions 4 *)

End_If;

End_If;

If (* Boolean condition *) Then

(* Instructions *)

End_If;

2.Оператор выбор – CASE

Case iProcesssize Of

7 : (* Instructions 1 *)

-2..1 : (* Instructions 2 *)

2, 4 : (* Instructions 3 *)

8..16,

20..30 : (* Instructions 4 *)

Else

(* Instructions 5 *)

End_Case;

Case iProcessstep Of

0 : (* Initialize *)

If xInit_completed Then iProcessstep := 10;

End_If;

10 : (* Execute Prozess 1 *)

If xProcess1_completed Then iProcessstep := 20;

End_If;

20 : (* Execute Prozess 2 *)

If xProcess2_completed Then iProcessstep := 30;

End_If;

(* etc. *)

500 : (* Exceptionalhandling *)

iProcessstep := 0;

End_Case;

  1. Циклы – FOR, REPEAT, WHILE

Синтаксис цикла FOR:

For iIndex := 1 To 20 By 1 Do

(* The following instructions are executed with *)

(* the values 1 to 20 for the variable iIndex *)

If arrMachine[iIndex].iTemp >= iLimitvalue Then

arrMachine[iIndex].iBroken := True;

xAlarm := True;

Exit;

End_If;

End_For;

Синтаксис циклов REPEAT/ WHILE

REPEAT

WHILE

Repeat

iIndex := iIndex + 10;

Until

iIndex >= iLimit

End_Repeat;

While

iIndex >= iLimit

Do

iIndex := iIndex + 10;

End_While;

Задание на лабораторную работу:

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

Задания

LD

FBD

IL

ST

Fu_XOR 3

+

+

Fu_Kod

+

+

Fu_light

+

+

Fb_TTrigger

+

+

Fb_TimeDelay

+

+

Pg_Lock

+

Примечание:

  1. Fu_XOR 3 – Создать функцию которая будет выполнять действия исключающего ИЛИ.

  2. Fu_Kod - Создать функцию кодового замка из лабораторной работы №2.

  3. Fu_light – Управление освещением в длинном коридоре.

  4. Fb_TTrigger – Создать функциональный блок, который будет работать как Т триггер.

  5. Fb_TimeDelay - Создать функциональный блок, который будет выводить индикацию 2х выходов в режиме мигания.

  6. Pg_Lock – Сейфовый замок.

Ход работы:

1. Создаём проект на 430 ПЛК, включаем симуляцию. Подключение устройств INTERBUS произвести тогда, когда будет окончательно определено количество входов и выходов.

2. В Logic POUs вставить группу с названием FB_Group.

2.1 Вставить функциональные блоки с названиями: Fb_TTrigger_XX, Fb_TimeDelay_XX, Fb_TrafficLight_XX. Где ХХ – название языка на котором написан блок. Например: Fb_TTrigger_LD, Fb_TrafficLight_SFC, Fb_TimeDelay_LD_FBD.

3. В Logic POUs вставить группу с названием FU_Group.

3.1 Вставить функции с названиями: Fu_XOR 3_ХХ, Fu_Kod_ХХ. Где ХХ – название языка на котором написана функция. Например: Fu_XOR 3_LD, Fu_Kod_IL.

4. В каждом функциональном блоке и функции есть таблица переменных. Именно с таблицы переменных начинаем писать программу.

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

Рис.1.3.2 Таблица переменных

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

5. Открыв свойства Main, переименовать его и дать название CALL_FB_FU. Вынести на рабочее поле все функциональные блоки и функции.

Посчитать количество входных и выходных переменных. Подключить устройства INTERBUS.

Запустить режим симуляции.

Требования к содержанию протокола:

1.Титульный лист с указанным номером лабораторной работы и темой.

2.Задание к лабораторной работе.

3.Выбор варианта.

4.Подробное описание хода выполнения работы, выбранных блоков и обоснование своего выбора.

5.Описание и иллюстрация правильно работающих программ.

6.Выводы.

ЛАБОРАТОРНАЯ РАБОТА №6

“ЗНАКОМСТВО С ЯЗЫКАМИ ПРОГРАММИРОВАНИЯ IEC 61131-3. ЯЗЫК ПРОГРАММИРОВАНИЯ SFC”

Цель работы: Ознакомиться с основами программирования на языке SFC.

Краткие теоретические сведения:

Базовые структуры языка – Шаг – Действие – Переход.

Рис. 1 Базовые структуры

В дереве проекта кроме основного рабочего пространства для программирования языка SFC есть ещё две папки: Transitions – переходы, папка где собраны каждая программа переходов в отдельности; Actions – действия, папка где расположены модули программ для выполняемых действий.

Пример дерева проекта показан на рисунке ниже.

Рис. 2 Дерево проекта

Базовые элементы:

Шаг. Стандартный шаг имеет по умолчанию значение флага. Начальный шаг всегда имеет инициализирующее значение. Шаг может иметь значение прыжка на другой шаг и шаг может быть конечным. Над шагом можно написать комментарий для быстрого определения значения шага.

Рис. 3. Значения шага.

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

Действие. Блок действия может быть двух типов: Переменной и детальным действием. Если действие является переменной, т.е. булевым параметром – то оно изображается красным цветом. Если действие является детальным, то оно отображается зелёным цветом.

Рис.4. Действия двух типов

Детальное действие может быть написано на любом языке кроме SFC. Также действие может иметь свой идентификатор. По умолчанию стоит идентификатор N – не запоминаемое, т.е. действие активно столько сколько активен шаг. В иных случаях могут быть использованы и другие идентификаторы представленные в таблице 1.1:

Таблица 1.1

Значение

Описание

S

Set

This action is continued until it is explicitly reset (even if the corresponding step becomes inactive).

R

reset

Terminates the execution of action previously started with character S.

L

time limited

After activating the corresponding step, the action is executed for the set time or until step becomes inactive.

D

time delayed

Delay starts when step becomes active. After a set time has

passed, the action is executed until step is deactivated. If the step becomes inactive, before the set time has passed, the action is not executed.

P

pulse

Starts when step becomes active/inactive and is executed once.

SD

stored+

time delayed

The action is executed until reset, but only starts after

time delay has passed. Even if the step is active for less a time than the time delay.

DS

time delayed+ stored

The action is executed until reset, but only starts after

time delay has passed. Unlike with the previous character, this does not happen if the step becomes inactive before time delay has passed.

SL

stored+ time limited

The action is executed for the set time, even if the step is active for a shorter time. The action can be reset with the character R.

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

Задание на лабораторную работу:

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

1. Перекрёсток с мигающим (желтым) режимом. Автомобильный и пешеходный светофор.

2. Перекрёсток Т-образный. Автомобильный и пешеходный светофор.

3. Перекрёсток с трамвайными путями. Автомобильный и трамвайный светофор.

4. Перекрёсток с железнодорожным переездом. Автомобильный и Ж\Д светофор.

5. Перекрёсток с круговым движением. 3 съезда.

6. Перекрёсток с мигающим (желтым) режимом. Автомобильный светофор.

Ход работы:

Создание светофора

  1. Создать Функциональный блок, который имеет 4 входных параметра и 3 выходных параметра.

Рис.5. Функциональный блок светофора

  1. Таблица переменных выглядит следующем образом:

Рис. 1.2 Таблица переменных для светофора

  1. Светофор на языке SFC показан ниже на рисунке.

Рис. 6. Светофор на языке SFC

  1. Переходы представляют собой блок TON, где

- первый входной параметр это имя шага;

- второй входной параметр это имя входа ФБ;

- выходной параметр это имя перехода.

Рис. 7. Пример перехода

Требования к содержанию протокола:

1.Титульный лист с указанным номером лабораторной работы и темой.

2.Задание к лабораторной работе.

3.Выбор варианта.

4.Подробное описание хода выполнения работы, выбранных блоков и обоснование своего выбора.

5.Описание и иллюстрация правильно работающих программ.

6.Выводы.