• Rezultati Niso Bili Najdeni

NAČRTOVANJE LOGIČNEGA KRMILJENJA Z MODELI IN AVTOMATSKIM GENERIRANJEM KODE

N/A
N/A
Protected

Academic year: 2022

Share "NAČRTOVANJE LOGIČNEGA KRMILJENJA Z MODELI IN AVTOMATSKIM GENERIRANJEM KODE"

Copied!
72
0
0

Celotno besedilo

(1)

Univerza v Ljubljani

Fakulteta za elektrotehniko

RAJKO FINC

NAČRTOVANJE LOGIČNEGA KRMILJENJA Z MODELI IN

AVTOMATSKIM GENERIRANJEM KODE

Diplomsko delo

Visokošolski strokovni študijski program prve stopnje Aplikativna elektrotehnika

Mentor: prof. dr. Gašper Mušič

Ljubljana, 2021

(2)
(3)

iii

Zahvala

V prvi vrsti bi se rad zahvalil mentorju, prof. dr. Gašperju Mušiču, ki mi je omogočil mentorstvo pri diplomski nalogi in pomagal s komentarji in strokovnimi nasveti, ko sem te potreboval.

Zahvaljujem se tudi vsem profesorjem in ostalim pedagoškim delavcem skozi vsa leta šolanja, v katerih sem se izobraževal in dopolnil znanje elektrotehnike.

Zahvalil bi se še svojim bližnjim, ki so mi vseskozi stali ob strani in me podpirali, da sem se lahko posvetil študiju.

(4)

iv

(5)

v

Povzetek

Diplomsko delo se osredotoča na gradnjo modela, iz katerega lahko generiramo kodo za programirljive logične krmilnike, in uporabo generirane kode za vodenje sistema. Naloga je sestavljena iz štirih delov. V prvem delu je predstavljena vsa programska oprema, ki sem jo potreboval za izdelavo naloge, v drugem delu je predstavljeno delo s programsko opremo Matlab in izdelava modela, v tretjem je opisano delo z uvozom generirane kode v programsko opremo TwinCAT 3 in simulacijo v njej, v četrtem, zadnjem delu pa je govora o 3-D simulaciji v programski opremi Festo Ciros Education.

Programska oprema Matlab in pripadajoči orodji Simulink in Stateflow omogočata izdelavo modelov s pomočjo diagramov stanj, diagramov poteka, tabel prehodov in pravilnostnih tabel.

Na tak način smo zgradili model celotnega sistema, ki predstavlja algoritem za vodenje sistema, signalizacijo ter simulira samo delovanje sistema.

S pomočjo orodja Simulink PLC Coder smo iz omenjenega modela nato generirali kodo v strukturiranem tekstu, ki smo jo uvozili v programsko opremo TwinCAT 3 Engineering, ki omogoča programiranje logičnih krmilnikov proizvajalca Beckhoff. V programskem okolju TwinCAT 3 smo uporabili generirano kodo za program, ki krmili delovanje sistema in skrbi za pravilno delovanje aktuatorjev omenjenega sistema. Program smo tudi preizkusili na simulaciji, ki je bila tudi zgrajena v programski opremi TwinCAT 3 Engineering.

V zadnjem delu smo se še odločili za testiranje generirane kode v programski opremi Festo Ciros Education, ki omogoča 3-D simulacijo.

Ključne besede:

modeliranje, generiranje kode, simulacija, Matlab, modularni proizvodni sistem, TwinCAT 3, PLK, strukturiran tekst, Festo Ciros Education

(6)

vi Povzetek

(7)

vii

Abstract

The Diploma thesis focuses on the construction of a model, from which code for programmable logic controllers can be generated, and the use of the code to control the system. It has four parts. The first part introduces all the software we needed for the assignment, the second part introduces working with Matlab and building a model, in the third part it is described work with imports of generated code and working with TwinCAT 3 and in fourth, final part, we talk about software Festo Ciros Education and 3-D simulation.

The Matlab software and the associated Simulink and Stateflow tools allow models to be built using state transition diagrams, flow diagrams, state transition tables and truth tables. In this way, we have built a model of the whole system, which represents the algorithm for system control, signalization and simulates the operation of the system itself.

Using the Simulink PLC Coder tool, we generated the code in Structured Text from the model, which was imported into Beckhoff's TwinCAT 3 Engineering programming software. In the TwinCAT 3 programming environment, we have used the generated code for a program that will control the operation of the system and ensure the correct operation of the actuators of the system. We have also tested program on a simulation, built in the software.

In the last part, we decided to test generated code in software Festo Ciros Education, which enables 3-D simulation.

Key words:

modelling, code generation, simulation, Matlab, modular production system, TwinCAT 3, PLC, Structured text, Festo Ciros Education

(8)

viii Abstract

(9)

ix

Vsebina

1. Uvod ... 1

2. Opis programske opreme ... 3

2.1 Matlab 2019 ... 3

2.2 Simulink ... 5

2.3 Stateflow ... 8

2.3.1 Diagram poteka... 8

2.3.2 Pravilnostna tabela ... 8

2.3.3 Tabela prehajanja stanj ... 9

2.3.4 Diagram stanj ... 10

2.3.5 Spremenljivke ... 10

2.3.6 Vzporedno in zaporedno izvajanje programa ... 11

2.3.7 Prehodi med stanji ... 11

2.3.8 Akcije ... 12

2.3.9 Primer izdelave enostavnega modela v Simulinku in Stateflowu ... 13

2.4 Simulink PLC Coder ... 18

2.5 Visual Studio 2015 ... 19

2.5.1 Windows Driver Kit ... 19

2.6 TE 1000 – TwinCAT 3 Engineering ... 20

2.6.1 Izdelava novega projekta ... 20

2.6.2 Primer izdelave programa za logično krmiljenje ... 21

2.7 TE 1400 – TwinCAT 3 Target for Simulink ... 24

2.8 TE 1410 – TwinCAT 3 Interface for Matlab/Simulink ... 25

2.9 TF6100 – TwinCAT 3 OPC UA ... 25

2.10 Festo Ciros Education ... 26

3. Načrtovanje z modeli ... 27

Zakaj model ... 28

3.1 Koncept naloge ... 29

4. Modeliranje krmilne logike ... 31

(10)

x

4.1 Modularni proizvodni sistem... 31

4.1.1 Delovanje postaje ... 32

4.2 Model krmilne logike ... 33

4.3 Simulacija delovanja modela krmilne logike ... 36

5. Generiranje kode in TwinCAT ... 41

5.1 Generiranje kode ... 41

5.2 TwinCAT 3 – Matlab ... 42

5.2.1 Vizualizacija sistema ... 46

6. Simulacija v okolju Festo Ciros ... 49

7. Zaključek ... 53

8. Literatura ... 55

(11)

xi

Kazalo slik

Slika 1: Knjižnica elementov. ... 7

Slika 2: Diagram poteka. ... 8

Slika 3: Pravilnostna tabela, pogojni del. ... 9

Slika 4: Pravilnostna tabela, akcijski del. ... 9

Slika 5: Tabela prehajanja stanj. ... 9

Slika 6: Diagram stanj. ... 10

Slika 7: Tabela spremenljivk. ... 10

Slika 8: Zaporedno delovanje. ... 11

Slika 9: Vzporedno delovanje. ... 11

Slika 10: Akcije, prikazane v oranžnih pravokotnikih. ... 12

Slika 11: Izdelava novega projekta v orodju Stateflow. ... 13

Slika 12: Diagram stanj. ... 14

Slika 13: Parametri bloka Sine Wave. ... 15

Slika 14: Simbol verige za povezavo med izhodom bloka in lučko. ... 16

Slika 15: Povezava lučke z blokom Out1. Potrdimo jo s kljukico pod besedilom Connect. ... 16

Slika 16: Model v Simulinku. ... 17

Slika 17: Primer programiranja v Strukturiranem tekstu... 18

Slika 18: Primer programiranja v Lestvičnem diagramu. ... 18

Slika 19: Namestitev programske opreme Windows Driver Kit. ... 19

Slika 20: Drevesna struktura map. ... 20

Slika 21: Nastavitve licenc. ... 21

Slika 22: Časovnik z zakasnjenim vklopom. ... 22

Slika 23: Normalno odprti/zaprti kontakti. ... 22

Slika 24: Set/reset tuljave. ... 22

Slika 25: Program utripanja lučke. ... 23

Slika 26: Risanje objektov. ... 24

Slika 27: Povezava objekta s spremenljivkami. ... 24

Slika 28: Vizualizacija med delovanjem. ... 24

Slika 29: Bločni diagram, ki prikazuje uporabo OPC UA Gatewav. ... 25

Slika 30: Potek dela z modeli. ... 27

Slika 31: Bločna shema poteka izdelave naloge. ... 29

Slika 32: Modularni proizvodni sistem. ... 31

Slika 33: Stanje DELOVANJE... 33

Slika 34: Stanje BRANJE_TIPKE_STOP. ... 34

Slika 35: Celotni model v Simulinku. ... 36

Slika 36: Blok Command panel. ... 37

Slika 37: Blok Procedural control. ... 37

Slika 38: Blok Basic control. ... 38

Slika 39: Blok Sim. ... 38

Slika 40: Animacija delovanja v Matlabu. ... 39

Slika 41: Nastavitve za generiranje kode PLK. ... 42

