Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.08 Mб
Скачать

«Лабораторна робота №2» «Підключення моделі конвеєра та сцени до codesys. Керування за допомогою віртуального plc через “opc Data Access”»

Мета: Підключення готової сцени до віртуального контролера та його програмування у середовищі CodeSys. Перевірка можливостей та реалізації поєднання моделі конвеєра або автоматичної лінії сцени Factory I/O та запрограмовування контролера в середовищі CodeSys.

Теоретична частина.

У цій лабораторній роботі показано, як використовувати CodeSys разом із Factory I/O через OPC Data Access.

Дотримуючись інструкцій нижче, Ви сторите новий проект CodeSys, налаштуєте його роботу із Factory I/O та створите програму для керування сценою «Sorting by Height (Advanced) scene»

Приклад коду, який використовується в даному посібнику, заснований на рішеннях, знайдених в книзі «Industrial Automation Practices».

УВАГА! Для виконання цієї лабораторної роботи у Вас повинен бути встановлений CODESYS 3.5 SP8

__________________________________________________________

СТВРЕННЯ ТА ПІДГОТОВКА ПРОГРАМНОГО КОДУ

  1. Запустити CodeSys та створити новий проект.

  1. Виберіть Standart Project зі списку шаблонів та вкажіть назву проекту. (наприклад Tutorial). Натисніть ОК.

  1. У вікні Standard Project виберіть пристрій управління CODESYS Control Win V3 (3S - Smart Software Solutions GmbH) та у вікні PLC_PRG мову програмування Structured Text (ST). Натисніть ОК.

  1. Клацніть ПКМ на Application і виберіть пункт Add Object > Global variable List... В списку імен введіть FIO та натисніть конпку Add.

  1. Відкрийте список FIO за допомогою х2 ЛКМ і скопіюйте та вставте наступні глобальні змінні. Ці змінні будуть використовуватись Factori I/O та CodeSys для обміну даними між собою через OPC Data Access (вони є точками входів/виходів).

Global Variables List (I/O)

VAR_GLOBAL

    iAtEntry        : BOOL;

    iLowBox         : BOOL;

    iHighBox        : BOOL;

    iAtTurnEntry    : BOOL;

    iAtLoadPos      : BOOL;

    iAtUnloadPos    : BOOL;

    iAtFront        : BOOL;

    iAtRightEntry   : BOOL;

    iAtLeftEntry    : BOOL;

    iAtRightExit    : BOOL;

    iAtLeftExit     : BOOL;

  

    oFeederConveyor : BOOL;

    oEntryConveyor  : BOOL;

    oLoad           : BOOL;

    oUnload         : BOOL;

    oTurn           : BOOL;

    oLeftConveyor   : BOOL;

    oRightConveyor  : BOOL;

END_VAR

  1. На дереві пристроїв (Drivers Tree) x2 ЛКМ на PLC_PRG (PRG) і скопіюйте наступні змінні. Це змінні, які Ви будете використовувати у Вашій програмі.

Global Variables List (I/O)

PROGRAM PLC_PRG

VAR

    F_AtEntry           : F_TRIG;

    F_AtTurnEntry       : F_TRIG;

    F_AtRightEntry      : F_TRIG;

    F_AtLeftEntry       : F_TRIG;

    F_AtRightExit       : F_TRIG;

    F_AtLeftExit        : F_TRIG;

     

    Pallet_on_left      : BOOL := FALSE;

    Pallet_on_right     : BOOL := FALSE;

    Idle                : BOOL := TRUE;

    Charging            : BOOL := FALSE;

    Turns_charged       : BOOL := FALSE;

    Discharging         : BOOL := FALSE;

    Turns_Discharged    : BOOL := FALSE;

    Turntable_busy      : BOOL := FALSE;

    Discharge_direction : BOOL := FALSE;

    Entry_busy          : BOOL := FALSE;

    Pallet_on_entry     : BOOL := FALSE;

    Count               : WORD := 16#8000;

  1. Тепер скопіюйте та вставте наступник код. Це програма, яка керуватиме сценою Sorting by Height (Advanced)

Program

F_AtEntry(CLK := FIO.iAtEntry);

F_AtTurnEntry(CLK := FIO.iAtTurnEntry);

F_AtRightEntry(CLK := FIO.iAtRightEntry);

F_AtLeftEntry(CLK := FIO.iAtLeftEntry);     (* A pallet abandons the turntable, being charged onto the left exit conveyer *)   

F_AtRightExit(CLK := FIO.iAtRightExit);

F_AtLeftExit(CLK := FIO.iAtLeftExit);       (* A pallet abandons the left exit conveyer *)

 

(**** LEFT EXIT CONVEYER CONTROL ****)

(* Pallet_on_left represents the state of the left exit conveyer: if it carries a pallet, then Pallet_on_left = TRUE *)

 

IF F_AtLeftExit.Q THEN                      (* When a pallet abandons the conveyer *)

    Pallet_on_left := FALSE;                (* Reset Pallet_on_left *)

END_IF;

 

IF FIO.iAtLeftEntry THEN                    (* When there’s a pallet at the entry of the conveyer *)

    Pallet_on_left := TRUE;                 (* Set Pallet_on_left *)

END_IF;

 

FIO.oLeftConveyor := Pallet_on_left;        (* Left exit conveyer runs for Pallet_on_left = TRUE *)

 

(**** RIGHT EXIT CONVEYER CONTROL ****)

 

IF F_AtRightExit.Q THEN    

    Pallet_on_right := FALSE;

