TON - реализует функцию таймера на включение временной задержки.



Если входной параметр IN изменяется от False к True, включение задерживается на интервал времени указанный на входе PT. После истечения времени на входе PT, значение True отображается на выходе Q. Время, которое уже прошло указано на выходе ET.

Примечание: вход IN и выход OUT могут иметь отрицательные значения.

 

Таблица 3.2 Описание параметров функции TON

Параметр Тип данных Описание
IN BOOL Если на вход поступило True то элемент начинает работу.
PT TIME Текущий интервал для временной задержки
Q BOOL TRUE если IN = TRUE и ET >= PT FALSE если IN = FALSE и ET <PT
ET TIME Прошедший интервал времени

 

Временная диаграмма для блока TON изображена на рисунке 3.2.

 

Рис.3.2 Временная диаграмма TON

 

TOF - реализует функцию таймера на выключение временной задержки.

Если входной параметр IN изменяется от True к False, выключение задерживается на интервал времени указанный на входе PT. После того как время входа PT истекло, значение False отображается на выходе Q. Время, которое уже прошло указано на выходе ET.

Примечание: вход IN и выход OUT могут иметь отрицательные значения.

 

Таблица 3.3 Описание параметров функции TOF

Параметр Тип данных Описание
IN BOOL Если поступило True таймер РТ включается.
PT TIME Текущий интервал для временной задержки
Q BOOL TRUE если IN = TRUE и ET <PT FALSE если IN = FALSE и ET >= PT
ET TIME Прошедший интервал времени

 

Временная диаграмма для блока TOF изображена на рисунке 3.3.

 

Рис.3.3 Временная диаграмма TOF

 

Создание и использование аналоговых входов и выходов. Чтобы просмотреть значения аналогового модуля необходимо создать переменную. Задать переменной имя, а в поле I\O address указать адрес %IW0; тип данных переменной WORD. Ниже на рисунке показано соединение переменной аналогового входа и переменной аналогового выхода.

 

Рис. 3.4 Изображение аналоговых сигналов

 

Пример решения задачи с одним выходом показан на рисунке 3.5.

Рис 3.5 Пример индикации одного выхода

 

Ход работы:

Запускаем PC WORX. Меню File – New Project… - ILC1xx – ILC130ETH.

Создаём функциональный блок (ФБ): правой кнопкой мыши щёлкаем на папке Logical POUs – Insert – Function Block (рис. 3.6).

 

Рис. 3.6 Вставка ФБ

 

Задаём ему имя и указываем какой язык будет использоваться  - FBD (рис. 3.7).

 

Рис. 3.7 Меню ФБ

 

В main ФБ решаем задание, указывая в таблице переменных входы и выходы. А в главном окне вызываем ФБ и подключаем входы и выходы.

 

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

1. Создать свой функциональный блок, который будет осуществлять индикацию четырёх выходов. В главном окне МЭК программирования использовать 5 входных сигнала, подключаемых к своему функциональному блоку, с разными режимами индикации.

2. Используя потенциометр, подключённый к аналоговому модулю, задействовать выходную индикацию. Использовать значения потенциометра 1, 3, 5, 7, 9. Алгоритм индикации выходов (Q1, Q2, Q3, Q4) выбирается по номеру бригады. В таблице указаны единицей выходы, которые должны гореть.

 

Таблица 3.4 Выбор варианта

              Значения потенциометра № вар 1 3 5 7 9
1 0001 0011 0101 1101 1001
2 1011 1000 0000 0010 0110
3 0111 1010 0100 1100 1110
4 1111 0000 0110 0010 1101
5 0100 0011 1011 1110 0001
6 0101 0111 1000 1010 1111
7 1100 0000 0111 1001 0010
8 0100 0011 1011 110 1110
9 1111 0001 0101 1101 0110
10 1000 0010 1001 0111 1010
11 0110 0100 1001 0111 1111
12 0101 1011 1110 0001 0110

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

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

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

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

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

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

6. Выводы.

Контрольные вопросы:

1. Создание функционального блока?

2. Каково назначение элемента SEL?

3. В чём различие между элементами TOF и TON?

4. Какие параметры содержит элемент AND, OR? Таблицы истинности булевых функций.

5. Порядок загрузки программы в память контроллера?

6. Запуск и отладка программы?

7. Как работает аналоговый модуль?

 

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

«РАБОТА В РЕЖИМЕ СИМУЛЯЦИИ»

Цель работы: Научиться работать в режиме 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;

 

3. Циклы – 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. Функциональный блок светофора

 

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

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

 

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

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

 

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

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

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

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

 

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

 

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

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

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

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

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

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

6.Выводы.

 


Дата добавления: 2018-08-06; просмотров: 5693; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!