Slika 42: Uvoz generirane kode. ... 43

(12)

xii Slika 43: Prikaz vseh uvoženih datotek z generiranimi kodami in globalnimi spremenljivkami.

... 43

Slika 44: Inicializacija blokov z diagrami stanj. ... 44

Slika 45: Združevanje signalov v polje spremenljivk. ... 44

Slika 46: Povezava vhodnih signalov postopkovnega vodenja. ... 44

Slika 47: Povezava signalov funkcijskega bloka Procedural. ... 45

Slika 48: Povezava globalnih spremenljivk. ... 45

Slika 49: Povezava signalov funkcijskega bloka MPS1. ... 45

Slika 50: Sistem v začetnem položaju... 46

Slika 51: Sistem med delovanjem. ... 47

Slika 52: Nastavitve TwinCAT 3 Engineering za komunikacijo s Festo Ciros. ... 49

Slika 53: Označevanje spremenljivk. ... 50

Slika 54: Nastavitve povezave s TwinCAT 3. ... 50

Slika 55: Nastavitve strežnika. ... 51

Slika 56: Povezava spremenljivk TwinCATa in modela v Festo Ciros. ... 51

Slika 57: 3-D model postaje. ... 52

(13)

xiii

Seznam tabel

Tabela 1: Pogosteje uporabljeni bloki Simulinka. ... 6

(14)

xiv Seznam tabel

(15)

xv

Seznam uporabljenih kratic

Kratica Angleški pomen Slovenski pomen

PLK Programmable logic controller Programirljivi logični krmilnik

AND Logical operator AND Logična funkcija IN

OR Logical operator OR Logična funkcija ALI

API Application program interface Vmesnik za namensko programiranje

POU Program organisation unit Programski moduli

GVL Global variables Globalne spremenljivke

NO Normally open Normalno odprt

NC Normally closed Normalno zaprt

GUI Graphical user interface Grafični vmesnik

OPC Open Platform Communications Odprta povezljivost naprav in platform

UA Unified Architecture Enotna arhitektura

DA Data access Dostop do podatkov

ST Structured text Strukturirani tekst

(16)

xvi Seznam uporabljenih kratic

(17)

1

1. Uvod

Programirljivi logični krmilnik – PLK je digitalno delujoča elektronska naprava, ki na podlagi ukazov shranjenih v programirljivem pomnilniku, izvaja logične, sekvenčne, časovne in aritmetične operacije in s tem vodi različne naprave in procese preko binarnih in analognih vhodov in izhodov. Uporabljajo se predvsem v industriji, saj so v primerjavi z drugimi računalniki bolj odporni na tresljaje, električne motnje in zunanje vplive.

Uporabljati so se začeli v drugi polovici 20. stoletja v avtomobilski industriji v Združenih državah Amerike. Bili so izdelani, da nadomestijo vodenje sistemov z relejsko logiko, ker je bilo za inženirje spreminjanje procesa avtomatizacije in dokumentacije časovno zamudno.

Pravilno delovanje procesa je v veliki meri odvisno od programa – algoritma za vodenje, ki ga inženir napiše v enem ali več izbranih programskih jezikih. Krmilniki podpirajo programiranje v jezikih, ki so določeni s standardom IEC 61131-3 [14].

Z večanjem in naraščajočo kompleksnostjo proizvodnih sistemov narašča tudi zahtevnost in obsežnost programiranja. Pri tem nam je lahko v pomoč gradnja modela procesa in pripadajočih algoritmov vodenja. Diagrami stanj omogočajo v povezavi z ustreznimi programskimi orodji natančno specifikacijo sekvenčnih logičnih krmilj, simulacijo delovanja takega krmilja in tudi generiranje kode za PLK.

Cilj naloge je bilo načrtati vodenje modularnega proizvodnega sistema v obliki grafičnega modela. Iz izdelanega modela smo želeli nato generirati kodo skladno s standardom, omenjenim zgoraj in preizkusiti generirano kodo v različnih simulacijah; v Matlabu, simulaciji, ki jo ponuja TwinCAT 3 Engineering, in v simulacijskem orodju Festo Ciros Education.

Naloga je razdeljena v naslednja poglavja.

Poglavje 2 govori splošno o programski opremi Matlab in pripadajočih orodjih, programu za programiranje programirljivih logičnih krmilnikov TwinCAT 3 Engineering in orodjih, ki jih potrebujemo zraven. Opisana je programska oprema, kako in za kaj se uporablja, skupaj z nekaterimi primeri uporabe.

V poglavju 3 je predstavljen teoretični koncept načrtovanja z modeli. Opisan je potek razvoja in izdelave modela ter prednosti, ki jih predstavlja v primerjavi z besedilno specifikacijo.

(18)

2 Uvod Poglavje 4 opisuje modularni proizvodni sistem, vključno z elementi sistema, katerega model delamo. Opisano je tudi delovanje sistema. Govora je o gradnji modela; opisu posameznih blokov in stanj, izdelanih v orodju Stateflow. Predstavljen je še celotni bločni diagram, izdelan v Simulinku. Opisani so posamezni bloki bločnega diagrama, vhodni in izhodni signali in končna simulacija v Matlabu.

V poglavju 5 je predstavljeno orodje za avtomatsko generiranje kode in konfiguracija le-tega.

Opisan je postopek uvoza datotek z generirano kodo v programsko opremo TwinCAT 3 Engineering, povezava vseh funkcijskih blokov v glavnem (angl. MAIN) programu, izdelava in preizkus 2-D simulacije v programu TwinCAT 3 Engineering.

V poglavju 6 pa je predstavljena simulacija v programski opremi Festo Ciros ducation, s 3-D animacijo.

(19)

3

2. Opis programske opreme

Za nalogo sem potreboval programsko opremo Matlab 2019a ter pripadajoča orodja, simulacijsko orodje Ciros, programsko opremo proizvajalca Beckhoff, TwinCAT 3 eXtended Automation Engineering (XAE) in TwinCAT 3 eXtended Automation Runtime (XAR).

Programsko opremo Visual Studio 2015 Community pa smo uporabili kot integracijsko orodje programske opreme TwinCAT 3, ki pa ni nujno potrebna.

2.1 Matlab 2019

Matlab (angl. MATrix LABoratory) je interaktivno programsko orodje za numerično reševanje problemov. Osnovni namen je bil omogočiti enostaven dostop do programskih knjižnic linearne algebre, znanih pod imenom LINPACK1 in EIPSPACK2. V novejših izdajah uporablja Matlab knjižnici LAPACK in BLAS, ki predstavlja programsko opremo na področju matričnega računanja [1]. Ena izmed odlik Matlaba pa je tudi razširljivost s pomočjo programov, ki jih po njihovem podaljšku imen imenujemo m-datoteke. Take datoteke lahko poimenujemo kot funkcije, ki jih lahko združimo in zgradimo obsežno orodje za namensko uporabo. Na tak način se je razvilo veliko orodij (angl. toolbox), ki jih uporabljamo na področjih, kot so načrtovanje vodenja sistemov, statistična obdelava, signalno procesiranje, umetna inteligenca, ipd.

Področja uporabe Matlaba:

Analiza podatkov

 Grafika

 Razvoj algoritmov

 Izdelava aplikacij

 Uporaba Matlaba z drugimi jeziki

 Povezava s strojno opremo

 Vzporedna obdelava

 Matlab v oblaku

1 Zbirka podprogramov Fortran, ki analizirajo in rešujejo linearne enačbe.

2 Zbirka podprogramov Fortran, ki izračunavajo lastne vrednosti in lastne vektorje.

(20)

4 Opis programske opreme

Osnovni sistem Matlaba lahko razdelimo na 5 delov:

Razvojno okolje je nabor orodij in okolij, ki omogočajo uporabo Matlabovih funkcij in datotek, vključuje ukazno okno, ukazno zgodovino, tekstovni urejevalnik, razhroščevalnik ter okna za pomoč, delovni pomnilnik, delovno mapo in iskalnik.

Matematična funkcijska knjižnica je zbirka računskih algoritmov, ki segajo od enostavnih (vsota, trigonometrija, kompleksna števila) do bolj kompleksnih funkcij (inverz matrik, Besslove funkcije in Fourierjevi transformi).

Programski jezik je višjenivojski matrični jezik, ki vsebuje funkcije, podatkovne strukture in elemente vhodno-izhodnega in objektno orientiranega programiranja.

Grafika – Matlab lahko vektorje in matrike predstavi v obliki dvo- in tridimenzionalnih diagramov. Vključuje tako višjenivojske ukaze za animacijo, obdelavo slik in prezentacijo kot nižjenivojske ukaze za oblikovanje izgleda grafičnih objektov.

Aplikacijski vmesnik (API) omogoča pisanje programov v programskem jeziku C in Fortranu, dinamično povezovanje Matlabovih funkcij in pisanje ter branje mat-datotek

Za izdelavo naloge sem uporabil programsko opremo Matlab verzije »2019a«, zaradi kompatibilnosti s programsko opremo TwinCAT 3. V projektu sem potreboval še orodja Simulink, Simulink PLC Coder in Stateflow. Programski paket Matlab je mogoče naložiti brezplačno s študentsko licenco.

(21)

Opis programske opreme 5

5

2.2 Simulink

Je grafični programski paket za modeliranje, simulacijo in analizo dinamičnih sistemov.