END_IF;

 

IF FIO.iAtRightEntry THEN      

    Pallet_on_right := TRUE;   

END_IF;

 

FIO.oRightConveyor := Pallet_on_right;

 

(**** TURNTABLE CONTROL ****)

 

IF Idle AND FIO.iAtTurnEntry THEN

    Idle := FALSE;

    Charging := TRUE;

END_IF;

 

IF Charging AND FIO.iAtFront THEN

    Charging := FALSE;

    Turns_charged := TRUE; 

END_IF;

 

IF Turns_charged AND FIO.iAtUnloadPos THEN

    Turns_charged := FALSE;

    Discharging := TRUE;

END_IF;

 

(* The turntable discharges now onto both conveyers. Thus: *)

 

IF Discharging AND (F_AtRightEntry.Q OR F_AtLeftEntry.Q) THEN

    Discharging := FALSE;

    Turns_Discharged := TRUE;

END_IF;

 

IF Turns_Discharged AND FIO.iAtLoadPos THEN

    Turns_Discharged := FALSE;

    Idle := TRUE;

END_IF;

 

IF F_AtTurnEntry.Q THEN    

    Turntable_busy := TRUE;

END_IF;

 

IF Idle THEN       

    Turntable_busy := FALSE;

END_IF;

 

(* Computing control outputs according to the current state of the turntable and the direction of the discharge *)

FIO.oLoad := Charging OR Discharging AND Discharge_direction; 

 

(* oUnload is TRUE if the discharge is onto the left conveyer *)

FIO.oUnload := Discharging AND NOT Discharge_direction;   

  

(* oTurn is TRUE if the discharge is onto the right conveyer *)

FIO.oTurn := Turns_charged OR Discharging;

 

(**** ENTRY CONVEYER CONTROL ****)

IF F_AtEntry.Q THEN            

    Count := ROL (Count,1);    

    IF (Count = WORD#16#2) THEN

        Entry_busy := TRUE;            

    END_IF;

END_IF;

 

IF F_AtTurnEntry.Q THEN

    (** Defining the direction of the discharge: the direction of the discharge changes every time a pallet is 

    discharged from the entry conveyer onto the turntable. If Discharge_direction = FALSE, then the discharge is onto the right conveyer **)

    Discharge_direction := NOT Discharge_direction;

 

    Entry_busy := FALSE;           

    Count := ROR(Count,1);

 

    IF (Count = WORD#16#8000) THEN 

        Pallet_on_entry := FALSE;          

    END_IF;

END_IF;

 

IF FIO.iAtEntry THEN       

    Pallet_on_entry := TRUE;       

END_IF;

                 

FIO.oEntryConveyor := Pallet_on_entry AND (NOT Turntable_busy OR NOT FIO.iAtTurnEntry);

 

(**** FEEDING CONVEYER CONTROL ****)

FIO.oFeederConveyor := NOT Entry_busy OR NOT FIO.iAtEntry;

  1. Запустіть CoDeSys SoftPLC шляхом запуску CODESYS Control Win V3.

  1. Поверніться до CodeSys і на дереві проекту х2 ЛКМ на Device (CODESYS Control Win V3) і потім на Communication Settings. Після цього клацніть на Scan network... Після цього оберіть мережевий шлях до контролера та натисніть кнопку ОК. Зверніть увагу, що назву пристрою можна змінити, натиснувши на Device > Rename active device.

  2. На панелі інструментів клацніть на Build > Build (F11), щоб завантажити програму для SoftPLC.

  1. Тепер ПКМ на Application та виберіть Add Object > Symbol Configuration. Потім клацніть на Add та Build > Rebuild.

  1. ПКМ на Symbol Configuration, щоб відкрити та оберіть FIO Symbols.

  1. Натисність на Online > Login (Alt+F8). Коли Вам буде запропоновано завантажити програму, то натисніть Yes.

  2. І, нарешті, натисніть на Debug > Start (F5)

На цьому налаштування коду програми в CodeSys завершено.

НАЛАШТУВАННЯ СЕРВЕРА ОРС (OPC Server)

  1. Запустіть OPC Configurator.

  1. Змініть частоту оновлення до 10 (мс) Update Rate 10 (ms)

  1. Двічі клацніть на Connection і введіть ім’я контролера (PLC), яке Ви використали на кроці 9.

Клацніть на File > Save, щоб зберегти налаштування.

Тепер Ви можете закрити OPC Configurator.

НАЛАШТУВАННЯ FACTORY I/O

  1. Відкрийте сцену Sorting by Height (Advanced) та натисніть File > Drivers (F4).

  2. Оберіть OPC Client Data Access зі списку драйверів (Driver list) та оберіть CONFIGURATION

  1. Виберіть CoDeSys.OPC.DA зі списку OPC серверів (OPC Server list). Після того клацніть на BROWSE ITEMS.

  1. Поєднати на карті теги датчиків та виконавчих пристроїв так, як показано на малюнку нижче.

  1. Після цього закрийте вікно драйверів і запустіть моделювання (Натисніть F5)

ЗАПУСК та ЗУПИНКА

  1. Запустіть CODESYS SoftPLC шляхом запуску CODESYS Control Win V3

  1. Натисність Online > Login (Alt+F8).

  1. Коли Вам запропонують завантажити програму на ПЛК, то натисніть «Yes»

  1. Потім натисніть Debug > Start (F5)

  1. Готово.

  1. Щоб зупинити, то повторіть крок 4.

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