Podpira tako nelinearne časovno–zvezne in diskretne sisteme modelirane v neprekinjenem času (angl. Continious time), diskretnem času (angl. Sampled time ) ali oboje hkrati. Podpira načrtovanje na sistemski ravni, simulacijo ter neprekinjeno testiranje in preverjanje vgrajenih sistemov.

S Simulinkom lahko izdelujemo nove modele ali vzamemo že izdelane ter jih dodamo v svoj projekt. Simulacije so interaktivne, tako da lahko sproti spreminjano parametre ter vidimo, kaj se dogaja z opazovano vrednostjo. Imamo popoln dostop do vseh orodij za analizo v Matlabu.

Tako lahko vzamemo svoje rezultate, jih analiziramo in vizualiziramo. Omogoča, da lahko analiziramo ne samo idealiziranih modelov, ampak tudi realne, nelinearne modele, kjer lahko upoštevamo trenje, zračni upor, zdrs zobnikov, ipd. Simulink ponuja grafični vmesnik (GUI) za gradnjo modelov kot blokovne diagrame s klikanjem in vlečenjem z miško.

Za gradnjo modelov uporabljamo bogato knjižnico različnih blokov: izvorov, ponorov, linearnih in nelinearnih komponent, konektorjev, ipd (tabela 1), ki jih z miško povezujemo v kompleksnejše diagrame. Ko je model zgrajen, ga lahko simuliramo s pomočjo ene od integracijskih metod iz Simulinkovega okna ali iz ukazne vrstice Matlaba.

Modeli so hierarhični, zato jih lahko gradimo s pristopom gradnje od zgoraj navzdol (angl.

Top–down approach) ali od spodaj navzor (angl. Bottom–up approach). Sisteme lahko vidimo na visoki ravni; dvoklik na blok povzroči, da se pomikamo po ravneh navzdol in si ogledamo podrobnosti o modelu. Ta pristop nam omogoča vpogled v to, kako je model organiziran in kako njegovi deli medsebojno delujejo.

Simulink zagotavlja grafični urejevalnik, knjižnice blokov in reševalnike za modeliranje in simulacijo dinamičnih sistemov.

Na sliki 1 vidimo pogovorno okno knjižnice Simulinka, kjer je na levi strani drevesna struktura posameznih map z elementi. Na levi strani pa so zbrani vsi elementi te mape.

(22)

6 Opis programske opreme

Tabela 1: Pogosteje uporabljeni bloki Simulinka.

Gain block – Množi vhodni signal s konstanto (angl. gain).

Demux – Razdruži vhodni vektorski signal v posamezne signale.

Mux – Združi vhodne signale v izhodni vektor.

Product - Izhod je rezultat množenja dveh vhodnih signalov.

Constant – Generira izhodni signal konstantne vrednosti.

Scope – Prikazuje signale v odvisnosti od časa.

Out1 – Izhodni priključek za model ali podsistem.

In1 – Vhodni priključek za model ali podsistem.

Integrator – Matematična funkcija integracije vhodnega signala po času.

Sum – Vsota ali razlika vhodnih signalov.

Step – Generiranje stopnice.

(23)

Opis programske opreme 7

7

Slika 1: Knjižnica elementov.

(24)

8 Opis programske opreme

2.3 Stateflow

Ponuja grafični jezik, ki vključuje diagrame stanj, diagrame poteka, tabele prehodov in pravilnostne tabele [7]. Z orodjem Stateflow lahko opišemo, kako se algoritmi Matlab kode in Simulink modelov odzivajo na vhodne signale, dogodke in časovne pogoje.

Omogoča načrtovanje in razvoj nadzornega vodenja, razporejanja nalog, upravljanja napak, komunikacijskih protokolov, uporabniških vmesnikov in hibridnih sistemov.

2.3.1 Diagram poteka

Diagram poteka je grafična konstrukcija, ki modelira logične vzorce, kot so drevesa odločanja in iterativne zanke. Predstavljajo kombinacijsko logiko, kjer rezultat ni odvisen od predhodnih rezultatov. Diagrame poteka sestavimo tako, da združimo vezne priključke (angl. Connective junction) in prehode. Vezni priključki zagotavljajo odločitvene veje med različnimi prehodnimi potmi. Izvajanje se začne pri privzetem prehodu in konča pri priključku, ki nima veljavnih prehodnih pogojev (slika 2).

2.3.2 Pravilnostna tabela

Pravilnostno tabelo ustvarimo z dvojnim klikom na gumb »Truth table« v Stateflowu. Ko ustvarimo novo tabelo, lahko njeno delovanje definiramo po lastni želji. Za programiranje pravilnostne tabele dodajamo pogoje, odločitve in akcije. Pri vsaki pravilnostni tabeli imamo pogojno tabelo (angl. Condition Table) in akcijsko tabelo (angl. Action Table).

Slika 2: Diagram poteka.

(25)

Opis programske opreme 9

9 V pogojno tabelo vpisujemo pogoje (slika 3), v akcijsko tabelo (slika 4) pa vpisujemo akcije, ki se zgodijo ob pripadajočih pogojih.

2.3.3 Tabela prehajanja stanj

Tabela prehajanja stanj (angl. State transition table) je tudi eden izmed načinov programiranja, kjer namesto risanja stanj in prehodov uporabimo tabelo prehodov stanj. Ti omogočajo enostavnejši način programiranja v tabelarični obliki, v primeru uporabe tabele prehajanja stanj nam ni potrebno preurejati stanj, prehodov in veznih priključkov, če želimo model spremeniti.

Slika 5 predstavlja primer tabele s pogoji za prehajanja med stanji.

Slika 5: Tabela prehajanja stanj.

Slika 3: Pravilnostna tabela, pogojni del. Slika 4: Pravilnostna tabela, akcijski del.

(26)

10 Opis programske opreme

2.3.4 Diagram stanj

Diagram stanj (angl. State transition diagram ali Statechart) omogoča programiranje v obliki pravokotnikov (stanja), v katere vpisujemo akcije ter pogoje (slika 6). Posamezna stanja povezujemo s črtami s puščico (smer prehoda) ter ob povezovalnih linijah dodamo pogoje za prehode med stanji.

Slika 6: Diagram stanj.

2.3.5 Spremenljivke

Spremenljivke, ki jih uporabljamo v diagramu stanj, morajo biti ustrezno deklarirane kot vhodne, izhodne ali notranje spremenljivke. Vse spremenljivke deklariramo v tabeli »Symbols«

(View  Symbols). Nove spremenljivke ustvarimo z ukazom »Create data«, nato pa določimo, kakšne vrste spremenljivke želimo. Spremenljivke, ki so bile deklarirane kot vhodi ali izhodi bloka, se pojavijo kot vhodno izhodni signali on straneh simbola bloka v simulacijski shemi.

Primer tabele spremenljivk predstavlja slika 7.

Slika 7: Tabela spremenljivk.

(27)

Opis programske opreme 11

11

2.3.6 Vzporedno in zaporedno izvajanje programa

Vsako stanje ima možnost vzporednega (AND) ali zaporednega (OR) delovanja, ki določa, kakšna podstanja lahko vsebuje. Vsa podstanja morajo imeti enak način delovanja.

Zaporedno delovanje določa, da se v tem primeru izvaja lahko le eno stanje na enkrat. Na sliki 8 je lahko aktivno le stanje A ali stanje B. Če je stanje A aktivno, potem je lahko aktivno stanje A1 ali stanje A2, a ne obe hkrati.

Vzporedno delovanje določa, da so podstanja (črtkana črta) aktivna ves čas, ko je aktivno nadstanje. Na sliki 9 sta hkrati aktivni podstanji A1 in A2 v stanju A.

2.3.7 Prehodi med stanji

Stanja so med sabo povezana s puščicami, ki nakazujejo, v katero stran »teče« program. Prehod se zgodi, ko ima prehodni pogoj vrednost logična 1. Za pogoj lahko uporabimo poljuben Matlabov izraz, ki vključuje deklarirane spremenljivke, ali pa funkcijo, ki vrne rezultat v obliki logične vrednosti.

A1

A2

B A

A

A1 1 A2 2

Slika 8: Zaporedno delovanje.

Slika 9: Vzporedno delovanje.

(28)

12 Opis programske opreme

2.3.8 Akcije

Spremenljivke spreminjamo z akcijami v izbranem akcijskem jeziku (Matlab ali C). V Matlabovem jeziku lahko akcije vsebujejo poljubne Matlabove ukaze. Pišemo jih v stanja diagrama pod oznako stanja (slika 10). Uporablja se tudi akcije ob prehodih (pogojne akcije:

ukazi znotraj zavitih oklepajev ali prehodne akcije). Za ukaze znotraj stanj uporabljamo kvalifikatorje akcij en: (entry), ex: (exit), du: (during). Če te oznake ne uporabimo, se akcija izvaja ves čas, ko je stanje aktivno (enako kot pri kvalifikatorju du:).

Slika 10: Akcije, prikazane v oranžnih pravokotnikih.

(29)

Opis programske opreme 13

13

2.3.9 Primer izdelave enostavnega modela v Simulinku in Stateflowu

Za primer si lahko ogledamo model, ki izmenično prižiga dve lučki v odvisnosti od pozitivne oziroma negativne vrednosti sinusnega izvora. Model je sestavljen iz dveh delov; algoritma za vodenje procesa, ki je izdelan v Stateflowu, ter procesa, ki je povezan z izvorom in lučkama v Simulinku.

Nov Stateflow projekt ustvarimo s klikom na ikono Simulink v »Home« meniju Matlaba. Odpre se novo okno, kjer poiščemo zavihek »Stateflow« in kliknemo na sliko »Blank Chart« (slika 11).

Odpre se nam novo okno, kjer lahko začnemo graditi nov model.

V tabeli »Symbols« deklariramo 3 spremenljivke/signale, in sicer: dve izhodni spremenljivki output1 in output2 ter vhodno spremenljivko input. Tip spremenljivke deklariramo v stolpcu

»TYPE«.

Na levi strani okna, v vertikalni orodni vrstici poiščemo simbol pravokotnika z zaobljenimi robovi, ki predstavlja novo stanje (angl. state). Za naš model potrebujemo dve taki stanji, poimenovani stanje1 in stanje2.

Slika 11: Izdelava novega projekta v orodju Stateflow.

(30)

14 Opis programske opreme Za akcije stanj smo uporabili kvalifikatorje »entry«, ki pomenijo izvajanje akcije ob prehodu v stanje. V stanju stanje1 postavimo spremenljivko output1 na logično vrednost 1, spremenljivko output2 pa postavimo na logično vrednost 0. V stanju stanje2 pa postavimo izhodno spremenljivko outpu1 na logično vrednost 0, spremenljivko output2 pa na logično vrednost 1.

Stanji se bosta povezovali z dvema črtama s puščico, ki jo najdemo v vertikalni orodni vrstici.

Pri črti dodamo pogoja v oglatih oklepajih, ki omogočata prehod med stanjema. Stanje2 bo aktivno, ko bo vhodna spremenljivka input manjša ali enaka 0, stanje1 pa bo aktivno, ko bo vhodna spremenljivka večja od 0.

Izvajanje se začne pri stanju stanje1, kar nakazuje črta s puščico in krogcem, ki kaže na obrobo pravokotnika.

Slika 12 predstavlja diagram stanj v orodju Stateflow.

Slika 12: Diagram stanj.

S tem je delo v orodju Stateflow zaključeno. Pomaknemo se v orodje Simulink; View  Explorer Bar. Tam naš že čaka blok, ki smo ga ustvarili v orodju Stateflow, z vhodnimi signali na levi strani in izhodnimi signali na desni strani bloka.

(31)

Opis programske opreme 15

15 Na vhodni signal input priključimo generator sinusne vrednosti, ki ga najdemo v Simulinkovi knjižnici (Library Browser) v mapi Simulink  Sources, blok »Sine Wave« (slika 1).

Z dvojnim klikom na blok »Sine Wave« se nam odpre novo pogovorno okno. V zgornjem delu je opisano delovanje bloka, v spodnjem delu pa lahko spreminjamo parametre bloka, obliko, funkcijo bloka, ipd.

Za naš primer nastavimo amplitudo signala na poljubno vrednost, enako storimo s frekvenco signala. Omenjeno pogovorno okno bloka »Sine Wave« prikazuje slika 13.

Slika 13: Parametri bloka Sine Wave.

Na izhodne priključke bloka Stateflow priključimo blok »out1«, ki omogoča, da bomo lahko izhodna signala povezali z lučkama.

V knjižnici poiščemo blok »Lamp« ter dodamo dve lučki v naš model.

(32)

16 Opis programske opreme Kliknemo na eno izmed lučk, da se nam prikaže simbol verige, kar predstavlja možnost povezave (slika 14), ga kliknemo ter nato kliknemo še na blok out1, da se vzpostavi povezava (slika 15).

Enako naredimo še z drugo ločko in drugim izhodnim signalom »output2«.

Za pregled poteka izhodnih signalov smo uporabili blok Scope, ki je povezan na oba izhodna signala. Število vhodov v blok izberemo z desnim klikom na blok in odpremo »Signals &

Ports«.

Ostane nam le še nastavitev časa simulacije in njen zagon v orodni vrstici, zgoraj.

Slika 16 prikazuje celoten model v Simulinku. Na levi strani je blok »Sine Wave«, ki predstavlja sinusni izvor, naslednji element je blok, izdelan v orodju Stateflow, imamo še blok

»Scope«, ki omogoča, da vidimo, kako se časovno spreminja vrednost signala. Ostaneta nam še dva izhodna priključka s številko ena in dva, ki sta povezana z lučkama.

Slika 14: Simbol verige za povezavo med izhodom

bloka in lučko.

Slika 15: Povezava lučke z blokom Out1. Potrdimo jo s kljukico pod besedilom Connect.

(33)

Opis programske opreme 17

17

Slika 16: Model v Simulinku.

(34)

18 Opis programske opreme

2.4 Simulink PLC Coder

Simulink PLC coder je orodje, ki generira strojno neodvisno programsko kodo v Lestvičnem diagramu (angl. Ladder diagram) ali v Strukturiranem tekstu (angl. Structured text) po standardu IEC 61131-3 (slika 17 in 18) [6]. Program se lahko generira iz modelov Simulink-a, Stateflow diagramov ali iz funkcij Matlaba. Generira se datoteka formata PLCopen XML ali datoteka v drugih datotečnih formatih, ki jih podpirajo uporabljena integrirana razvojna okolja, npr. Siemens TIA portal, Omron Sysmac Studio, ipd.

Simulink PLC Coder lahko generira tudi testno programsko okolje (angl. test bench), v katerem znotraj razvojnih okolij in pripadajočih simulatorjev preverjamo delovanje generirane kode.

Ustvari tudi poročila o generiranju kode z dvosmerno sledljivostjo med modelom in kodo.

Slika 17: Primer programiranja v Strukturiranem tekstu. Slika 18: Primer programiranja v Lestvičnem diagramu.

(35)

Opis programske opreme 19

19

2.5 Visual Studio 2015

Visual Studio 2015 je integrirano razvojno okolje podjetja Microsoft. Uporablja se za razvoj računalniških programov, spletnih mest in aplikacij.

Programska oprema TwinCAT 3 uporablja uporabniški vmesnik okolja Visual Studio. Za uporabo programske opreme TwinCAT 3 ni nujno inštalirati okolja Visual Studio, razen, če želimo v projektu uporabiti svoje module (C/C++). V primeru, da uporabnik še nima inštalirane programske opreme Visual Studio, programska oprema TwinCAT 3 inštalira razvojno lupino (angl. shell) Visual Studio (TwinCAT XAE Shell).

Če se odločimo za inštalacijo okolja Visual Studio, pri inštalaciji od funkcij potrebujemo le Visual C++.

2.5.1 Windows Driver Kit

Windows Driver Kit vsebuje knjižnice in glave ter celoten komplet orodij, potrebnih za Windows gonilnike in aplikacije. Potrebujemo ga le pri starejših verzijah TwinCATa.

Slika 19 prikazuje označena orodja, ki jih potrebujemo za projekt.

Slika 19: Namestitev programske opreme Windows Driver Kit.

(36)

20 Opis programske opreme

2.6 TE 1000 – TwinCAT 3 Engineering

TwinCAT 3 Engineering je razvojno okolje za konfiguracijo krmilnikov, programiranje, upravljanje pogonov in vhodno/izhodnih naprav [11]. TwinCAT 3 Engineering je integrirano v razvojno okolje Visual Studio. Omogoča programiranje v programskih jezikih IL (angl.

Instruction list), ST (angl. Structured text), LD (angl. Ladder diagram), FBD (angl. Function block diagram), SFC (angl. Sequential function char) in CFC (angl. Continuous function chart). Funkcionalnost razvojnega okolja bomo ilustrirali s preprostim primerom.

2.6.1 Izdelava novega projekta

Odpremo program Visual Studio, v katerem je integrirano programsko okolje TwinCAT 3.

Odpre se začetno okno, v katerem lahko odpremo obstoječe programe, ustvarimo nov projekt, ipd. Za izdelavo izberemo »New TwinCAT Project« nato izberemo »TwinCAT XAE Project«

(XML format) ter poimenujemo novi projekt.

Generirajo se osnovne mape projekta SYSTEM, MOTION, PLC, SAFETY, C++, ANALYTICS in I/O, razvidno iz drevesne strukture na sliki 20. Z desnim klikom na mapo PLC

 »Add New Item«, dodamo nov projekt PLC (Standard PLC Program) ter ga poimenujemo.

Slika 20: Drevesna struktura map.

(37)

Opis programske opreme 21

21 Projekt PLC je sestavljen iz podmap External Types, References, DUTs, GVLs, POUs,

VISUs.

Mapa GVL vsebuje vse globalne spremenljivke, ki se jih lahko uporablja v glavnem programu (MAIN), funkcijskih blokih in funkcijah.

Mapa POUs vsebuje vse programe projekta (bloki, funkcije, MAIN program), ki jih lahko urejamo.

Mapa VISUs vsebuje vse potrebno za izdelavo grafičnega vmesnika. Vmesnik bomo uporabili za simulacijo in testiranje programa znotraj okolja TwinCAT 3. Omogoča risanje raznih geometrijskih oblik, gumbov, ipd. Pri vsakem lahko dodamo še akcije, ki se zgodijo ob pritisku z miško na njih (npr. spreminjanje barve kvadrata, premik kvadrata, prikaz teksta,…).

2.6.2 Primer izdelave programa za logično krmiljenje

Za primer si lahko pogledamo izdelavo programa za krmiljenje in animacijo utripanja lučke v lestvičnem diagramu ter vizualizacijo v programu TwinCAT 3.

Za izdelavo programa oziroma uporabo TwinCAT 3 potrebujemo licenco, ki jo lahko kot testno licenco aktiviramo brezplačno za sedem dni v mapi SYSTEM; License (slika 21).

Slika 21: Nastavitve licenc.

V mapi POUs ustvarimo nov modul, tipa »Program«, ki ga poimenujemo Ladder ter izberemo jezik programiranja Ladder Logic Diagram.

(38)

22 Opis programske opreme Odpreta se dve okni; v zgornjem oknu definiramo vse spremenljivke, ki jih bomo uporabili v programu. V spodnje okno pa zlagamo elemente, ki jih potrebujemo za željen program. V orodni vrstici; View; Toolbox, dodamo dodatno okno z vsemi elementi, ki jih uporabljamo v Lestvičnem diagramu.

Uporabljamo lahko tudi globalne spremenljivke (dostopne vsem modulom programa), ki jih definiramo v mapi »GVLs«.

Program je sestavljen iz dveh časovnikov TON (slika 22), kontaktov (NO, NC) (slika 23) in tuljav (slika 24).

Delovanje:

Slika 25 prikazuje program za utripanje lučke, opisan v nadaljevanju.

S pritiskom na tipko START dodelimo notranji spremenljivki delovanje visoko logično stanje.

Aktivira se časovnik TIMER2, ker se vhodni signal IN postavi na visoko logično stanje (spremenljivka delovanje je enaka vrednosti »1«, spremenljivka LUC je enaka vrednosti »0«).

Po času PT se izhodni signal Q časovnika TIMER2 postavi na logično vrednost »1«, s tem postavimo spremenljivko LUC na logično vrednost »1«.

Ko je spremenljivka LUC na visokem logičnem stanju, se vhodni signal IN časovnika TIMER2 postavi na vrednost »0« (normalno zaprt kontakt). Ob tem se aktivira TIMER1, zaradi visokih logičnih stanj spremenljivk delovanje in LUC. Po času PT (v našem primeru 200 ms) se aktivira izhodni signal Q časovnika TIMER1. S tem postavimo spremenljivko LUC na logično stanje

»0«. To se ponavlja, dokler ne pritisnemo tipke STOP, ki resetira (postavi na logično stanje

»0«) spremenljivki LUC in delovanje.

Delovanje lahko ponovno vklopimo s tipko START.

Slika 22: Časovnik z zakasnjenim vklopom.

Slika 23: Normalno odprti/zaprti kontakti.

Slika 24: Set/reset tuljave.

(39)

Opis programske opreme 23

23

Slika 25: Program utripanja lučke.

Za vizualizacijo ustvarimo novo okno z desnim klikom na mapo VISUs in ustvarimo nov objekt Visualization.

Ponovno se nam odpreta dve okni; eno za deklariranje spremenljivk ter drugo, spodnje za gradnjo simulacije.

V oknu Toolbox poiščemo »Reactangle« in ga z miško potegnemo na osnovno okno ter vpišemo vanj besedilo START, kot prikazuje slika 26. V oknu Properties; Inputconfiguration;

Tap povežemo globalno spremenljivko START (GVL.START), ki smo jo uporabili kot tipko za vklop utripanja (slika 27). Enako naredimo še za spremenljivko STOP, ki se bo uporabljala za izklop utripanja.

(40)

24 Opis programske opreme

Za prikaz utripanja izberemo »Ellipse« ter v oknu Properties; Colors; Normal state/Alarmstate definiramo barve, ki jih želimo prikazovati. V oknu Properties; Color variables; Toggle color dodamo globalno spremenljivko LUC, katero smo uporabili tudi v programu kot izhod za lučko.

Na sliki 28 je prikazana vizualizacija preprostega programa utripanje lučke s tipkama START in STOP.

Slika 28: Vizualizacija med delovanjem.

2.7 TE 1400 – TwinCAT 3 Target for Simulink

TwinCAT 3 Target for Simulink je vmesnik med programsko opremo Matlab, natančneje orodjem Simulink in programsko opremo TwinCAT. Z omenjeno opremo lahko modele, izdelane v Simulinku, uporabimo v TwinCATu. Različna orodja Matlaba, kot so Simulink, SimScape, Stateflow ali kar same Matlab funkcije lahko vgradimo v Simulink model. Modeli se samodejno pretvorijo v C ali C++ kodo s pomočjo programa Simulink Coder in integrirajo

Slika 26: Risanje objektov. Slika 27: Povezava objekta s spremenljivkami.

(41)

Opis programske opreme 25

25 v TwinCAT objekt. Objekti so nato lahko uporabljeni v opremi TwinCAT 3 Engineering kot del celotnega projekta.

2.8 TE 1410 – TwinCAT 3 Interface for Matlab/Simulink

Orodje omogoča pretok podatkov med programsko opremo Matlab, TwinCAT Runtime in Simulink. Bloke ADS odjemalcev, ki se jih lahko enostavno integrira in konfigurira v Simulink projekt, najdemo v Simulink knjižnicah. Tako je mogoče iz okolja Simulinka pošiljati podatke v okolje TwinCAT Runtime ali obratno.

2.9 TF6100 – TwinCAT 3 OPC UA

Je še eno izmed orodij/funkcij programske opreme TwinCAT 3. Predstavlja od platforme neodvisno, storitveno usmerjeno komunikacijsko arhitekturo za zanesljiv in varen prenos podatkov s proizvodne ravni v sistem za načrtovanje vodenje procesov.

OPC UA omogoča dostop do podatkov, dostop do zgodovinskih podatkov in alarmov. Podpira vmesno shranjevanje podatkov v strežniku; prekinitev komunikacijske povezave ne povzroči izgube podatkov. Ima Grafični konfigurator za preprosto upravljanje lokalnih in oddaljenih strežnikov OPC UA.

Za vzpostavitev povezave s programom Festo Ciros smo potrebovali še programsko opremo TwinCAT OPC UA Gateway (slika 29) kot vmesnik med TwinCAT 3 in programom Festo Ciros , saj TwinCAT 3 OPC UA (angl. Open platform communications Unified Architecture)

Slika 29: Bločni diagram, ki prikazuje uporabo OPC UA Gatewav.

(42)

26 Opis programske opreme ne omogoča direktne povezave s Festo Ciros, ker uporablja klasični OPC DA (angl. Open platform communications Data access).

2.10 Festo Ciros Education

Festo Ciros Education je orodje za simulacijo, odpravljanje naprav v sistemih , načrtovanje in nadzor proizvodnje ter programiranje robotov in programirljivih logičnih krmilnikov.

Paket je primeren za učenje programiranja in zagon industrijskih robotskih sistemov. V ta namen ponuja integriran program usposabljanja in različne modele robotov.

Je idealno virtualno učno okolje za mehatroniko s poudarkom na PLK. Ponuja delovno okolje za programiranje PLK na osnovi Siemens S7.

Omogoča, da simulacijo povežemo s krmilnikom. Poudarek je na načrtovanju proizvodnih obratov, načrtovanju in optimizaciji izvršilnih sistemov ter upravljanju proizvodnje. V Festo Ciros Education so 3-D modeli proizvodne linije izdelani iz knjižnic elementov. Simulacija vključuje pomembnejše komponente proizvodnega sistema.

V našem primeru bomo program uporabili samo za simulacijo delovanja sistema.

(43)

27

3. Načrtovanje z modeli

Zasnova na podlagi modela (angl. Model-based design), je na model osredotočen pristop k razvoju krmiljenja, obdelave signalov, komunikacije in drugih dinamičnih sistemov. Namesto programiranja v standardnih jezikih, zasnova na podlagi modela uporablja model v celotnem razvoju. Ko je model dokončno razvit, lahko iz tega generiramo kodo v C ali v drugih jezikih in tudi poročila generiranja. Zasnova na osnovi modela omogoča oblikovanje na ravni sistema, komponent, simulacijo, samodejno generiranje kode, neprekinjeno testiranje in preverjanje.

Slika 30 predstavlja potek razvoja sistema na podlagi modela. Kot vhodna parametra za izdelavo modela moramo raziskati oziroma spoznati sistem, s katerim bomo delal,i in rabimo še zahteve naročnika, ki sporočajo, kaj naj sistem dela.

Sledi gradnja modela, kjer sistem lahko simuliramo, testiramo in izdelujemo prototipe, toliko časa, dokler sistem ne deluje po željah naročnika. Tako lahko dobimo pravilne vrednosti generiranih izhodov iz modela, generirane kode ali poročila.

Slika 30: Potek dela z modeli.

proizvodna koda

poročila

artefakti certificiranja

Generiranje izhodnih signalov

Izdelava prototipov Modeliranje in

simulacija

Neprekinjeno testiranje in verifikacija

vnes

Zahteve uporabnika

vnes

Spoznavanje sistema

vnes

(44)

28 Načrtovanje z modeli

Zakaj model?

Zasnova na podlagi modela omogoča racionalizacijo številnih vidikov razvoja. Številne organizacije poročajo, da jim modeli omogočajo:

 Upravljanje kompleksnih sistemov

 Avtomatizacijo zamudnih opravil

 Hitrejše raziskovanje novih idej

 Povečanje kakovosti izdelkov

 Zmanjšanje tveganja

Izvedljiva specifikacija (model) ima v primerjavi z besedilno specifikacijo (programski jeziki) prednosti:

 Modeli običajno vsebujejo več informacij kot tekstovni dokument

 Modeli so nedvoumni in jih ni potrebno razlagati kot tekstovne dokumente

 Ker vsebujejo nedvoumne informacije, model omogoča jasno in učinkovito komunikacijo med člani ekipe, strankami in dobavitelji

 Izvedljivo specifikacijo se lahko uporablja za preverjanje tekstovnih zahtev. Zahteve so modelirane, da se zagotovi njihova skladnost in natančnost.

Med zadovoljnimi uporabniki načrtovanja sistemov z modeli je tudi podjetje SAIC Motor Corporation, ki je največji kitajski proizvajalec motornih vozil:

''Three years ago, SAIC Motor did not have rich experiance developing embedded control software. We chose Model–Based Design because it is proven and efficient development method. This approach enabled our team of engineers to develop the highly complex HCU control logic and complete the project ahead of schedule (Jun Zhu, SAIC Motor Corporation).''

(45)

Načrtovanje z modeli 29

29

3.1 Koncept naloge

Temeljna zamisel diplomske naloge je s pomočjo programskega orodja Stateflow izdelati grafični model modularnega proizvodnega sistema z diagrami stanj, kot osnovnimi elementi modela. Del modela bo uporabljen kot simulator delovanja vseh aktuatorjev in senzorjev ter je osnova za animacijo in testiranje pravilnega delovanja v Matlabu. Drugi del modela pa bo predstavljal krmilno logiko za prvi del modela. S tem je prvi del naloge zaključen.

V drugem delu pa želimo s programsko opremo PLC Coder generirati kodo v strukturiranem tekstu, ki jo je možno uporabiti v programski opremi TwinCAT 3 in testirati delovanje programa v okolju TwinCAT3 z vizualizacijo omenjenega sistema.

Za generiranje kode sta bili odprti dve možnosti:

 Generiranje kode v jeziku C/C++ in uporaba programske opreme Simulink Coder in TwinCAT 3 Target for Simulink

 Generiranje kode v strukturiranem tekstu in uporaba programske opreme Simulink PLC Coder

Prva možnost, generiranje kode v jeziku C/C++, je zanimivejša pri kompleksnejših algoritmih, saj nam poljubno kompleksno simulacijsko shemo iz Simulinka pretvori v objekt, ki ga potem v TwinCAT povežemo v delujočo aplikacijo. Tak objekt potem deluje povsem ločeno od programa PLK. Uporabno je npr. pri regulaciji procesov, kjer tak blok deluje bolj ali manj ločeno od preostalega programa krmilnika. Pri uporabi te možnosti je generiranje kode omejeno s številom vhodno/izhodnih signalov blokov, saj je potrebno imeti licenco za program TwinCAT 3 Target for Simulink (testna licenca dopušča le do 5 vhodnih in izhodnih signalov).

Za nalogo smo izbrali drugo možnost, generiranje kode v ST z orodjem PLC Coder, kjer nismo potrebovali nobene licence (zadošča testna licenca), sama konfiguracija je enostavnejša ter generirano datoteko samo uvozimo v program PLK znotraj TwinCAT ter povežemo vhodne/izhodne signale.

Spoznavanje delovanja in elementov sistema Modeliranje modela s Stateflow in Simulink

Simulacija in testiranje modela

v Matlabu

Generiranje kode s PLC

Coder

Uvoz generirane kode, povezava signalov in simulacija

v TwinCAT 3

Simulacija v Cirosu

Slika 31: Bločna shema poteka izdelave naloge.

(46)

30 Načrtovanje z modeli

(47)

31

4. Modeliranje krmilne logike

V tem poglavju bomo predstavili proizvodni sistem, kako deluje ter katere aktuatorje vsebuje.

Za ta sistem bo izdelan in predstavljen model v orodju Stateflow, ki je opisan v nadaljevanju ter nato uporabljen v Simulinku s še dodatnimi bloki, ki so potrebni za vodenje in upravljanje sistema v simulacijskem okolju Matlaba.

4.1 Modularni proizvodni sistem

Predstavlja fleksibilen sistem delovanja komponent, enot, postaj in kompletnega postrojenja proizvodnega sistema. Predstavlja industrijsko linijo s petimi postajami, od podajanja in kontrole obdelovancev, obdelave, sestavljanja do skladiščenja (slika 32). V sistemu so uporabljeni senzorji, aktuatorji, ožičenje in krmilniki, kakršne najdemo v pravih industrijskih procesih.

Slika 32: Modularni proizvodni sistem.

Model in končen program bo uporabljen za prvo postajo modularnega proizvodnega sistema.

Postaja je sestavljena iz skladišča obdelovancev, podajalnega cilindra, ročice s pnevmatskim zasučnim pogonom in prijemalom.

(48)

32 Modeliranje krmilne logike

4.1.1 Delovanje postaje

S tipko START se postaja postavi v obratovalno stanje (signalna lučka Start). V primeru, da je premična roka pri skladišču, se ta najprej umakne. Če je v skladišču vsaj en obdelovanec, ga podajalni cilinder potisne iz skladišča in se vrne v prvotni položaj. Premična roka se nato obrne proti obdelovancu, ga prisesa in prenese na naslednjo postajo. Po 5 sekundah se izvede nov cikel, ki se nato ponavlja.

S pritiskom na tipko STOP ustavimo delovanje enot, pri čemer se tekoči delovni cikel izvede do konca; v tem času utripa lučka START s periodo 1 sekunde.

Če je postaja v obratovalnem položaju in ni obdelovancev v skladišču, lučka RESET gori brez utripanja. Med obratovanjem tipka START ne sme vplivati na delovanje postaje.

(49)

Modeliranje krmilne logike 33

33

4.2 Model krmilne logike

Algoritem delovanja smo izdelali v programskem okolju Matlab, z orodjem Stateflow. Model je zgrajen iz dveh večjih stanj (DELOVANJE in ZAUSTAVITEV) (sliki 33 in 34).

Slika 33: Stanje DELOVANJE.

(50)

34 Modeliranje krmilne logike

Slika 34: Stanje BRANJE_TIPKE_STOP.

Stanji DELOVANJE in ZAUSTAVITEV sta vedno aktivni; vzporedno delovanje (desni klik

 Decomposition  Parallel (AND)). Stanje ZAUSTAVITEV v zanki »bere« spremenljivko tipka_Stop in Delovanje, saj s tem delom vklopimo utripanje lučke START, ki ponazarja, da se trenutni cikel še izvede, nato pa se sistem izklopi.

Stanje DELOVANJE pa predstavlja preostali, večinski del logike za vodenje procesa.

V stanju DELOVANJE je definiranih še 11 podstanj:

OFF

Privzeto stanje. Vse spremenljivke, lučke se postavijo na logično 0.

ON

V primeru pritiska tipke START se aktivira stanje ON, kjer se vklopi lučka START, spremenljivka Delovanje se postavi na logično 1. Spremenljivko Delovanje uporabljamo, da tipka START ne vpliva v obratovalnem stanju.

INIT

Po eni sekundi se aktivira stanje INIT, v katerem se pomična roka odmakne k dvigalu in izklopi sesanje.

(51)

Modeliranje krmilne logike 35

35

PRAZNO_SKLADISCE

Če sistem v skladišču nima več obdelovancev, preidemo v stanje PRAZNO_SKLADISCE, kjer se vklopi signalna lučka RESET.

STATE1

Preko stanja INIT ali STATE 7 preidemo v STATE1, če skladišče ni prazno in se aktivira podajalni cilinder.

STATE2

Če je podajalni cilinder spredaj, preidemo v STATE2, kjer se podajalni cilinder pomakne nazaj ter preidemo v STATE3.

STATE3

Ko preidemo (en) v stanje STATE3, se pomična roka pomakne k skladišču in tam ostane kljub temu, da spremenljivko ob izhodu iz stanja (exit), postavimo na logično 0.

STATE4

Ko je premična roka pri skladišču, se vklopi sesanje, kjer se obdelovanec pritrdi na premično roko.

STATE5

Ob aktiviranju stanja STATE5 postavimo spremenljivko Roka_k_dvig na logično 1 ter ob prehodu k naslednjemu stanju postavimo omenjeno spremenljivko nazaj na logično 0. Premična roka se z obdelovancem premakne k dvigalu in tam ostane.

STATE6

Ko je roka pri dvigalu, obdelovanec spustimo (Izklop_sesanja==1) na naslednjo postajo.

STATE7

Obe spremenljivke Vklop_sesanja in Izklop_sesanja spremenimo na vrednost 0 ter počakamo 5 sekund, da se cikel ponovi.

(52)

36 Modeliranje krmilne logike

4.3 Simulacija delovanja modela krmilne logike

Za simulacijo sem dogradil model v orodju Simulink, ki je sestavljen iz štirih podsistemov, tipk START, STOP, signalnih lučk. Vsebuje pa tudi prikaz aktiviranih aktuatorjev ter možnost ročnega upravljanja aktuatorjev.

Iz slike 35 je razviden celoten model v Simulinku. Na zgornji desni strani so tipke za vklop in izklop simulacije, lučke, ki prikazujejo stanje sistema, prikaz aktivnih atuatorjev in senzorjev ter stikalo za preklop med ročnim in avtomatskim vodenjem. V spodnjem delu pa so bloki Command panel, Procedural control, Basic control in Sim.

Uporabljeni si naslednji podsistemi:

Command Panel

Predstavlja prikaz signalnih lučk L_RESET in L_START ter branje vrednosti tipk START, RESET in MAN. Vhodna signala sta obe signalni lučki, izhodni signali pa so omenjene tipke (slika 36).

Tipka MAN omogoča, da lahko ročno upravljamo s posameznimi aktuatorji.

Slika 35: Celotni model v Simulinku.

(53)

Modeliranje krmilne logike 37

37

Slika 36: Blok Command panel.

Procedural control

V podsistemu smo uporabili izdelan model algoritma za pravilno delovanje sistema iz orodja Stateflow. Vhodna signala v model sta tipki START,RESET in izhodi senzorjev sistem, oziroma dajalniki informacij (Sen) o trenutni legi aktuatorjev. Izhodna signala pa vključujeta delovanje signalnih lučk (luc) ter vhodne signale za posamezne akuatorje (Cmd) (slika 37).

Slika 37: Blok Procedural control.

Basic control

Omogoča preklop med avtomatskim in ročnim delovanjem (tipka MAN), kjer se v bloku »Manual commands« postavljajo posamezni signali za aktiviranje aktuatorjev (slika 38).

Blok »Varnost« predstavlja varnostno funkcijo, ki preprečuje, da bi prišlo do nepravilnih kombinacij položajev aktuatorjev.

Vhodni signali podsistema so tipke, informacije iz senzorjev sistema in krmilni signali sistema.

(54)

38 Modeliranje krmilne logike

Slika 38: Blok Basic control.

Sim

Predstavlja jedro simulacije proizvodnega sistema, kjer je tudi v obliki diagrama stanj opisan algoritem za simulacijo sistema (slika 39).

Vhodni signali so krmilni signali, izhodni pa simulacija signalov senzorjev ter pozicije aktuatorjev, ki so uporabljeni za slikovno – dinamični prikaz delovanja sistema.

Slika 39: Blok Sim.

(55)

Modeliranje krmilne logike 39

39 Slika 40 prikazuje animacijo delovanja v okolju Matlaba. Na skrajno levi strani, modra pravokotnika predstavljata cilinder, ki potisne obdelovanec (rdeči pravokotniki) iz skladišča.

Pokončni pravokotnik (roka s zasučnim pogonom) se nato rotira levo, proti obdelovancu in ga prisesa ter prenese na desno stran. Cikel se nato ponavlja, dokler ne zmanjka vseh obdelovancev.

Slika 40: Animacija delovanja v Matlabu.

(56)

40 Modeliranje krmilne logike

(57)

41

5. Generiranje kode in TwinCAT

Z orodjem PLC Coder bomo generirali kodo posameznih blokov modela iz Simulinka v strukturiranem tekstu, ki jo bomo nato uvozili v programsko orodje TwinCAT 3 Engineering kot funkcijske bloke in jih uporabili v glavnem programu »MAIN«. Spremenljivke, ki določajo položaj aktuatorjev bomo deklarirali kot globalne spremenljivke, ki jih bomo uporabili v animaciji, katero bomo ravno tako zgradili v okolju TwinCAT 3 Engineering.

5.1 Generiranje kode

Za generiranje kode sem uporabljal program Simulink PLC Coder ter generiral kodo za posamezen blok posebej. V nastavitvah generiranja kode PLK je potrebno najprej omogočiti

»Treat as atomic unit«, da omogočimo parametre za generiranje kode. Za tem odpremo okence

»Options«, za izbiro razvojnega okolja (IDE); Beckhoff TwinCAT 3, določimo pot C:\TwinCAT ter direktorij »plcsrc«, kamor bomo shranili generirano datoteko. Tukaj lahko nastavimo tudi, če želimo generirati testno okolje (Testbench), ter komentarje blokov Simulinka/Stateflowa. Omogoča tudi razne optimizacijske metode ter še nekaj dodatnih opcij.

Za generiranje kode posameznega bloka z desnim gumbom miške kliknemo na izbrani blok in izberemo »PLC Code« in »Generate Code for Subsystem«.

(58)

42 Generiranje kode in TwinCAT Slika 41 prikazuje nastavitve za generiranje kode.

Slika 41: Nastavitve za generiranje kode PLK.

5.2 TwinCAT 3 – Matlab

Generirane datoteke s končnico .XML v datoteki plcsrc je sedaj potrebno uvoziti v TwinCAT 3. To storimo tako, da se postavimo na mapo POUs in z desnim klikom izberemo »Import PLCopenXML…«, kot prikazuje slika 42. Ko to naredimo, je potrebno le še logično povezati vhodno/izhodne signale posameznih blokov/modulov, kar je sicer zamudno pri večjem številu signalov. Enostavnejša možnost je, da uporabimo polje spremenljivk (angl. array); na ta način se klic funkcijskega bloka poenostavi.

(59)

Generiranje kode in TwinCAT 43

43

Slika 42: Uvoz generirane kode.

Uvozili smo štiri funkcijske bloke. Funkcijski blok Basic (generiran iz bloka Basic control), MPS1 (generiran iz bloka Sim), PLC_CODER_TIMER (generiran iz bloka Procedural control; posebej generiran za uporabljene časovnike) in Procedural (generiran iz bloka Procedural control).

Vse funkcijske bloke z generirano kodo kličemo v glavnem programu MAIN, ki se izvaja v zanki. Na sliki 43 je prikazana drevesna struktura po uvozu vseh datotek z generiranimi kodami v mapi POUs in globalnih spremenljivk (GVL_xxxxxxx) v mapi GVLs, ki se ravno tako generirajo kot koda.

Slika 43: Prikaz vseh uvoženih datotek z generiranimi kodami in globalnimi spremenljivkami.

Pri uvozu generirane kode za diagram stanj se nam med vhodi bloka poleg definiranih

vhodnih signalov s strani uporabnika pojavi še signal ssMethodType, ki služi za inicializacijo blokov z diagrami stanj (slika 44). Spremenljivka initFlag je definirana kot bitna

spremenljivka z začetno vrednostjo logične '1', tako se v prvem ciklu izvajanja programa modeli inicializirajo. Po koncu prvega cikla postavimo spremenljivko na vrednost '0'.

Spremenljivki SS_INITIALIZE in SS_STEP sta dve izmed globalnih spremenljivk, ki sta

(60)

44 Generiranje kode in TwinCAT generirani iz modela s diagrami stanj in določata, ali je sistem v koraku inicializicije ali pa je v normalnem obratovanju.

Slika 44: Inicializacija blokov z diagrami stanj.

Globalne spremenljivke, ki jih bomo uporabili pri klicu funkcijskih blokov, bomo združili v polje spremenljivk (array), ki bo kasneje poenostavil klic blokov. Potrebujemo signale senzorjev in tipk. To storimo, kot prikazuje slika 45.

Slika 45: Združevanje signalov v polje spremenljivk.

Povezavo vhodnih signalov generirane kode bloka »Procedural control« z globalnimi spremenljivkami prikazuje slika 46. Te signale bomo tudi uporabili pri animiciji delovanja sistema.

Slika 46: Povezava vhodnih signalov postopkovnega vodenja.

(61)

Generiranje kode in TwinCAT 45

45 Povezavo vhodnih signalov generirane kode bloka »Basic control« z izhodnimi signali bloka

»Procedural control« in bloka »MPS1« prikazuje slika 47.

Slika 47: Povezava signalov funkcijskega bloka Procedural.

Vrednosti globalnih spremenljivk, uporabljenih za simulacijo, bomo pridobili iz funkcijskega bloka »Basic« ter za lučke iz funkcijskega bloka »Procedural« (slika 48).

Slika 48: Povezava globalnih spremenljivk.

Vhodne signale generirane kode bloka »Sim« pa bomo povezali z globalnimi spremenljivkami, ki so izhodni signali bloka Basic. Izhodne signale povežemo z globalnimi spremenljivkami, ki ponazarjajo senzorje (slika 49).

Slika 49: Povezava signalov funkcijskega bloka MPS1.

(62)

46 Generiranje kode in TwinCAT

5.2.1 Vizualizacija sistema

Po uspešni povezavi vseh signalov in blokov je bilo potrebno ustvariti vizualizacijo sistema s programom TwinCAT 3, ki jo ta podpira. Sistem sem skušal predstaviti oziroma narisati v čim bolj realni obliki; miza, cilindri, skladišče, senzorji ter panel s signalizacijo in tipkami. Slika 50 predstavlja sistem v začetnem položaju; v skladišču vidimo, da je polno obdelovancev, podajalni cilinder je v mirovnem položaju, kar tudi signalizira zelena lučka na senzorju, pomična roka je v vmesnem položaju med skladiščem in dvigalom na naslednji postaji.

Skladišče obdelovancev Pomična roka Podajalni cilinder

Panel s signalizacijo in

tipkama Senzor

Miza

Slika 50: Sistem v začetnem položaju.

(63)

Generiranje kode in TwinCAT 47

47 Na sliki 51 vidimo, da je sistem v delovanju, kar prikazuje zelena lučka na panelu, v skladišču sta še samo dva obdelovanca, podajalni cilinder je v mirovnem položaju, pomična roka pa prenaša obdelovanec na naslednjo postajo.

Slika 51: Sistem med delovanjem.

(64)

48 Generiranje kode in TwinCAT

(65)

49

6. Simulacija v okolju Festo Ciros

Kot zadnje testiranje generirane kode smo simulacijo naredili v programu Ciros, ki omogoča 3- D simulacijo. Primeren je za različna področja uporabe, npr. simulacija robotskih celic ali raznih industrijskih linij.

Simulacija v programu Ciros poteka s programom TwinCAT 3 in generirano kodo. Ker imamo tu generirano tudi kodo, ki simulira delovanje procesa, moramo signale senzorjev, ki jih ta del kode spreminja, odstraniti ali označiti kot komentarje, saj nam 3-D model že sam spreminja vrednosti senzorjev, sicer simulacija oziroma aktuatorji ne bodo delali pravilno.

Komunikacija med TwinCAT 3 in Festo Ciros poteka po standardu OPC3 [15], da lahko programa med sabo pošiljata in sprejemata podatke.

Da komunikacija deluje, je najprej potrebno nastaviti v TwinCATu, v oknu »Settings«

ustvarjanje datoteke TMC, kot prikazuje slika 52.

3 Standard, ki določa kako se podatki prenašajo med strežnikom (zagotavlja podatke) in odjemalcem (sprejema podatke).

Slika 52: Nastavitve TwinCAT 3 Engineering za komunikacijo s Festo Ciros.

(66)

50 Simulacija v okolju Festo Ciros

Globalne spremenljivke, ki jih želimo pošiljati, je potrebno pravilno označiti v tabeli globalnih spremenljivk. To storimo z besedno oznako »{attribute 'qualified_only'}«, zgoraj seznama spremenljivk, ter pri vsaki spremenljivki z oznako »{attribute 'OPC.UA.DA':='1'}«.

Označevanje spremenljivk kaže slika 53.

Slika 53: Označevanje spremenljivk.

Program Festo Ciros odpremo kot administrator in odpremo projekt, v katerem je 3-D model sistema. Vzpostavitev komunikacije med programoma TwinCAT 3 in Festo Ciros vzpostavimo v okencu »MODELLING«,; »Station«; »Objects«; »DistributingStation_B«. Z miško se postavimo na »S7_Distributing« in kliknemo nanj z desno tipko miške. Odpremo »Properties«

in pod okencem »General« določimo zavihek »Control« v OPC client, kot kaže slika 54.

Slika 54: Nastavitve povezave s TwinCAT 3.

(67)

Simulacija v okolju Festo Ciros 51

51 Nato še določimo pod zavihkom »OPC client« ime strežnika (Server name). Okence osvežimo in bi se nam morala pokazati možnost »UnifiedAutomation.UaGateway« enako kot na sliki 55.

Slika 55: Nastavitve strežnika.

Ostala nam je le še povezava signalov modela v Cirosu in signalov iz TwinCATa v zavihku

»OPC client«; »Items«. S klikom na »Connect« se nam prikaže »TcOpcUaServer«; »PLC1«;

»GVL«. GVL je pa že ime seznama globalnih spremenljivk iz programa TwinCAT; tu najdemo vse spremenljivke, ki smo jih pred tem označili (slika 56).

Slika 56: Povezava spremenljivk TwinCATa in modela v Festo Ciros.

(68)

52 Simulacija v okolju Festo Ciros

Slika 57 prikazuje 3-D model, na katerem je bila simulacija narejena. Sistem je sestavljen na mizi s skladiščem z rdečimi obdelovanci s podajalnim cilindrom pod njem. Zraven je še pomična ročica in panel za signalizacijo ter tipke, ki omogočajo, da lahko operiramo s sistemom.

Slika 57: 3-D model postaje.

(69)

53

7. Zaključek

V diplomskem delu smo se poglobili v temo krmiljenja modularnega proizvodnega sistema.

Tukaj je bila osnovna zamisel narediti model sistema ter iz njega generirati kodo, ki bo ta sistem krmilila. Naredili smo vrsto simulacij na različnih platformah, da smo tako preverili delovanje generirane kode. Predstavili smo vso programsko opremo, ki je bila uporabljena; od Matlaba ter njegovih orodij, Simulinka, Stateflowa in PLC Coderja do programske opreme za programiranje krmilnikov, TwinCAT 3 Engineering in dodatnih orodij.

Razložili smo, kaj sploh je snovanje na osnovi modela, kakšne prednosti ima grafična oblika v primerjavi s besedilnim opisom algoritma in zakaj se čedalje bolj uveljavlja v industriji;

predvsem v industriji vgradnih sistemov.

S primerom smo predstavili, kako se lotiti izdelave modela in kako smo mi izdelali naš model, kako smo generirali kodo in v kakšnem jeziku. Predstavili smo sistem, na osnovi katerega je bil model izdelan, opisali, kako deluje in kakšne elemente vsebuje.

Rezultat generirane kode smo uporabili v TwinCAT 3 Engineering, kjer smo vse funkcijske bloke in glavni program sestavili v celoto in izdelali simulacijo v omenjenem programu.

Pokazali smo, kako se izdela animacija s preprostim primerom utripanja lučk, kako povezujemo spremenljivke na objekte, ipd.

Na koncu smo še testirali kodo v enem izmed simulacijskih programov, ki omogoča 3-D animacijo, pred tem smo povedali, kaj in kako je treba postoriti, da se ustvari komunikacija med programoma Festo Ciros in TwinCAT 3.

Ugotovili smo, da se uporaba načrtovanja krmilne logike z modeli obrestuje, saj nam je lažje razumljiva grafična specifikacija kot pa tekstovna (programski jeziki), sploh če imamo kompleksne sisteme. Zelo enostavno je uporabljati orodje za generiranje kode iz modelov ter jih kasneje tudi uporabiti v programskih okoljih, v katerih dokončno ustvarimo algoritem, ki je razumljiv logičnim krmilnikom. Ti pa nato v industriji skrbijo za pravilno delovanje sistema.

(70)

54 Zaključek

(71)

55

8. Literatura

[1] Simon oblak, Igor Škrjanc, Priročnik za laboratorijske vaje: Matlab s Simulinkom, Ljubljana: Fakulteta za elektrotehniko, 2005.

[2] Roger Aarenstrup, Managing Model–Based Design. Massachusetts, 2015.

[3] MathWorks, Model–Based design for Embedded Control Systems. MathWorks, 2020.

[4] Vito Logar, Gašper Mušič, Simon Tomažič, Praktikum: Računalniško vodenje procesov, Ljubljana: založba FE, 2019

[5] Simulink. Dosegljivo:

https://www.mathworks.com/help/simulink/index.html?s_tid=CRUX_topnav. [Dostopano:

12.7.2021].

[6] Simulink PLC Coder. Dosegljivo https://www.mathworks.com/products/simulink-plc- coder.html. [Dostopano: 16.7.2021].

[7] Stateflow. Dosegljivo:

https://www.mathworks.com/help/stateflow/index.html?s_tid=srchtitle.

[Dostopano:13.7.2021].

[9] BECKHOFF New Automation Technology, Manual: TE1000 TwinCAT 3 | User Interface. Beckhoff Automation GmbH & Co. KG, 11.11.2020.

[10] BECKHOFF New Automation Technology, Manual: TC3 Target for Matlab/Simulink.

Beckhoff, 22.4.2020.

[11] TwinCAT 3 Engineering. Dosegljivo: https://www.beckhoff.com/sl-

si/products/automation/twincat/te1xxx-twincat-3-engineering/te1000.html. [Dostopano:

20.7.2021].

[12] TwinCAT 3 Target for Simulink. Dosegljivo: https://www.beckhoff.com/sl-

si/products/automation/twincat/te1xxx-twincat-3-engineering/te1400.html. [Dostopano:

20.7.2021].

Reference

POVEZANI DOKUMENTI

Predlogi za izboljšanje poučevanja kemijskih pojmov agregatna stanja vode, zmrzovanje in sublimacija vode so vezani predvsem na: 1) spodbujanje učencev pri

V tabeli 4 so podani možni pravilni odgovori in raven predstavitve pojma učencev sedmega razreda osnovne šole, dijakov prvega letnika gimnazije in študentov kemije z

Glavni namen diplomskega dela je bil pri učencih sedmega razreda osnovne šole ugotoviti razumevanje agregatnih stanj vode na makroskopski ravni, agregatnih stanj

Kožna obolenja se lahko pojavljajo kot posledica drugih patoloških stanj (bakterijske infekcije, glivična obolenja, novotvorbe, ektoparaziti, …), lahko so pogojena z raznimi

Pokazali smo, da lahko pri predstavitvi slovarja izgovarjav s KSP število stanj in prehodov zmanjšamo za vsaj 20 %, ko so za vsebovane leme v slovarju izgovarjav

če to še dopolnimo: tudi partikularije se lahko pojavljajo zgolj znotraj stanj stvari, kjer se morejo instanciirati lastnosti in relacije - torej lahko trdimo, da je

Po zgornjem razmisleku bi pri~akovali, da je zasedenost visokih vzbujenih stanj v du{ikovi plazmi majhna, saj elektroni izgubljajo energijo `e za vzbujanje vibracijskih stanj

Na nekaterih merilnih mestih smo z rezultati simulacij primerjali rezultate meritev z merilnimi rozetami in merilnimi lističi, nalepljenimi v smeri glavnih specifičnih